RE: [PATCH] dmaengine: dw-axi-dmac: optional reset support

LECOINTRE Philippe
2025-04-01T07:30:28Z

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