Commit 353495a5abcee1368a93f71b0e49390f96f24fb4
Exists in
master
and in
39 other branches
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6: regulator: tps6586x: correct register table regulator: tps6586x: Handle both enable reg/bits being the same regulator: tps6586x: Fix TPS6586X_DVM to store goreg/bit regulator: tps6586x: Add missing bit mask generation
Showing 1 changed file Side-by-side Diff
drivers/regulator/tps6586x-regulator.c
... | ... | @@ -231,8 +231,7 @@ |
231 | 231 | }; |
232 | 232 | |
233 | 233 | #define TPS6586X_REGULATOR(_id, vdata, _ops, vreg, shift, nbits, \ |
234 | - ereg0, ebit0, ereg1, ebit1, goreg, gobit) \ | |
235 | -{ \ | |
234 | + ereg0, ebit0, ereg1, ebit1) \ | |
236 | 235 | .desc = { \ |
237 | 236 | .name = "REG-" #_id, \ |
238 | 237 | .ops = &tps6586x_regulator_##_ops, \ |
239 | 238 | |
240 | 239 | |
241 | 240 | |
242 | 241 | |
243 | 242 | |
... | ... | @@ -248,18 +247,26 @@ |
248 | 247 | .enable_bit[0] = (ebit0), \ |
249 | 248 | .enable_reg[1] = TPS6586X_SUPPLY##ereg1, \ |
250 | 249 | .enable_bit[1] = (ebit1), \ |
251 | - .voltages = tps6586x_##vdata##_voltages, \ | |
252 | -} | |
250 | + .voltages = tps6586x_##vdata##_voltages, | |
253 | 251 | |
252 | +#define TPS6586X_REGULATOR_DVM_GOREG(goreg, gobit) \ | |
253 | + .go_reg = TPS6586X_##goreg, \ | |
254 | + .go_bit = (gobit), | |
255 | + | |
254 | 256 | #define TPS6586X_LDO(_id, vdata, vreg, shift, nbits, \ |
255 | 257 | ereg0, ebit0, ereg1, ebit1) \ |
258 | +{ \ | |
256 | 259 | TPS6586X_REGULATOR(_id, vdata, ldo_ops, vreg, shift, nbits, \ |
257 | - ereg0, ebit0, ereg1, ebit1, 0, 0) | |
260 | + ereg0, ebit0, ereg1, ebit1) \ | |
261 | +} | |
258 | 262 | |
259 | 263 | #define TPS6586X_DVM(_id, vdata, vreg, shift, nbits, \ |
260 | 264 | ereg0, ebit0, ereg1, ebit1, goreg, gobit) \ |
265 | +{ \ | |
261 | 266 | TPS6586X_REGULATOR(_id, vdata, dvm_ops, vreg, shift, nbits, \ |
262 | - ereg0, ebit0, ereg1, ebit1, goreg, gobit) | |
267 | + ereg0, ebit0, ereg1, ebit1) \ | |
268 | + TPS6586X_REGULATOR_DVM_GOREG(goreg, gobit) \ | |
269 | +} | |
263 | 270 | |
264 | 271 | static struct tps6586x_regulator tps6586x_regulator[] = { |
265 | 272 | TPS6586X_LDO(LDO_0, ldo, SUPPLYV1, 5, 3, ENC, 0, END, 0), |
266 | 273 | |
267 | 274 | |
... | ... | @@ -267,11 +274,11 @@ |
267 | 274 | TPS6586X_LDO(LDO_5, ldo, SUPPLYV6, 0, 3, ENE, 6, ENE, 6), |
268 | 275 | TPS6586X_LDO(LDO_6, ldo, SUPPLYV3, 0, 3, ENC, 4, END, 4), |
269 | 276 | TPS6586X_LDO(LDO_7, ldo, SUPPLYV3, 3, 3, ENC, 5, END, 5), |
270 | - TPS6586X_LDO(LDO_8, ldo, SUPPLYV1, 5, 3, ENC, 6, END, 6), | |
277 | + TPS6586X_LDO(LDO_8, ldo, SUPPLYV2, 5, 3, ENC, 6, END, 6), | |
271 | 278 | TPS6586X_LDO(LDO_9, ldo, SUPPLYV6, 3, 3, ENE, 7, ENE, 7), |
272 | - TPS6586X_LDO(LDO_RTC, ldo, SUPPLYV4, 3, 3, ENE, 7, ENE, 7), | |
279 | + TPS6586X_LDO(LDO_RTC, ldo, SUPPLYV4, 3, 3, V4, 7, V4, 7), | |
273 | 280 | TPS6586X_LDO(LDO_1, dvm, SUPPLYV1, 0, 5, ENC, 1, END, 1), |
274 | - TPS6586X_LDO(SM_2, sm2, SUPPLYV2, 0, 5, ENC, 1, END, 1), | |
281 | + TPS6586X_LDO(SM_2, sm2, SUPPLYV2, 0, 5, ENC, 7, END, 7), | |
275 | 282 | |
276 | 283 | TPS6586X_DVM(LDO_2, dvm, LDO2BV1, 0, 5, ENA, 3, ENB, 3, VCC2, 6), |
277 | 284 | TPS6586X_DVM(LDO_4, ldo4, LDO4V1, 0, 5, ENC, 3, END, 3, VCC1, 6), |
... | ... | @@ -290,6 +297,10 @@ |
290 | 297 | uint8_t val1, val2; |
291 | 298 | int ret; |
292 | 299 | |
300 | + if (ri->enable_reg[0] == ri->enable_reg[1] && | |
301 | + ri->enable_bit[0] == ri->enable_bit[1]) | |
302 | + return 0; | |
303 | + | |
293 | 304 | ret = tps6586x_read(parent, ri->enable_reg[0], &val1); |
294 | 305 | if (ret) |
295 | 306 | return ret; |
296 | 307 | |
... | ... | @@ -298,14 +309,14 @@ |
298 | 309 | if (ret) |
299 | 310 | return ret; |
300 | 311 | |
301 | - if (!(val2 & ri->enable_bit[1])) | |
312 | + if (!(val2 & (1 << ri->enable_bit[1]))) | |
302 | 313 | return 0; |
303 | 314 | |
304 | 315 | /* |
305 | 316 | * The regulator is on, but it's enabled with the bit we don't |
306 | 317 | * want to use, so we switch the enable bits |
307 | 318 | */ |
308 | - if (!(val1 & ri->enable_bit[0])) { | |
319 | + if (!(val1 & (1 << ri->enable_bit[0]))) { | |
309 | 320 | ret = tps6586x_set_bits(parent, ri->enable_reg[0], |
310 | 321 | 1 << ri->enable_bit[0]); |
311 | 322 | if (ret) |