Commit d25006e7 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Ulf Hansson

mmc: sh_mmcif: Fix DMA slave address configuration

Commit e5a233cb ("mmc: sh_mmcif:
Factorize DMA channel request and configuration code") incorrectly
set the destination address for both slave channels instead of setting
the source address for the receive channel. Fix that.
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent b4c27763
...@@ -386,7 +386,7 @@ sh_mmcif_request_dma_one(struct sh_mmcif_host *host, ...@@ -386,7 +386,7 @@ sh_mmcif_request_dma_one(struct sh_mmcif_host *host,
struct sh_mmcif_plat_data *pdata, struct sh_mmcif_plat_data *pdata,
enum dma_transfer_direction direction) enum dma_transfer_direction direction)
{ {
struct dma_slave_config cfg; struct dma_slave_config cfg = { 0, };
struct dma_chan *chan; struct dma_chan *chan;
unsigned int slave_id; unsigned int slave_id;
struct resource *res; struct resource *res;
...@@ -417,8 +417,12 @@ sh_mmcif_request_dma_one(struct sh_mmcif_host *host, ...@@ -417,8 +417,12 @@ sh_mmcif_request_dma_one(struct sh_mmcif_host *host,
/* In the OF case the driver will get the slave ID from the DT */ /* In the OF case the driver will get the slave ID from the DT */
cfg.slave_id = slave_id; cfg.slave_id = slave_id;
cfg.direction = direction; cfg.direction = direction;
if (direction == DMA_DEV_TO_MEM)
cfg.src_addr = res->start + MMCIF_CE_DATA;
else
cfg.dst_addr = res->start + MMCIF_CE_DATA; cfg.dst_addr = res->start + MMCIF_CE_DATA;
cfg.src_addr = 0;
ret = dmaengine_slave_config(chan, &cfg); ret = dmaengine_slave_config(chan, &cfg);
if (ret < 0) { if (ret < 0) {
dma_release_channel(chan); dma_release_channel(chan);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment