]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
regulator: sy7636a: fix lifecycle of power good gpio
authorAndreas Kemnade <akemnade@kernel.org>
Sat, 6 Sep 2025 09:09:13 +0000 (11:09 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 8 Sep 2025 15:33:24 +0000 (16:33 +0100)
Attach the power good gpio to the regulator device devres instead of the
parent device to fix problems if probe is run multiple times
(rmmod/insmod or some deferral).

Fixes: 8c485bedfb785 ("regulator: sy7636a: Initial commit")
Signed-off-by: Andreas Kemnade <akemnade@kernel.org>
Reviewed-by: Alistair Francis <alistair@alistair23.me>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Message-ID: <20250906-sy7636-rsrc-v1-2-e2886a9763a7@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/sy7636a-regulator.c

index d1e7ba1fb3e1afa2ad03afc8c0876cae166555df..27e3d939b7bb9e9af8821bbda053b7d961710fb3 100644 (file)
@@ -83,9 +83,11 @@ static int sy7636a_regulator_probe(struct platform_device *pdev)
        if (!regmap)
                return -EPROBE_DEFER;
 
-       gdp = devm_gpiod_get(pdev->dev.parent, "epd-pwr-good", GPIOD_IN);
+       device_set_of_node_from_dev(&pdev->dev, pdev->dev.parent);
+
+       gdp = devm_gpiod_get(&pdev->dev, "epd-pwr-good", GPIOD_IN);
        if (IS_ERR(gdp)) {
-               dev_err(pdev->dev.parent, "Power good GPIO fault %ld\n", PTR_ERR(gdp));
+               dev_err(&pdev->dev, "Power good GPIO fault %ld\n", PTR_ERR(gdp));
                return PTR_ERR(gdp);
        }
 
@@ -105,7 +107,6 @@ static int sy7636a_regulator_probe(struct platform_device *pdev)
        }
 
        config.dev = &pdev->dev;
-       config.dev->of_node = pdev->dev.parent->of_node;
        config.regmap = regmap;
 
        rdev = devm_regulator_register(&pdev->dev, &desc, &config);