diff options
| author | Viresh Kumar <viresh.kumar@st.com> | 2011-08-05 06:02:43 -0400 |
|---|---|---|
| committer | Vinod Koul <vinod.koul@intel.com> | 2011-09-19 05:43:06 -0400 |
| commit | b7f69d9d4283cfbbf7458962cf9bdba6463b831d (patch) | |
| tree | 76e29e885d467486922f3b2fbd2c480a7b5a1b8f /include/linux/amba | |
| parent | 937bb6e4c676fecbfbc1939b942241c3f27bf5d8 (diff) | |
dmaengine/amba-pl08x: Add support for sg len greater than one for slave transfers
Untill now, sg_len greater than one is not supported. This patch adds support to
do that.
Note: Still, if peripheral is flow controller, sg_len can't be greater that one.
Signed-off-by: Viresh Kumar <viresh.kumar@st.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Diffstat (limited to 'include/linux/amba')
| -rw-r--r-- | include/linux/amba/pl08x.h | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/include/linux/amba/pl08x.h b/include/linux/amba/pl08x.h index a22662c93981..9eabffbc4e50 100644 --- a/include/linux/amba/pl08x.h +++ b/include/linux/amba/pl08x.h | |||
| @@ -106,12 +106,24 @@ struct pl08x_phy_chan { | |||
| 106 | }; | 106 | }; |
| 107 | 107 | ||
| 108 | /** | 108 | /** |
| 109 | * struct pl08x_sg - structure containing data per sg | ||
| 110 | * @src_addr: src address of sg | ||
| 111 | * @dst_addr: dst address of sg | ||
| 112 | * @len: transfer len in bytes | ||
| 113 | * @node: node for txd's dsg_list | ||
| 114 | */ | ||
| 115 | struct pl08x_sg { | ||
| 116 | dma_addr_t src_addr; | ||
| 117 | dma_addr_t dst_addr; | ||
| 118 | size_t len; | ||
| 119 | struct list_head node; | ||
| 120 | }; | ||
| 121 | |||
| 122 | /** | ||
| 109 | * struct pl08x_txd - wrapper for struct dma_async_tx_descriptor | 123 | * struct pl08x_txd - wrapper for struct dma_async_tx_descriptor |
| 110 | * @tx: async tx descriptor | 124 | * @tx: async tx descriptor |
| 111 | * @node: node for txd list for channels | 125 | * @node: node for txd list for channels |
| 112 | * @src_addr: src address of txd | 126 | * @dsg_list: list of children sg's |
| 113 | * @dst_addr: dst address of txd | ||
| 114 | * @len: transfer len in bytes | ||
| 115 | * @direction: direction of transfer | 127 | * @direction: direction of transfer |
| 116 | * @llis_bus: DMA memory address (physical) start for the LLIs | 128 | * @llis_bus: DMA memory address (physical) start for the LLIs |
| 117 | * @llis_va: virtual memory address start for the LLIs | 129 | * @llis_va: virtual memory address start for the LLIs |
| @@ -121,10 +133,8 @@ struct pl08x_phy_chan { | |||
| 121 | struct pl08x_txd { | 133 | struct pl08x_txd { |
| 122 | struct dma_async_tx_descriptor tx; | 134 | struct dma_async_tx_descriptor tx; |
| 123 | struct list_head node; | 135 | struct list_head node; |
| 136 | struct list_head dsg_list; | ||
| 124 | enum dma_data_direction direction; | 137 | enum dma_data_direction direction; |
| 125 | dma_addr_t src_addr; | ||
| 126 | dma_addr_t dst_addr; | ||
| 127 | size_t len; | ||
| 128 | dma_addr_t llis_bus; | 138 | dma_addr_t llis_bus; |
| 129 | struct pl08x_lli *llis_va; | 139 | struct pl08x_lli *llis_va; |
| 130 | /* Default cctl value for LLIs */ | 140 | /* Default cctl value for LLIs */ |
