Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a485df4b authored by Vinod Koul's avatar Vinod Koul
Browse files

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: default avatarVinod Koul <vinod.koul@linux.intel.com>
Cc: Grant Likely <grant.likely@secretlab.ca>
Cc: Alan Cox <alan@linux.intel.com>
Acked-by: default avatarMika Westerberg <mika.westerberg@iki.fi>
parent 05f5799c
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -131,7 +131,7 @@ static int mid_spi_dma_transfer(struct dw_spi *dws, int cs_change)
	rxchan = dws->rxchan;
	rxchan = dws->rxchan;


	/* 2. Prepare the TX dma transfer */
	/* 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_addr = dws->dma_addr;
	txconf.dst_maxburst = LNW_DMA_MSIZE_16;
	txconf.dst_maxburst = LNW_DMA_MSIZE_16;
	txconf.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
	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,
	txdesc = txchan->device->device_prep_slave_sg(txchan,
				&dws->tx_sgl,
				&dws->tx_sgl,
				1,
				1,
				DMA_TO_DEVICE,
				DMA_MEM_TO_DEV,
				DMA_PREP_INTERRUPT | DMA_COMPL_SKIP_DEST_UNMAP);
				DMA_PREP_INTERRUPT | DMA_COMPL_SKIP_DEST_UNMAP);
	txdesc->callback = dw_spi_dma_done;
	txdesc->callback = dw_spi_dma_done;
	txdesc->callback_param = dws;
	txdesc->callback_param = dws;


	/* 3. Prepare the RX dma transfer */
	/* 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_addr = dws->dma_addr;
	rxconf.src_maxburst = LNW_DMA_MSIZE_16;
	rxconf.src_maxburst = LNW_DMA_MSIZE_16;
	rxconf.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
	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,
	rxdesc = rxchan->device->device_prep_slave_sg(rxchan,
				&dws->rx_sgl,
				&dws->rx_sgl,
				1,
				1,
				DMA_FROM_DEVICE,
				DMA_DEV_TO_MEM,
				DMA_PREP_INTERRUPT | DMA_COMPL_SKIP_DEST_UNMAP);
				DMA_PREP_INTERRUPT | DMA_COMPL_SKIP_DEST_UNMAP);
	rxdesc->callback = dw_spi_dma_done;
	rxdesc->callback = dw_spi_dma_done;
	rxdesc->callback_param = dws;
	rxdesc->callback_param = dws;
+6 −3
Original line number Original line Diff line number Diff line
@@ -550,6 +550,7 @@ ep93xx_spi_dma_prepare(struct ep93xx_spi *espi, enum dma_data_direction dir)
	struct dma_async_tx_descriptor *txd;
	struct dma_async_tx_descriptor *txd;
	enum dma_slave_buswidth buswidth;
	enum dma_slave_buswidth buswidth;
	struct dma_slave_config conf;
	struct dma_slave_config conf;
	enum dma_transfer_direction slave_dirn;
	struct scatterlist *sg;
	struct scatterlist *sg;
	struct sg_table *sgt;
	struct sg_table *sgt;
	struct dma_chan *chan;
	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 = espi->sspdr_phys;
		conf.src_addr_width = buswidth;
		conf.src_addr_width = buswidth;
		slave_dirn = DMA_DEV_TO_MEM;
	} else {
	} else {
		chan = espi->dma_tx;
		chan = espi->dma_tx;
		buf = t->tx_buf;
		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 = espi->sspdr_phys;
		conf.dst_addr_width = buswidth;
		conf.dst_addr_width = buswidth;
		slave_dirn = DMA_MEM_TO_DEV;
	}
	}


	ret = dmaengine_slave_config(chan, &conf);
	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);
		return ERR_PTR(-ENOMEM);


	txd = chan->device->device_prep_slave_sg(chan, sgt->sgl, nents,
	txd = chan->device->device_prep_slave_sg(chan, sgt->sgl, nents,
						 dir, DMA_CTRL_ACK);
						 slave_dirn, DMA_CTRL_ACK);
	if (!txd) {
	if (!txd) {
		dma_unmap_sg(chan->device->dev, sgt->sgl, sgt->nents, dir);
		dma_unmap_sg(chan->device->dev, sgt->sgl, sgt->nents, dir);
		return ERR_PTR(-ENOMEM);
		return ERR_PTR(-ENOMEM);
@@ -978,7 +981,7 @@ static int ep93xx_spi_setup_dma(struct ep93xx_spi *espi)
	dma_cap_set(DMA_SLAVE, mask);
	dma_cap_set(DMA_SLAVE, mask);


	espi->dma_rx_data.port = EP93XX_DMA_SSP;
	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_data.name = "ep93xx-spi-rx";


	espi->dma_rx = dma_request_channel(mask, ep93xx_spi_dma_filter,
	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.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_data.name = "ep93xx-spi-tx";


	espi->dma_tx = dma_request_channel(mask, ep93xx_spi_dma_filter,
	espi->dma_tx = dma_request_channel(mask, ep93xx_spi_dma_filter,
+4 −4
Original line number Original line Diff line number Diff line
@@ -910,11 +910,11 @@ static int configure_dma(struct pl022 *pl022)
{
{
	struct dma_slave_config rx_conf = {
	struct dma_slave_config rx_conf = {
		.src_addr = SSP_DR(pl022->phybase),
		.src_addr = SSP_DR(pl022->phybase),
		.direction = DMA_FROM_DEVICE,
		.direction = DMA_DEV_TO_MEM,
	};
	};
	struct dma_slave_config tx_conf = {
	struct dma_slave_config tx_conf = {
		.dst_addr = SSP_DR(pl022->phybase),
		.dst_addr = SSP_DR(pl022->phybase),
		.direction = DMA_TO_DEVICE,
		.direction = DMA_MEM_TO_DEV,
	};
	};
	unsigned int pages;
	unsigned int pages;
	int ret;
	int ret;
@@ -1051,7 +1051,7 @@ static int configure_dma(struct pl022 *pl022)
	rxdesc = rxchan->device->device_prep_slave_sg(rxchan,
	rxdesc = rxchan->device->device_prep_slave_sg(rxchan,
				      pl022->sgt_rx.sgl,
				      pl022->sgt_rx.sgl,
				      rx_sglen,
				      rx_sglen,
				      DMA_FROM_DEVICE,
				      DMA_DEV_TO_MEM,
				      DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
				      DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
	if (!rxdesc)
	if (!rxdesc)
		goto err_rxdesc;
		goto err_rxdesc;
@@ -1059,7 +1059,7 @@ static int configure_dma(struct pl022 *pl022)
	txdesc = txchan->device->device_prep_slave_sg(txchan,
	txdesc = txchan->device->device_prep_slave_sg(txchan,
				      pl022->sgt_tx.sgl,
				      pl022->sgt_tx.sgl,
				      tx_sglen,
				      tx_sglen,
				      DMA_TO_DEVICE,
				      DMA_MEM_TO_DEV,
				      DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
				      DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
	if (!txdesc)
	if (!txdesc)
		goto err_txdesc;
		goto err_txdesc;
+2 −2
Original line number Original line Diff line number Diff line
@@ -1051,7 +1051,7 @@ static void pch_spi_handle_dma(struct pch_spi_data *data, int *bpw)
	}
	}
	sg = dma->sg_rx_p;
	sg = dma->sg_rx_p;
	desc_rx = dma->chan_rx->device->device_prep_slave_sg(dma->chan_rx, sg,
	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);
					DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
	if (!desc_rx) {
	if (!desc_rx) {
		dev_err(&data->master->dev, "%s:device_prep_slave_sg Failed\n",
		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;
	sg = dma->sg_tx_p;
	desc_tx = dma->chan_tx->device->device_prep_slave_sg(dma->chan_tx,
	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);
					DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
	if (!desc_tx) {
	if (!desc_tx) {
		dev_err(&data->master->dev, "%s:device_prep_slave_sg Failed\n",
		dev_err(&data->master->dev, "%s:device_prep_slave_sg Failed\n",
+4 −4
Original line number Original line Diff line number Diff line
@@ -268,7 +268,7 @@ static void pl011_dma_probe_initcall(struct uart_amba_port *uap)
	struct dma_slave_config tx_conf = {
	struct dma_slave_config tx_conf = {
		.dst_addr = uap->port.mapbase + UART01x_DR,
		.dst_addr = uap->port.mapbase + UART01x_DR,
		.dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE,
		.dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE,
		.direction = DMA_TO_DEVICE,
		.direction = DMA_MEM_TO_DEV,
		.dst_maxburst = uap->fifosize >> 1,
		.dst_maxburst = uap->fifosize >> 1,
	};
	};
	struct dma_chan *chan;
	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 = {
		struct dma_slave_config rx_conf = {
			.src_addr = uap->port.mapbase + UART01x_DR,
			.src_addr = uap->port.mapbase + UART01x_DR,
			.src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE,
			.src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE,
			.direction = DMA_FROM_DEVICE,
			.direction = DMA_DEV_TO_MEM,
			.src_maxburst = uap->fifosize >> 1,
			.src_maxburst = uap->fifosize >> 1,
		};
		};


@@ -480,7 +480,7 @@ static int pl011_dma_tx_refill(struct uart_amba_port *uap)
		return -EBUSY;
		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);
					     DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
	if (!desc) {
	if (!desc) {
		dma_unmap_sg(dma_dev->dev, &dmatx->sg, 1, DMA_TO_DEVICE);
		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;
		&uap->dmarx.sgbuf_b : &uap->dmarx.sgbuf_a;
	dma_dev = rxchan->device;
	dma_dev = rxchan->device;
	desc = rxchan->device->device_prep_slave_sg(rxchan, &sgbuf->sg, 1,
	desc = rxchan->device->device_prep_slave_sg(rxchan, &sgbuf->sg, 1,
					DMA_FROM_DEVICE,
					DMA_DEV_TO_MEM,
					DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
					DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
	/*
	/*
	 * If the DMA engine is busy and cannot prepare a
	 * If the DMA engine is busy and cannot prepare a
Loading