summaryrefslogtreecommitdiffstats
path: root/dma/ipe_private.h
diff options
context:
space:
mode:
authorSuren A. Chilingaryan <csa@suren.me>2015-06-12 17:24:18 +0200
committerSuren A. Chilingaryan <csa@suren.me>2015-06-12 17:24:18 +0200
commit36385f1e83c7f6dd45954033b91d1871e62005c4 (patch)
tree7cff125d99c62704b6f9dda202928827a37871c0 /dma/ipe_private.h
parent860ca5277c37cc93d8e44e5b7a7757b930b83603 (diff)
downloadpcitool-36385f1e83c7f6dd45954033b91d1871e62005c4.tar.gz
pcitool-36385f1e83c7f6dd45954033b91d1871e62005c4.tar.bz2
pcitool-36385f1e83c7f6dd45954033b91d1871e62005c4.tar.xz
pcitool-36385f1e83c7f6dd45954033b91d1871e62005c4.zip
Support streaming mode in IPEDMA
Diffstat (limited to 'dma/ipe_private.h')
-rw-r--r--dma/ipe_private.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/dma/ipe_private.h b/dma/ipe_private.h
index 5cfb10b..249286d 100644
--- a/dma/ipe_private.h
+++ b/dma/ipe_private.h
@@ -8,6 +8,8 @@
#define IPEDMA_MAX_TLP_SIZE 256 /**< Defines maximum TLP in bytes supported by device */
//#define IPEDMA_TLP_SIZE 128 /**< If set, enforces the specified TLP size */
+#define IPEDMA_STREAMING_MODE /**< Enables streaming DMA operation mode instead of ring-buffer, the page is written once and forgotten and need to be pushed in queue again */
+#define IPEDMA_STREAMING_CHECKS /**< Enables status checks in streaming mode (it will cause performance penalty) */
#define IPEDMA_PAGE_SIZE 4096
#define IPEDMA_DMA_PAGES 1024 /**< number of DMA pages in the ring buffer to allocate */
#define IPEDMA_DMA_PROGRESS_THRESHOLD 1 /**< how many pages the DMA engine should fill before reporting progress */
@@ -31,9 +33,11 @@
#define IPEDMA_REG_TLP_COUNT 0x10
#define IPEDMA_REG_PAGE_ADDR 0x50
#define IPEDMA_REG_UPDATE_ADDR 0x54
-#define IPEDMA_REG_LAST_READ 0x58
+#define IPEDMA_REG_LAST_READ 0x58 /**< In streaming mode, we can use it freely to track current status */
#define IPEDMA_REG_PAGE_COUNT 0x5C
#define IPEDMA_REG_UPDATE_THRESHOLD 0x60
+#define IPEDMA_REG_STREAMING_STATUS 0x68
+
#define WR(addr, value) { *(uint32_t*)(ctx->base_addr + addr) = value; }
#define RD(addr, value) { value = *(uint32_t*)(ctx->base_addr + addr); }