diff mbox series

[v4,6/8] reset: mchp: sparx5: Release syscon when not use anymore

Message ID 20240805101725.93947-7-herve.codina@bootlin.com (mailing list archive)
State New, archived
Headers show
Series Add support for the LAN966x PCI device using a DT overlay | expand

Commit Message

Herve Codina Aug. 5, 2024, 10:17 a.m. UTC
From: Clément Léger <clement.leger@bootlin.com>

The sparx5 reset controller does not release syscon when it is not used
anymore.

This reset controller is used by the LAN966x PCI device driver.
It can be removed from the system at runtime and needs to release its
consumed syscon on removal.

Use the newly introduced devm_syscon_regmap_lookup_by_phandle() in order
to get the syscon and automatically release it on removal.

Signed-off-by: Clément Léger <clement.leger@bootlin.com>
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
---
 drivers/reset/reset-microchip-sparx5.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

Comments

Steen Hegelund Aug. 7, 2024, 9:48 a.m. UTC | #1
Hi Herve,

On Mon, 2024-08-05 at 12:17 +0200, Herve Codina wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you
> know the content is safe
> 
> From: Clément Léger <clement.leger@bootlin.com>
> 
> The sparx5 reset controller does not release syscon when it is not
> used
> anymore.
> 
> This reset controller is used by the LAN966x PCI device driver.
> It can be removed from the system at runtime and needs to release its
> consumed syscon on removal.
> 
> Use the newly introduced devm_syscon_regmap_lookup_by_phandle() in
> order
> to get the syscon and automatically release it on removal.
> 
> Signed-off-by: Clément Léger <clement.leger@bootlin.com>
> Signed-off-by: Herve Codina <herve.codina@bootlin.com>
> ---
>  drivers/reset/reset-microchip-sparx5.c | 8 ++------
>  1 file changed, 2 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/reset/reset-microchip-sparx5.c
> b/drivers/reset/reset-microchip-sparx5.c
> index 69915c7b4941..c4fe65291a43 100644
> --- a/drivers/reset/reset-microchip-sparx5.c
> +++ b/drivers/reset/reset-microchip-sparx5.c
> @@ -65,15 +65,11 @@ static const struct reset_control_ops
> sparx5_reset_ops = {
>  static int mchp_sparx5_map_syscon(struct platform_device *pdev, char
> *name,
>                                   struct regmap **target)
>  {
> -       struct device_node *syscon_np;
> +       struct device *dev = &pdev->dev;
>         struct regmap *regmap;
>         int err;
> 
> -       syscon_np = of_parse_phandle(pdev->dev.of_node, name, 0);
> -       if (!syscon_np)
> -               return -ENODEV;
> -       regmap = syscon_node_to_regmap(syscon_np);
> -       of_node_put(syscon_np);
> +       regmap = devm_syscon_regmap_lookup_by_phandle(dev, dev-
> >of_node, name);
>         if (IS_ERR(regmap)) {
>                 err = PTR_ERR(regmap);
>                 dev_err(&pdev->dev, "No '%s' map: %d\n", name, err);
> --
> 2.45.0
> 

Looks good to me.

Reviewed-by: Steen Hegelund <Steen.Hegelund@microchip.com>

BR
Steen
diff mbox series

Patch

diff --git a/drivers/reset/reset-microchip-sparx5.c b/drivers/reset/reset-microchip-sparx5.c
index 69915c7b4941..c4fe65291a43 100644
--- a/drivers/reset/reset-microchip-sparx5.c
+++ b/drivers/reset/reset-microchip-sparx5.c
@@ -65,15 +65,11 @@  static const struct reset_control_ops sparx5_reset_ops = {
 static int mchp_sparx5_map_syscon(struct platform_device *pdev, char *name,
 				  struct regmap **target)
 {
-	struct device_node *syscon_np;
+	struct device *dev = &pdev->dev;
 	struct regmap *regmap;
 	int err;
 
-	syscon_np = of_parse_phandle(pdev->dev.of_node, name, 0);
-	if (!syscon_np)
-		return -ENODEV;
-	regmap = syscon_node_to_regmap(syscon_np);
-	of_node_put(syscon_np);
+	regmap = devm_syscon_regmap_lookup_by_phandle(dev, dev->of_node, name);
 	if (IS_ERR(regmap)) {
 		err = PTR_ERR(regmap);
 		dev_err(&pdev->dev, "No '%s' map: %d\n", name, err);