diff options
author | Jean-Francois Moine <moinejf@free.fr> | 2016-04-22 08:17:14 +0200 |
---|---|---|
committer | Vinod Koul <vinod.koul@intel.com> | 2016-04-26 05:39:28 +0200 |
commit | dc6a58c17cd443bfdd2e05c45aec80106d59fdb2 (patch) | |
tree | 9568e6af0d60a144b1b031d076589e0105173479 /drivers/dma | |
parent | dmaengine: sun6i: Fix the access of the IRQ register (diff) | |
download | linux-dc6a58c17cd443bfdd2e05c45aec80106d59fdb2.tar.xz linux-dc6a58c17cd443bfdd2e05c45aec80106d59fdb2.zip |
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')
-rw-r--r-- | drivers/dma/sun6i-dma.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/dma/sun6i-dma.c b/drivers/dma/sun6i-dma.c index 2ec320dc68b3..3579ee741329 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) | |