regulator: Convert max8998 to get_voltage_sel
PATCH 1/2 regulator: Convert max8998 to get_voltage_sel
Signed-off-by Axel Lin <[email protected]>
--- drivers/regulator/max8998.c | 19 ++++++++++--------- 1 files changed, 10 insertions(+), 9 deletions(-)
drivers/regulator/max8998.c +10 -9
@@ -277,7 +277,7 @@ static int max8998_get_voltage_register(struct regulator_dev *rdev,return 0 ; } -static int max8998_get_voltage (struct regulator_dev *rdev) +static int max8998_get_voltage_sel (struct regulator_dev *rdev) {struct max8998_data *max8998 =rdev_get_drvdata (rdev);struct i2c_client *i2c = max8998->iodev->i2c;
@@ -295,7 +295,7 @@ static int max8998_get_voltage(struct regulator_dev *rdev) val >>= shift; val &= mask; -return max8998_list_voltage (rdev, val); +return val; } static int max8998_set_voltage_ldo(struct regulator_dev *rdev,
@@ -359,7 +359,7 @@ static int max8998_set_voltage_buck(struct regulator_dev *rdev,const struct voltage_map_desc *desc;int buck =rdev_get_id (rdev);int reg, shift =0 , mask, ret; -int difference =0 , i, j =0 , previous_vol =0 ; +int difference, i, j, previous_sel;u8 val =0 ;static u8 buck1_last_val;
@@ -388,13 +388,14 @@ static int max8998_set_voltage_buck(struct regulator_dev *rdev,if (ret)return ret; - previous_vol =max8998_get_voltage (rdev); + previous_sel =max8998_get_voltage_sel (rdev);/* Check if voltage needs to be changed */ /* if previous_voltage equal new voltage, return */ -if (previous_vol ==max8998_list_voltage (rdev, i)) { +if (previous_sel == i) {dev_dbg (max8998->dev,"No voltage change, old:%d, new:%d\n" , - previous_vol,max8998_list_voltage (rdev, i)); +max8998_list_voltage (rdev, previous_sel), +max8998_list_voltage (rdev, i));return ret; }
@@ -491,7 +492,7 @@ buck2_exit:if (max8998->iodev->type ==TYPE_MAX8998 && !(val &MAX8998_ENRAMP ))return ret; - difference = desc->min + desc->step*i - previous_vol/1000 ; + difference = (i - previous_sel) * desc->step;if (difference >0 )udelay (difference / ((val &0x0f ) +1 ));
@@ -503,7 +504,7 @@ static struct regulator_ops max8998_ldo_ops = { .is_enabled = max8998_ldo_is_enabled, .enable = max8998_ldo_enable, .disable = max8998_ldo_disable, - .get_voltage = max8998_get_voltage, + .get_voltage_sel = max8998_get_voltage_sel, .set_voltage = max8998_set_voltage_ldo, .set_suspend_enable = max8998_ldo_enable, .set_suspend_disable = max8998_ldo_disable,
@@ -514,7 +515,7 @@ static struct regulator_ops max8998_buck_ops = { .is_enabled = max8998_ldo_is_enabled, .enable = max8998_ldo_enable, .disable = max8998_ldo_disable, - .get_voltage = max8998_get_voltage, + .get_voltage_sel = max8998_get_voltage_sel, .set_voltage = max8998_set_voltage_buck, .set_suspend_enable = max8998_ldo_enable, .set_suspend_disable = max8998_ldo_disable,
Signature · 1 line
1.7.5.4
PATCH 2/2 regulator: Convert max8998 to set_voltage_time_sel
Signed-off-by Axel Lin <[email protected]>
--- drivers/regulator/max8998.c | 35 ++++++++++++++++++++++++++++------- 1 files changed, 28 insertions(+), 7 deletions(-)
drivers/regulator/max8998.c +28 -7
@@ -359,8 +359,7 @@ static int max8998_set_voltage_buck(struct regulator_dev *rdev,const struct voltage_map_desc *desc;int buck =rdev_get_id (rdev);int reg, shift =0 , mask, ret; -int difference, i, j, previous_sel; -u8 val =0 ; +int i, j, previous_sel;static u8 buck1_last_val;if (buck >=ARRAY_SIZE (ldo_voltage_map))
@@ -484,19 +483,40 @@ buck2_exit:break ; } +return ret; +} + +static int max8998_set_voltage_buck_time_sel (struct regulator_dev *rdev, +unsigned int old_selector, +unsigned int new_selector) +{ +struct max8998_data *max8998 =rdev_get_drvdata (rdev); +struct i2c_client *i2c = max8998->iodev->i2c; +const struct voltage_map_desc *desc; +int buck =rdev_get_id (rdev); +u8 val =0 ; +int difference, ret; + +if (buck <MAX8998_BUCK1 || buck >MAX8998_BUCK4 ) +return -EINVAL ; + + desc = ldo_voltage_map[buck]; +/* Voltage stabilization */ -max8998_read_reg (i2c,MAX8998_REG_ONOFF4 , &val); + ret =max8998_read_reg (i2c,MAX8998_REG_ONOFF4 , &val); +if (ret) +return ret;/* lp3974 hasn't got ENRAMP bit - ramp is assumed as true */ /* MAX8998 has ENRAMP bit implemented, so test it*/ if (max8998->iodev->type ==TYPE_MAX8998 && !(val &MAX8998_ENRAMP )) -return ret; +return 0 ; - difference = (i - previous_sel) * desc->step; + difference = (new_selector - old_selector) * desc->step;if (difference >0 ) -udelay (difference / ((val &0x0f ) +1 )); +return difference / ((val &0x0f ) +1 ); -return ret; +return 0 ; }static struct regulator_ops max8998_ldo_ops = {
@@ -517,6 +537,7 @@ static struct regulator_ops max8998_buck_ops = { .disable = max8998_ldo_disable, .get_voltage_sel = max8998_get_voltage_sel, .set_voltage = max8998_set_voltage_buck, + .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.5.4
Mark Brown
AppliedQuoted 1 line · Axel Lin
Signed-off-by Axel Lin <[email protected]>
Applied both, thanks.