summaryrefslogtreecommitdiffstats
path: root/drivers/dma/sun6i-dma.c
diff options
context:
space:
mode:
authorJean-Francois Moine <moinejf@free.fr>2016-04-22 08:17:14 +0200
committerVinod Koul <vinod.koul@intel.com>2016-04-26 09:09:28 +0530
commitdc6a58c17cd443bfdd2e05c45aec80106d59fdb2 (patch)
tree9568e6af0d60a144b1b031d076589e0105173479 /drivers/dma/sun6i-dma.c
parent128fe7e9a0b99da1d7346528526bd424f705774b (diff)
downloadop-kernel-dev-dc6a58c17cd443bfdd2e05c45aec80106d59fdb2.zip
op-kernel-dev-dc6a58c17cd443bfdd2e05c45aec80106d59fdb2.tar.gz
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>
Diffstat (limited to 'drivers/dma/sun6i-dma.c')
-rw-r--r--drivers/dma/sun6i-dma.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/dma/sun6i-dma.c b/drivers/dma/sun6i-dma.c
index 2ec320d..3579ee7 100644
--- a/drivers/dma/sun6i-dma.c
+++ b/drivers/dma/sun6i-dma.c
@@ -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) |
OpenPOWER on IntegriCloud