On Sun, 2018-06-10 at 20:51 +0100, Liam Girdwood wrote:
diff --git a/src/include/sof/dma.h b/src/include/sof/dma.h index af15d14..4bc178e 100644 --- a/src/include/sof/dma.h +++ b/src/include/sof/dma.h @@ -48,6 +48,21 @@ enum dma_copy_dir { DMA_DIR_DEV_TO_DEV, };
Thinking more on this, I think we just need direction mask, caps mask and device mask.
We can remove the dir enum too.
+/* DMA capabilities bitmasks used to define DMA copy direction */ +#define DMA_CAP_MEM_TO_MEM (1 << 0) +#define DMA_CAP_HMEM_TO_LMEM (1 << 1) +#define DMA_CAP_LMEM_TO_HMEM (1 << 2) +#define DMA_CAP_MEM_TO_DEV (1 << 3) +#define DMA_CAP_DEV_TO_MEM (1 << 4) +#define DMA_CAP_DEV_TO_DEV (1 << 5)
These are direction so would be DMA_DIR_blah
+/* DMA capabilities bitmasks used to define the type of DMA */ +#define DMA_CAP_GP_LP (1 << 6) +#define DMA_CAP_GP_HP (1 << 7)
These two above are caps.
+#define DMA_CAP_HDA_HOST (1 << 8) +#define DMA_CAP_HDA_LINK (1 << 9)
Thinking more, it may be better to have :-
#define DMA_CAP_HDA #define DMA_CAP_SSP #define DMA_CAP_DMIC
These would be DMAC_DEV_HDA, DMA_DEV_SSP, etc
These can be used in conjunction with the other caps when requesting a DMAC since HDA_HOST and HDA_LINK is very Intel specific.
/* DMA IRQ types */ #define DMA_IRQ_TYPE_BLOCK (1 << 0) #define DMA_IRQ_TYPE_LLIST (1 << 1) @@ -118,6 +133,7 @@ struct dma_ops { /* DMA platform data */ struct dma_plat_data { uint32_t id;
uint32_t dma_cap;
uint32_t dir; /* bit mask of directions */ uint32_t caps; /* bitmask of caps */ uint32_t devs; /* bitmask of supported devs */
lets just call this caps (since dma is implied already)
Liam