mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-10 07:50:04 +00:00
dmaengine: sun6i: Fix impossible settings of burst and bus width
In the commit 1f9cd915b64bb95f ("dmaengine: sun6i: Fix memcpy operation"), the signed values returned by convert_burst() and convert_buswidth() were stored in an unsigned value. Then, these values were considered as errors when non null. As a result, DMA transfers were rejected when the burst or buswidth had values different from 1, as 8 for the burst or 4 for the bus width. Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> Signed-off-by: Jean-Francois Moine <moinejf@free.fr> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
This commit is contained in:
parent
128fe7e9a0
commit
dc6a58c17c
@ -281,25 +281,25 @@ static inline int sun6i_dma_cfg_lli(struct sun6i_dma_lli *lli,
|
||||
dma_addr_t dst, u32 len,
|
||||
struct dma_slave_config *config)
|
||||
{
|
||||
u8 src_width, dst_width, src_burst, dst_burst;
|
||||
s8 src_width, dst_width, src_burst, dst_burst;
|
||||
|
||||
if (!config)
|
||||
return -EINVAL;
|
||||
|
||||
src_burst = convert_burst(config->src_maxburst);
|
||||
if (src_burst)
|
||||
if (src_burst < 0)
|
||||
return src_burst;
|
||||
|
||||
dst_burst = convert_burst(config->dst_maxburst);
|
||||
if (dst_burst)
|
||||
if (dst_burst < 0)
|
||||
return dst_burst;
|
||||
|
||||
src_width = convert_buswidth(config->src_addr_width);
|
||||
if (src_width)
|
||||
if (src_width < 0)
|
||||
return src_width;
|
||||
|
||||
dst_width = convert_buswidth(config->dst_addr_width);
|
||||
if (dst_width)
|
||||
if (dst_width < 0)
|
||||
return dst_width;
|
||||
|
||||
lli->cfg = DMA_CHAN_CFG_SRC_BURST(src_burst) |
|
||||
|
Loading…
x
Reference in New Issue
Block a user