summaryrefslogtreecommitdiff
path: root/drivers/media
diff options
context:
space:
mode:
authorJarod Wilson <jarod@redhat.com>2011-05-09 16:53:17 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-05-20 15:58:28 -0300
commitc812045488afbe3830843fc6686ae84bfc928a5f (patch)
treee6425199ac610a8e7cdca9b4f30a929add51d86a /drivers/media
parentf0c1629dca6ffd8b1b07654704ac56c5a63270e3 (diff)
downloadlinux-3.10-c812045488afbe3830843fc6686ae84bfc928a5f.tar.gz
linux-3.10-c812045488afbe3830843fc6686ae84bfc928a5f.tar.bz2
linux-3.10-c812045488afbe3830843fc6686ae84bfc928a5f.zip
[media] ite-cir: finish tx before suspending
Continuing with IR transmit after resuming from suspend seems fairly useless, given that the only place we can actually end up suspending is after IR has been send and we're simply mdelay'ing. Lets simplify the resume path by just waiting on tx to complete in the suspend path, then we know we can't be transmitting on resume, and reinitialization of the hardware registers becomes more straight-forward. CC: Juan Jesús García de Soria <skandalfo@gmail.com> Signed-off-by: Jarod Wilson <jarod@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/rc/ite-cir.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/drivers/media/rc/ite-cir.c b/drivers/media/rc/ite-cir.c
index d1dec5c2532..e716b931cf7 100644
--- a/drivers/media/rc/ite-cir.c
+++ b/drivers/media/rc/ite-cir.c
@@ -1650,6 +1650,9 @@ static int ite_suspend(struct pnp_dev *pdev, pm_message_t state)
ite_dbg("%s called", __func__);
+ /* wait for any transmission to end */
+ wait_event_interruptible(dev->tx_ended, !dev->transmitting);
+
spin_lock_irqsave(&dev->lock, flags);
/* disable all interrupts */
@@ -1670,15 +1673,10 @@ static int ite_resume(struct pnp_dev *pdev)
spin_lock_irqsave(&dev->lock, flags);
- if (dev->transmitting) {
- /* wake up the transmitter */
- wake_up_interruptible(&dev->tx_queue);
- } else {
- /* reinitialize hardware config registers */
- dev->params.init_hardware(dev);
- /* enable the receiver */
- dev->params.enable_rx(dev);
- }
+ /* reinitialize hardware config registers */
+ dev->params.init_hardware(dev);
+ /* enable the receiver */
+ dev->params.enable_rx(dev);
spin_unlock_irqrestore(&dev->lock, flags);