|
@@ -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;
|