Commit d088c33b authored by Elen Song's avatar Elen Song Committed by Vinod Koul
Browse files

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: default avatarElen Song <elen.song@atmel.com>
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
parent 6c22770f
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -615,6 +615,7 @@ atc_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dest, dma_addr_t src,
	/* First descriptor of the chain embedds additional information */
	first->txd.cookie = -EBUSY;
	first->len = len;
	first->tx_width = src_width;

	/* set end-of-link to the last link descriptor of list*/
	set_desc_eol(desc);
@@ -761,6 +762,7 @@ atc_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl,
	/* First descriptor of the chain embedds additional information */
	first->txd.cookie = -EBUSY;
	first->len = total_len;
	first->tx_width = reg_width;

	/* first link descriptor of list is responsible of flags */
	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,
	/* First descriptor of the chain embedds additional information */
	first->txd.cookie = -EBUSY;
	first->len = buf_len;
	first->tx_width = reg_width;

	return &first->txd;

+2 −0
Original line number Diff line number Diff line
@@ -182,6 +182,7 @@ struct at_lli {
 * @txd: support for the async_tx api
 * @desc_node: node on the channed descriptors list
 * @len: total transaction bytecount
 * @tx_width: transfer width
 */
struct at_desc {
	/* FIRST values the hardware uses */
@@ -192,6 +193,7 @@ struct at_desc {
	struct dma_async_tx_descriptor	txd;
	struct list_head		desc_node;
	size_t				len;
	u32				tx_width;
};

static inline struct at_desc *