]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/regulator/lp8788-ldo.c
Merge branch 'for-4.20/logitech-highres' into for-linus
[linux.git] / drivers / regulator / lp8788-ldo.c
index cbfd358735757b7aaaa096fbbf6140026b112d2a..f2347474a106ecdc4f0f012db0d7acdaf01f4b7a 100644 (file)
@@ -16,7 +16,7 @@
 #include <linux/err.h>
 #include <linux/platform_device.h>
 #include <linux/regulator/driver.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 #include <linux/mfd/lp8788.h>
 
 /* register address */
@@ -85,8 +85,6 @@
 #define LP8788_STARTUP_TIME_S          3
 
 #define ENABLE_TIME_USEC               32
-#define ENABLE                         GPIOF_OUT_INIT_HIGH
-#define DISABLE                                GPIOF_OUT_INIT_LOW
 
 enum lp8788_ldo_id {
        DLDO1,
@@ -117,7 +115,7 @@ struct lp8788_ldo {
        struct lp8788 *lp;
        struct regulator_desc *desc;
        struct regulator_dev *regulator;
-       struct lp8788_ldo_enable_pin *en_pin;
+       struct gpio_desc *ena_gpiod;
 };
 
 /* DLDO 1, 2, 3, 9 voltage table */
@@ -469,7 +467,6 @@ static int lp8788_config_ldo_enable_mode(struct platform_device *pdev,
                                        enum lp8788_ldo_id id)
 {
        struct lp8788 *lp = ldo->lp;
-       struct lp8788_platform_data *pdata = lp->pdata;
        enum lp8788_ext_ldo_en_id enable_id;
        u8 en_mask[] = {
                [EN_ALDO1]   = LP8788_EN_SEL_ALDO1_M,
@@ -504,11 +501,18 @@ static int lp8788_config_ldo_enable_mode(struct platform_device *pdev,
                return 0;
        }
 
-       /* if no platform data for ldo pin, then set default enable mode */
-       if (!pdata || !pdata->ldo_pin || !pdata->ldo_pin[enable_id])
+       /* FIXME: check default mode for GPIO here: high or low? */
+       ldo->ena_gpiod = devm_gpiod_get_index_optional(&pdev->dev,
+                                                      "enable",
+                                                      enable_id,
+                                                      GPIOD_OUT_HIGH);
+       if (IS_ERR(ldo->ena_gpiod))
+               return PTR_ERR(ldo->ena_gpiod);
+
+       /* if no GPIO for ldo pin, then set default enable mode */
+       if (!ldo->ena_gpiod)
                goto set_default_ldo_enable_mode;
 
-       ldo->en_pin = pdata->ldo_pin[enable_id];
        return 0;
 
 set_default_ldo_enable_mode:
@@ -533,10 +537,8 @@ static int lp8788_dldo_probe(struct platform_device *pdev)
        if (ret)
                return ret;
 
-       if (ldo->en_pin) {
-               cfg.ena_gpio = ldo->en_pin->gpio;
-               cfg.ena_gpio_flags = ldo->en_pin->init_state;
-       }
+       if (ldo->ena_gpiod)
+               cfg.ena_gpiod = ldo->ena_gpiod;
 
        cfg.dev = pdev->dev.parent;
        cfg.init_data = lp->pdata ? lp->pdata->dldo_data[id] : NULL;
@@ -582,10 +584,8 @@ static int lp8788_aldo_probe(struct platform_device *pdev)
        if (ret)
                return ret;
 
-       if (ldo->en_pin) {
-               cfg.ena_gpio = ldo->en_pin->gpio;
-               cfg.ena_gpio_flags = ldo->en_pin->init_state;
-       }
+       if (ldo->ena_gpiod)
+               cfg.ena_gpiod = ldo->ena_gpiod;
 
        cfg.dev = pdev->dev.parent;
        cfg.init_data = lp->pdata ? lp->pdata->aldo_data[id] : NULL;