.is_enabled = axp_ldoio0_is_enabled, .set_suspend_enable = axp_ldoio0_enable, .set_suspend_disable = axp_ldoio0_disable, .set_suspend_voltage = axp_set_suspend_voltage, }; #define AXP20_LDO(_id, min, max, step1, vreg, shift, nbits, ereg, ebit, switch_vol, step2,new_level, mode_addr, freq_addr) \ AXP_LDO(AXP20, _id, min, max, step1, vreg, shift, nbits, ereg, ebit, switch_vol, step2, new_level, mode_addr, freq_addr) #define AXP20_DCDC(_id, min, max, step1, vreg, shift, nbits, ereg, ebit, switch_vol, step2, new_level, mode_addr, freq_addr) \ AXP_DCDC(AXP20, _id, min, max, step1, vreg, shift, nbits, ereg, ebit, switch_vol, step2, new_level, mode_addr, freq_addr) static struct axp_regulator_info axp20_regulator_info[] = { AXP20_DCDC(2, 700, 2275, 25, BUCK2, 0, 6, BUCK2EN,4, 0, 0, 0, 0, 0), AXP20_DCDC(3, 700, 3500, 25, BUCK3, 0, 7, BUCK3EN,1, 0, 0, 0, 0, 0), AXP20_LDO(1, 3300, 3300, 0, LDO1, 0, 0, LDO1EN, 0, 0, 0, 0, 0, 0), //ldo1 for rtc AXP20_LDO(2, 1800, 3300, 100, LDO2, 4, 4, LDO2EN, 2, 0, 0, 0, 0, 0), //ldo2 for aldo1 AXP20_LDO(3, 700, 3500, 25, LDO3, 0, 7, LDO3EN, 6, 0, 0, 0, 0, 0), //ldo3 for aldo2 AXP20_LDO(4, 1250, 3300, 0, LDO4, 0, 4, LDO4EN, 3, 0, 0, 0, 0, 0), //ldo4 for aldo3 AXP20_LDO(IO0, 1800, 3300, 100, LDOIO0, 4, 4, LDOIOEN,0, 0, 0, 0, 0, 0), //ldo5 for dldo1 }; static struct axp_reg_init axp_regl_init_data[] = { [axp20_vcc_dcdc2] = { { .constraints = { .name = "axp20_dcdc2", .min_uV = 700000, .max_uV = 2275000, .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | REGULATOR_CHANGE_STATUS,
.disable = axp_ldoio0_disable, .is_enabled = axp_ldoio0_is_enabled, .set_suspend_enable = axp_ldoio0_enable, .set_suspend_disable = axp_ldoio0_disable, .set_suspend_voltage = axp_set_suspend_voltage, }; #define AXP20_LDO(_id, min, max, step, vreg, shift, nbits, ereg, ebit) \ AXP_LDO(AXP20, _id, min, max, step, vreg, shift, nbits, ereg, ebit) #define AXP20_BUCK(_id, min, max, step, vreg, shift, nbits, ereg, ebit) \ AXP_BUCK(AXP20, _id, min, max, step, vreg, shift, nbits, ereg, ebit) static struct axp_regulator_info axp_regulator_info[] = { AXP20_LDO( 1, AXP20LDO1, AXP20LDO1, 0, LDO1, 0, 0, LDO1EN, 0),//ldo1 for rtc AXP20_LDO( 2, 1800, 3300, 100, LDO2, 4, 4, LDO2EN, 2),//ldo2 for analog1 AXP20_LDO( 3, 700, 3500, 25, LDO3, 0, 7, LDO3EN, 6),//ldo3 for digital AXP20_LDO( 4, 1250, 3300, 130, LDO4, 0, 4, LDO4EN, 3),//ldo4 for analog2 AXP20_BUCK( 2, 700, 2275, 25, BUCK2, 0, 6, BUCK2EN,4),//buck2 for core AXP20_BUCK( 3, 700, 3500, 25, BUCK3, 0, 7, BUCK3EN,1),//buck3 for memery AXP20_LDO( IO0,1800, 3300, 100, LDOIO0, 4, 4, LDOIOEN,0),//ldoio0 for mic }; static ssize_t workmode_show(struct device *dev, struct device_attribute *attr, char *buf) { struct regulator_dev *rdev = dev_get_drvdata(dev); struct axp_regulator_info *info = rdev_get_drvdata(rdev); struct device *axp_dev = to_axp_dev(rdev); int ret;