dmaengine: fsl-edma: transition from bool fields to bitmask flags in drvdata
authorFrank Li <Frank.Li@nxp.com>
Mon, 21 Aug 2023 16:16:08 +0000 (12:16 -0400)
committerVinod Koul <vkoul@kernel.org>
Tue, 22 Aug 2023 14:41:02 +0000 (20:11 +0530)
Replace individual bool fields with bitmask flags within drvdata. This
will facilitate future extensions, making it easier to add more flags to
accommodate new versions of the edma IP.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Link: https://lore.kernel.org/r/20230821161617.2142561-4-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

index 89b0d09..2549a72 100644 (file)
@@ -114,7 +114,7 @@ void fsl_edma_chan_mux(struct fsl_edma_chan *fsl_chan,
        chans_per_mux = fsl_chan->edma->n_chans / dmamux_nr;
        ch_off = fsl_chan->vchan.chan.chan_id % chans_per_mux;
 
-       if (fsl_chan->edma->drvdata->mux_swap)
+       if (fsl_chan->edma->drvdata->flags & FSL_EDMA_DRV_MUX_SWAP)
                ch_off += endian_diff[ch_off % 4];
 
        muxaddr = fsl_chan->edma->muxbase[ch / chans_per_mux];
index 004ec4a..db137a8 100644 (file)
@@ -144,11 +144,12 @@ enum edma_version {
        v3, /* 32ch, i.mx7ulp */
 };
 
+#define FSL_EDMA_DRV_HAS_DMACLK                BIT(0)
+#define FSL_EDMA_DRV_MUX_SWAP          BIT(1)
 struct fsl_edma_drvdata {
        enum edma_version       version;
        u32                     dmamuxs;
-       bool                    has_dmaclk;
-       bool                    mux_swap;
+       u32                     flags;
        int                     (*setup_irq)(struct platform_device *pdev,
                                             struct fsl_edma_engine *fsl_edma);
 };
index 8c9ee9f..a318ad6 100644 (file)
@@ -244,14 +244,14 @@ static struct fsl_edma_drvdata vf610_data = {
 static struct fsl_edma_drvdata ls1028a_data = {
        .version = v1,
        .dmamuxs = DMAMUX_NR,
-       .mux_swap = true,
+       .flags = FSL_EDMA_DRV_MUX_SWAP,
        .setup_irq = fsl_edma_irq_init,
 };
 
 static struct fsl_edma_drvdata imx7ulp_data = {
        .version = v3,
        .dmamuxs = 1,
-       .has_dmaclk = true,
+       .flags = FSL_EDMA_DRV_HAS_DMACLK,
        .setup_irq = fsl_edma2_irq_init,
 };
 
@@ -303,7 +303,7 @@ static int fsl_edma_probe(struct platform_device *pdev)
        fsl_edma_setup_regs(fsl_edma);
        regs = &fsl_edma->regs;
 
-       if (drvdata->has_dmaclk) {
+       if (drvdata->flags & FSL_EDMA_DRV_HAS_DMACLK) {
                fsl_edma->dmaclk = devm_clk_get(&pdev->dev, "dma");
                if (IS_ERR(fsl_edma->dmaclk)) {
                        dev_err(&pdev->dev, "Missing DMA block clock.\n");