regulator: wm8350: Convert wm8350_dcdc_ops to regulator_list_voltage_linear
PATCH 1/2 regulator: wm8350: Convert wm8350_dcdc_ops to regulator_list_voltage_linear
Signed-off-by Axel Lin <[email protected]>
--- drivers/regulator/wm8350-regulator.c | 18 +++++++++--------- 1 files changed, 9 insertions(+), 9 deletions(-)
drivers/regulator/wm8350-regulator.c +9 -9
@@ -433,14 +433,6 @@ static int wm8350_dcdc_get_voltage_sel(struct regulator_dev *rdev)return wm8350_reg_read (wm8350, volt_reg) &WM8350_DC1_VSEL_MASK ; } -static int wm8350_dcdc_list_voltage (struct regulator_dev *rdev, -unsigned selector) -{ -if (selector >WM8350_DCDC_MAX_VSEL ) -return -EINVAL ; -return wm8350_dcdc_val_to_mvolts (selector) *1000 ; -} -static int wm8350_dcdc_set_suspend_voltage (struct regulator_dev *rdev,int uV) {struct wm8350 *wm8350 =rdev_get_drvdata (rdev);
@@ -1226,7 +1218,7 @@ static int wm8350_ldo_is_enabled(struct regulator_dev *rdev)static struct regulator_ops wm8350_dcdc_ops = { .set_voltage = wm8350_dcdc_set_voltage, .get_voltage_sel = wm8350_dcdc_get_voltage_sel, - .list_voltage = wm8350_dcdc_list_voltage, + .list_voltage = regulator_list_voltage_linear, .enable = wm8350_dcdc_enable, .disable = wm8350_dcdc_disable, .get_mode = wm8350_dcdc_get_mode,
@@ -1277,6 +1269,8 @@ static const struct regulator_desc wm8350_reg[NUM_WM8350_REGULATORS] = { .irq = WM8350_IRQ_UV_DC1, .type = REGULATOR_VOLTAGE, .n_voltages = WM8350_DCDC_MAX_VSEL + 1, + .min_uV = 850000, + .uV_step = 25000, .owner = THIS_MODULE, }, {
@@ -1294,6 +1288,8 @@ static const struct regulator_desc wm8350_reg[NUM_WM8350_REGULATORS] = { .irq = WM8350_IRQ_UV_DC3, .type = REGULATOR_VOLTAGE, .n_voltages = WM8350_DCDC_MAX_VSEL + 1, + .min_uV = 850000, + .uV_step = 25000, .owner = THIS_MODULE, }, {
@@ -1303,6 +1299,8 @@ static const struct regulator_desc wm8350_reg[NUM_WM8350_REGULATORS] = { .irq = WM8350_IRQ_UV_DC4, .type = REGULATOR_VOLTAGE, .n_voltages = WM8350_DCDC_MAX_VSEL + 1, + .min_uV = 850000, + .uV_step = 25000, .owner = THIS_MODULE, }, {
@@ -1320,6 +1318,8 @@ static const struct regulator_desc wm8350_reg[NUM_WM8350_REGULATORS] = { .irq = WM8350_IRQ_UV_DC6, .type = REGULATOR_VOLTAGE, .n_voltages = WM8350_DCDC_MAX_VSEL + 1, + .min_uV = 850000, + .uV_step = 25000, .owner = THIS_MODULE, }, {
Signature · 1 line
1.7.5.4
PATCH 2/2 regulator: wm8350: Convert wm8350_dcdc_ops to set_voltage_sel and regulator_map_voltage_linear
Signed-off-by Axel Lin <[email protected]>
--- drivers/regulator/wm8350-regulator.c | 30 ++++++------------------------ 1 files changed, 6 insertions(+), 24 deletions(-)
drivers/regulator/wm8350-regulator.c +6 -24
@@ -125,11 +125,6 @@ static inline unsigned int wm8350_ldo_mvolts_to_val(int mV)return ((mV -1800 ) /100 ) +16 ; } -static inline int wm8350_dcdc_val_to_mvolts (unsigned int val) -{ -return (val *25 ) +850 ; -} -static inline unsigned int wm8350_dcdc_mvolts_to_val (int mV) {return (mV -850 ) /25 ;
@@ -359,25 +354,13 @@ int wm8350_isink_set_flash(struct wm8350 *wm8350, int isink, u16 mode, }EXPORT_SYMBOL_GPL (wm8350_isink_set_flash); -static int wm8350_dcdc_set_voltage (struct regulator_dev *rdev,int min_uV, -int max_uV,unsigned *selector) +static int wm8350_dcdc_set_voltage_sel (struct regulator_dev *rdev, +unsigned selector) {struct wm8350 *wm8350 =rdev_get_drvdata (rdev); -int volt_reg, dcdc =rdev_get_id (rdev), mV, - min_mV = min_uV /1000 , max_mV = max_uV /1000 ; +int volt_reg, dcdc =rdev_get_id (rdev);u16 val; -if (min_mV <850 || min_mV >4025 ) -return -EINVAL ; -if (max_mV <850 || max_mV >4025 ) -return -EINVAL ; - -/* step size is 25mV */ - mV = (min_mV -826 ) /25 ; -if (wm8350_dcdc_val_to_mvolts (mV) > max_mV) -return -EINVAL ; -BUG_ON (wm8350_dcdc_val_to_mvolts (mV) < min_mV); -switch (dcdc) {case WM8350_DCDC_1 : volt_reg =WM8350_DCDC1_CONTROL ;
@@ -397,11 +380,9 @@ static int wm8350_dcdc_set_voltage(struct regulator_dev *rdev, int min_uV,return -EINVAL ; } - *selector = mV; -/* all DCDCs have same mV bits */ val =wm8350_reg_read (wm8350, volt_reg) & ~WM8350_DC1_VSEL_MASK ; -wm8350_reg_write (wm8350, volt_reg, val | mV); +wm8350_reg_write (wm8350, volt_reg, val | selector);return 0 ; }
@@ -1216,9 +1197,10 @@ static int wm8350_ldo_is_enabled(struct regulator_dev *rdev) }static struct regulator_ops wm8350_dcdc_ops = { - .set_voltage = wm8350_dcdc_set_voltage, + .set_voltage_sel = wm8350_dcdc_set_voltage_sel, .get_voltage_sel = wm8350_dcdc_get_voltage_sel, .list_voltage = regulator_list_voltage_linear, + .map_voltage = regulator_map_voltage_linear, .enable = wm8350_dcdc_enable, .disable = wm8350_dcdc_disable, .get_mode = wm8350_dcdc_get_mode,
Signature · 1 line
1.7.5.4
Quoted 1 line · Axel Lin
Signed-off-by Axel Lin <[email protected]>
Versions of both of these are already queued for 3.6 as part of a series of changes converting the driver to use the new regmap helpers. They're not in yet as the core driver conversion to regmap is only going in this merge window, once mfd is merged in -rc1 they'll go in.