Message ID | bf8f02ced6604f80acb84e82ea3a9268@thalesgroup.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | dmaengine: dw-axi-dmac: optional reset support | expand |
Classified as: {OPEN} Hello, Do you see any interest in this patch? I believe it makes the driver more generic to match all current and future use cases on SoCs that uses this controller. Also, I think it simplifies the reading of the driver by removing if statement. What do you think? Regards, Philippe {OPEN} > -----Original Message----- > From: LECOINTRE Philippe > Sent: Wednesday, February 5, 2025 2:39 PM > To: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>; > dmaengine@vger.kernel.org > Cc: linux-kernel@vger.kernel.org; LENAIN Simon > <simon.lenain@thalesgroup.com>; LEJEUNE Sebastien > <sebastien.lejeune@thalesgroup.com>; BARBEAU Etienne > <etienne.barbeau@thalesgroup.com>; RENAULT Xavier > <xavier.renault@thalesgroup.com> > Subject: [PATCH] dmaengine: dw-axi-dmac: optional reset support > > Use optional reset support to avoid having to add a new entry to > dw_dma_of_id_table for each target requiring reset support > > Signed-off-by: Philippe Lecointre <philippe.lecointre@thalesgroup.com> > Acked-by: Simon Lenain <simon.lenain@thalesgroup.com> > --- > .../dma/dw-axi-dmac/dw-axi-dmac-platform.c | 20 ++++++++----------- > 1 file changed, 8 insertions(+), 12 deletions(-) > > diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c > b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c > index b23536645ff7..186bfb35b9eb 100644 > --- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c > +++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c > @@ -48,8 +48,7 @@ > DMA_SLAVE_BUSWIDTH_64_BYTES) > > #define AXI_DMA_FLAG_HAS_APB_REGS BIT(0) > -#define AXI_DMA_FLAG_HAS_RESETS BIT(1) > -#define AXI_DMA_FLAG_USE_CFG2 BIT(2) > +#define AXI_DMA_FLAG_USE_CFG2 BIT(1) > > static inline void > axi_dma_iowrite32(struct axi_dma_chip *chip, u32 reg, u32 val) @@ - > 1498,15 +1497,13 @@ static int dw_probe(struct platform_device *pdev) > return PTR_ERR(chip->apb_regs); > } > > - if (flags & AXI_DMA_FLAG_HAS_RESETS) { > - resets = devm_reset_control_array_get_exclusive(&pdev- > >dev); > - if (IS_ERR(resets)) > - return PTR_ERR(resets); > + resets = devm_reset_control_array_get_optional_exclusive(&pdev- > >dev); > + if (IS_ERR(resets)) > + return PTR_ERR(resets); > > - ret = reset_control_deassert(resets); > - if (ret) > - return ret; > - } > + ret = reset_control_deassert(resets); > + if (ret) > + return ret; > > chip->dw->hdata->use_cfg2 = !!(flags & > AXI_DMA_FLAG_USE_CFG2); > > @@ -1665,10 +1662,9 @@ static const struct of_device_id > dw_dma_of_id_table[] = { > .data = (void *)AXI_DMA_FLAG_HAS_APB_REGS, > }, { > .compatible = "starfive,jh7110-axi-dma", > - .data = (void *)(AXI_DMA_FLAG_HAS_RESETS | > AXI_DMA_FLAG_USE_CFG2), > + .data = (void *)AXI_DMA_FLAG_USE_CFG2, > }, { > .compatible = "starfive,jh8100-axi-dma", > - .data = (void *)AXI_DMA_FLAG_HAS_RESETS, > }, > {} > }; > -- > 2.44.1
diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c index b23536645ff7..186bfb35b9eb 100644 --- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c +++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c @@ -48,8 +48,7 @@ DMA_SLAVE_BUSWIDTH_64_BYTES) #define AXI_DMA_FLAG_HAS_APB_REGS BIT(0) -#define AXI_DMA_FLAG_HAS_RESETS BIT(1) -#define AXI_DMA_FLAG_USE_CFG2 BIT(2) +#define AXI_DMA_FLAG_USE_CFG2 BIT(1) static inline void axi_dma_iowrite32(struct axi_dma_chip *chip, u32 reg, u32 val) @@ -1498,15 +1497,13 @@ static int dw_probe(struct platform_device *pdev) return PTR_ERR(chip->apb_regs); } - if (flags & AXI_DMA_FLAG_HAS_RESETS) { - resets = devm_reset_control_array_get_exclusive(&pdev->dev); - if (IS_ERR(resets)) - return PTR_ERR(resets); + resets = devm_reset_control_array_get_optional_exclusive(&pdev->dev); + if (IS_ERR(resets)) + return PTR_ERR(resets); - ret = reset_control_deassert(resets); - if (ret) - return ret; - } + ret = reset_control_deassert(resets); + if (ret) + return ret; chip->dw->hdata->use_cfg2 = !!(flags & AXI_DMA_FLAG_USE_CFG2); @@ -1665,10 +1662,9 @@ static const struct of_device_id dw_dma_of_id_table[] = { .data = (void *)AXI_DMA_FLAG_HAS_APB_REGS, }, { .compatible = "starfive,jh7110-axi-dma", - .data = (void *)(AXI_DMA_FLAG_HAS_RESETS | AXI_DMA_FLAG_USE_CFG2), + .data = (void *)AXI_DMA_FLAG_USE_CFG2, }, { .compatible = "starfive,jh8100-axi-dma", - .data = (void *)AXI_DMA_FLAG_HAS_RESETS, }, {} };