]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
dmaengine: fsl-edma: remove redundant "idle" field from fsl_chan
authorFrank Li <Frank.Li@nxp.com>
Mon, 3 Jun 2024 15:23:16 +0000 (11:23 -0400)
committerVinod Koul <vkoul@kernel.org>
Tue, 11 Jun 2024 18:25:34 +0000 (23:55 +0530)
The 'idle' in fsl_chan is redundant as it's equivalent to
'status != DMA_IN_PROGRESS'. So remote it to simple code logic.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
Link: https://lore.kernel.org/r/20240603152317.69917-2-Frank.Li@nxp.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/fsl-edma-common.c
drivers/dma/fsl-edma-common.h
drivers/dma/fsl-edma-main.c
drivers/dma/mcf-edma-main.c

index 99107c08f9bf1dbcbd76bf89e8300044ae88d0cc..9d565ab85502cf0abd036af54200282c512eb03c 100644 (file)
@@ -59,7 +59,6 @@ void fsl_edma_tx_chan_handler(struct fsl_edma_chan *fsl_chan)
                vchan_cookie_complete(&fsl_chan->edesc->vdesc);
                fsl_chan->edesc = NULL;
                fsl_chan->status = DMA_COMPLETE;
-               fsl_chan->idle = true;
        } else {
                vchan_cyclic_callback(&fsl_chan->edesc->vdesc);
        }
@@ -239,7 +238,7 @@ int fsl_edma_terminate_all(struct dma_chan *chan)
        spin_lock_irqsave(&fsl_chan->vchan.lock, flags);
        fsl_edma_disable_request(fsl_chan);
        fsl_chan->edesc = NULL;
-       fsl_chan->idle = true;
+       fsl_chan->status = DMA_COMPLETE;
        vchan_get_all_descriptors(&fsl_chan->vchan, &head);
        spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags);
        vchan_dma_desc_free_list(&fsl_chan->vchan, &head);
@@ -259,7 +258,6 @@ int fsl_edma_pause(struct dma_chan *chan)
        if (fsl_chan->edesc) {
                fsl_edma_disable_request(fsl_chan);
                fsl_chan->status = DMA_PAUSED;
-               fsl_chan->idle = true;
        }
        spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags);
        return 0;
@@ -274,7 +272,6 @@ int fsl_edma_resume(struct dma_chan *chan)
        if (fsl_chan->edesc) {
                fsl_edma_enable_request(fsl_chan);
                fsl_chan->status = DMA_IN_PROGRESS;
-               fsl_chan->idle = false;
        }
        spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags);
        return 0;
@@ -780,7 +777,6 @@ void fsl_edma_xfer_desc(struct fsl_edma_chan *fsl_chan)
        fsl_edma_set_tcd_regs(fsl_chan, fsl_chan->edesc->tcd[0].vtcd);
        fsl_edma_enable_request(fsl_chan);
        fsl_chan->status = DMA_IN_PROGRESS;
-       fsl_chan->idle = false;
 }
 
 void fsl_edma_issue_pending(struct dma_chan *chan)
index 8dc6e09ecc83168849235409cbd5c0c75711bc87..1c90b95f4ff813ea829ef856f1bba548fa29bd82 100644 (file)
@@ -150,7 +150,6 @@ struct fsl_edma_chan {
        struct virt_dma_chan            vchan;
        enum dma_status                 status;
        enum fsl_edma_pm_state          pm_state;
-       bool                            idle;
        struct fsl_edma_engine          *edma;
        struct fsl_edma_desc            *edesc;
        struct dma_slave_config         cfg;
@@ -456,7 +455,6 @@ static inline struct fsl_edma_desc *to_fsl_edma_desc(struct virt_dma_desc *vd)
 static inline void fsl_edma_err_chan_handler(struct fsl_edma_chan *fsl_chan)
 {
        fsl_chan->status = DMA_ERROR;
-       fsl_chan->idle = true;
 }
 
 void fsl_edma_tx_chan_handler(struct fsl_edma_chan *fsl_chan);
index 346a501ab3fd9894c8dbcd538665cd5c775d982e..ec4f5baafad5f02293b885d03ec9eea38052c80a 100644 (file)
@@ -544,7 +544,6 @@ static int fsl_edma_probe(struct platform_device *pdev)
                fsl_chan->edma = fsl_edma;
                fsl_chan->pm_state = RUNNING;
                fsl_chan->srcid = 0;
-               fsl_chan->idle = true;
                fsl_chan->dma_dir = DMA_NONE;
                fsl_chan->vchan.desc_free = fsl_edma_free_desc;
 
@@ -669,7 +668,7 @@ static int fsl_edma_suspend_late(struct device *dev)
                        continue;
                spin_lock_irqsave(&fsl_chan->vchan.lock, flags);
                /* Make sure chan is idle or will force disable. */
-               if (unlikely(!fsl_chan->idle)) {
+               if (unlikely(fsl_chan->status == DMA_IN_PROGRESS)) {
                        dev_warn(dev, "WARN: There is non-idle channel.");
                        fsl_edma_disable_request(fsl_chan);
                        fsl_edma_chan_mux(fsl_chan, 0, false);
index 78c606f6d0026ed2a0f12cf53505731afe740878..0c5862bf26f8a5b5dcd2e21657efb273dbc653dc 100644 (file)
@@ -64,7 +64,6 @@ static irqreturn_t mcf_edma_err_handler(int irq, void *dev_id)
                        fsl_edma_disable_request(&mcf_edma->chans[ch]);
                        iowrite8(EDMA_CERR_CERR(ch), regs->cerr);
                        mcf_edma->chans[ch].status = DMA_ERROR;
-                       mcf_edma->chans[ch].idle = true;
                }
        }
 
@@ -196,7 +195,6 @@ static int mcf_edma_probe(struct platform_device *pdev)
 
                mcf_chan->edma = mcf_edma;
                mcf_chan->srcid = i;
-               mcf_chan->idle = true;
                mcf_chan->dma_dir = DMA_NONE;
                mcf_chan->vchan.desc_free = fsl_edma_free_desc;
                vchan_init(&mcf_chan->vchan, &mcf_edma->dma_dev);