OSDN Git Service

dmaengine: mmp_tdma: remove dma_slave_config direction usage
authorVinod Koul <vkoul@kernel.org>
Thu, 19 Jul 2018 16:52:26 +0000 (22:22 +0530)
committerVinod Koul <vkoul@kernel.org>
Sun, 7 Oct 2018 13:55:11 +0000 (19:25 +0530)
dma_slave_config direction was marked as deprecated quite some
time back, remove the usage from this driver so that the field
can be removed

Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/mmp_tdma.c

index 13c68b6..c14f882 100644 (file)
@@ -116,6 +116,7 @@ struct mmp_tdma_chan {
        u32                             burst_sz;
        enum dma_slave_buswidth         buswidth;
        enum dma_status                 status;
+       struct dma_slave_config         slave_config;
 
        int                             idx;
        enum mmp_tdma_type              type;
@@ -139,6 +140,10 @@ struct mmp_tdma_device {
 
 #define to_mmp_tdma_chan(dchan) container_of(dchan, struct mmp_tdma_chan, chan)
 
+static int mmp_tdma_config_write(struct dma_chan *chan,
+                                enum dma_transfer_direction dir,
+                                struct dma_slave_config *dmaengine_cfg);
+
 static void mmp_tdma_chan_set_desc(struct mmp_tdma_chan *tdmac, dma_addr_t phys)
 {
        writel(phys, tdmac->reg_base + TDNDPR);
@@ -442,6 +447,8 @@ static struct dma_async_tx_descriptor *mmp_tdma_prep_dma_cyclic(
        if (!desc)
                goto err_out;
 
+       mmp_tdma_config_write(chan, direction, &tdmac->slave_config);
+
        while (buf < buf_len) {
                desc = &tdmac->desc_arr[i];
 
@@ -495,7 +502,18 @@ static int mmp_tdma_config(struct dma_chan *chan,
 {
        struct mmp_tdma_chan *tdmac = to_mmp_tdma_chan(chan);
 
-       if (dmaengine_cfg->direction == DMA_DEV_TO_MEM) {
+       memcpy(&tdmac->slave_config, dmaengine_cfg, sizeof(*dmaengine_cfg));
+
+       return 0;
+}
+
+static int mmp_tdma_config_write(struct dma_chan *chan,
+                                enum dma_transfer_direction dir,
+                                struct dma_slave_config *dmaengine_cfg)
+{
+       struct mmp_tdma_chan *tdmac = to_mmp_tdma_chan(chan);
+
+       if (dir == DMA_DEV_TO_MEM) {
                tdmac->dev_addr = dmaengine_cfg->src_addr;
                tdmac->burst_sz = dmaengine_cfg->src_maxburst;
                tdmac->buswidth = dmaengine_cfg->src_addr_width;
@@ -504,7 +522,7 @@ static int mmp_tdma_config(struct dma_chan *chan,
                tdmac->burst_sz = dmaengine_cfg->dst_maxburst;
                tdmac->buswidth = dmaengine_cfg->dst_addr_width;
        }
-       tdmac->dir = dmaengine_cfg->direction;
+       tdmac->dir = dir;
 
        return mmp_tdma_config_chan(chan);
 }