diff options
-rw-r--r-- | drivers/regulator/max77663-regulator.c | 14 | ||||
-rw-r--r-- | include/linux/regulator/max77663-regulator.h | 3 |
2 files changed, 13 insertions, 4 deletions
diff --git a/drivers/regulator/max77663-regulator.c b/drivers/regulator/max77663-regulator.c index 68b13dec1a66..c961ab05d2b0 100644 --- a/drivers/regulator/max77663-regulator.c +++ b/drivers/regulator/max77663-regulator.c @@ -448,7 +448,8 @@ static int max77663_regulator_enable(struct regulator_dev *rdev) { struct max77663_regulator *reg = rdev_get_drvdata(rdev); struct max77663_regulator_platform_data *pdata = _to_pdata(reg); - int power_mode = POWER_MODE_NORMAL; + int power_mode = (pdata->flags & GLPM_ENABLE) ? + POWER_MODE_GLPM : POWER_MODE_NORMAL; if (reg->fps_src != FPS_SRC_NONE) { dev_dbg(&rdev->dev, "enable: Regulator %s using %s\n", @@ -523,11 +524,13 @@ static int max77663_regulator_set_mode(struct regulator_dev *rdev, unsigned int mode) { struct max77663_regulator *reg = rdev_get_drvdata(rdev); + struct max77663_regulator_platform_data *pdata = _to_pdata(reg); u8 power_mode; int ret; if (mode == REGULATOR_MODE_NORMAL) - power_mode = POWER_MODE_NORMAL; + power_mode = (pdata->flags & GLPM_ENABLE) ? + POWER_MODE_GLPM : POWER_MODE_NORMAL; else if (mode == REGULATOR_MODE_STANDBY) power_mode = POWER_MODE_LPM; else @@ -619,7 +622,9 @@ static int max77663_regulator_preinit(struct max77663_regulator *reg) * from SRC_0, SRC_1 and SRC_2. */ if ((reg->fps_src != FPS_SRC_NONE) && (pdata->fps_src == FPS_SRC_NONE) && (reg->power_mode != POWER_MODE_NORMAL)) { - ret = max77663_regulator_set_power_mode(reg, POWER_MODE_NORMAL); + val = (pdata->flags & GLPM_ENABLE) ? + POWER_MODE_GLPM : POWER_MODE_NORMAL; + ret = max77663_regulator_set_power_mode(reg, val); if (ret < 0) { dev_err(reg->dev, "preinit: Failed to " "set power mode to POWER_MODE_NORMAL\n"); @@ -655,7 +660,8 @@ static int max77663_regulator_preinit(struct max77663_regulator *reg) } if (pdata->init_enable) - val = POWER_MODE_NORMAL; + val = (pdata->flags & GLPM_ENABLE) ? + POWER_MODE_GLPM : POWER_MODE_NORMAL; else val = POWER_MODE_DISABLE; diff --git a/include/linux/regulator/max77663-regulator.h b/include/linux/regulator/max77663-regulator.h index 093ca42d4ca7..49ffee212f56 100644 --- a/include/linux/regulator/max77663-regulator.h +++ b/include/linux/regulator/max77663-regulator.h @@ -101,6 +101,9 @@ enum max77663_regulator_fps_src { /* SD Failling Slew Rate Active-Discharge Mode */ #define SD_FSRADE_DISABLE 0x40 +/* Group Low-Power Mode */ +#define GLPM_ENABLE 0x80 + struct max77663_regulator_fps_cfg { enum max77663_regulator_fps_src src; enum max77663_regulator_fps_en_src en_src; |