regulator: anatop: Use linear_min_sel with linear mapping
PATCH 1/2 regulator: anatop: Use linear_min_sel with linear mapping
By setting linear_min_sel to anatop_reg->min_bit_val, we can avoid adjust the anatop_reg->min_bit_val offset in [set|get]_voltage_sel.
With this chance we can refactor this driver to use regulator_[get|set]_voltage_sel_regmap.
--- drivers/regulator/anatop-regulator.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-)
drivers/regulator/anatop-regulator.c +7 -8
@@ -48,18 +48,16 @@ static int anatop_regmap_set_voltage_sel(struct regulator_dev *reg, unsigned selector) {struct anatop_regulator *anatop_reg =rdev_get_drvdata (reg); -u32 val, mask; +u32 mask;if (!anatop_reg->control_reg)return -ENOTSUPP ; - val = anatop_reg->min_bit_val + selector; -dev_dbg (®->dev,"%s: calculated val %d\n" , __func__, val); mask = ((1 << anatop_reg->vol_bit_width) -1 ) << anatop_reg->vol_bit_shift; - val <<= anatop_reg->vol_bit_shift; + selector <<= anatop_reg->vol_bit_shift;regmap_update_bits (anatop_reg->anatop, anatop_reg->control_reg, - mask, val); + mask, selector);return 0 ; }
@@ -77,7 +75,7 @@ static int anatop_regmap_get_voltage_sel(struct regulator_dev *reg) anatop_reg->vol_bit_shift; val = (val & mask) >> anatop_reg->vol_bit_shift; -return val - anatop_reg->min_bit_val; +return val; }static struct regulator_ops anatop_rops = {
@@ -158,10 +156,11 @@ static int anatop_regulator_probe(struct platform_device *pdev) goto anatop_probe_end; } - rdesc->n_voltages = (sreg->max_voltage - sreg->min_voltage) - /25000 +1 ; + rdesc->n_voltages = (sreg->max_voltage - sreg->min_voltage) /25000 +1 + + sreg->min_bit_val; rdesc->min_uV = sreg->min_voltage; rdesc->uV_step =25000 ; + rdesc->linear_min_sel = sreg->min_bit_val; config.dev = &pdev->dev; config.init_data = initdata;
Signature · 1 line
1.7.9.5
PATCH 2/2 regulator: anatop: Use regulator_[get|set]_voltage_sel_regmap
Call regulator_[get|set]_voltage_sel_regmap instead of open code.
--- drivers/regulator/anatop-regulator.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-)
drivers/regulator/anatop-regulator.c +6 -15
@@ -48,34 +48,21 @@ static int anatop_regmap_set_voltage_sel(struct regulator_dev *reg, unsigned selector) {struct anatop_regulator *anatop_reg =rdev_get_drvdata (reg); -u32 mask;if (!anatop_reg->control_reg)return -ENOTSUPP ; - mask = ((1 << anatop_reg->vol_bit_width) -1 ) << - anatop_reg->vol_bit_shift; - selector <<= anatop_reg->vol_bit_shift; -regmap_update_bits (anatop_reg->anatop, anatop_reg->control_reg, - mask, selector); - -return 0 ; +return regulator_set_voltage_sel_regmap (reg, selector); }static int anatop_regmap_get_voltage_sel (struct regulator_dev *reg) {struct anatop_regulator *anatop_reg =rdev_get_drvdata (reg); -u32 val, mask;if (!anatop_reg->control_reg)return -ENOTSUPP ; -regmap_read (anatop_reg->anatop, anatop_reg->control_reg, &val); - mask = ((1 << anatop_reg->vol_bit_width) -1 ) << - anatop_reg->vol_bit_shift; - val = (val & mask) >> anatop_reg->vol_bit_shift; - -return val; +return regulator_get_voltage_sel_regmap (reg); }static struct regulator_ops anatop_rops = {
@@ -161,11 +148,15 @@ static int anatop_regulator_probe(struct platform_device *pdev) rdesc->min_uV = sreg->min_voltage; rdesc->uV_step =25000 ; rdesc->linear_min_sel = sreg->min_bit_val; + rdesc->vsel_reg = sreg->control_reg; + rdesc->vsel_mask = ((1 << sreg->vol_bit_width) -1 ) << + sreg->vol_bit_shift; config.dev = &pdev->dev; config.init_data = initdata; config.driver_data = sreg; config.of_node = pdev->dev.of_node; + config.regmap = sreg->anatop;/* register regulator */ rdev =regulator_register (rdesc, &config);
Signature · 1 line
1.7.9.5
Re: [PATCH RFT 2/2] regulator: anatop: Use regulator_[get|set]_voltage_sel_regmap
於 2012年12月09日 08:07, Axel Lin 提到:
Quoted 3 lines
Call regulator_[get|set]_voltage_sel_regmap instead of open code.
Signed-off-by Axel Lin <[email protected]>
Looks good to me and I just test the path and it works.
Signature · 2 lines
PaulLiu (劉穎駿) E-mail: Ying-Chun Liu (PaulLiu) <[email protected]>
於 2012年12月09日 08:05, Axel Lin 提到:
Quoted 7 lines
By setting
linear_min_seltoanatop_reg->min_bit_val, we can avoid adjust theanatop_reg->min_bit_valoffset in [set|get]_voltage_sel.With this chance we can refactor this driver to use regulator_[get|set]_voltage_sel_regmap.
Signed-off-by Axel Lin <[email protected]>
Looks good to me and I just test the path and it works.
Signature · 2 lines
PaulLiu (劉穎駿) E-mail: Ying-Chun Liu (PaulLiu) <[email protected]>
Mark Brown
AppliedQuoted 2 lines · Axel Lin
By setting
linear_min_seltoanatop_reg->min_bit_val, we can avoid adjust theanatop_reg->min_bit_valoffset in [set|get]_voltage_sel.
Applied both, thanks.