summaryrefslogtreecommitdiff
path: root/drivers/power
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/power')
-rw-r--r--drivers/power/axp221.c27
1 files changed, 7 insertions, 20 deletions
diff --git a/drivers/power/axp221.c b/drivers/power/axp221.c
index cb1f88b185..727ab09806 100644
--- a/drivers/power/axp221.c
+++ b/drivers/power/axp221.c
@@ -191,33 +191,20 @@ int axp_set_eldo(int eldo_num, unsigned int mvolt)
{
int ret;
u8 cfg = axp221_mvolt_to_cfg(mvolt, 700, 3300, 100);
- u8 addr, bits;
-
- switch (eldo_num) {
- case 3:
- addr = AXP221_ELDO3_CTRL;
- bits = AXP221_OUTPUT_CTRL2_ELDO3_EN;
- break;
- case 2:
- addr = AXP221_ELDO2_CTRL;
- bits = AXP221_OUTPUT_CTRL2_ELDO2_EN;
- break;
- case 1:
- addr = AXP221_ELDO1_CTRL;
- bits = AXP221_OUTPUT_CTRL2_ELDO1_EN;
- break;
- default:
+
+ if (eldo_num < 1 || eldo_num > 3)
return -EINVAL;
- }
if (mvolt == 0)
- return pmic_bus_clrbits(AXP221_OUTPUT_CTRL2, bits);
+ return pmic_bus_clrbits(AXP221_OUTPUT_CTRL2,
+ AXP221_OUTPUT_CTRL2_ELDO1_EN << (eldo_num - 1));
- ret = pmic_bus_write(addr, cfg);
+ ret = pmic_bus_write(AXP221_ELDO1_CTRL + (eldo_num - 1), cfg);
if (ret)
return ret;
- return pmic_bus_setbits(AXP221_OUTPUT_CTRL2, bits);
+ return pmic_bus_setbits(AXP221_OUTPUT_CTRL2,
+ AXP221_OUTPUT_CTRL2_ELDO1_EN << (eldo_num - 1));
}
int axp_init(void)