diff mbox series

dmaengine: dw-axi-dmac: optional reset support

Message ID bf8f02ced6604f80acb84e82ea3a9268@thalesgroup.com (mailing list archive)
State New
Headers show
Series dmaengine: dw-axi-dmac: optional reset support | expand

Commit Message

LECOINTRE Philippe Feb. 5, 2025, 1:38 p.m. UTC
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(-)

Comments

LECOINTRE Philippe April 1, 2025, 7:29 a.m. UTC | #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
diff mbox series

Patch

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,
 	},
 	{}
 };