regulator: max8952: Pass descriptor instead of GPIO number
authorLinus Walleij <linus.walleij@linaro.org>
Mon, 14 May 2018 08:06:29 +0000 (10:06 +0200)
committerMark Brown <broonie@kernel.org>
Thu, 24 May 2018 15:50:36 +0000 (16:50 +0100)
Instead of passing a global GPIO number for the enable GPIO, pass
a descriptor looked up with the standard devm_gpiod_get_optional()
call.

All users of this regulator use device tree so the transition is
pretty smooth.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/max8952.c
include/linux/regulator/max8952.h

index 1096546c05e95d5842853c77859380797ac9308a..f1e77ed5dfec942d0a711c05c5bf4f59934a9bc6 100644 (file)
@@ -27,6 +27,7 @@
 #include <linux/regulator/driver.h>
 #include <linux/regulator/max8952.h>
 #include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 #include <linux/io.h>
 #include <linux/of.h>
 #include <linux/of_gpio.h>
@@ -148,7 +149,6 @@ static struct max8952_platform_data *max8952_parse_dt(struct device *dev)
 
        pd->gpio_vid0 = of_get_named_gpio(np, "max8952,vid-gpios", 0);
        pd->gpio_vid1 = of_get_named_gpio(np, "max8952,vid-gpios", 1);
-       pd->gpio_en = of_get_named_gpio(np, "max8952,en-gpio", 0);
 
        if (of_property_read_u32(np, "max8952,default-mode", &pd->default_mode))
                dev_warn(dev, "Default mode not specified, assuming 0\n");
@@ -197,6 +197,8 @@ static int max8952_pmic_probe(struct i2c_client *client,
        struct regulator_config config = { };
        struct max8952_data *max8952;
        struct regulator_dev *rdev;
+       struct gpio_desc *gpiod;
+       enum gpiod_flags gflags;
 
        int ret = 0, err = 0;
 
@@ -224,11 +226,17 @@ static int max8952_pmic_probe(struct i2c_client *client,
        config.driver_data = max8952;
        config.of_node = client->dev.of_node;
 
-       config.ena_gpio = pdata->gpio_en;
-       if (client->dev.of_node)
-               config.ena_gpio_initialized = true;
        if (pdata->reg_data->constraints.boot_on)
-               config.ena_gpio_flags |= GPIOF_OUT_INIT_HIGH;
+               gflags = GPIOD_OUT_HIGH;
+       else
+               gflags = GPIOD_OUT_LOW;
+       gpiod = devm_gpiod_get_optional(&client->dev,
+                                       "max8952,en",
+                                       gflags);
+       if (IS_ERR(gpiod))
+               return PTR_ERR(gpiod);
+       if (gpiod)
+               config.ena_gpiod = gpiod;
 
        rdev = devm_regulator_register(&client->dev, &regulator, &config);
        if (IS_ERR(rdev)) {
index 4dbb63a1d4ab8f9bffa95faee8ae128e16dcd309..686c42c041b58d02788840a0aa0ff973cae89042 100644 (file)
@@ -120,7 +120,6 @@ enum {
 struct max8952_platform_data {
        int gpio_vid0;
        int gpio_vid1;
-       int gpio_en;
 
        u32 default_mode;
        u32 dvs_mode[MAX8952_NUM_DVS_MODE]; /* MAX8952_DVS_MODEx_XXXXmV */