Commit f604c10cdeba4e068afa96be2bee878fb5227f8b
Committed by
Mark Brown
1 parent
dd16b1f8e7
Exists in
smarc-l5.0.0_1.0.0-ga
and in
5 other branches
regulator: Convert rc5t583 to set_voltage
Not every regulator driver should implement set_voltage_sel callback. See commit e8eef82 "regulator: Provide a selector based set_voltage_sel() operation". For rc5t583, the regulator voltage can be mapped onto selector values with a simple calculation, thus implement set_voltage is better than set_voltage_sel. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Showing 1 changed file with 15 additions and 8 deletions Side-by-side Diff
drivers/regulator/rc5t583-regulator.c
... | ... | @@ -124,19 +124,26 @@ |
124 | 124 | return ri->min_uV + (ri->step_uV * selector); |
125 | 125 | } |
126 | 126 | |
127 | -static int rc5t583_set_voltage_sel(struct regulator_dev *rdev, | |
128 | - unsigned int selector) | |
127 | +static int rc5t583_set_voltage(struct regulator_dev *rdev, | |
128 | + int min_uV, int max_uV, unsigned *selector) | |
129 | 129 | { |
130 | 130 | struct rc5t583_regulator *reg = rdev_get_drvdata(rdev); |
131 | 131 | struct rc5t583_regulator_info *ri = reg->reg_info; |
132 | - int ret; | |
133 | - if (selector >= rdev->desc->n_voltages) { | |
134 | - dev_err(&rdev->dev, "Invalid selector 0x%02x\n", selector); | |
132 | + int sel, ret; | |
133 | + | |
134 | + if (min_uV < ri->min_uV) | |
135 | + min_uV = ri->min_uV; | |
136 | + | |
137 | + sel = DIV_ROUND_UP(min_uV - ri->min_uV, ri->step_uV); | |
138 | + | |
139 | + if (sel >= rdev->desc->n_voltages) { | |
140 | + dev_err(&rdev->dev, "Invalid selector 0x%02x\n", sel); | |
135 | 141 | return -EINVAL; |
136 | 142 | } |
137 | 143 | |
138 | - ret = rc5t583_update(reg->mfd->dev, ri->vout_reg, | |
139 | - selector, ri->vout_mask); | |
144 | + *selector = sel; | |
145 | + | |
146 | + ret = rc5t583_update(reg->mfd->dev, ri->vout_reg, sel, ri->vout_mask); | |
140 | 147 | if (ret < 0) |
141 | 148 | dev_err(&rdev->dev, |
142 | 149 | "Error in update voltage register 0x%02x\n", ri->vout_reg); |
... | ... | @@ -191,7 +198,7 @@ |
191 | 198 | .disable = rc5t583_reg_disable, |
192 | 199 | .enable_time = rc5t583_regulator_enable_time, |
193 | 200 | .get_voltage_sel = rc5t583_get_voltage_sel, |
194 | - .set_voltage_sel = rc5t583_set_voltage_sel, | |
201 | + .set_voltage = rc5t583_set_voltage, | |
195 | 202 | .list_voltage = rc5t583_list_voltage, |
196 | 203 | .set_voltage_time_sel = rc5t583_set_voltage_time_sel, |
197 | 204 | }; |