diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/i2c/chips/tps65010.c | 135 |
1 files changed, 69 insertions, 66 deletions
diff --git a/drivers/i2c/chips/tps65010.c b/drivers/i2c/chips/tps65010.c index 503ffec2ce07..402d911a9e7b 100644 --- a/drivers/i2c/chips/tps65010.c +++ b/drivers/i2c/chips/tps65010.c | |||
@@ -79,7 +79,8 @@ enum tps_model { | |||
79 | }; | 79 | }; |
80 | 80 | ||
81 | struct tps65010 { | 81 | struct tps65010 { |
82 | struct i2c_client client; | 82 | struct i2c_client c; |
83 | struct i2c_client *client; | ||
83 | struct mutex lock; | 84 | struct mutex lock; |
84 | int irq; | 85 | int irq; |
85 | struct delayed_work work; | 86 | struct delayed_work work; |
@@ -229,22 +230,22 @@ static int dbg_show(struct seq_file *s, void *_) | |||
229 | /* registers for monitoring battery charging and status; note | 230 | /* registers for monitoring battery charging and status; note |
230 | * that reading chgstat and regstat may ack IRQs... | 231 | * that reading chgstat and regstat may ack IRQs... |
231 | */ | 232 | */ |
232 | value = i2c_smbus_read_byte_data(&tps->client, TPS_CHGCONFIG); | 233 | value = i2c_smbus_read_byte_data(tps->client, TPS_CHGCONFIG); |
233 | dbg_chgconf(tps->por, buf, sizeof buf, value); | 234 | dbg_chgconf(tps->por, buf, sizeof buf, value); |
234 | seq_printf(s, "chgconfig %s", buf); | 235 | seq_printf(s, "chgconfig %s", buf); |
235 | 236 | ||
236 | value = i2c_smbus_read_byte_data(&tps->client, TPS_CHGSTATUS); | 237 | value = i2c_smbus_read_byte_data(tps->client, TPS_CHGSTATUS); |
237 | dbg_chgstat(buf, sizeof buf, value); | 238 | dbg_chgstat(buf, sizeof buf, value); |
238 | seq_printf(s, "chgstat %s", buf); | 239 | seq_printf(s, "chgstat %s", buf); |
239 | value = i2c_smbus_read_byte_data(&tps->client, TPS_MASK1); | 240 | value = i2c_smbus_read_byte_data(tps->client, TPS_MASK1); |
240 | dbg_chgstat(buf, sizeof buf, value); | 241 | dbg_chgstat(buf, sizeof buf, value); |
241 | seq_printf(s, "mask1 %s", buf); | 242 | seq_printf(s, "mask1 %s", buf); |
242 | /* ignore ackint1 */ | 243 | /* ignore ackint1 */ |
243 | 244 | ||
244 | value = i2c_smbus_read_byte_data(&tps->client, TPS_REGSTATUS); | 245 | value = i2c_smbus_read_byte_data(tps->client, TPS_REGSTATUS); |
245 | dbg_regstat(buf, sizeof buf, value); | 246 | dbg_regstat(buf, sizeof buf, value); |
246 | seq_printf(s, "regstat %s", buf); | 247 | seq_printf(s, "regstat %s", buf); |
247 | value = i2c_smbus_read_byte_data(&tps->client, TPS_MASK2); | 248 | value = i2c_smbus_read_byte_data(tps->client, TPS_MASK2); |
248 | dbg_regstat(buf, sizeof buf, value); | 249 | dbg_regstat(buf, sizeof buf, value); |
249 | seq_printf(s, "mask2 %s\n", buf); | 250 | seq_printf(s, "mask2 %s\n", buf); |
250 | /* ignore ackint2 */ | 251 | /* ignore ackint2 */ |
@@ -253,21 +254,21 @@ static int dbg_show(struct seq_file *s, void *_) | |||
253 | 254 | ||
254 | 255 | ||
255 | /* VMAIN voltage, enable lowpower, etc */ | 256 | /* VMAIN voltage, enable lowpower, etc */ |
256 | value = i2c_smbus_read_byte_data(&tps->client, TPS_VDCDC1); | 257 | value = i2c_smbus_read_byte_data(tps->client, TPS_VDCDC1); |
257 | seq_printf(s, "vdcdc1 %02x\n", value); | 258 | seq_printf(s, "vdcdc1 %02x\n", value); |
258 | 259 | ||
259 | /* VCORE voltage, vibrator on/off */ | 260 | /* VCORE voltage, vibrator on/off */ |
260 | value = i2c_smbus_read_byte_data(&tps->client, TPS_VDCDC2); | 261 | value = i2c_smbus_read_byte_data(tps->client, TPS_VDCDC2); |
261 | seq_printf(s, "vdcdc2 %02x\n", value); | 262 | seq_printf(s, "vdcdc2 %02x\n", value); |
262 | 263 | ||
263 | /* both LD0s, and their lowpower behavior */ | 264 | /* both LD0s, and their lowpower behavior */ |
264 | value = i2c_smbus_read_byte_data(&tps->client, TPS_VREGS1); | 265 | value = i2c_smbus_read_byte_data(tps->client, TPS_VREGS1); |
265 | seq_printf(s, "vregs1 %02x\n\n", value); | 266 | seq_printf(s, "vregs1 %02x\n\n", value); |
266 | 267 | ||
267 | 268 | ||
268 | /* LEDs and GPIOs */ | 269 | /* LEDs and GPIOs */ |
269 | value = i2c_smbus_read_byte_data(&tps->client, TPS_LED1_ON); | 270 | value = i2c_smbus_read_byte_data(tps->client, TPS_LED1_ON); |
270 | v2 = i2c_smbus_read_byte_data(&tps->client, TPS_LED1_PER); | 271 | v2 = i2c_smbus_read_byte_data(tps->client, TPS_LED1_PER); |
271 | seq_printf(s, "led1 %s, on=%02x, per=%02x, %d/%d msec\n", | 272 | seq_printf(s, "led1 %s, on=%02x, per=%02x, %d/%d msec\n", |
272 | (value & 0x80) | 273 | (value & 0x80) |
273 | ? ((v2 & 0x80) ? "on" : "off") | 274 | ? ((v2 & 0x80) ? "on" : "off") |
@@ -275,8 +276,8 @@ static int dbg_show(struct seq_file *s, void *_) | |||
275 | value, v2, | 276 | value, v2, |
276 | (value & 0x7f) * 10, (v2 & 0x7f) * 100); | 277 | (value & 0x7f) * 10, (v2 & 0x7f) * 100); |
277 | 278 | ||
278 | value = i2c_smbus_read_byte_data(&tps->client, TPS_LED2_ON); | 279 | value = i2c_smbus_read_byte_data(tps->client, TPS_LED2_ON); |
279 | v2 = i2c_smbus_read_byte_data(&tps->client, TPS_LED2_PER); | 280 | v2 = i2c_smbus_read_byte_data(tps->client, TPS_LED2_PER); |
280 | seq_printf(s, "led2 %s, on=%02x, per=%02x, %d/%d msec\n", | 281 | seq_printf(s, "led2 %s, on=%02x, per=%02x, %d/%d msec\n", |
281 | (value & 0x80) | 282 | (value & 0x80) |
282 | ? ((v2 & 0x80) ? "on" : "off") | 283 | ? ((v2 & 0x80) ? "on" : "off") |
@@ -284,8 +285,8 @@ static int dbg_show(struct seq_file *s, void *_) | |||
284 | value, v2, | 285 | value, v2, |
285 | (value & 0x7f) * 10, (v2 & 0x7f) * 100); | 286 | (value & 0x7f) * 10, (v2 & 0x7f) * 100); |
286 | 287 | ||
287 | value = i2c_smbus_read_byte_data(&tps->client, TPS_DEFGPIO); | 288 | value = i2c_smbus_read_byte_data(tps->client, TPS_DEFGPIO); |
288 | v2 = i2c_smbus_read_byte_data(&tps->client, TPS_MASK3); | 289 | v2 = i2c_smbus_read_byte_data(tps->client, TPS_MASK3); |
289 | seq_printf(s, "defgpio %02x mask3 %02x\n", value, v2); | 290 | seq_printf(s, "defgpio %02x mask3 %02x\n", value, v2); |
290 | 291 | ||
291 | for (i = 0; i < 4; i++) { | 292 | for (i = 0; i < 4; i++) { |
@@ -335,7 +336,7 @@ static void tps65010_interrupt(struct tps65010 *tps) | |||
335 | 336 | ||
336 | /* regstatus irqs */ | 337 | /* regstatus irqs */ |
337 | if (tps->nmask2) { | 338 | if (tps->nmask2) { |
338 | tmp = i2c_smbus_read_byte_data(&tps->client, TPS_REGSTATUS); | 339 | tmp = i2c_smbus_read_byte_data(tps->client, TPS_REGSTATUS); |
339 | mask = tmp ^ tps->regstatus; | 340 | mask = tmp ^ tps->regstatus; |
340 | tps->regstatus = tmp; | 341 | tps->regstatus = tmp; |
341 | mask &= tps->nmask2; | 342 | mask &= tps->nmask2; |
@@ -362,7 +363,7 @@ static void tps65010_interrupt(struct tps65010 *tps) | |||
362 | 363 | ||
363 | /* chgstatus irqs */ | 364 | /* chgstatus irqs */ |
364 | if (tps->nmask1) { | 365 | if (tps->nmask1) { |
365 | tmp = i2c_smbus_read_byte_data(&tps->client, TPS_CHGSTATUS); | 366 | tmp = i2c_smbus_read_byte_data(tps->client, TPS_CHGSTATUS); |
366 | mask = tmp ^ tps->chgstatus; | 367 | mask = tmp ^ tps->chgstatus; |
367 | tps->chgstatus = tmp; | 368 | tps->chgstatus = tmp; |
368 | mask &= tps->nmask1; | 369 | mask &= tps->nmask1; |
@@ -426,7 +427,7 @@ static void tps65010_work(struct work_struct *work) | |||
426 | int status; | 427 | int status; |
427 | u8 chgconfig, tmp; | 428 | u8 chgconfig, tmp; |
428 | 429 | ||
429 | chgconfig = i2c_smbus_read_byte_data(&tps->client, | 430 | chgconfig = i2c_smbus_read_byte_data(tps->client, |
430 | TPS_CHGCONFIG); | 431 | TPS_CHGCONFIG); |
431 | chgconfig &= ~(TPS_VBUS_500MA | TPS_VBUS_CHARGING); | 432 | chgconfig &= ~(TPS_VBUS_500MA | TPS_VBUS_CHARGING); |
432 | if (tps->vbus == 500) | 433 | if (tps->vbus == 500) |
@@ -434,11 +435,11 @@ static void tps65010_work(struct work_struct *work) | |||
434 | else if (tps->vbus >= 100) | 435 | else if (tps->vbus >= 100) |
435 | chgconfig |= TPS_VBUS_CHARGING; | 436 | chgconfig |= TPS_VBUS_CHARGING; |
436 | 437 | ||
437 | status = i2c_smbus_write_byte_data(&tps->client, | 438 | status = i2c_smbus_write_byte_data(tps->client, |
438 | TPS_CHGCONFIG, chgconfig); | 439 | TPS_CHGCONFIG, chgconfig); |
439 | 440 | ||
440 | /* vbus update fails unless VBUS is connected! */ | 441 | /* vbus update fails unless VBUS is connected! */ |
441 | tmp = i2c_smbus_read_byte_data(&tps->client, TPS_CHGCONFIG); | 442 | tmp = i2c_smbus_read_byte_data(tps->client, TPS_CHGCONFIG); |
442 | tps->chgconf = tmp; | 443 | tps->chgconf = tmp; |
443 | show_chgconfig(tps->por, "update vbus", tmp); | 444 | show_chgconfig(tps->por, "update vbus", tmp); |
444 | } | 445 | } |
@@ -467,7 +468,7 @@ static int __exit tps65010_detach_client(struct i2c_client *client) | |||
467 | { | 468 | { |
468 | struct tps65010 *tps; | 469 | struct tps65010 *tps; |
469 | 470 | ||
470 | tps = container_of(client, struct tps65010, client); | 471 | tps = container_of(client, struct tps65010, c); |
471 | free_irq(tps->irq, tps); | 472 | free_irq(tps->irq, tps); |
472 | #ifdef CONFIG_ARM | 473 | #ifdef CONFIG_ARM |
473 | if (machine_is_omap_h2()) | 474 | if (machine_is_omap_h2()) |
@@ -499,6 +500,7 @@ tps65010_probe(struct i2c_adapter *bus, int address, int kind) | |||
499 | struct tps65010 *tps; | 500 | struct tps65010 *tps; |
500 | int status; | 501 | int status; |
501 | unsigned long irqflags; | 502 | unsigned long irqflags; |
503 | struct i2c_client *client; | ||
502 | 504 | ||
503 | if (the_tps) { | 505 | if (the_tps) { |
504 | dev_dbg(&bus->dev, "only one %s for now\n", DRIVER_NAME); | 506 | dev_dbg(&bus->dev, "only one %s for now\n", DRIVER_NAME); |
@@ -512,12 +514,13 @@ tps65010_probe(struct i2c_adapter *bus, int address, int kind) | |||
512 | mutex_init(&tps->lock); | 514 | mutex_init(&tps->lock); |
513 | INIT_DELAYED_WORK(&tps->work, tps65010_work); | 515 | INIT_DELAYED_WORK(&tps->work, tps65010_work); |
514 | tps->irq = -1; | 516 | tps->irq = -1; |
515 | tps->client.addr = address; | 517 | tps->c.addr = address; |
516 | tps->client.adapter = bus; | 518 | tps->c.adapter = bus; |
517 | tps->client.driver = &tps65010_driver; | 519 | tps->c.driver = &tps65010_driver; |
518 | strlcpy(tps->client.name, DRIVER_NAME, I2C_NAME_SIZE); | 520 | strlcpy(tps->c.name, DRIVER_NAME, I2C_NAME_SIZE); |
521 | tps->client = client = &tps->c; | ||
519 | 522 | ||
520 | status = i2c_attach_client(&tps->client); | 523 | status = i2c_attach_client(client); |
521 | if (status < 0) { | 524 | if (status < 0) { |
522 | dev_dbg(&bus->dev, "can't attach %s to device %d, err %d\n", | 525 | dev_dbg(&bus->dev, "can't attach %s to device %d, err %d\n", |
523 | DRIVER_NAME, address, status); | 526 | DRIVER_NAME, address, status); |
@@ -556,9 +559,9 @@ tps65010_probe(struct i2c_adapter *bus, int address, int kind) | |||
556 | status = request_irq(tps->irq, tps65010_irq, | 559 | status = request_irq(tps->irq, tps65010_irq, |
557 | irqflags, DRIVER_NAME, tps); | 560 | irqflags, DRIVER_NAME, tps); |
558 | if (status < 0) { | 561 | if (status < 0) { |
559 | dev_dbg(&tps->client.dev, "can't get IRQ %d, err %d\n", | 562 | dev_dbg(&client->dev, "can't get IRQ %d, err %d\n", |
560 | tps->irq, status); | 563 | tps->irq, status); |
561 | i2c_detach_client(&tps->client); | 564 | i2c_detach_client(client); |
562 | goto fail1; | 565 | goto fail1; |
563 | } | 566 | } |
564 | #ifdef CONFIG_ARM | 567 | #ifdef CONFIG_ARM |
@@ -583,21 +586,21 @@ tps65010_probe(struct i2c_adapter *bus, int address, int kind) | |||
583 | break; | 586 | break; |
584 | /* else CHGCONFIG.POR is replaced by AUA, enabling a WAIT mode */ | 587 | /* else CHGCONFIG.POR is replaced by AUA, enabling a WAIT mode */ |
585 | } | 588 | } |
586 | tps->chgconf = i2c_smbus_read_byte_data(&tps->client, TPS_CHGCONFIG); | 589 | tps->chgconf = i2c_smbus_read_byte_data(client, TPS_CHGCONFIG); |
587 | show_chgconfig(tps->por, "conf/init", tps->chgconf); | 590 | show_chgconfig(tps->por, "conf/init", tps->chgconf); |
588 | 591 | ||
589 | show_chgstatus("chg/init", | 592 | show_chgstatus("chg/init", |
590 | i2c_smbus_read_byte_data(&tps->client, TPS_CHGSTATUS)); | 593 | i2c_smbus_read_byte_data(client, TPS_CHGSTATUS)); |
591 | show_regstatus("reg/init", | 594 | show_regstatus("reg/init", |
592 | i2c_smbus_read_byte_data(&tps->client, TPS_REGSTATUS)); | 595 | i2c_smbus_read_byte_data(client, TPS_REGSTATUS)); |
593 | 596 | ||
594 | pr_debug("%s: vdcdc1 0x%02x, vdcdc2 %02x, vregs1 %02x\n", DRIVER_NAME, | 597 | pr_debug("%s: vdcdc1 0x%02x, vdcdc2 %02x, vregs1 %02x\n", DRIVER_NAME, |
595 | i2c_smbus_read_byte_data(&tps->client, TPS_VDCDC1), | 598 | i2c_smbus_read_byte_data(client, TPS_VDCDC1), |
596 | i2c_smbus_read_byte_data(&tps->client, TPS_VDCDC2), | 599 | i2c_smbus_read_byte_data(client, TPS_VDCDC2), |
597 | i2c_smbus_read_byte_data(&tps->client, TPS_VREGS1)); | 600 | i2c_smbus_read_byte_data(client, TPS_VREGS1)); |
598 | pr_debug("%s: defgpio 0x%02x, mask3 0x%02x\n", DRIVER_NAME, | 601 | pr_debug("%s: defgpio 0x%02x, mask3 0x%02x\n", DRIVER_NAME, |
599 | i2c_smbus_read_byte_data(&tps->client, TPS_DEFGPIO), | 602 | i2c_smbus_read_byte_data(client, TPS_DEFGPIO), |
600 | i2c_smbus_read_byte_data(&tps->client, TPS_MASK3)); | 603 | i2c_smbus_read_byte_data(client, TPS_MASK3)); |
601 | 604 | ||
602 | tps65010_driver.attach_adapter = tps65010_noscan; | 605 | tps65010_driver.attach_adapter = tps65010_noscan; |
603 | the_tps = tps; | 606 | the_tps = tps; |
@@ -615,15 +618,15 @@ tps65010_probe(struct i2c_adapter *bus, int address, int kind) | |||
615 | * registers, and maybe disable VBUS draw. | 618 | * registers, and maybe disable VBUS draw. |
616 | */ | 619 | */ |
617 | tps->nmask1 = ~0; | 620 | tps->nmask1 = ~0; |
618 | (void) i2c_smbus_write_byte_data(&tps->client, TPS_MASK1, ~tps->nmask1); | 621 | (void) i2c_smbus_write_byte_data(client, TPS_MASK1, ~tps->nmask1); |
619 | 622 | ||
620 | tps->nmask2 = TPS_REG_ONOFF; | 623 | tps->nmask2 = TPS_REG_ONOFF; |
621 | if (tps->model == TPS65013) | 624 | if (tps->model == TPS65013) |
622 | tps->nmask2 |= TPS_REG_NO_CHG; | 625 | tps->nmask2 |= TPS_REG_NO_CHG; |
623 | (void) i2c_smbus_write_byte_data(&tps->client, TPS_MASK2, ~tps->nmask2); | 626 | (void) i2c_smbus_write_byte_data(client, TPS_MASK2, ~tps->nmask2); |
624 | 627 | ||
625 | (void) i2c_smbus_write_byte_data(&tps->client, TPS_MASK3, 0x0f | 628 | (void) i2c_smbus_write_byte_data(client, TPS_MASK3, 0x0f |
626 | | i2c_smbus_read_byte_data(&tps->client, TPS_MASK3)); | 629 | | i2c_smbus_read_byte_data(client, TPS_MASK3)); |
627 | 630 | ||
628 | tps65010_work(&tps->work.work); | 631 | tps65010_work(&tps->work.work); |
629 | 632 | ||
@@ -702,7 +705,7 @@ int tps65010_set_gpio_out_value(unsigned gpio, unsigned value) | |||
702 | 705 | ||
703 | mutex_lock(&the_tps->lock); | 706 | mutex_lock(&the_tps->lock); |
704 | 707 | ||
705 | defgpio = i2c_smbus_read_byte_data(&the_tps->client, TPS_DEFGPIO); | 708 | defgpio = i2c_smbus_read_byte_data(the_tps->client, TPS_DEFGPIO); |
706 | 709 | ||
707 | /* Configure GPIO for output */ | 710 | /* Configure GPIO for output */ |
708 | defgpio |= 1 << (gpio + 3); | 711 | defgpio |= 1 << (gpio + 3); |
@@ -718,12 +721,12 @@ int tps65010_set_gpio_out_value(unsigned gpio, unsigned value) | |||
718 | break; | 721 | break; |
719 | } | 722 | } |
720 | 723 | ||
721 | status = i2c_smbus_write_byte_data(&the_tps->client, | 724 | status = i2c_smbus_write_byte_data(the_tps->client, |
722 | TPS_DEFGPIO, defgpio); | 725 | TPS_DEFGPIO, defgpio); |
723 | 726 | ||
724 | pr_debug("%s: gpio%dout = %s, defgpio 0x%02x\n", DRIVER_NAME, | 727 | pr_debug("%s: gpio%dout = %s, defgpio 0x%02x\n", DRIVER_NAME, |
725 | gpio, value ? "high" : "low", | 728 | gpio, value ? "high" : "low", |
726 | i2c_smbus_read_byte_data(&the_tps->client, TPS_DEFGPIO)); | 729 | i2c_smbus_read_byte_data(the_tps->client, TPS_DEFGPIO)); |
727 | 730 | ||
728 | mutex_unlock(&the_tps->lock); | 731 | mutex_unlock(&the_tps->lock); |
729 | return status; | 732 | return status; |
@@ -753,11 +756,11 @@ int tps65010_set_led(unsigned led, unsigned mode) | |||
753 | mutex_lock(&the_tps->lock); | 756 | mutex_lock(&the_tps->lock); |
754 | 757 | ||
755 | pr_debug("%s: led%i_on 0x%02x\n", DRIVER_NAME, led, | 758 | pr_debug("%s: led%i_on 0x%02x\n", DRIVER_NAME, led, |
756 | i2c_smbus_read_byte_data(&the_tps->client, | 759 | i2c_smbus_read_byte_data(the_tps->client, |
757 | TPS_LED1_ON + offs)); | 760 | TPS_LED1_ON + offs)); |
758 | 761 | ||
759 | pr_debug("%s: led%i_per 0x%02x\n", DRIVER_NAME, led, | 762 | pr_debug("%s: led%i_per 0x%02x\n", DRIVER_NAME, led, |
760 | i2c_smbus_read_byte_data(&the_tps->client, | 763 | i2c_smbus_read_byte_data(the_tps->client, |
761 | TPS_LED1_PER + offs)); | 764 | TPS_LED1_PER + offs)); |
762 | 765 | ||
763 | switch (mode) { | 766 | switch (mode) { |
@@ -780,7 +783,7 @@ int tps65010_set_led(unsigned led, unsigned mode) | |||
780 | return -EINVAL; | 783 | return -EINVAL; |
781 | } | 784 | } |
782 | 785 | ||
783 | status = i2c_smbus_write_byte_data(&the_tps->client, | 786 | status = i2c_smbus_write_byte_data(the_tps->client, |
784 | TPS_LED1_ON + offs, led_on); | 787 | TPS_LED1_ON + offs, led_on); |
785 | 788 | ||
786 | if (status != 0) { | 789 | if (status != 0) { |
@@ -791,9 +794,9 @@ int tps65010_set_led(unsigned led, unsigned mode) | |||
791 | } | 794 | } |
792 | 795 | ||
793 | pr_debug("%s: led%i_on 0x%02x\n", DRIVER_NAME, led, | 796 | pr_debug("%s: led%i_on 0x%02x\n", DRIVER_NAME, led, |
794 | i2c_smbus_read_byte_data(&the_tps->client, TPS_LED1_ON + offs)); | 797 | i2c_smbus_read_byte_data(the_tps->client, TPS_LED1_ON + offs)); |
795 | 798 | ||
796 | status = i2c_smbus_write_byte_data(&the_tps->client, | 799 | status = i2c_smbus_write_byte_data(the_tps->client, |
797 | TPS_LED1_PER + offs, led_per); | 800 | TPS_LED1_PER + offs, led_per); |
798 | 801 | ||
799 | if (status != 0) { | 802 | if (status != 0) { |
@@ -804,7 +807,7 @@ int tps65010_set_led(unsigned led, unsigned mode) | |||
804 | } | 807 | } |
805 | 808 | ||
806 | pr_debug("%s: led%i_per 0x%02x\n", DRIVER_NAME, led, | 809 | pr_debug("%s: led%i_per 0x%02x\n", DRIVER_NAME, led, |
807 | i2c_smbus_read_byte_data(&the_tps->client, | 810 | i2c_smbus_read_byte_data(the_tps->client, |
808 | TPS_LED1_PER + offs)); | 811 | TPS_LED1_PER + offs)); |
809 | 812 | ||
810 | mutex_unlock(&the_tps->lock); | 813 | mutex_unlock(&the_tps->lock); |
@@ -827,11 +830,11 @@ int tps65010_set_vib(unsigned value) | |||
827 | 830 | ||
828 | mutex_lock(&the_tps->lock); | 831 | mutex_lock(&the_tps->lock); |
829 | 832 | ||
830 | vdcdc2 = i2c_smbus_read_byte_data(&the_tps->client, TPS_VDCDC2); | 833 | vdcdc2 = i2c_smbus_read_byte_data(the_tps->client, TPS_VDCDC2); |
831 | vdcdc2 &= ~(1 << 1); | 834 | vdcdc2 &= ~(1 << 1); |
832 | if (value) | 835 | if (value) |
833 | vdcdc2 |= (1 << 1); | 836 | vdcdc2 |= (1 << 1); |
834 | status = i2c_smbus_write_byte_data(&the_tps->client, | 837 | status = i2c_smbus_write_byte_data(the_tps->client, |
835 | TPS_VDCDC2, vdcdc2); | 838 | TPS_VDCDC2, vdcdc2); |
836 | 839 | ||
837 | pr_debug("%s: vibrator %s\n", DRIVER_NAME, value ? "on" : "off"); | 840 | pr_debug("%s: vibrator %s\n", DRIVER_NAME, value ? "on" : "off"); |
@@ -857,9 +860,9 @@ int tps65010_set_low_pwr(unsigned mode) | |||
857 | 860 | ||
858 | pr_debug("%s: %s low_pwr, vdcdc1 0x%02x\n", DRIVER_NAME, | 861 | pr_debug("%s: %s low_pwr, vdcdc1 0x%02x\n", DRIVER_NAME, |
859 | mode ? "enable" : "disable", | 862 | mode ? "enable" : "disable", |
860 | i2c_smbus_read_byte_data(&the_tps->client, TPS_VDCDC1)); | 863 | i2c_smbus_read_byte_data(the_tps->client, TPS_VDCDC1)); |
861 | 864 | ||
862 | vdcdc1 = i2c_smbus_read_byte_data(&the_tps->client, TPS_VDCDC1); | 865 | vdcdc1 = i2c_smbus_read_byte_data(the_tps->client, TPS_VDCDC1); |
863 | 866 | ||
864 | switch (mode) { | 867 | switch (mode) { |
865 | case OFF: | 868 | case OFF: |
@@ -871,7 +874,7 @@ int tps65010_set_low_pwr(unsigned mode) | |||
871 | break; | 874 | break; |
872 | } | 875 | } |
873 | 876 | ||
874 | status = i2c_smbus_write_byte_data(&the_tps->client, | 877 | status = i2c_smbus_write_byte_data(the_tps->client, |
875 | TPS_VDCDC1, vdcdc1); | 878 | TPS_VDCDC1, vdcdc1); |
876 | 879 | ||
877 | if (status != 0) | 880 | if (status != 0) |
@@ -879,7 +882,7 @@ int tps65010_set_low_pwr(unsigned mode) | |||
879 | DRIVER_NAME); | 882 | DRIVER_NAME); |
880 | else | 883 | else |
881 | pr_debug("%s: vdcdc1 0x%02x\n", DRIVER_NAME, | 884 | pr_debug("%s: vdcdc1 0x%02x\n", DRIVER_NAME, |
882 | i2c_smbus_read_byte_data(&the_tps->client, TPS_VDCDC1)); | 885 | i2c_smbus_read_byte_data(the_tps->client, TPS_VDCDC1)); |
883 | 886 | ||
884 | mutex_unlock(&the_tps->lock); | 887 | mutex_unlock(&the_tps->lock); |
885 | 888 | ||
@@ -902,9 +905,9 @@ int tps65010_config_vregs1(unsigned value) | |||
902 | mutex_lock(&the_tps->lock); | 905 | mutex_lock(&the_tps->lock); |
903 | 906 | ||
904 | pr_debug("%s: vregs1 0x%02x\n", DRIVER_NAME, | 907 | pr_debug("%s: vregs1 0x%02x\n", DRIVER_NAME, |
905 | i2c_smbus_read_byte_data(&the_tps->client, TPS_VREGS1)); | 908 | i2c_smbus_read_byte_data(the_tps->client, TPS_VREGS1)); |
906 | 909 | ||
907 | status = i2c_smbus_write_byte_data(&the_tps->client, | 910 | status = i2c_smbus_write_byte_data(the_tps->client, |
908 | TPS_VREGS1, value); | 911 | TPS_VREGS1, value); |
909 | 912 | ||
910 | if (status != 0) | 913 | if (status != 0) |
@@ -912,7 +915,7 @@ int tps65010_config_vregs1(unsigned value) | |||
912 | DRIVER_NAME); | 915 | DRIVER_NAME); |
913 | else | 916 | else |
914 | pr_debug("%s: vregs1 0x%02x\n", DRIVER_NAME, | 917 | pr_debug("%s: vregs1 0x%02x\n", DRIVER_NAME, |
915 | i2c_smbus_read_byte_data(&the_tps->client, TPS_VREGS1)); | 918 | i2c_smbus_read_byte_data(the_tps->client, TPS_VREGS1)); |
916 | 919 | ||
917 | mutex_unlock(&the_tps->lock); | 920 | mutex_unlock(&the_tps->lock); |
918 | 921 | ||
@@ -941,11 +944,11 @@ int tps65013_set_low_pwr(unsigned mode) | |||
941 | pr_debug("%s: %s low_pwr, chgconfig 0x%02x vdcdc1 0x%02x\n", | 944 | pr_debug("%s: %s low_pwr, chgconfig 0x%02x vdcdc1 0x%02x\n", |
942 | DRIVER_NAME, | 945 | DRIVER_NAME, |
943 | mode ? "enable" : "disable", | 946 | mode ? "enable" : "disable", |
944 | i2c_smbus_read_byte_data(&the_tps->client, TPS_CHGCONFIG), | 947 | i2c_smbus_read_byte_data(the_tps->client, TPS_CHGCONFIG), |
945 | i2c_smbus_read_byte_data(&the_tps->client, TPS_VDCDC1)); | 948 | i2c_smbus_read_byte_data(the_tps->client, TPS_VDCDC1)); |
946 | 949 | ||
947 | chgconfig = i2c_smbus_read_byte_data(&the_tps->client, TPS_CHGCONFIG); | 950 | chgconfig = i2c_smbus_read_byte_data(the_tps->client, TPS_CHGCONFIG); |
948 | vdcdc1 = i2c_smbus_read_byte_data(&the_tps->client, TPS_VDCDC1); | 951 | vdcdc1 = i2c_smbus_read_byte_data(the_tps->client, TPS_VDCDC1); |
949 | 952 | ||
950 | switch (mode) { | 953 | switch (mode) { |
951 | case OFF: | 954 | case OFF: |
@@ -959,7 +962,7 @@ int tps65013_set_low_pwr(unsigned mode) | |||
959 | break; | 962 | break; |
960 | } | 963 | } |
961 | 964 | ||
962 | status = i2c_smbus_write_byte_data(&the_tps->client, | 965 | status = i2c_smbus_write_byte_data(the_tps->client, |
963 | TPS_CHGCONFIG, chgconfig); | 966 | TPS_CHGCONFIG, chgconfig); |
964 | if (status != 0) { | 967 | if (status != 0) { |
965 | printk(KERN_ERR "%s: Failed to write chconfig register\n", | 968 | printk(KERN_ERR "%s: Failed to write chconfig register\n", |
@@ -968,11 +971,11 @@ int tps65013_set_low_pwr(unsigned mode) | |||
968 | return status; | 971 | return status; |
969 | } | 972 | } |
970 | 973 | ||
971 | chgconfig = i2c_smbus_read_byte_data(&the_tps->client, TPS_CHGCONFIG); | 974 | chgconfig = i2c_smbus_read_byte_data(the_tps->client, TPS_CHGCONFIG); |
972 | the_tps->chgconf = chgconfig; | 975 | the_tps->chgconf = chgconfig; |
973 | show_chgconfig(0, "chgconf", chgconfig); | 976 | show_chgconfig(0, "chgconf", chgconfig); |
974 | 977 | ||
975 | status = i2c_smbus_write_byte_data(&the_tps->client, | 978 | status = i2c_smbus_write_byte_data(the_tps->client, |
976 | TPS_VDCDC1, vdcdc1); | 979 | TPS_VDCDC1, vdcdc1); |
977 | 980 | ||
978 | if (status != 0) | 981 | if (status != 0) |
@@ -980,7 +983,7 @@ int tps65013_set_low_pwr(unsigned mode) | |||
980 | DRIVER_NAME); | 983 | DRIVER_NAME); |
981 | else | 984 | else |
982 | pr_debug("%s: vdcdc1 0x%02x\n", DRIVER_NAME, | 985 | pr_debug("%s: vdcdc1 0x%02x\n", DRIVER_NAME, |
983 | i2c_smbus_read_byte_data(&the_tps->client, TPS_VDCDC1)); | 986 | i2c_smbus_read_byte_data(the_tps->client, TPS_VDCDC1)); |
984 | 987 | ||
985 | mutex_unlock(&the_tps->lock); | 988 | mutex_unlock(&the_tps->lock); |
986 | 989 | ||