Skip to content

Commit

Permalink
regulator: max77686: Pass descriptor instead of GPIO number
Browse files Browse the repository at this point in the history
Instead of passing a global GPIO number, pass a descriptor looked
up from the device tree configuration node.

Tested on Odroid U3 (with max77686 although not using any GPIOs
for regulators, so at least default paths are not broken).

Cc: Chanwoo Choi <cw00.choi@samsung.com>
Cc: Krzysztof Kozlowski <krzk@kernel.org>
Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
Tested-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
  • Loading branch information
Linus Walleij authored and Mark Brown committed Nov 15, 2018
1 parent 1d2f468 commit 96392c3
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions drivers/regulator/max77686-regulator.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@
#include <linux/kernel.h>
#include <linux/bug.h>
#include <linux/err.h>
#include <linux/gpio.h>
#include <linux/of_gpio.h>
#include <linux/gpio/consumer.h>
#include <linux/slab.h>
#include <linux/platform_device.h>
#include <linux/regulator/driver.h>
Expand Down Expand Up @@ -76,6 +75,7 @@ enum max77686_ramp_rate {
};

struct max77686_data {
struct device *dev;
DECLARE_BITMAP(gpio_enabled, MAX77686_REGULATORS);

/* Array indexed by regulator id */
Expand Down Expand Up @@ -255,16 +255,20 @@ static int max77686_of_parse_cb(struct device_node *np,
case MAX77686_BUCK8:
case MAX77686_BUCK9:
case MAX77686_LDO20 ... MAX77686_LDO22:
config->ena_gpio = of_get_named_gpio(np,
"maxim,ena-gpios", 0);
config->ena_gpio_flags = GPIOF_OUT_INIT_HIGH;
config->ena_gpio_initialized = true;
config->ena_gpiod = devm_gpiod_get_from_of_node(max77686->dev,
np,
"maxim,ena",
0,
GPIOD_OUT_HIGH | GPIOD_FLAGS_BIT_NONEXCLUSIVE,
"max77686-regulator");
if (IS_ERR(config->ena_gpiod))
config->ena_gpiod = NULL;
break;
default:
return 0;
}

if (gpio_is_valid(config->ena_gpio)) {
if (config->ena_gpiod) {
set_bit(desc->id, max77686->gpio_enabled);

return regmap_update_bits(config->regmap, desc->enable_reg,
Expand Down Expand Up @@ -507,6 +511,7 @@ static int max77686_pmic_probe(struct platform_device *pdev)
if (!max77686)
return -ENOMEM;

max77686->dev = &pdev->dev;
config.dev = iodev->dev;
config.regmap = iodev->regmap;
config.driver_data = max77686;
Expand Down

0 comments on commit 96392c3

Please sign in to comment.