From 7051792ae3fb2156569cbce10fb2aabef1db08bd Mon Sep 17 00:00:00 2001 From: shengfei Xu Date: Wed, 6 Dec 2017 15:04:21 +0800 Subject: [PATCH] regulator: rk808: rk816: fix up the DCDC and LDO setting off in sleep mode Change-Id: I1022a7a8951a3115ac01a43f2165b5eac6202ab4 Signed-off-by: shengfei Xu --- drivers/regulator/rk808-regulator.c | 30 ++++++++++++----------------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/drivers/regulator/rk808-regulator.c b/drivers/regulator/rk808-regulator.c index b78ebd2e3524..7c59fb1ea657 100644 --- a/drivers/regulator/rk808-regulator.c +++ b/drivers/regulator/rk808-regulator.c @@ -386,18 +386,13 @@ static int rk816_set_suspend_enable(struct regulator_dev *rdev) if (rdev->desc->id <= RK816_ID_DCDC4) { reg = rdev->desc->enable_reg + RK816_DCDC_SLP_EN_REG_OFFSET; - val = 1 << rdev->desc->id; - } - - if ((rdev->desc->id > RK816_ID_DCDC4) && - (rdev->desc->id <= RK816_ID_LDO4)) { + val = 1 << rdev->desc->id; + } else if ((rdev->desc->id > RK816_ID_DCDC4) && + (rdev->desc->id <= RK816_ID_LDO4)) { reg = rdev->desc->enable_reg - RK816_LDO1_4_SLP_EN_REG_OFFSET; val = 1 << (rdev->desc->id - RK816_ID_LDO1); - } - - if ((rdev->desc->id > RK816_ID_LDO4) && - (rdev->desc->id <= RK816_ID_LDO6)) { + } else { reg = rdev->desc->enable_reg - RK816_LDO5_6_SLP_EN_REG_OFFSET; val = 1 << (rdev->desc->id - RK816_ID_LDO1); @@ -412,21 +407,20 @@ static int rk816_set_suspend_disable(struct regulator_dev *rdev) { unsigned int reg, val; - if (rdev->desc->id <= RK816_ID_DCDC4) + if (rdev->desc->id <= RK816_ID_DCDC4) { reg = rdev->desc->enable_reg + RK816_DCDC_SLP_EN_REG_OFFSET; - - if ((rdev->desc->id > RK816_ID_DCDC4) && - (rdev->desc->id <= RK816_ID_LDO4)) + val = 1 << rdev->desc->id; + } else if ((rdev->desc->id > RK816_ID_DCDC4) && + (rdev->desc->id <= RK816_ID_LDO4)) { reg = rdev->desc->enable_reg - RK816_LDO1_4_SLP_EN_REG_OFFSET; - - if ((rdev->desc->id > RK816_ID_LDO4) && - (rdev->desc->id <= RK816_ID_LDO6)) + val = 1 << (rdev->desc->id - RK816_ID_LDO1); + } else { reg = rdev->desc->enable_reg - RK816_LDO5_6_SLP_EN_REG_OFFSET; - - val = 1 << (rdev->desc->id % 8); + val = 1 << (rdev->desc->id - RK816_ID_LDO1); + } return regmap_update_bits(rdev->regmap, reg, val,