static int pcf50633_regulator_voltage_value(enum pcf50633_regulator_id id, u8 bits) { int millivolts; switch (id) { case PCF50633_REGULATOR_AUTO: millivolts = auto_voltage_value(bits); break; case PCF50633_REGULATOR_DOWN1: millivolts = down_voltage_value(bits); break; case PCF50633_REGULATOR_DOWN2: millivolts = down_voltage_value(bits); break; case PCF50633_REGULATOR_LDO1: case PCF50633_REGULATOR_LDO2: case PCF50633_REGULATOR_LDO3: case PCF50633_REGULATOR_LDO4: case PCF50633_REGULATOR_LDO5: case PCF50633_REGULATOR_LDO6: case PCF50633_REGULATOR_HCLDO: millivolts = ldo_voltage_value(bits); break; default: return -EINVAL; } return millivolts * 1000; }
static int pcf50633_regulator_get_voltage(struct regulator_dev *rdev) { struct pcf50633 *pcf; int regulator_id, millivolts, volt_bits; u8 regnr; pcf = rdev_get_drvdata(rdev);; regulator_id = rdev_get_id(rdev); if (regulator_id >= PCF50633_NUM_REGULATORS) return -EINVAL; regnr = pcf50633_regulator_registers[regulator_id]; volt_bits = pcf50633_reg_read(pcf, regnr); if (volt_bits < 0) return -1; switch (regulator_id) { case PCF50633_REGULATOR_AUTO: millivolts = auto_voltage_value(volt_bits); break; case PCF50633_REGULATOR_DOWN1: millivolts = down_voltage_value(volt_bits); break; case PCF50633_REGULATOR_DOWN2: millivolts = down_voltage_value(volt_bits); break; case PCF50633_REGULATOR_LDO1: case PCF50633_REGULATOR_LDO2: case PCF50633_REGULATOR_LDO3: case PCF50633_REGULATOR_LDO4: case PCF50633_REGULATOR_LDO5: case PCF50633_REGULATOR_LDO6: case PCF50633_REGULATOR_HCLDO: millivolts = ldo_voltage_value(volt_bits); break; default: return -EINVAL; } return millivolts * 1000; }