
On Fri, 9 Jan 2015 12:01:09 +0200 Siarhei Siamashka siarhei.siamashka@gmail.com wrote: ...
+int axp221_set_eldo2(unsigned int mvolt) +{
- int ret;
- u8 cfg = axp221_mvolt_to_cfg(mvolt, 700, 3300, 100);
- if (mvolt == 0)
return axp221_clrbits(AXP221_OUTPUT_CTRL2,
AXP221_OUTPUT_CTRL2_ELDO2_EN);
- ret = pmic_bus_write(AXP221_ELDO2_CTRL, cfg);
- if (ret)
return ret;
- return axp221_setbits(AXP221_OUTPUT_CTRL2,
AXP221_OUTPUT_CTRL2_ELDO2_EN);
+}
+int axp221_set_eldo3(unsigned int mvolt) +{
- int ret;
- u8 cfg = axp221_mvolt_to_cfg(mvolt, 700, 3300, 100);
- if (mvolt == 0)
return axp221_clrbits(AXP221_OUTPUT_CTRL2,
AXP221_OUTPUT_CTRL2_ELDO3_EN);
- ret = pmic_bus_write(AXP221_ELDO3_CTRL, cfg);
- if (ret)
return ret;
- return axp221_setbits(AXP221_OUTPUT_CTRL2,
AXP221_OUTPUT_CTRL2_ELDO3_EN);
+}
Can we avoid code duplication here? I.e. only one function should be sufficient here:
int axp221_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: default: addr = AXP221_ELDO1_CTRL; bits = AXP221_OUTPUT_CTRL2_ELDO1_EN; break; }
if (mvolt == 0) return axp221_clrbits(AXP221_OUTPUT_CTRL2, bits);
ret = pmic_bus_write(addr, cfg); if (ret) return ret;
return axp221_setbits(AXP221_OUTPUT_CTRL2, bits); }
Thanks, Anatolij