diff mbox series

[V3,2/3] pinctrl: equilibrium: Use scope based of_node_put() cleanups

Message ID 20240627131721.678727-3-peng.fan@oss.nxp.com
State New
Headers show
Series pinctrl: use scope based of_node_put | expand

Commit Message

Peng Fan (OSS) June 27, 2024, 1:17 p.m. UTC
From: Peng Fan <peng.fan@nxp.com>

Use scope based of_node_put() cleanup to simplify code.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/pinctrl/pinctrl-equilibrium.c | 21 +++++----------------
 1 file changed, 5 insertions(+), 16 deletions(-)

Comments

Jonathan Cameron July 1, 2024, 12:56 p.m. UTC | #1
On Thu, 27 Jun 2024 21:17:20 +0800
"Peng Fan (OSS)" <peng.fan@oss.nxp.com> wrote:

> From: Peng Fan <peng.fan@nxp.com>
> 
> Use scope based of_node_put() cleanup to simplify code.
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>  drivers/pinctrl/pinctrl-equilibrium.c | 21 +++++----------------
>  1 file changed, 5 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/pinctrl/pinctrl-equilibrium.c b/drivers/pinctrl/pinctrl-equilibrium.c
> index a6d089eaaae5..3a9a0f059090 100644
> --- a/drivers/pinctrl/pinctrl-equilibrium.c
> +++ b/drivers/pinctrl/pinctrl-equilibrium.c
> @@ -588,7 +588,6 @@ static int funcs_utils(struct device *dev, struct pinfunction *funcs,
>  		       unsigned int *nr_funcs, funcs_util_ops op)
>  {
>  	struct device_node *node = dev->of_node;
> -	struct device_node *np;
>  	struct property *prop;
>  	const char *fn_name;
>  	const char **groups;
> @@ -596,7 +595,7 @@ static int funcs_utils(struct device *dev, struct pinfunction *funcs,
>  	int i, j;
>  
>  	i = 0;
> -	for_each_child_of_node(node, np) {
> +	for_each_child_of_node_scoped(node, np) {
>  		prop = of_find_property(np, "groups", NULL);
>  		if (!prop)
>  			continue;
> @@ -635,7 +634,6 @@ static int funcs_utils(struct device *dev, struct pinfunction *funcs,
>  			break;
>  
>  		default:
> -			of_node_put(np);
>  			return -EINVAL;
>  		}
>  		i++;
> @@ -708,11 +706,10 @@ static int eqbr_build_groups(struct eqbr_pinctrl_drv_data *drvdata)
>  	struct device_node *node = dev->of_node;
>  	unsigned int *pins, *pinmux, pin_id, pinmux_id;
>  	struct pingroup group, *grp = &group;
> -	struct device_node *np;
>  	struct property *prop;
>  	int j, err;
>  
> -	for_each_child_of_node(node, np) {
> +	for_each_child_of_node_scoped(node, np) {
>  		prop = of_find_property(np, "groups", NULL);
>  		if (!prop)
>  			continue;
> @@ -720,42 +717,35 @@ static int eqbr_build_groups(struct eqbr_pinctrl_drv_data *drvdata)
>  		err = of_property_count_u32_elems(np, "pins");
>  		if (err < 0) {
>  			dev_err(dev, "No pins in the group: %s\n", prop->name);
> -			of_node_put(np);
Given I think this is only called from probe, return dev_err_probe() works
nicely here as well.

>  			return err;
>  		}
Either way,
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
diff mbox series

Patch

diff --git a/drivers/pinctrl/pinctrl-equilibrium.c b/drivers/pinctrl/pinctrl-equilibrium.c
index a6d089eaaae5..3a9a0f059090 100644
--- a/drivers/pinctrl/pinctrl-equilibrium.c
+++ b/drivers/pinctrl/pinctrl-equilibrium.c
@@ -588,7 +588,6 @@  static int funcs_utils(struct device *dev, struct pinfunction *funcs,
 		       unsigned int *nr_funcs, funcs_util_ops op)
 {
 	struct device_node *node = dev->of_node;
-	struct device_node *np;
 	struct property *prop;
 	const char *fn_name;
 	const char **groups;
@@ -596,7 +595,7 @@  static int funcs_utils(struct device *dev, struct pinfunction *funcs,
 	int i, j;
 
 	i = 0;
-	for_each_child_of_node(node, np) {
+	for_each_child_of_node_scoped(node, np) {
 		prop = of_find_property(np, "groups", NULL);
 		if (!prop)
 			continue;
@@ -635,7 +634,6 @@  static int funcs_utils(struct device *dev, struct pinfunction *funcs,
 			break;
 
 		default:
-			of_node_put(np);
 			return -EINVAL;
 		}
 		i++;
@@ -708,11 +706,10 @@  static int eqbr_build_groups(struct eqbr_pinctrl_drv_data *drvdata)
 	struct device_node *node = dev->of_node;
 	unsigned int *pins, *pinmux, pin_id, pinmux_id;
 	struct pingroup group, *grp = &group;
-	struct device_node *np;
 	struct property *prop;
 	int j, err;
 
-	for_each_child_of_node(node, np) {
+	for_each_child_of_node_scoped(node, np) {
 		prop = of_find_property(np, "groups", NULL);
 		if (!prop)
 			continue;
@@ -720,42 +717,35 @@  static int eqbr_build_groups(struct eqbr_pinctrl_drv_data *drvdata)
 		err = of_property_count_u32_elems(np, "pins");
 		if (err < 0) {
 			dev_err(dev, "No pins in the group: %s\n", prop->name);
-			of_node_put(np);
 			return err;
 		}
 		grp->npins = err;
 		grp->name = prop->value;
 		pins = devm_kcalloc(dev, grp->npins, sizeof(*pins), GFP_KERNEL);
-		if (!pins) {
-			of_node_put(np);
+		if (!pins)
 			return -ENOMEM;
-		}
+
 		grp->pins = pins;
 
 		pinmux = devm_kcalloc(dev, grp->npins, sizeof(*pinmux), GFP_KERNEL);
-		if (!pinmux) {
-			of_node_put(np);
+		if (!pinmux)
 			return -ENOMEM;
-		}
 
 		for (j = 0; j < grp->npins; j++) {
 			if (of_property_read_u32_index(np, "pins", j, &pin_id)) {
 				dev_err(dev, "Group %s: Read intel pins id failed\n",
 					grp->name);
-				of_node_put(np);
 				return -EINVAL;
 			}
 			if (pin_id >= drvdata->pctl_desc.npins) {
 				dev_err(dev, "Group %s: Invalid pin ID, idx: %d, pin %u\n",
 					grp->name, j, pin_id);
-				of_node_put(np);
 				return -EINVAL;
 			}
 			pins[j] = pin_id;
 			if (of_property_read_u32_index(np, "pinmux", j, &pinmux_id)) {
 				dev_err(dev, "Group %s: Read intel pinmux id failed\n",
 					grp->name);
-				of_node_put(np);
 				return -EINVAL;
 			}
 			pinmux[j] = pinmux_id;
@@ -766,7 +756,6 @@  static int eqbr_build_groups(struct eqbr_pinctrl_drv_data *drvdata)
 						pinmux);
 		if (err < 0) {
 			dev_err(dev, "Failed to register group %s\n", grp->name);
-			of_node_put(np);
 			return err;
 		}
 		memset(&group, 0, sizeof(group));