spi: dw-mid: convert to use DMAengine wrappers
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Thu, 2 Oct 2014 13:31:08 +0000 (16:31 +0300)
committerMark Brown <broonie@kernel.org>
Thu, 2 Oct 2014 16:06:26 +0000 (17:06 +0100)
Instead of direct dereference to dmaengine callbacks we are going to use
DMAengine wrappers.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-dw-mid.c

index 7bdf93747e5f11759fabe8ea83fcb7d3f7b553fc..a507add6231ef4a4c9980d8835b7d7e1b2c19cf0 100644 (file)
@@ -113,8 +113,7 @@ static void dw_spi_dma_done(void *arg)
 
 static int mid_spi_dma_transfer(struct dw_spi *dws, int cs_change)
 {
-       struct dma_async_tx_descriptor *txdesc = NULL, *rxdesc = NULL;
-       struct dma_chan *txchan, *rxchan;
+       struct dma_async_tx_descriptor *txdesc, *rxdesc;
        struct dma_slave_config txconf, rxconf;
        u16 dma_ctrl = 0;
 
@@ -132,8 +131,6 @@ static int mid_spi_dma_transfer(struct dw_spi *dws, int cs_change)
        }
 
        dws->dma_chan_done = 0;
-       txchan = dws->txchan;
-       rxchan = dws->rxchan;
 
        /* 2. Prepare the TX dma transfer */
        txconf.direction = DMA_MEM_TO_DEV;
@@ -143,14 +140,13 @@ static int mid_spi_dma_transfer(struct dw_spi *dws, int cs_change)
        txconf.dst_addr_width = dws->dma_width;
        txconf.device_fc = false;
 
-       txchan->device->device_control(txchan, DMA_SLAVE_CONFIG,
-                                      (unsigned long) &txconf);
+       dmaengine_slave_config(dws->txchan, &txconf);
 
        memset(&dws->tx_sgl, 0, sizeof(dws->tx_sgl));
        dws->tx_sgl.dma_address = dws->tx_dma;
        dws->tx_sgl.length = dws->len;
 
-       txdesc = dmaengine_prep_slave_sg(txchan,
+       txdesc = dmaengine_prep_slave_sg(dws->txchan,
                                &dws->tx_sgl,
                                1,
                                DMA_MEM_TO_DEV,
@@ -166,14 +162,13 @@ static int mid_spi_dma_transfer(struct dw_spi *dws, int cs_change)
        rxconf.src_addr_width = dws->dma_width;
        rxconf.device_fc = false;
 
-       rxchan->device->device_control(rxchan, DMA_SLAVE_CONFIG,
-                                      (unsigned long) &rxconf);
+       dmaengine_slave_config(dws->rxchan, &rxconf);
 
        memset(&dws->rx_sgl, 0, sizeof(dws->rx_sgl));
        dws->rx_sgl.dma_address = dws->rx_dma;
        dws->rx_sgl.length = dws->len;
 
-       rxdesc = dmaengine_prep_slave_sg(rxchan,
+       rxdesc = dmaengine_prep_slave_sg(dws->rxchan,
                                &dws->rx_sgl,
                                1,
                                DMA_DEV_TO_MEM,
@@ -182,8 +177,8 @@ static int mid_spi_dma_transfer(struct dw_spi *dws, int cs_change)
        rxdesc->callback_param = dws;
 
        /* rx must be started before tx due to spi instinct */
-       rxdesc->tx_submit(rxdesc);
-       txdesc->tx_submit(txdesc);
+       dmaengine_submit(rxdesc);
+       dmaengine_submit(txdesc);
        return 0;
 }