diff options
author | Axel Lin <axel.lin@gmail.com> | 2012-03-25 21:20:58 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-04-01 06:59:32 -0400 |
commit | 6ea67d04b6d4b5e2bf8d276ceb801e03d7f22910 (patch) | |
tree | 9f8fb76684aad42981d288a7c57e6406657d8534 | |
parent | 4b3bd55f5445648f981669758599a6172760d37d (diff) |
regulator: Convert max8952 to set_voltage_sel
Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r-- | drivers/regulator/max8952.c | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/drivers/regulator/max8952.c b/drivers/regulator/max8952.c index e9c0a0ea1528..c35236a06cbb 100644 --- a/drivers/regulator/max8952.c +++ b/drivers/regulator/max8952.c | |||
@@ -130,11 +130,10 @@ static int max8952_get_voltage(struct regulator_dev *rdev) | |||
130 | return max8952_voltage(max8952, vid); | 130 | return max8952_voltage(max8952, vid); |
131 | } | 131 | } |
132 | 132 | ||
133 | static int max8952_set_voltage(struct regulator_dev *rdev, | 133 | static int max8952_set_voltage_sel(struct regulator_dev *rdev, |
134 | int min_uV, int max_uV, unsigned *selector) | 134 | unsigned selector) |
135 | { | 135 | { |
136 | struct max8952_data *max8952 = rdev_get_drvdata(rdev); | 136 | struct max8952_data *max8952 = rdev_get_drvdata(rdev); |
137 | s8 vid = -1, i; | ||
138 | 137 | ||
139 | if (!gpio_is_valid(max8952->pdata->gpio_vid0) || | 138 | if (!gpio_is_valid(max8952->pdata->gpio_vid0) || |
140 | !gpio_is_valid(max8952->pdata->gpio_vid1)) { | 139 | !gpio_is_valid(max8952->pdata->gpio_vid1)) { |
@@ -142,23 +141,10 @@ static int max8952_set_voltage(struct regulator_dev *rdev, | |||
142 | return -EPERM; | 141 | return -EPERM; |
143 | } | 142 | } |
144 | 143 | ||
145 | for (i = 0; i < MAX8952_NUM_DVS_MODE; i++) { | 144 | max8952->vid0 = selector & 0x1; |
146 | int volt = max8952_voltage(max8952, i); | 145 | max8952->vid1 = (selector >> 1) & 0x1; |
147 | 146 | gpio_set_value(max8952->pdata->gpio_vid0, max8952->vid0); | |
148 | /* Set the voltage as low as possible within the range */ | 147 | gpio_set_value(max8952->pdata->gpio_vid1, max8952->vid1); |
149 | if (volt <= max_uV && volt >= min_uV) | ||
150 | if (vid == -1 || max8952_voltage(max8952, vid) > volt) | ||
151 | vid = i; | ||
152 | } | ||
153 | |||
154 | if (vid >= 0 && vid < MAX8952_NUM_DVS_MODE) { | ||
155 | max8952->vid0 = vid & 0x1; | ||
156 | max8952->vid1 = (vid >> 1) & 0x1; | ||
157 | *selector = vid; | ||
158 | gpio_set_value(max8952->pdata->gpio_vid0, max8952->vid0); | ||
159 | gpio_set_value(max8952->pdata->gpio_vid1, max8952->vid1); | ||
160 | } else | ||
161 | return -EINVAL; | ||
162 | 148 | ||
163 | return 0; | 149 | return 0; |
164 | } | 150 | } |
@@ -169,7 +155,7 @@ static struct regulator_ops max8952_ops = { | |||
169 | .enable = max8952_enable, | 155 | .enable = max8952_enable, |
170 | .disable = max8952_disable, | 156 | .disable = max8952_disable, |
171 | .get_voltage = max8952_get_voltage, | 157 | .get_voltage = max8952_get_voltage, |
172 | .set_voltage = max8952_set_voltage, | 158 | .set_voltage_sel = max8952_set_voltage_sel, |
173 | .set_suspend_disable = max8952_disable, | 159 | .set_suspend_disable = max8952_disable, |
174 | }; | 160 | }; |
175 | 161 | ||