Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 57819276 authored by Cyrille Pitchen's avatar Cyrille Pitchen Committed by Vinod Koul
Browse files

dmaengine: at_xdmac: fix a bug in transfer residue computation



The total size of the transfer was wrong in at_xdmac_prep_slave_sg()
resulting in bad computation of the transfer residue by
at_xdmac_tx_status().

Signed-off-by: default avatarCyrille Pitchen <cyrille.pitchen@atmel.com>
Signed-off-by: default avatarLudovic Desroches <ludovic.desroches@atmel.com>
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
parent 4e097820
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -562,6 +562,7 @@ at_xdmac_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl,
	struct scatterlist	*sg;
	int			i;
	u32			cfg;
	unsigned int		xfer_size = 0;

	if (!sgl)
		return NULL;
@@ -637,12 +638,13 @@ at_xdmac_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl,
		dev_dbg(chan2dev(chan), "%s: add desc 0x%p to descs_list 0x%p\n",
			 __func__, desc, first);
		list_add_tail(&desc->desc_node, &first->descs_list);
		xfer_size += len;
	}

	spin_unlock_bh(&atchan->lock);

	first->tx_dma_desc.flags = flags;
	first->xfer_size = sg_len;
	first->xfer_size = xfer_size;
	first->direction = direction;

	return &first->tx_dma_desc;