dmaengine/dw_dmac: Fix dw_dmac user drivers to adapt to slave_config changes
There are few existing user drivers of dw_dmac. They will break as soon as we remove unused fields from struct dw_dma_slave. This patch focuses to fix these user drivers to use dma_slave_config() routine. Signed-off-by: Viresh Kumar <viresh.kumar@st.com> Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com>
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/stat.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#include <linux/mmc/host.h>
|
||||
#include <linux/mmc/sdio.h>
|
||||
@@ -173,6 +174,7 @@ struct atmel_mci {
|
||||
|
||||
struct atmel_mci_dma dma;
|
||||
struct dma_chan *data_chan;
|
||||
struct dma_slave_config dma_conf;
|
||||
|
||||
u32 cmd_status;
|
||||
u32 data_status;
|
||||
@@ -863,15 +865,16 @@ atmci_prepare_data_dma(struct atmel_mci *host, struct mmc_data *data)
|
||||
|
||||
if (data->flags & MMC_DATA_READ) {
|
||||
direction = DMA_FROM_DEVICE;
|
||||
slave_dirn = DMA_DEV_TO_MEM;
|
||||
host->dma_conf.direction = slave_dirn = DMA_DEV_TO_MEM;
|
||||
} else {
|
||||
direction = DMA_TO_DEVICE;
|
||||
slave_dirn = DMA_MEM_TO_DEV;
|
||||
host->dma_conf.direction = slave_dirn = DMA_MEM_TO_DEV;
|
||||
}
|
||||
|
||||
sglen = dma_map_sg(chan->device->dev, data->sg,
|
||||
data->sg_len, direction);
|
||||
|
||||
dmaengine_slave_config(chan, &host->dma_conf);
|
||||
desc = chan->device->device_prep_slave_sg(chan,
|
||||
data->sg, sglen, slave_dirn,
|
||||
DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
|
||||
@@ -1957,22 +1960,27 @@ static void atmci_configure_dma(struct atmel_mci *host)
|
||||
if (pdata && find_slave_dev(pdata->dma_slave)) {
|
||||
dma_cap_mask_t mask;
|
||||
|
||||
setup_dma_addr(pdata->dma_slave,
|
||||
host->mapbase + ATMCI_TDR,
|
||||
host->mapbase + ATMCI_RDR);
|
||||
|
||||
/* Try to grab a DMA channel */
|
||||
dma_cap_zero(mask);
|
||||
dma_cap_set(DMA_SLAVE, mask);
|
||||
host->dma.chan =
|
||||
dma_request_channel(mask, atmci_filter, pdata->dma_slave);
|
||||
}
|
||||
if (!host->dma.chan)
|
||||
if (!host->dma.chan) {
|
||||
dev_notice(&host->pdev->dev, "DMA not available, using PIO\n");
|
||||
else
|
||||
} else {
|
||||
dev_info(&host->pdev->dev,
|
||||
"Using %s for DMA transfers\n",
|
||||
dma_chan_name(host->dma.chan));
|
||||
|
||||
host->dma_conf.src_addr = host->mapbase + ATMCI_RDR;
|
||||
host->dma_conf.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
|
||||
host->dma_conf.src_maxburst = 1;
|
||||
host->dma_conf.dst_addr = host->mapbase + ATMCI_TDR;
|
||||
host->dma_conf.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
|
||||
host->dma_conf.dst_maxburst = 1;
|
||||
host->dma_conf.device_fc = false;
|
||||
}
|
||||
}
|
||||
|
||||
static inline unsigned int atmci_get_version(struct atmel_mci *host)
|
||||
|
Reference in New Issue
Block a user