]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
pinctrl: ti: iodelay: Use scope based of_node_put() cleanups
authorPeng Fan <peng.fan@nxp.com>
Thu, 27 Jun 2024 13:17:19 +0000 (21:17 +0800)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 3 Jul 2024 12:40:38 +0000 (14:40 +0200)
Use scope based of_node_put() cleanup to simplify code.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Link: https://lore.kernel.org/20240627131721.678727-2-peng.fan@oss.nxp.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/ti/pinctrl-ti-iodelay.c

index ef97586385019ad994f515a361134a9baddfe3ec..f5e5a23d222600e4c0eb6a2b0b37dbea99e48092 100644 (file)
@@ -822,53 +822,48 @@ MODULE_DEVICE_TABLE(of, ti_iodelay_of_match);
 static int ti_iodelay_probe(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
-       struct device_node *np = of_node_get(dev->of_node);
+       struct device_node *np __free(device_node) = of_node_get(dev->of_node);
        struct resource *res;
        struct ti_iodelay_device *iod;
-       int ret = 0;
+       int ret;
 
        if (!np) {
-               ret = -EINVAL;
                dev_err(dev, "No OF node\n");
-               goto exit_out;
+               return -EINVAL;
        }
 
        iod = devm_kzalloc(dev, sizeof(*iod), GFP_KERNEL);
-       if (!iod) {
-               ret = -ENOMEM;
-               goto exit_out;
-       }
+       if (!iod)
+               return -ENOMEM;
+
        iod->dev = dev;
        iod->reg_data = device_get_match_data(dev);
        if (!iod->reg_data) {
-               ret = -EINVAL;
                dev_err(dev, "No DATA match\n");
-               goto exit_out;
+               return -EINVAL;
        }
 
        /* So far We can assume there is only 1 bank of registers */
        iod->reg_base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
-       if (IS_ERR(iod->reg_base)) {
-               ret = PTR_ERR(iod->reg_base);
-               goto exit_out;
-       }
+       if (IS_ERR(iod->reg_base))
+               return PTR_ERR(iod->reg_base);
+
        iod->phys_base = res->start;
 
        iod->regmap = devm_regmap_init_mmio(dev, iod->reg_base,
                                            iod->reg_data->regmap_config);
        if (IS_ERR(iod->regmap)) {
                dev_err(dev, "Regmap MMIO init failed.\n");
-               ret = PTR_ERR(iod->regmap);
-               goto exit_out;
+               return PTR_ERR(iod->regmap);
        }
 
        ret = ti_iodelay_pinconf_init_dev(iod);
        if (ret)
-               goto exit_out;
+               return ret;
 
        ret = ti_iodelay_alloc_pins(dev, iod, res->start);
        if (ret)
-               goto exit_out;
+               return ret;
 
        iod->desc.pctlops = &ti_iodelay_pinctrl_ops;
        /* no pinmux ops - we are pinconf */
@@ -879,20 +874,12 @@ static int ti_iodelay_probe(struct platform_device *pdev)
        ret = devm_pinctrl_register_and_init(dev, &iod->desc, iod, &iod->pctl);
        if (ret) {
                dev_err(dev, "Failed to register pinctrl\n");
-               goto exit_out;
+               return ret;
        }
 
        platform_set_drvdata(pdev, iod);
 
-       ret = pinctrl_enable(iod->pctl);
-       if (ret)
-               goto exit_out;
-
-       return 0;
-
-exit_out:
-       of_node_put(np);
-       return ret;
+       return pinctrl_enable(iod->pctl);
 }
 
 /**