From 74e5e537b9d549d4d7a050b2823fcab1abf0f908 Mon Sep 17 00:00:00 2001 From: Heikki Lindholm Date: Fri, 30 Nov 2007 13:27:26 -0300 Subject: [PATCH] --- yaml --- r: 74819 b: refs/heads/master c: 843b1378c2ab47ab1ed9cb471938e0f0ec839fcd h: refs/heads/master i: 74817: b9a50a357682bd8217d0c6829102bb709d009518 74815: 2eb0e6677e76bd0c3474b6805e4a48ee6c969e1a v: v3 --- [refs] | 2 +- .../media/video/saa7134/saa7134-alsa.c | 3 ++- .../media/video/saa7134/saa7134-core.c | 21 ++++++++++--------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/[refs] b/[refs] index 0866c72350ff..0edc21241049 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4aa504a89a140f482ddabb45460e0005bf3e522a +refs/heads/master: 843b1378c2ab47ab1ed9cb471938e0f0ec839fcd diff --git a/trunk/drivers/media/video/saa7134/saa7134-alsa.c b/trunk/drivers/media/video/saa7134/saa7134-alsa.c index ece177de72a5..4878f3067787 100644 --- a/trunk/drivers/media/video/saa7134/saa7134-alsa.c +++ b/trunk/drivers/media/video/saa7134/saa7134-alsa.c @@ -222,7 +222,8 @@ static irqreturn_t saa7134_alsa_irq(int irq, void *dev_id) if (report & SAA7134_IRQ_REPORT_DONE_RA3) { handled = 1; - saa_writel(SAA7134_IRQ_REPORT,report); + saa_writel(SAA7134_IRQ_REPORT, + SAA7134_IRQ_REPORT_DONE_RA3); saa7134_irq_alsa_done(dev, status); } else { goto out; diff --git a/trunk/drivers/media/video/saa7134/saa7134-core.c b/trunk/drivers/media/video/saa7134/saa7134-core.c index a499eea379e6..4fd187ac9d70 100644 --- a/trunk/drivers/media/video/saa7134/saa7134-core.c +++ b/trunk/drivers/media/video/saa7134/saa7134-core.c @@ -569,21 +569,22 @@ static irqreturn_t saa7134_irq(int irq, void *dev_id) for (loop = 0; loop < 10; loop++) { report = saa_readl(SAA7134_IRQ_REPORT); status = saa_readl(SAA7134_IRQ_STATUS); - if (0 == report) { - if (irq_debug > 1) - printk(KERN_DEBUG "%s/irq: no (more) work\n", - dev->name); - goto out; - } - - /* If dmasound support is active and we get a sound report, exit - and let the saa7134-alsa/oss module deal with it */ + /* If dmasound support is active and we get a sound report, + * mask out the report and let the saa7134-alsa module deal + * with it */ if ((report & SAA7134_IRQ_REPORT_DONE_RA3) && (dev->dmasound.priv_data != NULL) ) { if (irq_debug > 1) - printk(KERN_DEBUG "%s/irq: ignoring interrupt for DMA sound\n", + printk(KERN_DEBUG "%s/irq: preserving DMA sound interrupt\n", + dev->name); + report &= ~SAA7134_IRQ_REPORT_DONE_RA3; + } + + if (0 == report) { + if (irq_debug > 1) + printk(KERN_DEBUG "%s/irq: no (more) work\n", dev->name); goto out; }