aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/video/saa7134/saa7134-alsa.c3
-rw-r--r--drivers/media/video/saa7134/saa7134-core.c21
2 files changed, 13 insertions, 11 deletions
diff --git a/drivers/media/video/saa7134/saa7134-alsa.c b/drivers/media/video/saa7134/saa7134-alsa.c
index ece177de72a5..4878f3067787 100644
--- a/drivers/media/video/saa7134/saa7134-alsa.c
+++ b/drivers/media/video/saa7134/saa7134-alsa.c
@@ -222,7 +222,8 @@ static irqreturn_t saa7134_alsa_irq(int irq, void *dev_id)
222 222
223 if (report & SAA7134_IRQ_REPORT_DONE_RA3) { 223 if (report & SAA7134_IRQ_REPORT_DONE_RA3) {
224 handled = 1; 224 handled = 1;
225 saa_writel(SAA7134_IRQ_REPORT,report); 225 saa_writel(SAA7134_IRQ_REPORT,
226 SAA7134_IRQ_REPORT_DONE_RA3);
226 saa7134_irq_alsa_done(dev, status); 227 saa7134_irq_alsa_done(dev, status);
227 } else { 228 } else {
228 goto out; 229 goto out;
diff --git a/drivers/media/video/saa7134/saa7134-core.c b/drivers/media/video/saa7134/saa7134-core.c
index a499eea379e6..4fd187ac9d70 100644
--- a/drivers/media/video/saa7134/saa7134-core.c
+++ b/drivers/media/video/saa7134/saa7134-core.c
@@ -569,21 +569,22 @@ static irqreturn_t saa7134_irq(int irq, void *dev_id)
569 for (loop = 0; loop < 10; loop++) { 569 for (loop = 0; loop < 10; loop++) {
570 report = saa_readl(SAA7134_IRQ_REPORT); 570 report = saa_readl(SAA7134_IRQ_REPORT);
571 status = saa_readl(SAA7134_IRQ_STATUS); 571 status = saa_readl(SAA7134_IRQ_STATUS);
572 if (0 == report) {
573 if (irq_debug > 1)
574 printk(KERN_DEBUG "%s/irq: no (more) work\n",
575 dev->name);
576 goto out;
577 }
578
579 /* If dmasound support is active and we get a sound report, exit
580 and let the saa7134-alsa/oss module deal with it */
581 572
573 /* If dmasound support is active and we get a sound report,
574 * mask out the report and let the saa7134-alsa module deal
575 * with it */
582 if ((report & SAA7134_IRQ_REPORT_DONE_RA3) && 576 if ((report & SAA7134_IRQ_REPORT_DONE_RA3) &&
583 (dev->dmasound.priv_data != NULL) ) 577 (dev->dmasound.priv_data != NULL) )
584 { 578 {
585 if (irq_debug > 1) 579 if (irq_debug > 1)
586 printk(KERN_DEBUG "%s/irq: ignoring interrupt for DMA sound\n", 580 printk(KERN_DEBUG "%s/irq: preserving DMA sound interrupt\n",
581 dev->name);
582 report &= ~SAA7134_IRQ_REPORT_DONE_RA3;
583 }
584
585 if (0 == report) {
586 if (irq_debug > 1)
587 printk(KERN_DEBUG "%s/irq: no (more) work\n",
587 dev->name); 588 dev->name);
588 goto out; 589 goto out;
589 } 590 }