[PATCH 04/10] regulator: max8952: Let core handle GPIO descriptor
Use the gpiod_get() rather than the devm_* version so that the regulator core can handle the lifecycle of these descriptors. Fixes: d7a261c2d1f2 ("regulator: max8952: Pass descriptor instead of GPIO number") Signed-off-by: Linus Walleij --- drivers/regulator/max8952.c | 8 +--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/regulator/max8952.c b/drivers/regulator/max8952.c index 6c39fff73b8a..baa8b771a6e4 100644 --- a/drivers/regulator/max8952.c +++ b/drivers/regulator/max8952.c @@ -231,9 +231,9 @@ static int max8952_pmic_probe(struct i2c_client *client, else gflags = GPIOD_OUT_LOW; gflags |= GPIOD_FLAGS_BIT_NONEXCLUSIVE; - gpiod = devm_gpiod_get_optional(>dev, - "max8952,en", - gflags); + gpiod = gpiod_get_optional(>dev, + "max8952,en", + gflags); if (IS_ERR(gpiod)) return PTR_ERR(gpiod); if (gpiod) @@ -241,6 +241,8 @@ static int max8952_pmic_probe(struct i2c_client *client, rdev = devm_regulator_register(>dev, , ); if (IS_ERR(rdev)) { + if (gpiod) + gpiod_put(gpiod); ret = PTR_ERR(rdev); dev_err(>dev, "regulator init failed (%d)\n", ret); return ret; -- 2.19.1
[PATCH 04/10] regulator: max8952: Let core handle GPIO descriptor
Use the gpiod_get() rather than the devm_* version so that the regulator core can handle the lifecycle of these descriptors. Fixes: d7a261c2d1f2 ("regulator: max8952: Pass descriptor instead of GPIO number") Signed-off-by: Linus Walleij --- drivers/regulator/max8952.c | 8 +--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/regulator/max8952.c b/drivers/regulator/max8952.c index 6c39fff73b8a..baa8b771a6e4 100644 --- a/drivers/regulator/max8952.c +++ b/drivers/regulator/max8952.c @@ -231,9 +231,9 @@ static int max8952_pmic_probe(struct i2c_client *client, else gflags = GPIOD_OUT_LOW; gflags |= GPIOD_FLAGS_BIT_NONEXCLUSIVE; - gpiod = devm_gpiod_get_optional(>dev, - "max8952,en", - gflags); + gpiod = gpiod_get_optional(>dev, + "max8952,en", + gflags); if (IS_ERR(gpiod)) return PTR_ERR(gpiod); if (gpiod) @@ -241,6 +241,8 @@ static int max8952_pmic_probe(struct i2c_client *client, rdev = devm_regulator_register(>dev, , ); if (IS_ERR(rdev)) { + if (gpiod) + gpiod_put(gpiod); ret = PTR_ERR(rdev); dev_err(>dev, "regulator init failed (%d)\n", ret); return ret; -- 2.19.1