aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mfd/tps65010.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-01-07 19:58:04 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2011-01-07 19:58:04 -0500
commit23d69b09b78c4876e134f104a3814c30747c53f1 (patch)
tree40744de4f4126c21027ce537264524095e0e7979 /drivers/mfd/tps65010.c
parente744070fd4ff9d3114277e52d77afa21579adce2 (diff)
parent569ff2de2e1c8ac67c8df3a7367d46d0d9460a35 (diff)
Merge branch 'for-2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
* 'for-2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: (33 commits) usb: don't use flush_scheduled_work() speedtch: don't abuse struct delayed_work media/video: don't use flush_scheduled_work() media/video: explicitly flush request_module work ioc4: use static work_struct for ioc4_load_modules() init: don't call flush_scheduled_work() from do_initcalls() s390: don't use flush_scheduled_work() rtc: don't use flush_scheduled_work() mmc: update workqueue usages mfd: update workqueue usages dvb: don't use flush_scheduled_work() leds-wm8350: don't use flush_scheduled_work() mISDN: don't use flush_scheduled_work() macintosh/ams: don't use flush_scheduled_work() vmwgfx: don't use flush_scheduled_work() tpm: don't use flush_scheduled_work() sonypi: don't use flush_scheduled_work() hvsi: don't use flush_scheduled_work() xen: don't use flush_scheduled_work() gdrom: don't use flush_scheduled_work() ... Fixed up trivial conflict in drivers/media/video/bt8xx/bttv-input.c as per Tejun.
Diffstat (limited to 'drivers/mfd/tps65010.c')
-rw-r--r--drivers/mfd/tps65010.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/mfd/tps65010.c b/drivers/mfd/tps65010.c
index d0016b67d125..90187fe33e04 100644
--- a/drivers/mfd/tps65010.c
+++ b/drivers/mfd/tps65010.c
@@ -242,7 +242,7 @@ static int dbg_show(struct seq_file *s, void *_)
242 seq_printf(s, "mask2 %s\n", buf); 242 seq_printf(s, "mask2 %s\n", buf);
243 /* ignore ackint2 */ 243 /* ignore ackint2 */
244 244
245 (void) schedule_delayed_work(&tps->work, POWER_POLL_DELAY); 245 schedule_delayed_work(&tps->work, POWER_POLL_DELAY);
246 246
247 247
248 /* VMAIN voltage, enable lowpower, etc */ 248 /* VMAIN voltage, enable lowpower, etc */
@@ -400,7 +400,7 @@ static void tps65010_interrupt(struct tps65010 *tps)
400 && (tps->chgstatus & (TPS_CHG_USB|TPS_CHG_AC))) 400 && (tps->chgstatus & (TPS_CHG_USB|TPS_CHG_AC)))
401 poll = 1; 401 poll = 1;
402 if (poll) 402 if (poll)
403 (void) schedule_delayed_work(&tps->work, POWER_POLL_DELAY); 403 schedule_delayed_work(&tps->work, POWER_POLL_DELAY);
404 404
405 /* also potentially gpio-in rise or fall */ 405 /* also potentially gpio-in rise or fall */
406} 406}
@@ -410,7 +410,7 @@ static void tps65010_work(struct work_struct *work)
410{ 410{
411 struct tps65010 *tps; 411 struct tps65010 *tps;
412 412
413 tps = container_of(work, struct tps65010, work.work); 413 tps = container_of(to_delayed_work(work), struct tps65010, work);
414 mutex_lock(&tps->lock); 414 mutex_lock(&tps->lock);
415 415
416 tps65010_interrupt(tps); 416 tps65010_interrupt(tps);
@@ -448,7 +448,7 @@ static irqreturn_t tps65010_irq(int irq, void *_tps)
448 448
449 disable_irq_nosync(irq); 449 disable_irq_nosync(irq);
450 set_bit(FLAG_IRQ_ENABLE, &tps->flags); 450 set_bit(FLAG_IRQ_ENABLE, &tps->flags);
451 (void) schedule_work(&tps->work.work); 451 schedule_delayed_work(&tps->work, 0);
452 return IRQ_HANDLED; 452 return IRQ_HANDLED;
453} 453}
454 454
@@ -527,8 +527,7 @@ static int __exit tps65010_remove(struct i2c_client *client)
527 } 527 }
528 if (client->irq > 0) 528 if (client->irq > 0)
529 free_irq(client->irq, tps); 529 free_irq(client->irq, tps);
530 cancel_delayed_work(&tps->work); 530 cancel_delayed_work_sync(&tps->work);
531 flush_scheduled_work();
532 debugfs_remove(tps->file); 531 debugfs_remove(tps->file);
533 kfree(tps); 532 kfree(tps);
534 the_tps = NULL; 533 the_tps = NULL;
@@ -720,7 +719,7 @@ int tps65010_set_vbus_draw(unsigned mA)
720 && test_and_set_bit( 719 && test_and_set_bit(
721 FLAG_VBUS_CHANGED, &the_tps->flags)) { 720 FLAG_VBUS_CHANGED, &the_tps->flags)) {
722 /* gadget drivers call this in_irq() */ 721 /* gadget drivers call this in_irq() */
723 (void) schedule_work(&the_tps->work.work); 722 schedule_delayed_work(&the_tps->work, 0);
724 } 723 }
725 local_irq_restore(flags); 724 local_irq_restore(flags);
726 725