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

From: LECOINTRE Philippe
Date: Wed Feb 05 2025 - 08:40:20 EST


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@xxxxxxxxxxxxxxx>
Acked-by: Simon Lenain <simon.lenain@xxxxxxxxxxxxxxx>
---
.../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