diff options
author | Jonghwan Choi <jhbird.choi@samsung.com> | 2011-11-06 18:16:04 -0500 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-11-23 09:02:48 -0500 |
commit | 43530b69d758328d3ffe6ab98fd640463e8e3667 (patch) | |
tree | a14f03874de3c8d5f312d357bc2b4bb96135a1ac /drivers/regulator | |
parent | cfcfc9eca2bcbd26a8e206baeb005b055dbf8e37 (diff) |
regulator: Use regmap_read/write(), regmap_update_bits functions directly
Current driver had the regmapcalls within the bodies of the driver specific read/write fuctions.
This patch removes the original read/write functions and makes the call sites use regmap directly.
Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'drivers/regulator')
-rw-r--r-- | drivers/regulator/tps65023-regulator.c | 87 |
1 files changed, 32 insertions, 55 deletions
diff --git a/drivers/regulator/tps65023-regulator.c b/drivers/regulator/tps65023-regulator.c index 9fb4c7b81753..e0bcd75a7cc4 100644 --- a/drivers/regulator/tps65023-regulator.c +++ b/drivers/regulator/tps65023-regulator.c | |||
@@ -152,48 +152,21 @@ struct tps_driver_data { | |||
152 | u8 core_regulator; | 152 | u8 core_regulator; |
153 | }; | 153 | }; |
154 | 154 | ||
155 | static int tps_65023_set_bits(struct tps_pmic *tps, u8 reg, u8 mask) | ||
156 | { | ||
157 | return regmap_update_bits(tps->regmap, reg, mask, mask); | ||
158 | } | ||
159 | |||
160 | static int tps_65023_clear_bits(struct tps_pmic *tps, u8 reg, u8 mask) | ||
161 | { | ||
162 | return regmap_update_bits(tps->regmap, reg, mask, 0); | ||
163 | } | ||
164 | |||
165 | static int tps_65023_reg_read(struct tps_pmic *tps, u8 reg) | ||
166 | { | ||
167 | unsigned int val; | ||
168 | int ret; | ||
169 | |||
170 | ret = regmap_read(tps->regmap, reg, &val); | ||
171 | |||
172 | if (ret != 0) | ||
173 | return ret; | ||
174 | else | ||
175 | return val; | ||
176 | } | ||
177 | |||
178 | static int tps_65023_reg_write(struct tps_pmic *tps, u8 reg, u8 val) | ||
179 | { | ||
180 | return regmap_write(tps->regmap, reg, val); | ||
181 | } | ||
182 | |||
183 | static int tps65023_dcdc_is_enabled(struct regulator_dev *dev) | 155 | static int tps65023_dcdc_is_enabled(struct regulator_dev *dev) |
184 | { | 156 | { |
185 | struct tps_pmic *tps = rdev_get_drvdata(dev); | 157 | struct tps_pmic *tps = rdev_get_drvdata(dev); |
186 | int data, dcdc = rdev_get_id(dev); | 158 | int data, dcdc = rdev_get_id(dev); |
159 | int ret; | ||
187 | u8 shift; | 160 | u8 shift; |
188 | 161 | ||
189 | if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3) | 162 | if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3) |
190 | return -EINVAL; | 163 | return -EINVAL; |
191 | 164 | ||
192 | shift = TPS65023_NUM_REGULATOR - dcdc; | 165 | shift = TPS65023_NUM_REGULATOR - dcdc; |
193 | data = tps_65023_reg_read(tps, TPS65023_REG_REG_CTRL); | 166 | ret = regmap_read(tps->regmap, TPS65023_REG_REG_CTRL, &data); |
194 | 167 | ||
195 | if (data < 0) | 168 | if (ret != 0) |
196 | return data; | 169 | return ret; |
197 | else | 170 | else |
198 | return (data & 1<<shift) ? 1 : 0; | 171 | return (data & 1<<shift) ? 1 : 0; |
199 | } | 172 | } |
@@ -202,16 +175,17 @@ static int tps65023_ldo_is_enabled(struct regulator_dev *dev) | |||
202 | { | 175 | { |
203 | struct tps_pmic *tps = rdev_get_drvdata(dev); | 176 | struct tps_pmic *tps = rdev_get_drvdata(dev); |
204 | int data, ldo = rdev_get_id(dev); | 177 | int data, ldo = rdev_get_id(dev); |
178 | int ret; | ||
205 | u8 shift; | 179 | u8 shift; |
206 | 180 | ||
207 | if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2) | 181 | if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2) |
208 | return -EINVAL; | 182 | return -EINVAL; |
209 | 183 | ||
210 | shift = (ldo == TPS65023_LDO_1 ? 1 : 2); | 184 | shift = (ldo == TPS65023_LDO_1 ? 1 : 2); |
211 | data = tps_65023_reg_read(tps, TPS65023_REG_REG_CTRL); | 185 | ret = regmap_read(tps->regmap, TPS65023_REG_REG_CTRL, &data); |
212 | 186 | ||
213 | if (data < 0) | 187 | if (ret != 0) |
214 | return data; | 188 | return ret; |
215 | else | 189 | else |
216 | return (data & 1<<shift) ? 1 : 0; | 190 | return (data & 1<<shift) ? 1 : 0; |
217 | } | 191 | } |
@@ -226,7 +200,7 @@ static int tps65023_dcdc_enable(struct regulator_dev *dev) | |||
226 | return -EINVAL; | 200 | return -EINVAL; |
227 | 201 | ||
228 | shift = TPS65023_NUM_REGULATOR - dcdc; | 202 | shift = TPS65023_NUM_REGULATOR - dcdc; |
229 | return tps_65023_set_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift); | 203 | return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 1 << shift); |
230 | } | 204 | } |
231 | 205 | ||
232 | static int tps65023_dcdc_disable(struct regulator_dev *dev) | 206 | static int tps65023_dcdc_disable(struct regulator_dev *dev) |
@@ -239,7 +213,7 @@ static int tps65023_dcdc_disable(struct regulator_dev *dev) | |||
239 | return -EINVAL; | 213 | return -EINVAL; |
240 | 214 | ||
241 | shift = TPS65023_NUM_REGULATOR - dcdc; | 215 | shift = TPS65023_NUM_REGULATOR - dcdc; |
242 | return tps_65023_clear_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift); | 216 | return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 0); |
243 | } | 217 | } |
244 | 218 | ||
245 | static int tps65023_ldo_enable(struct regulator_dev *dev) | 219 | static int tps65023_ldo_enable(struct regulator_dev *dev) |
@@ -252,7 +226,7 @@ static int tps65023_ldo_enable(struct regulator_dev *dev) | |||
252 | return -EINVAL; | 226 | return -EINVAL; |
253 | 227 | ||
254 | shift = (ldo == TPS65023_LDO_1 ? 1 : 2); | 228 | shift = (ldo == TPS65023_LDO_1 ? 1 : 2); |
255 | return tps_65023_set_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift); | 229 | return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 1 << shift); |
256 | } | 230 | } |
257 | 231 | ||
258 | static int tps65023_ldo_disable(struct regulator_dev *dev) | 232 | static int tps65023_ldo_disable(struct regulator_dev *dev) |
@@ -265,21 +239,22 @@ static int tps65023_ldo_disable(struct regulator_dev *dev) | |||
265 | return -EINVAL; | 239 | return -EINVAL; |
266 | 240 | ||
267 | shift = (ldo == TPS65023_LDO_1 ? 1 : 2); | 241 | shift = (ldo == TPS65023_LDO_1 ? 1 : 2); |
268 | return tps_65023_clear_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift); | 242 | return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 0); |
269 | } | 243 | } |
270 | 244 | ||
271 | static int tps65023_dcdc_get_voltage(struct regulator_dev *dev) | 245 | static int tps65023_dcdc_get_voltage(struct regulator_dev *dev) |
272 | { | 246 | { |
273 | struct tps_pmic *tps = rdev_get_drvdata(dev); | 247 | struct tps_pmic *tps = rdev_get_drvdata(dev); |
248 | int ret; | ||
274 | int data, dcdc = rdev_get_id(dev); | 249 | int data, dcdc = rdev_get_id(dev); |
275 | 250 | ||
276 | if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3) | 251 | if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3) |
277 | return -EINVAL; | 252 | return -EINVAL; |
278 | 253 | ||
279 | if (dcdc == tps->core_regulator) { | 254 | if (dcdc == tps->core_regulator) { |
280 | data = tps_65023_reg_read(tps, TPS65023_REG_DEF_CORE); | 255 | ret = regmap_read(tps->regmap, TPS65023_REG_DEF_CORE, &data); |
281 | if (data < 0) | 256 | if (ret != 0) |
282 | return data; | 257 | return ret; |
283 | data &= (tps->info[dcdc]->table_len - 1); | 258 | data &= (tps->info[dcdc]->table_len - 1); |
284 | return tps->info[dcdc]->table[data] * 1000; | 259 | return tps->info[dcdc]->table[data] * 1000; |
285 | } else | 260 | } else |
@@ -318,13 +293,13 @@ static int tps65023_dcdc_set_voltage(struct regulator_dev *dev, | |||
318 | if (vsel == tps->info[dcdc]->table_len) | 293 | if (vsel == tps->info[dcdc]->table_len) |
319 | goto failed; | 294 | goto failed; |
320 | 295 | ||
321 | ret = tps_65023_reg_write(tps, TPS65023_REG_DEF_CORE, vsel); | 296 | ret = regmap_write(tps->regmap, TPS65023_REG_DEF_CORE, vsel); |
322 | 297 | ||
323 | /* Tell the chip that we have changed the value in DEFCORE | 298 | /* Tell the chip that we have changed the value in DEFCORE |
324 | * and its time to update the core voltage | 299 | * and its time to update the core voltage |
325 | */ | 300 | */ |
326 | tps_65023_set_bits(tps, TPS65023_REG_CON_CTRL2, | 301 | regmap_update_bits(tps->regmap, TPS65023_REG_CON_CTRL2, |
327 | TPS65023_REG_CTRL2_GO); | 302 | TPS65023_REG_CTRL2_GO, TPS65023_REG_CTRL2_GO); |
328 | 303 | ||
329 | return ret; | 304 | return ret; |
330 | 305 | ||
@@ -336,13 +311,14 @@ static int tps65023_ldo_get_voltage(struct regulator_dev *dev) | |||
336 | { | 311 | { |
337 | struct tps_pmic *tps = rdev_get_drvdata(dev); | 312 | struct tps_pmic *tps = rdev_get_drvdata(dev); |
338 | int data, ldo = rdev_get_id(dev); | 313 | int data, ldo = rdev_get_id(dev); |
314 | int ret; | ||
339 | 315 | ||
340 | if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2) | 316 | if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2) |
341 | return -EINVAL; | 317 | return -EINVAL; |
342 | 318 | ||
343 | data = tps_65023_reg_read(tps, TPS65023_REG_LDO_CTRL); | 319 | ret = regmap_read(tps->regmap, TPS65023_REG_LDO_CTRL, &data); |
344 | if (data < 0) | 320 | if (ret != 0) |
345 | return data; | 321 | return ret; |
346 | 322 | ||
347 | data >>= (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1)); | 323 | data >>= (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1)); |
348 | data &= (tps->info[ldo]->table_len - 1); | 324 | data &= (tps->info[ldo]->table_len - 1); |
@@ -354,6 +330,7 @@ static int tps65023_ldo_set_voltage(struct regulator_dev *dev, | |||
354 | { | 330 | { |
355 | struct tps_pmic *tps = rdev_get_drvdata(dev); | 331 | struct tps_pmic *tps = rdev_get_drvdata(dev); |
356 | int data, vsel, ldo = rdev_get_id(dev); | 332 | int data, vsel, ldo = rdev_get_id(dev); |
333 | int ret; | ||
357 | 334 | ||
358 | if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2) | 335 | if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2) |
359 | return -EINVAL; | 336 | return -EINVAL; |
@@ -377,13 +354,13 @@ static int tps65023_ldo_set_voltage(struct regulator_dev *dev, | |||
377 | 354 | ||
378 | *selector = vsel; | 355 | *selector = vsel; |
379 | 356 | ||
380 | data = tps_65023_reg_read(tps, TPS65023_REG_LDO_CTRL); | 357 | ret = regmap_read(tps->regmap, TPS65023_REG_LDO_CTRL, &data); |
381 | if (data < 0) | 358 | if (ret != 0) |
382 | return data; | 359 | return ret; |
383 | 360 | ||
384 | data &= TPS65023_LDO_CTRL_LDOx_MASK(ldo - TPS65023_LDO_1); | 361 | data &= TPS65023_LDO_CTRL_LDOx_MASK(ldo - TPS65023_LDO_1); |
385 | data |= (vsel << (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1))); | 362 | data |= (vsel << (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1))); |
386 | return tps_65023_reg_write(tps, TPS65023_REG_LDO_CTRL, data); | 363 | return regmap_write(tps->regmap, TPS65023_REG_LDO_CTRL, data); |
387 | } | 364 | } |
388 | 365 | ||
389 | static int tps65023_dcdc_list_voltage(struct regulator_dev *dev, | 366 | static int tps65023_dcdc_list_voltage(struct regulator_dev *dev, |
@@ -511,12 +488,12 @@ static int __devinit tps_65023_probe(struct i2c_client *client, | |||
511 | i2c_set_clientdata(client, tps); | 488 | i2c_set_clientdata(client, tps); |
512 | 489 | ||
513 | /* Enable setting output voltage by I2C */ | 490 | /* Enable setting output voltage by I2C */ |
514 | tps_65023_clear_bits(tps, TPS65023_REG_CON_CTRL2, | 491 | regmap_update_bits(tps->regmap, TPS65023_REG_CON_CTRL2, |
515 | TPS65023_REG_CTRL2_CORE_ADJ); | 492 | TPS65023_REG_CTRL2_CORE_ADJ, TPS65023_REG_CTRL2_CORE_ADJ); |
516 | 493 | ||
517 | /* Enable setting output voltage by I2C */ | 494 | /* Enable setting output voltage by I2C */ |
518 | tps_65023_clear_bits(tps, TPS65023_REG_CON_CTRL2, | 495 | regmap_update_bits(tps->regmap, TPS65023_REG_CON_CTRL2, |
519 | TPS65023_REG_CTRL2_CORE_ADJ); | 496 | TPS65023_REG_CTRL2_CORE_ADJ, TPS65023_REG_CTRL2_CORE_ADJ); |
520 | 497 | ||
521 | return 0; | 498 | return 0; |
522 | 499 | ||