regulator: max8998: Convert to regulator_list_voltage_linear()
PATCH 1/2 regulator: max8998: Convert to regulator_list_voltage_linear()
Signed-off-by Axel Lin <[email protected]>
--- drivers/regulator/max8998.c | 32 +++++++------------------------- 1 file changed, 7 insertions(+), 25 deletions(-)
drivers/regulator/max8998.c +7 -25
@@ -111,27 +111,6 @@ static const struct voltage_map_desc *ldo_voltage_map[] = { &buck4_voltage_map_desc, /* BUCK4 */ }; -static int max8998_list_voltage (struct regulator_dev *rdev, -unsigned int selector) -{ -const struct voltage_map_desc *desc; -int ldo =rdev_get_id (rdev); -int val; - -if (ldo >=ARRAY_SIZE (ldo_voltage_map)) -return -EINVAL ; - - desc = ldo_voltage_map[ldo]; -if (desc ==NULL ) -return -EINVAL ; - - val = desc->min + desc->step * selector; -if (val > desc->max) -return -EINVAL ; - -return val *1000 ; -} -static int max8998_get_enable_register (struct regulator_dev *rdev,int *reg,int *shift) {
@@ -392,8 +371,8 @@ static int max8998_set_voltage_buck(struct regulator_dev *rdev,/* if previous_voltage equal new voltage, return */ if (previous_sel == i) {dev_dbg (max8998->dev,"No voltage change, old:%d, new:%d\n" , -max8998_list_voltage (rdev, previous_sel), -max8998_list_voltage (rdev, i)); +regulator_list_voltage_linear (rdev, previous_sel), +regulator_list_voltage_linear (rdev, i));return ret; }
@@ -519,7 +498,7 @@ static int max8998_set_voltage_buck_time_sel(struct regulator_dev *rdev, }static struct regulator_ops max8998_ldo_ops = { - .list_voltage = max8998_list_voltage, + .list_voltage = regulator_list_voltage_linear, .is_enabled = max8998_ldo_is_enabled, .enable = max8998_ldo_enable, .disable = max8998_ldo_disable,
@@ -530,7 +509,7 @@ static struct regulator_ops max8998_ldo_ops = { };static struct regulator_ops max8998_buck_ops = { - .list_voltage = max8998_list_voltage, + .list_voltage = regulator_list_voltage_linear, .is_enabled = max8998_ldo_is_enabled, .enable = max8998_ldo_enable, .disable = max8998_ldo_disable,
@@ -860,7 +839,10 @@ static __devinit int max8998_pmic_probe(struct platform_device *pdev) desc = ldo_voltage_map[id];if (desc && regulators[index].ops != &max8998_others_ops) {int count = (desc->max - desc->min) / desc->step +1 ; + regulators[index].n_voltages = count; + regulators[index].min_uV = desc->min *1000 ; + regulators[index].uV_step = desc->step *1000 ; } config.dev = max8998->dev;
Signature · 1 line
1.7.9.5
PATCH 2/2 regulator: max8998: Convert to set_voltage_sel and regulator_map_voltage_linear
Signed-off-by Axel Lin <[email protected]>
--- drivers/regulator/max8998.c | 97 ++++++++++++------------------------------- 1 file changed, 27 insertions(+), 70 deletions(-)
drivers/regulator/max8998.c +27 -70
@@ -276,41 +276,18 @@ static int max8998_get_voltage_sel(struct regulator_dev *rdev)return val; } -static int max8998_set_voltage_ldo (struct regulator_dev *rdev, -int min_uV,int max_uV,unsigned *selector) +static int max8998_set_voltage_ldo_sel (struct regulator_dev *rdev, +unsigned selector) {struct max8998_data *max8998 =rdev_get_drvdata (rdev);struct i2c_client *i2c = max8998->iodev->i2c; -int min_vol = min_uV /1000 , max_vol = max_uV /1000 ; -const struct voltage_map_desc *desc; -int ldo =rdev_get_id (rdev); -int reg, shift =0 , mask, ret, i; - -if (ldo >=ARRAY_SIZE (ldo_voltage_map)) -return -EINVAL ; - - desc = ldo_voltage_map[ldo]; -if (desc ==NULL ) -return -EINVAL ; - -if (max_vol < desc->min || min_vol > desc->max) -return -EINVAL ; - -if (min_vol < desc->min) - min_vol = desc->min; - - i =DIV_ROUND_UP (min_vol - desc->min, desc->step); - -if (desc->min + desc->step*i > max_vol) -return -EINVAL ; - - *selector = i; +int reg, shift =0 , mask, ret; ret =max8998_get_voltage_register (rdev, ®, &shift, &mask);if (ret)return ret; - ret =max8998_update_reg (i2c, reg, i<<shift, mask<<shift); + ret =max8998_update_reg (i2c, reg, selector<<shift, mask<<shift);return ret; }
@@ -326,41 +303,18 @@ static inline void buck2_gpio_set(int gpio, int v)gpio_set_value (gpio, v &0x1 ); } -static int max8998_set_voltage_buck (struct regulator_dev *rdev, -int min_uV,int max_uV,unsigned *selector) +static int max8998_set_voltage_buck_sel (struct regulator_dev *rdev, +unsigned selector) {struct max8998_data *max8998 =rdev_get_drvdata (rdev);struct max8998_platform_data *pdata =dev_get_platdata (max8998->iodev->dev);struct i2c_client *i2c = max8998->iodev->i2c; -int min_vol = min_uV /1000 , max_vol = max_uV /1000 ; -const struct voltage_map_desc *desc;int buck =rdev_get_id (rdev);int reg, shift =0 , mask, ret; -int i, j, previous_sel; +int j, previous_sel;static u8 buck1_last_val; -if (buck >=ARRAY_SIZE (ldo_voltage_map)) -return -EINVAL ; - - desc = ldo_voltage_map[buck]; - -if (desc ==NULL ) -return -EINVAL ; - -if (max_vol < desc->min || min_vol > desc->max) -return -EINVAL ; - -if (min_vol < desc->min) - min_vol = desc->min; - - i =DIV_ROUND_UP (min_vol - desc->min, desc->step); - -if (desc->min + desc->step*i > max_vol) -return -EINVAL ; - - *selector = i; - ret =max8998_get_voltage_register (rdev, ®, &shift, &mask);if (ret)return ret;
@@ -369,19 +323,19 @@ static int max8998_set_voltage_buck(struct regulator_dev *rdev,/* Check if voltage needs to be changed */ /* if previous_voltage equal new voltage, return */ -if (previous_sel == i) { +if (previous_sel == selector) {dev_dbg (max8998->dev,"No voltage change, old:%d, new:%d\n" ,regulator_list_voltage_linear (rdev, previous_sel), -regulator_list_voltage_linear (rdev, i)); +regulator_list_voltage_linear (rdev, selector));return ret; }switch (buck) {case MAX8998_BUCK1 :dev_dbg (max8998->dev, -"BUCK1, i:%d, buck1_vol1:%d, buck1_vol2:%d\n" +"BUCK1, selector:%d, buck1_vol1:%d, buck1_vol2:%d\n" "buck1_vol3:%d, buck1_vol4:%d\n" , - i, max8998->buck1_vol[0 ], max8998->buck1_vol[1 ], + selector, max8998->buck1_vol[0 ], max8998->buck1_vol[1 ], max8998->buck1_vol[2 ], max8998->buck1_vol[3 ]); if (gpio_is_valid(pdata->buck1_set1) &&
@@ -390,7 +344,7 @@ static int max8998_set_voltage_buck(struct regulator_dev *rdev,/* check if requested voltage */ /* value is already defined */ for (j =0 ; j <ARRAY_SIZE (max8998->buck1_vol); j++) { -if (max8998->buck1_vol[j] == i) { +if (max8998->buck1_vol[j] == selector) { max8998->buck1_idx = j;buck1_gpio_set (pdata->buck1_set1, pdata->buck1_set2, j);
@@ -405,11 +359,11 @@ static int max8998_set_voltage_buck(struct regulator_dev *rdev, max8998->buck1_idx = (buck1_last_val %2 ) +2 ;dev_dbg (max8998->dev,"max8998->buck1_idx:%d\n" , max8998->buck1_idx); - max8998->buck1_vol[max8998->buck1_idx] = i; + max8998->buck1_vol[max8998->buck1_idx] = selector; ret =max8998_get_voltage_register (rdev, ®, &shift, &mask); - ret =max8998_write_reg (i2c, reg, i); + ret =max8998_write_reg (i2c, reg, selector);buck1_gpio_set (pdata->buck1_set1, pdata->buck1_set2, max8998->buck1_idx); buck1_last_val++;
@@ -419,20 +373,20 @@ buck1_exit: gpio_get_value(pdata->buck1_set2));break ; }else { - ret =max8998_write_reg (i2c, reg, i); + ret =max8998_write_reg (i2c, reg, selector); }break ;case MAX8998_BUCK2 :dev_dbg (max8998->dev, -"BUCK2, i:%d buck2_vol1:%d, buck2_vol2:%d\n" - , i, max8998->buck2_vol[0 ], max8998->buck2_vol[1 ]); +"BUCK2, selector:%d buck2_vol1:%d, buck2_vol2:%d\n" , + selector, max8998->buck2_vol[0 ], max8998->buck2_vol[1 ]);if (gpio_is_valid (pdata->buck2_set3)) {/* check if requested voltage */ /* value is already defined */ for (j =0 ; j <ARRAY_SIZE (max8998->buck2_vol); j++) { -if (max8998->buck2_vol[j] == i) { +if (max8998->buck2_vol[j] == selector) { max8998->buck2_idx = j;buck2_gpio_set (pdata->buck2_set3, j); goto buck2_exit;
@@ -444,20 +398,21 @@ buck1_exit:max8998_get_voltage_register (rdev, ®, &shift, &mask); - ret =max8998_write_reg (i2c, reg, i); - max8998->buck2_vol[max8998->buck2_idx] = i; + ret =max8998_write_reg (i2c, reg, selector); + max8998->buck2_vol[max8998->buck2_idx] = selector;buck2_gpio_set (pdata->buck2_set3, max8998->buck2_idx); buck2_exit:dev_dbg (max8998->dev,"%s: SET3:%d\n" , i2c->name,gpio_get_value (pdata->buck2_set3)); }else { - ret =max8998_write_reg (i2c, reg, i); + ret =max8998_write_reg (i2c, reg, selector); }break ;case MAX8998_BUCK3 :case MAX8998_BUCK4 : - ret =max8998_update_reg (i2c, reg, i<<shift, mask<<shift); + ret =max8998_update_reg (i2c, reg, selector<<shift, + mask<<shift);break ; }
@@ -499,22 +454,24 @@ static int max8998_set_voltage_buck_time_sel(struct regulator_dev *rdev,static struct regulator_ops max8998_ldo_ops = { .list_voltage = regulator_list_voltage_linear, + .map_voltage = regulator_map_voltage_linear, .is_enabled = max8998_ldo_is_enabled, .enable = max8998_ldo_enable, .disable = max8998_ldo_disable, .get_voltage_sel = max8998_get_voltage_sel, - .set_voltage = max8998_set_voltage_ldo, + .set_voltage_sel = max8998_set_voltage_ldo_sel, .set_suspend_enable = max8998_ldo_enable, .set_suspend_disable = max8998_ldo_disable, };static struct regulator_ops max8998_buck_ops = { .list_voltage = regulator_list_voltage_linear, + .map_voltage = regulator_map_voltage_linear, .is_enabled = max8998_ldo_is_enabled, .enable = max8998_ldo_enable, .disable = max8998_ldo_disable, .get_voltage_sel = max8998_get_voltage_sel, - .set_voltage = max8998_set_voltage_buck, + .set_voltage_sel = max8998_set_voltage_buck_sel, .set_voltage_time_sel = max8998_set_voltage_buck_time_sel, .set_suspend_enable = max8998_ldo_enable, .set_suspend_disable = max8998_ldo_disable,
Signature · 1 line
1.7.9.5
Mark Brown
AppliedQuoted 1 line · Axel Lin
Signed-off-by Axel Lin <[email protected]>
Applied both, thanks.