diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-04-03 11:52:16 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-04-03 11:52:16 -0700 |
commit | b51c4354dffd32b3472c5a3da7ce864c7be82601 (patch) | |
tree | 84efef7ea859085da102b2446c91ea8dd9a9b82b /drivers/regulator/gpio-regulator.c | |
parent | ffd776bf564f1308fb94634b032df296ce3134a3 (diff) | |
parent | 36fd679f45a25a7c634b3dbec35a2d7fdb832a65 (diff) |
Merge tag 'regulator-v4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator
Pull regulator updates from Mark Brown:
"A very small set of updates for the regulator API this time around,
there's a few bug fixes and also:
- Conversion of the regulator API to use GPIO descriptors rather than
numbers from Linus Walleij.
- New drivers for Marvell 88PG86x and Qualcomm PM8998 and PMI8998"
* tag 'regulator-v4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
regulator: qcom: smd: Add pm8998 and pmi8998 regulators
regulator: core: Add missing blank line between functions
regulator: qcom_smd: Drop regulator/{machine,of_regulator} includes
regulator: giving regulator controlling gpios a non-empty label when used through the devicetree.
regulator: gpio: Fix some error handling paths in 'gpio_regulator_probe()'
regulator: 88pg86x: new i2c dual regulator chip
regulator: 88pg86x: add DT bindings document
regulator: da9211: Pass descriptors instead of GPIO numbers
regulator: da9055: Pass descriptor instead of GPIO number
regulator: core: Support passing an initialized GPIO enable descriptor
regulator: dt: regulator-name is required property
regulator: of: Add a missing 'of_node_put()' in an error handling path of 'of_regulator_match()'
Diffstat (limited to 'drivers/regulator/gpio-regulator.c')
-rw-r--r-- | drivers/regulator/gpio-regulator.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/drivers/regulator/gpio-regulator.c b/drivers/regulator/gpio-regulator.c index 0fce06acfaec..a86b8997bb54 100644 --- a/drivers/regulator/gpio-regulator.c +++ b/drivers/regulator/gpio-regulator.c @@ -196,6 +196,7 @@ of_get_gpio_regulator_config(struct device *dev, struct device_node *np, break; } config->gpios[i].gpio = gpio; + config->gpios[i].label = config->supply_name; if (proplen > 0) { of_property_read_u32_index(np, "gpios-states", i, &ret); @@ -271,8 +272,7 @@ static int gpio_regulator_probe(struct platform_device *pdev) drvdata->desc.name = kstrdup(config->supply_name, GFP_KERNEL); if (drvdata->desc.name == NULL) { dev_err(&pdev->dev, "Failed to allocate supply name\n"); - ret = -ENOMEM; - goto err; + return -ENOMEM; } if (config->nr_gpios != 0) { @@ -292,7 +292,7 @@ static int gpio_regulator_probe(struct platform_device *pdev) dev_err(&pdev->dev, "Could not obtain regulator setting GPIOs: %d\n", ret); - goto err_memstate; + goto err_memgpio; } } @@ -303,7 +303,7 @@ static int gpio_regulator_probe(struct platform_device *pdev) if (drvdata->states == NULL) { dev_err(&pdev->dev, "Failed to allocate state data\n"); ret = -ENOMEM; - goto err_memgpio; + goto err_stategpio; } drvdata->nr_states = config->nr_states; @@ -324,7 +324,7 @@ static int gpio_regulator_probe(struct platform_device *pdev) default: dev_err(&pdev->dev, "No regulator type set\n"); ret = -EINVAL; - goto err_memgpio; + goto err_memstate; } /* build initial state from gpio init data. */ @@ -361,22 +361,21 @@ static int gpio_regulator_probe(struct platform_device *pdev) if (IS_ERR(drvdata->dev)) { ret = PTR_ERR(drvdata->dev); dev_err(&pdev->dev, "Failed to register regulator: %d\n", ret); - goto err_stategpio; + goto err_memstate; } platform_set_drvdata(pdev, drvdata); return 0; -err_stategpio: - gpio_free_array(drvdata->gpios, drvdata->nr_gpios); err_memstate: kfree(drvdata->states); +err_stategpio: + gpio_free_array(drvdata->gpios, drvdata->nr_gpios); err_memgpio: kfree(drvdata->gpios); err_name: kfree(drvdata->desc.name); -err: return ret; } |