summaryrefslogtreecommitdiff
path: root/linux/drivers/media/video/saa7134/saa7134-core.c
diff options
context:
space:
mode:
Diffstat (limited to 'linux/drivers/media/video/saa7134/saa7134-core.c')
-rw-r--r--linux/drivers/media/video/saa7134/saa7134-core.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/linux/drivers/media/video/saa7134/saa7134-core.c b/linux/drivers/media/video/saa7134/saa7134-core.c
index d3c79cd35..e8e8df67e 100644
--- a/linux/drivers/media/video/saa7134/saa7134-core.c
+++ b/linux/drivers/media/video/saa7134/saa7134-core.c
@@ -1,5 +1,5 @@
/*
- * $Id: saa7134-core.c,v 1.16 2004/11/09 11:34:59 kraxel Exp $
+ * $Id: saa7134-core.c,v 1.17 2004/11/18 14:05:57 kraxel Exp $
*
* device driver for philips saa7134 based TV cards
* driver core
@@ -609,8 +609,8 @@ static irqreturn_t saa7134_irq(int irq, void *dev_id, struct pt_regs *regs)
SAA7134_IRQ_REPORT_GPIO18)) &&
dev->remote)
saa7134_input_irq(dev);
+ }
- };
if (10 == loop) {
print_irqstatus(dev,loop,report,status);
if (report & SAA7134_IRQ_REPORT_PE) {
@@ -618,6 +618,13 @@ static irqreturn_t saa7134_irq(int irq, void *dev_id, struct pt_regs *regs)
printk(KERN_WARNING "%s/irq: looping -- "
"clearing PE (parity error!) enable bit\n",dev->name);
saa_clearl(SAA7134_IRQ2,SAA7134_IRQ2_INTE_PE);
+ } else if (report & (SAA7134_IRQ_REPORT_GPIO16 |
+ SAA7134_IRQ_REPORT_GPIO18)) {
+ /* disable gpio IRQs */
+ printk(KERN_WARNING "%s/irq: looping -- "
+ "clearing GPIO enable bits\n",dev->name);
+ saa_clearl(SAA7134_IRQ2, (SAA7134_IRQ2_INTE_GPIO16 |
+ SAA7134_IRQ2_INTE_GPIO18));
} else {
/* disable all irqs */
printk(KERN_WARNING "%s/irq: looping -- "
@@ -692,20 +699,7 @@ static int saa7134_hwinit2(struct saa7134_dev *dev)
/* enable IRQ's */
saa_writel(SAA7134_IRQ1, 0);
- saa_writel(SAA7134_IRQ2,
- SAA7134_IRQ2_INTE_GPIO18 |
- SAA7134_IRQ2_INTE_GPIO18A |
- SAA7134_IRQ2_INTE_GPIO16 |
- SAA7134_IRQ2_INTE_SC2 |
- SAA7134_IRQ2_INTE_SC1 |
- SAA7134_IRQ2_INTE_SC0 |
- /* SAA7134_IRQ2_INTE_DEC5 | FIXME: TRIG_ERR ??? */
- SAA7134_IRQ2_INTE_DEC3 |
- SAA7134_IRQ2_INTE_DEC2 |
- /* SAA7134_IRQ2_INTE_DEC1 | */
- SAA7134_IRQ2_INTE_DEC0 |
- SAA7134_IRQ2_INTE_PE |
- SAA7134_IRQ2_INTE_AR);
+ saa_writel(SAA7134_IRQ2, dev->irq2_mask);
return 0;
}
@@ -928,6 +922,13 @@ static int __devinit saa7134_initdev(struct pci_dev *pci_dev,
}
/* initialize hardware #1 */
+ dev->irq2_mask =
+ SAA7134_IRQ2_INTE_DEC3 |
+ SAA7134_IRQ2_INTE_DEC2 |
+ SAA7134_IRQ2_INTE_DEC1 |
+ SAA7134_IRQ2_INTE_DEC0 |
+ SAA7134_IRQ2_INTE_PE |
+ SAA7134_IRQ2_INTE_AR;
saa7134_board_init1(dev);
saa7134_hwinit1(dev);