power: axp221: Remove switch case to simplify axp_set_eldo
authorChen-Yu Tsai <wens@csie.org>
Mon, 2 May 2016 02:28:10 +0000 (10:28 +0800)
committerHans de Goede <hdegoede@redhat.com>
Wed, 25 May 2016 15:52:39 +0000 (17:52 +0200)
The ELDO enable bits and registers are contiguous for axp221. Instead
of a switch case testing against the index, just use the index to shift
the bit or register offset.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/power/axp221.c

index cb1f88b185ccacc802394b6706c0fa6864b9b3ff..727ab098068fe485d49e35d44549d402e06de3ef 100644 (file)
@@ -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)