diff options
| author | Viresh KUMAR <viresh.kumar@st.com> | 2011-03-04 05:12:51 -0500 |
|---|---|---|
| committer | Vinod Koul <vinod.koul@intel.com> | 2011-03-06 14:42:28 -0500 |
| commit | ee66509d7f354eecb45ac99f21ea6aa8650dea7e (patch) | |
| tree | 206438e7c0ef9a7f0633fe44d6f306fdbf4b0b4e /include/linux | |
| parent | 59c22fc11d12b69da36c6585a38229863ba0bb16 (diff) | |
dw_dmac: Allow src/dst msize & flow controller to be configured at runtime
Msize or Burst Size is peripheral dependent in case of prep_slave_sg and
cyclic_prep transfers, and in case of memcpy transfers it is platform dependent.
So msize configuration must come from platform data.
Also some peripherals (ex: JPEG), need to be flow controller for dma transfers,
so this information in case of slave_sg & cyclic_prep transfers must come from
platform data.
Signed-off-by: Viresh Kumar <viresh.kumar@st.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/dw_dmac.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/include/linux/dw_dmac.h b/include/linux/dw_dmac.h index 3ba2f066ff46..6998d9376ef9 100644 --- a/include/linux/dw_dmac.h +++ b/include/linux/dw_dmac.h | |||
| @@ -42,6 +42,30 @@ enum dw_dma_slave_width { | |||
| 42 | DW_DMA_SLAVE_WIDTH_32BIT, | 42 | DW_DMA_SLAVE_WIDTH_32BIT, |
| 43 | }; | 43 | }; |
| 44 | 44 | ||
| 45 | /* bursts size */ | ||
| 46 | enum dw_dma_msize { | ||
| 47 | DW_DMA_MSIZE_1, | ||
| 48 | DW_DMA_MSIZE_4, | ||
| 49 | DW_DMA_MSIZE_8, | ||
| 50 | DW_DMA_MSIZE_16, | ||
| 51 | DW_DMA_MSIZE_32, | ||
| 52 | DW_DMA_MSIZE_64, | ||
| 53 | DW_DMA_MSIZE_128, | ||
| 54 | DW_DMA_MSIZE_256, | ||
| 55 | }; | ||
| 56 | |||
| 57 | /* flow controller */ | ||
| 58 | enum dw_dma_fc { | ||
| 59 | DW_DMA_FC_D_M2M, | ||
| 60 | DW_DMA_FC_D_M2P, | ||
| 61 | DW_DMA_FC_D_P2M, | ||
| 62 | DW_DMA_FC_D_P2P, | ||
| 63 | DW_DMA_FC_P_P2M, | ||
| 64 | DW_DMA_FC_SP_P2P, | ||
| 65 | DW_DMA_FC_P_M2P, | ||
| 66 | DW_DMA_FC_DP_P2P, | ||
| 67 | }; | ||
| 68 | |||
| 45 | /** | 69 | /** |
| 46 | * struct dw_dma_slave - Controller-specific information about a slave | 70 | * struct dw_dma_slave - Controller-specific information about a slave |
| 47 | * | 71 | * |
| @@ -55,6 +79,9 @@ enum dw_dma_slave_width { | |||
| 55 | * @cfg_lo: Platform-specific initializer for the CFG_LO register | 79 | * @cfg_lo: Platform-specific initializer for the CFG_LO register |
| 56 | * @src_master: src master for transfers on allocated channel. | 80 | * @src_master: src master for transfers on allocated channel. |
| 57 | * @dst_master: dest master for transfers on allocated channel. | 81 | * @dst_master: dest master for transfers on allocated channel. |
| 82 | * @src_msize: src burst size. | ||
| 83 | * @dst_msize: dest burst size. | ||
| 84 | * @fc: flow controller for DMA transfer | ||
| 58 | */ | 85 | */ |
| 59 | struct dw_dma_slave { | 86 | struct dw_dma_slave { |
| 60 | struct device *dma_dev; | 87 | struct device *dma_dev; |
| @@ -65,6 +92,9 @@ struct dw_dma_slave { | |||
| 65 | u32 cfg_lo; | 92 | u32 cfg_lo; |
| 66 | u8 src_master; | 93 | u8 src_master; |
| 67 | u8 dst_master; | 94 | u8 dst_master; |
| 95 | u8 src_msize; | ||
| 96 | u8 dst_msize; | ||
| 97 | u8 fc; | ||
| 68 | }; | 98 | }; |
| 69 | 99 | ||
| 70 | /* Platform-configurable bits in CFG_HI */ | 100 | /* Platform-configurable bits in CFG_HI */ |
