- patches.arch/x86_mce_intel_decode_physical_address.patch:
[linux-flexiantxendom0-3.2.10.git] / drivers / media / video / saa7134 / saa7134-core.c
index a7ad781..90f2318 100644 (file)
@@ -471,7 +471,7 @@ static char *irqbits[] = {
        "DONE_RA0", "DONE_RA1", "DONE_RA2", "DONE_RA3",
        "AR", "PE", "PWR_ON", "RDCAP", "INTL", "FIDT", "MMC",
        "TRIG_ERR", "CONF_ERR", "LOAD_ERR",
-       "GPIO16?", "GPIO18", "GPIO22", "GPIO23"
+       "GPIO16", "GPIO18", "GPIO22", "GPIO23"
 };
 #define IRQBITS ARRAY_SIZE(irqbits)
 
@@ -601,12 +601,14 @@ static irqreturn_t saa7134_irq(int irq, void *dev_id)
                        /* disable gpio16 IRQ */
                        printk(KERN_WARNING "%s/irq: looping -- "
                               "clearing GPIO16 enable bit\n",dev->name);
-                       saa_clearl(SAA7134_IRQ2, SAA7134_IRQ2_INTE_GPIO16);
+                       saa_clearl(SAA7134_IRQ2, SAA7134_IRQ2_INTE_GPIO16_P);
+                       saa_clearl(SAA7134_IRQ2, SAA7134_IRQ2_INTE_GPIO16_N);
                } else if (report & SAA7134_IRQ_REPORT_GPIO18) {
                        /* disable gpio18 IRQs */
                        printk(KERN_WARNING "%s/irq: looping -- "
                               "clearing GPIO18 enable bit\n",dev->name);
-                       saa_clearl(SAA7134_IRQ2, SAA7134_IRQ2_INTE_GPIO18);
+                       saa_clearl(SAA7134_IRQ2, SAA7134_IRQ2_INTE_GPIO18_P);
+                       saa_clearl(SAA7134_IRQ2, SAA7134_IRQ2_INTE_GPIO18_N);
                } else {
                        /* disable all irqs */
                        printk(KERN_WARNING "%s/irq: looping -- "
@@ -698,11 +700,13 @@ static int saa7134_hw_enable2(struct saa7134_dev *dev)
 
        if (dev->has_remote == SAA7134_REMOTE_GPIO && dev->remote) {
                if (dev->remote->mask_keydown & 0x10000)
-                       irq2_mask |= SAA7134_IRQ2_INTE_GPIO16;
-               else if (dev->remote->mask_keydown & 0x40000)
-                       irq2_mask |= SAA7134_IRQ2_INTE_GPIO18;
-               else if (dev->remote->mask_keyup & 0x40000)
-                       irq2_mask |= SAA7134_IRQ2_INTE_GPIO18A;
+                       irq2_mask |= SAA7134_IRQ2_INTE_GPIO16_N;
+               else {          /* Allow enabling both IRQ edge triggers */
+                       if (dev->remote->mask_keydown & 0x40000)
+                               irq2_mask |= SAA7134_IRQ2_INTE_GPIO18_P;
+                       if (dev->remote->mask_keyup & 0x40000)
+                               irq2_mask |= SAA7134_IRQ2_INTE_GPIO18_N;
+               }
        }
 
        if (dev->has_remote == SAA7134_REMOTE_I2C) {
@@ -1227,7 +1231,7 @@ static int saa7134_resume(struct pci_dev *pci_dev)
        if (card_has_mpeg(dev))
                saa7134_ts_init_hw(dev);
        if (dev->remote)
-               saa7134_ir_start(dev, dev->remote);
+               saa7134_ir_start(dev);
        saa7134_hw_enable1(dev);
 
        msleep(100);