From: Linus Walleij Date: Thu, 6 Dec 2018 12:43:47 +0000 (+0100) Subject: regulator: max8973: Let core handle GPIO descriptor X-Git-Tag: v5.4-rc1~2003^2~1^2~36 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=48bd226f0ab3b91a837213cbfa15319f377effad;p=platform%2Fkernel%2Flinux-rpi.git regulator: max8973: Let core handle GPIO descriptor The probe path of this driver is a bit complex: sometimes the GPIO descriptor is passed to the regulator core, sometimes it is not. To handle it in a simple way: stick with the devm_* resource management and unhinge the GPIO descriptor devres handling right before passing it to the regulator core, if we pass it to the regulator core. Fixes: e7d2be696faa ("regulator: max8973: Pass descriptor instead of GPIO number") Signed-off-by: Linus Walleij Reviewed-by: Marek Szyprowski Reviewed-by: Charles Keepax Signed-off-by: Mark Brown --- diff --git a/drivers/regulator/max8973-regulator.c b/drivers/regulator/max8973-regulator.c index e7a58b50..9aee144 100644 --- a/drivers/regulator/max8973-regulator.c +++ b/drivers/regulator/max8973-regulator.c @@ -808,7 +808,13 @@ static int max8973_probe(struct i2c_client *client, config.of_node = client->dev.of_node; config.regmap = max->regmap; - /* Register the regulators */ + /* + * Register the regulators + * Turn the GPIO descriptor over to the regulator core for + * lifecycle management if we pass an ena_gpiod. + */ + if (config.ena_gpiod) + devm_gpiod_unhinge(&client->dev, config.ena_gpiod); rdev = devm_regulator_register(&client->dev, &max->desc, &config); if (IS_ERR(rdev)) { ret = PTR_ERR(rdev);