Loading drivers/regulator/max8997.c +18 −58 Original line number Diff line number Diff line Loading @@ -54,6 +54,13 @@ struct max8997_data { u8 saved_states[MAX8997_REG_MAX]; }; static const unsigned int safeoutvolt[] = { 4850000, 4900000, 4950000, 3300000, }; static inline void max8997_set_gpio(struct max8997_data *max8997) { int set3 = (max8997->buck125_gpioindex) & 0x1; Loading Loading @@ -130,29 +137,6 @@ static const struct voltage_map_desc *reg_voltage_map[] = { [MAX8997_CHARGER_TOPOFF] = &topoff_current_map_desc, }; static int max8997_list_voltage_safeout(struct regulator_dev *rdev, unsigned int selector) { int rid = rdev_get_id(rdev); if (rid == MAX8997_ESAFEOUT1 || rid == MAX8997_ESAFEOUT2) { switch (selector) { case 0: return 4850000; case 1: return 4900000; case 2: return 4950000; case 3: return 3300000; default: return -EINVAL; } } return -EINVAL; } static int max8997_list_voltage_charger_cv(struct regulator_dev *rdev, unsigned int selector) { Loading Loading @@ -722,49 +706,23 @@ out: return 0; } static const int safeoutvolt[] = { 3300000, 4850000, 4900000, 4950000, }; /* For SAFEOUT1 and SAFEOUT2 */ static int max8997_set_voltage_safeout(struct regulator_dev *rdev, int min_uV, int max_uV, unsigned *selector) static int max8997_set_voltage_safeout_sel(struct regulator_dev *rdev, unsigned selector) { struct max8997_data *max8997 = rdev_get_drvdata(rdev); struct i2c_client *i2c = max8997->iodev->i2c; int rid = rdev_get_id(rdev); int reg, shift = 0, mask, ret; int i = 0; u8 val; if (rid != MAX8997_ESAFEOUT1 && rid != MAX8997_ESAFEOUT2) return -EINVAL; for (i = 0; i < ARRAY_SIZE(safeoutvolt); i++) { if (min_uV <= safeoutvolt[i] && max_uV >= safeoutvolt[i]) break; } if (i >= ARRAY_SIZE(safeoutvolt)) return -EINVAL; if (i == 0) val = 0x3; else val = i - 1; ret = max8997_get_voltage_register(rdev, ®, &shift, &mask); if (ret) return ret; ret = max8997_update_reg(i2c, reg, val << shift, mask << shift); *selector = val; return ret; return max8997_update_reg(i2c, reg, selector << shift, mask << shift); } static int max8997_reg_disable_suspend(struct regulator_dev *rdev) Loading Loading @@ -824,12 +782,12 @@ static struct regulator_ops max8997_fixedvolt_ops = { }; static struct regulator_ops max8997_safeout_ops = { .list_voltage = max8997_list_voltage_safeout, .list_voltage = regulator_list_voltage_table, .is_enabled = max8997_reg_is_enabled, .enable = max8997_reg_enable, .disable = max8997_reg_disable, .get_voltage_sel = max8997_get_voltage_sel, .set_voltage = max8997_set_voltage_safeout, .set_voltage_sel = max8997_set_voltage_safeout_sel, .set_suspend_disable = max8997_reg_disable_suspend, }; Loading Loading @@ -1235,13 +1193,15 @@ static int max8997_pmic_probe(struct platform_device *pdev) int id = pdata->regulators[i].id; desc = reg_voltage_map[id]; if (desc) if (desc) { regulators[id].n_voltages = (desc->max - desc->min) / desc->step + 1; else if (id == MAX8997_ESAFEOUT1 || id == MAX8997_ESAFEOUT2) regulators[id].n_voltages = 4; else if (id == MAX8997_CHARGER_CV) } else if (id == MAX8997_ESAFEOUT1 || id == MAX8997_ESAFEOUT2) { regulators[id].volt_table = safeoutvolt; regulators[id].n_voltages = ARRAY_SIZE(safeoutvolt); } else if (id == MAX8997_CHARGER_CV) { regulators[id].n_voltages = 16; } config.dev = max8997->dev; config.init_data = pdata->regulators[i].initdata; Loading Loading
drivers/regulator/max8997.c +18 −58 Original line number Diff line number Diff line Loading @@ -54,6 +54,13 @@ struct max8997_data { u8 saved_states[MAX8997_REG_MAX]; }; static const unsigned int safeoutvolt[] = { 4850000, 4900000, 4950000, 3300000, }; static inline void max8997_set_gpio(struct max8997_data *max8997) { int set3 = (max8997->buck125_gpioindex) & 0x1; Loading Loading @@ -130,29 +137,6 @@ static const struct voltage_map_desc *reg_voltage_map[] = { [MAX8997_CHARGER_TOPOFF] = &topoff_current_map_desc, }; static int max8997_list_voltage_safeout(struct regulator_dev *rdev, unsigned int selector) { int rid = rdev_get_id(rdev); if (rid == MAX8997_ESAFEOUT1 || rid == MAX8997_ESAFEOUT2) { switch (selector) { case 0: return 4850000; case 1: return 4900000; case 2: return 4950000; case 3: return 3300000; default: return -EINVAL; } } return -EINVAL; } static int max8997_list_voltage_charger_cv(struct regulator_dev *rdev, unsigned int selector) { Loading Loading @@ -722,49 +706,23 @@ out: return 0; } static const int safeoutvolt[] = { 3300000, 4850000, 4900000, 4950000, }; /* For SAFEOUT1 and SAFEOUT2 */ static int max8997_set_voltage_safeout(struct regulator_dev *rdev, int min_uV, int max_uV, unsigned *selector) static int max8997_set_voltage_safeout_sel(struct regulator_dev *rdev, unsigned selector) { struct max8997_data *max8997 = rdev_get_drvdata(rdev); struct i2c_client *i2c = max8997->iodev->i2c; int rid = rdev_get_id(rdev); int reg, shift = 0, mask, ret; int i = 0; u8 val; if (rid != MAX8997_ESAFEOUT1 && rid != MAX8997_ESAFEOUT2) return -EINVAL; for (i = 0; i < ARRAY_SIZE(safeoutvolt); i++) { if (min_uV <= safeoutvolt[i] && max_uV >= safeoutvolt[i]) break; } if (i >= ARRAY_SIZE(safeoutvolt)) return -EINVAL; if (i == 0) val = 0x3; else val = i - 1; ret = max8997_get_voltage_register(rdev, ®, &shift, &mask); if (ret) return ret; ret = max8997_update_reg(i2c, reg, val << shift, mask << shift); *selector = val; return ret; return max8997_update_reg(i2c, reg, selector << shift, mask << shift); } static int max8997_reg_disable_suspend(struct regulator_dev *rdev) Loading Loading @@ -824,12 +782,12 @@ static struct regulator_ops max8997_fixedvolt_ops = { }; static struct regulator_ops max8997_safeout_ops = { .list_voltage = max8997_list_voltage_safeout, .list_voltage = regulator_list_voltage_table, .is_enabled = max8997_reg_is_enabled, .enable = max8997_reg_enable, .disable = max8997_reg_disable, .get_voltage_sel = max8997_get_voltage_sel, .set_voltage = max8997_set_voltage_safeout, .set_voltage_sel = max8997_set_voltage_safeout_sel, .set_suspend_disable = max8997_reg_disable_suspend, }; Loading Loading @@ -1235,13 +1193,15 @@ static int max8997_pmic_probe(struct platform_device *pdev) int id = pdata->regulators[i].id; desc = reg_voltage_map[id]; if (desc) if (desc) { regulators[id].n_voltages = (desc->max - desc->min) / desc->step + 1; else if (id == MAX8997_ESAFEOUT1 || id == MAX8997_ESAFEOUT2) regulators[id].n_voltages = 4; else if (id == MAX8997_CHARGER_CV) } else if (id == MAX8997_ESAFEOUT1 || id == MAX8997_ESAFEOUT2) { regulators[id].volt_table = safeoutvolt; regulators[id].n_voltages = ARRAY_SIZE(safeoutvolt); } else if (id == MAX8997_CHARGER_CV) { regulators[id].n_voltages = 16; } config.dev = max8997->dev; config.init_data = pdata->regulators[i].initdata; Loading