diff options
| author | Elen Song <elen.song@atmel.com> | 2013-05-09 23:00:50 -0400 |
|---|---|---|
| committer | Vinod Koul <vinod.koul@intel.com> | 2013-07-05 02:10:30 -0400 |
| commit | d088c33b646e9f3564eea7a057a2cb697c18bcd0 (patch) | |
| tree | 297d676a700dad9089b642d80c5823f0a97cd7c1 | |
| parent | 6c22770f644bf23aecc11fedd7b305488a861bfc (diff) | |
DMA: AT91: Get transfer width
In one dma transfer, the data transfer width can be configured and it is limited by source or destination peripheral width,
tx_width will save the transfer width, but for memcpy, either source or destination transfer width is taken as tx_width.
Signed-off-by: Elen Song <elen.song@atmel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
| -rw-r--r-- | drivers/dma/at_hdmac.c | 3 | ||||
| -rw-r--r-- | drivers/dma/at_hdmac_regs.h | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c index 9e1ad73a78cf..4c101a9dd3cb 100644 --- a/drivers/dma/at_hdmac.c +++ b/drivers/dma/at_hdmac.c | |||
| @@ -615,6 +615,7 @@ atc_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dest, dma_addr_t src, | |||
| 615 | /* First descriptor of the chain embedds additional information */ | 615 | /* First descriptor of the chain embedds additional information */ |
| 616 | first->txd.cookie = -EBUSY; | 616 | first->txd.cookie = -EBUSY; |
| 617 | first->len = len; | 617 | first->len = len; |
| 618 | first->tx_width = src_width; | ||
| 618 | 619 | ||
| 619 | /* set end-of-link to the last link descriptor of list*/ | 620 | /* set end-of-link to the last link descriptor of list*/ |
| 620 | set_desc_eol(desc); | 621 | set_desc_eol(desc); |
| @@ -761,6 +762,7 @@ atc_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl, | |||
| 761 | /* First descriptor of the chain embedds additional information */ | 762 | /* First descriptor of the chain embedds additional information */ |
| 762 | first->txd.cookie = -EBUSY; | 763 | first->txd.cookie = -EBUSY; |
| 763 | first->len = total_len; | 764 | first->len = total_len; |
| 765 | first->tx_width = reg_width; | ||
| 764 | 766 | ||
| 765 | /* first link descriptor of list is responsible of flags */ | 767 | /* first link descriptor of list is responsible of flags */ |
| 766 | first->txd.flags = flags; /* client is in control of this ack */ | 768 | first->txd.flags = flags; /* client is in control of this ack */ |
| @@ -919,6 +921,7 @@ atc_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len, | |||
| 919 | /* First descriptor of the chain embedds additional information */ | 921 | /* First descriptor of the chain embedds additional information */ |
| 920 | first->txd.cookie = -EBUSY; | 922 | first->txd.cookie = -EBUSY; |
| 921 | first->len = buf_len; | 923 | first->len = buf_len; |
| 924 | first->tx_width = reg_width; | ||
| 922 | 925 | ||
| 923 | return &first->txd; | 926 | return &first->txd; |
| 924 | 927 | ||
diff --git a/drivers/dma/at_hdmac_regs.h b/drivers/dma/at_hdmac_regs.h index c604d26fd4d3..3679933fb646 100644 --- a/drivers/dma/at_hdmac_regs.h +++ b/drivers/dma/at_hdmac_regs.h | |||
| @@ -182,6 +182,7 @@ struct at_lli { | |||
| 182 | * @txd: support for the async_tx api | 182 | * @txd: support for the async_tx api |
| 183 | * @desc_node: node on the channed descriptors list | 183 | * @desc_node: node on the channed descriptors list |
| 184 | * @len: total transaction bytecount | 184 | * @len: total transaction bytecount |
| 185 | * @tx_width: transfer width | ||
| 185 | */ | 186 | */ |
| 186 | struct at_desc { | 187 | struct at_desc { |
| 187 | /* FIRST values the hardware uses */ | 188 | /* FIRST values the hardware uses */ |
| @@ -192,6 +193,7 @@ struct at_desc { | |||
| 192 | struct dma_async_tx_descriptor txd; | 193 | struct dma_async_tx_descriptor txd; |
| 193 | struct list_head desc_node; | 194 | struct list_head desc_node; |
| 194 | size_t len; | 195 | size_t len; |
| 196 | u32 tx_width; | ||
| 195 | }; | 197 | }; |
| 196 | 198 | ||
| 197 | static inline struct at_desc * | 199 | static inline struct at_desc * |
