From: Mark Brown Date: Sun, 13 Mar 2016 08:19:22 +0000 (+0700) Subject: Merge remote-tracking branch 'regulator/topic/core' into regulator-next X-Git-Tag: v5.15~14050^2~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c155e0ab13fa6b318a026a7f5d3ee15ed7aba571;hp=905373b6377394ae6819574ed3c170632c8bab59;p=platform%2Fkernel%2Flinux-starfive.git Merge remote-tracking branch 'regulator/topic/core' into regulator-next --- diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 4405be1..055f8c1 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -3913,6 +3913,16 @@ regulator_register(const struct regulator_desc *regulator_desc, goto clean; } + if ((config->ena_gpio || config->ena_gpio_initialized) && + gpio_is_valid(config->ena_gpio)) { + ret = regulator_ena_gpio_request(rdev, config); + if (ret != 0) { + rdev_err(rdev, "Failed to request enable GPIO%d: %d\n", + config->ena_gpio, ret); + goto clean; + } + } + /* register with sysfs */ rdev->dev.class = ®ulator_class; rdev->dev.parent = dev; @@ -3921,21 +3931,11 @@ regulator_register(const struct regulator_desc *regulator_desc, ret = device_register(&rdev->dev); if (ret != 0) { put_device(&rdev->dev); - goto clean; + goto wash; } dev_set_drvdata(&rdev->dev, rdev); - if ((config->ena_gpio || config->ena_gpio_initialized) && - gpio_is_valid(config->ena_gpio)) { - ret = regulator_ena_gpio_request(rdev, config); - if (ret != 0) { - rdev_err(rdev, "Failed to request enable GPIO%d: %d\n", - config->ena_gpio, ret); - goto wash; - } - } - /* set regulator constraints */ if (init_data) constraints = &init_data->constraints; @@ -3974,13 +3974,13 @@ unset_supplies: scrub: regulator_ena_gpio_free(rdev); - -wash: device_unregister(&rdev->dev); /* device core frees rdev */ rdev = ERR_PTR(ret); goto out; +wash: + regulator_ena_gpio_free(rdev); clean: kfree(rdev); rdev = ERR_PTR(ret);