Commit 2677d53d authored by Peng Fan's avatar Peng Fan Committed by Linus Walleij
Browse files

pinctrl: equilibrium: Use scope based of_node_put() cleanups



Use scope based of_node_put() cleanup to simplify code.

Signed-off-by: default avatarPeng Fan <peng.fan@nxp.com>
Reviewed-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
Link: https://lore.kernel.org/20240627131721.678727-3-peng.fan@oss.nxp.com


Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 791a8bb2
Loading
Loading
Loading
Loading
+5 −16
Original line number Diff line number Diff line
@@ -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));