aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAxel Lin <axel.lin@gmail.com>2012-03-25 21:20:58 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-04-01 06:59:32 -0400
commit6ea67d04b6d4b5e2bf8d276ceb801e03d7f22910 (patch)
tree9f8fb76684aad42981d288a7c57e6406657d8534
parent4b3bd55f5445648f981669758599a6172760d37d (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.c28
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
133static int max8952_set_voltage(struct regulator_dev *rdev, 133static 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