[media] ite-cir: finish tx before suspending
[pandora-kernel.git] / drivers / media / rc / ite-cir.c
index d1dec5c..e716b93 100644 (file)
@@ -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);