diff options
-rw-r--r-- | drivers/media/video/saa7134/saa7134-alsa.c | 3 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134-core.c | 21 |
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 | } |