.../dma/dw-axi-dmac/dw-axi-dmac-platform.c | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-)
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
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
© 2016 - 2025 Red Hat, Inc.