spi, serial: move to dma_transfer_direction
fixup usage of dma direction by introducing dma_transfer_direction, this patch moves spi, serial drivers to use new enum Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com> Cc: Grant Likely <grant.likely@secretlab.ca> Cc: Alan Cox <alan@linux.intel.com> Acked-by: Mika Westerberg <mika.westerberg@iki.fi>
This commit is contained in:
parent
05f5799cbe
commit
a485df4b44
7 changed files with 24 additions and 21 deletions
|
@ -131,7 +131,7 @@ static int mid_spi_dma_transfer(struct dw_spi *dws, int cs_change)
|
|||
rxchan = dws->rxchan;
|
||||
|
||||
/* 2. Prepare the TX dma transfer */
|
||||
txconf.direction = DMA_TO_DEVICE;
|
||||
txconf.direction = DMA_MEM_TO_DEV;
|
||||
txconf.dst_addr = dws->dma_addr;
|
||||
txconf.dst_maxburst = LNW_DMA_MSIZE_16;
|
||||
txconf.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
|
||||
|
@ -147,13 +147,13 @@ static int mid_spi_dma_transfer(struct dw_spi *dws, int cs_change)
|
|||
txdesc = txchan->device->device_prep_slave_sg(txchan,
|
||||
&dws->tx_sgl,
|
||||
1,
|
||||
DMA_TO_DEVICE,
|
||||
DMA_MEM_TO_DEV,
|
||||
DMA_PREP_INTERRUPT | DMA_COMPL_SKIP_DEST_UNMAP);
|
||||
txdesc->callback = dw_spi_dma_done;
|
||||
txdesc->callback_param = dws;
|
||||
|
||||
/* 3. Prepare the RX dma transfer */
|
||||
rxconf.direction = DMA_FROM_DEVICE;
|
||||
rxconf.direction = DMA_DEV_TO_MEM;
|
||||
rxconf.src_addr = dws->dma_addr;
|
||||
rxconf.src_maxburst = LNW_DMA_MSIZE_16;
|
||||
rxconf.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
|
||||
|
@ -169,7 +169,7 @@ static int mid_spi_dma_transfer(struct dw_spi *dws, int cs_change)
|
|||
rxdesc = rxchan->device->device_prep_slave_sg(rxchan,
|
||||
&dws->rx_sgl,
|
||||
1,
|
||||
DMA_FROM_DEVICE,
|
||||
DMA_DEV_TO_MEM,
|
||||
DMA_PREP_INTERRUPT | DMA_COMPL_SKIP_DEST_UNMAP);
|
||||
rxdesc->callback = dw_spi_dma_done;
|
||||
rxdesc->callback_param = dws;
|
||||
|
|
|
@ -550,6 +550,7 @@ ep93xx_spi_dma_prepare(struct ep93xx_spi *espi, enum dma_data_direction dir)
|
|||
struct dma_async_tx_descriptor *txd;
|
||||
enum dma_slave_buswidth buswidth;
|
||||
struct dma_slave_config conf;
|
||||
enum dma_transfer_direction slave_dirn;
|
||||
struct scatterlist *sg;
|
||||
struct sg_table *sgt;
|
||||
struct dma_chan *chan;
|
||||
|
@ -572,6 +573,7 @@ ep93xx_spi_dma_prepare(struct ep93xx_spi *espi, enum dma_data_direction dir)
|
|||
|
||||
conf.src_addr = espi->sspdr_phys;
|
||||
conf.src_addr_width = buswidth;
|
||||
slave_dirn = DMA_DEV_TO_MEM;
|
||||
} else {
|
||||
chan = espi->dma_tx;
|
||||
buf = t->tx_buf;
|
||||
|
@ -579,6 +581,7 @@ ep93xx_spi_dma_prepare(struct ep93xx_spi *espi, enum dma_data_direction dir)
|
|||
|
||||
conf.dst_addr = espi->sspdr_phys;
|
||||
conf.dst_addr_width = buswidth;
|
||||
slave_dirn = DMA_MEM_TO_DEV;
|
||||
}
|
||||
|
||||
ret = dmaengine_slave_config(chan, &conf);
|
||||
|
@ -630,7 +633,7 @@ ep93xx_spi_dma_prepare(struct ep93xx_spi *espi, enum dma_data_direction dir)
|
|||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
txd = chan->device->device_prep_slave_sg(chan, sgt->sgl, nents,
|
||||
dir, DMA_CTRL_ACK);
|
||||
slave_dirn, DMA_CTRL_ACK);
|
||||
if (!txd) {
|
||||
dma_unmap_sg(chan->device->dev, sgt->sgl, sgt->nents, dir);
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
@ -978,7 +981,7 @@ static int ep93xx_spi_setup_dma(struct ep93xx_spi *espi)
|
|||
dma_cap_set(DMA_SLAVE, mask);
|
||||
|
||||
espi->dma_rx_data.port = EP93XX_DMA_SSP;
|
||||
espi->dma_rx_data.direction = DMA_FROM_DEVICE;
|
||||
espi->dma_rx_data.direction = DMA_DEV_TO_MEM;
|
||||
espi->dma_rx_data.name = "ep93xx-spi-rx";
|
||||
|
||||
espi->dma_rx = dma_request_channel(mask, ep93xx_spi_dma_filter,
|
||||
|
@ -989,7 +992,7 @@ static int ep93xx_spi_setup_dma(struct ep93xx_spi *espi)
|
|||
}
|
||||
|
||||
espi->dma_tx_data.port = EP93XX_DMA_SSP;
|
||||
espi->dma_tx_data.direction = DMA_TO_DEVICE;
|
||||
espi->dma_tx_data.direction = DMA_MEM_TO_DEV;
|
||||
espi->dma_tx_data.name = "ep93xx-spi-tx";
|
||||
|
||||
espi->dma_tx = dma_request_channel(mask, ep93xx_spi_dma_filter,
|
||||
|
|
|
@ -910,11 +910,11 @@ static int configure_dma(struct pl022 *pl022)
|
|||
{
|
||||
struct dma_slave_config rx_conf = {
|
||||
.src_addr = SSP_DR(pl022->phybase),
|
||||
.direction = DMA_FROM_DEVICE,
|
||||
.direction = DMA_DEV_TO_MEM,
|
||||
};
|
||||
struct dma_slave_config tx_conf = {
|
||||
.dst_addr = SSP_DR(pl022->phybase),
|
||||
.direction = DMA_TO_DEVICE,
|
||||
.direction = DMA_MEM_TO_DEV,
|
||||
};
|
||||
unsigned int pages;
|
||||
int ret;
|
||||
|
@ -1051,7 +1051,7 @@ static int configure_dma(struct pl022 *pl022)
|
|||
rxdesc = rxchan->device->device_prep_slave_sg(rxchan,
|
||||
pl022->sgt_rx.sgl,
|
||||
rx_sglen,
|
||||
DMA_FROM_DEVICE,
|
||||
DMA_DEV_TO_MEM,
|
||||
DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
|
||||
if (!rxdesc)
|
||||
goto err_rxdesc;
|
||||
|
@ -1059,7 +1059,7 @@ static int configure_dma(struct pl022 *pl022)
|
|||
txdesc = txchan->device->device_prep_slave_sg(txchan,
|
||||
pl022->sgt_tx.sgl,
|
||||
tx_sglen,
|
||||
DMA_TO_DEVICE,
|
||||
DMA_MEM_TO_DEV,
|
||||
DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
|
||||
if (!txdesc)
|
||||
goto err_txdesc;
|
||||
|
|
|
@ -1051,7 +1051,7 @@ static void pch_spi_handle_dma(struct pch_spi_data *data, int *bpw)
|
|||
}
|
||||
sg = dma->sg_rx_p;
|
||||
desc_rx = dma->chan_rx->device->device_prep_slave_sg(dma->chan_rx, sg,
|
||||
num, DMA_FROM_DEVICE,
|
||||
num, DMA_DEV_TO_MEM,
|
||||
DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
|
||||
if (!desc_rx) {
|
||||
dev_err(&data->master->dev, "%s:device_prep_slave_sg Failed\n",
|
||||
|
@ -1086,7 +1086,7 @@ static void pch_spi_handle_dma(struct pch_spi_data *data, int *bpw)
|
|||
}
|
||||
sg = dma->sg_tx_p;
|
||||
desc_tx = dma->chan_tx->device->device_prep_slave_sg(dma->chan_tx,
|
||||
sg, num, DMA_TO_DEVICE,
|
||||
sg, num, DMA_MEM_TO_DEV,
|
||||
DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
|
||||
if (!desc_tx) {
|
||||
dev_err(&data->master->dev, "%s:device_prep_slave_sg Failed\n",
|
||||
|
|
|
@ -268,7 +268,7 @@ static void pl011_dma_probe_initcall(struct uart_amba_port *uap)
|
|||
struct dma_slave_config tx_conf = {
|
||||
.dst_addr = uap->port.mapbase + UART01x_DR,
|
||||
.dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE,
|
||||
.direction = DMA_TO_DEVICE,
|
||||
.direction = DMA_MEM_TO_DEV,
|
||||
.dst_maxburst = uap->fifosize >> 1,
|
||||
};
|
||||
struct dma_chan *chan;
|
||||
|
@ -301,7 +301,7 @@ static void pl011_dma_probe_initcall(struct uart_amba_port *uap)
|
|||
struct dma_slave_config rx_conf = {
|
||||
.src_addr = uap->port.mapbase + UART01x_DR,
|
||||
.src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE,
|
||||
.direction = DMA_FROM_DEVICE,
|
||||
.direction = DMA_DEV_TO_MEM,
|
||||
.src_maxburst = uap->fifosize >> 1,
|
||||
};
|
||||
|
||||
|
@ -480,7 +480,7 @@ static int pl011_dma_tx_refill(struct uart_amba_port *uap)
|
|||
return -EBUSY;
|
||||
}
|
||||
|
||||
desc = dma_dev->device_prep_slave_sg(chan, &dmatx->sg, 1, DMA_TO_DEVICE,
|
||||
desc = dma_dev->device_prep_slave_sg(chan, &dmatx->sg, 1, DMA_MEM_TO_DEV,
|
||||
DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
|
||||
if (!desc) {
|
||||
dma_unmap_sg(dma_dev->dev, &dmatx->sg, 1, DMA_TO_DEVICE);
|
||||
|
@ -676,7 +676,7 @@ static int pl011_dma_rx_trigger_dma(struct uart_amba_port *uap)
|
|||
&uap->dmarx.sgbuf_b : &uap->dmarx.sgbuf_a;
|
||||
dma_dev = rxchan->device;
|
||||
desc = rxchan->device->device_prep_slave_sg(rxchan, &sgbuf->sg, 1,
|
||||
DMA_FROM_DEVICE,
|
||||
DMA_DEV_TO_MEM,
|
||||
DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
|
||||
/*
|
||||
* If the DMA engine is busy and cannot prepare a
|
||||
|
|
|
@ -747,7 +747,7 @@ static int dma_handle_rx(struct eg20t_port *priv)
|
|||
sg_dma_address(sg) = priv->rx_buf_dma;
|
||||
|
||||
desc = priv->chan_rx->device->device_prep_slave_sg(priv->chan_rx,
|
||||
sg, 1, DMA_FROM_DEVICE,
|
||||
sg, 1, DMA_DEV_TO_MEM,
|
||||
DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
|
||||
|
||||
if (!desc)
|
||||
|
@ -906,7 +906,7 @@ static unsigned int dma_handle_tx(struct eg20t_port *priv)
|
|||
}
|
||||
|
||||
desc = priv->chan_tx->device->device_prep_slave_sg(priv->chan_tx,
|
||||
priv->sg_tx_p, nent, DMA_TO_DEVICE,
|
||||
priv->sg_tx_p, nent, DMA_MEM_TO_DEV,
|
||||
DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
|
||||
if (!desc) {
|
||||
dev_err(priv->port.dev, "%s:device_prep_slave_sg Failed\n",
|
||||
|
|
|
@ -1207,7 +1207,7 @@ static void sci_submit_rx(struct sci_port *s)
|
|||
struct dma_async_tx_descriptor *desc;
|
||||
|
||||
desc = chan->device->device_prep_slave_sg(chan,
|
||||
sg, 1, DMA_FROM_DEVICE, DMA_PREP_INTERRUPT);
|
||||
sg, 1, DMA_DEV_TO_MEM, DMA_PREP_INTERRUPT);
|
||||
|
||||
if (desc) {
|
||||
s->desc_rx[i] = desc;
|
||||
|
@ -1322,7 +1322,7 @@ static void work_fn_tx(struct work_struct *work)
|
|||
BUG_ON(!sg_dma_len(sg));
|
||||
|
||||
desc = chan->device->device_prep_slave_sg(chan,
|
||||
sg, s->sg_len_tx, DMA_TO_DEVICE,
|
||||
sg, s->sg_len_tx, DMA_MEM_TO_DEV,
|
||||
DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
|
||||
if (!desc) {
|
||||
/* switch to PIO */
|
||||
|
|
Loading…
Reference in a new issue