Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=13595a51c0da8ec212ba6f5df79519dbd74166c0
Commit:     13595a51c0da8ec212ba6f5df79519dbd74166c0
Parent:     b25be97929c85b2017379e05588740f564a61c22
Author:     Mauro Carvalho Chehab <[EMAIL PROTECTED]>
AuthorDate: Mon Oct 1 08:51:39 2007 -0300
Committer:  Mauro Carvalho Chehab <[EMAIL PROTECTED]>
CommitDate: Tue Oct 9 22:14:51 2007 -0300

    V4L/DVB (6247): Fix bug #8689: Fixes IR stop/start during suspend/resume
    
    IR workqueue should be disabled during suspend. This avoids some troubles, 
like
    the one reported on bug #8689:
    
    "The Hauppauge HVR 1100 ir-remote control does not work after resume from
    suspend to ram or disk."
    
    This patch disables IR before suspending, re-enabling it after resume.
    
    Thanks to Peter Poklop <[EMAIL PROTECTED]> for reporting it and helping with
    the fix.
    
    Signed-off-by: Mauro Carvalho Chehab <[EMAIL PROTECTED]>
    Reviewed-by: Peter Poklop <[EMAIL PROTECTED]>
---
 drivers/media/video/cx88/cx88-core.c  |    3 +++
 drivers/media/video/cx88/cx88-input.c |    4 ++--
 drivers/media/video/cx88/cx88-video.c |    6 ++++++
 drivers/media/video/cx88/cx88.h       |    2 ++
 4 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/drivers/media/video/cx88/cx88-core.c 
b/drivers/media/video/cx88/cx88-core.c
index 41f7f37..7161548 100644
--- a/drivers/media/video/cx88/cx88-core.c
+++ b/drivers/media/video/cx88/cx88-core.c
@@ -1084,6 +1084,9 @@ EXPORT_SYMBOL(cx88_vdev_init);
 EXPORT_SYMBOL(cx88_core_get);
 EXPORT_SYMBOL(cx88_core_put);
 
+EXPORT_SYMBOL(cx88_ir_start);
+EXPORT_SYMBOL(cx88_ir_stop);
+
 /*
  * Local variables:
  * c-basic-offset: 8
diff --git a/drivers/media/video/cx88/cx88-input.c 
b/drivers/media/video/cx88/cx88-input.c
index 78adf4d..e52de39 100644
--- a/drivers/media/video/cx88/cx88-input.c
+++ b/drivers/media/video/cx88/cx88-input.c
@@ -158,7 +158,7 @@ static void cx88_ir_work(struct work_struct *work)
        mod_timer(&ir->timer, jiffies + msecs_to_jiffies(ir->polling));
 }
 
-static void cx88_ir_start(struct cx88_core *core, struct cx88_IR *ir)
+void cx88_ir_start(struct cx88_core *core, struct cx88_IR *ir)
 {
        if (ir->polling) {
                setup_timer(&ir->timer, ir_timer, (unsigned long)ir);
@@ -172,7 +172,7 @@ static void cx88_ir_start(struct cx88_core *core, struct 
cx88_IR *ir)
        }
 }
 
-static void cx88_ir_stop(struct cx88_core *core, struct cx88_IR *ir)
+void cx88_ir_stop(struct cx88_core *core, struct cx88_IR *ir)
 {
        if (ir->sampling) {
                cx_write(MO_DDSCFG_IO, 0x0);
diff --git a/drivers/media/video/cx88/cx88-video.c 
b/drivers/media/video/cx88/cx88-video.c
index f94a3b4..705c29b 100644
--- a/drivers/media/video/cx88/cx88-video.c
+++ b/drivers/media/video/cx88/cx88-video.c
@@ -1954,6 +1954,8 @@ static int cx8800_suspend(struct pci_dev *pci_dev, 
pm_message_t state)
        }
        spin_unlock(&dev->slock);
 
+       if (core->ir)
+               cx88_ir_stop(core, core->ir);
        /* FIXME -- shutdown device */
        cx88_shutdown(core);
 
@@ -1993,6 +1995,10 @@ static int cx8800_resume(struct pci_dev *pci_dev)
 
        /* FIXME: re-initialize hardware */
        cx88_reset(core);
+       if (core->ir)
+               cx88_ir_start(core, core->ir);
+
+       cx_set(MO_PCI_INTMSK, core->pci_irqmask);
 
        /* restart video+vbi capture */
        spin_lock(&dev->slock);
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h
index e436a37..0e4f8e2 100644
--- a/drivers/media/video/cx88/cx88.h
+++ b/drivers/media/video/cx88/cx88.h
@@ -614,6 +614,8 @@ struct cx8802_driver * cx8802_get_driver(struct cx8802_dev 
*dev, enum cx88_board
 int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci);
 int cx88_ir_fini(struct cx88_core *core);
 void cx88_ir_irq(struct cx88_core *core);
+void cx88_ir_start(struct cx88_core *core, struct cx88_IR *ir);
+void cx88_ir_stop(struct cx88_core *core, struct cx88_IR *ir);
 
 /* ----------------------------------------------------------- */
 /* cx88-mpeg.c                                                 */
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to