add ar7-2.6 fixes by Stefan Weil
[librecmc/librecmc.git] / target / linux / ar7-2.6 / files / arch / mips / ar7 / vlynq.c
index 80cb836d9a9df030523852ed77809c42054653e7..06097556d2662c9b428b0cb3bf803cf0a2da949c 100644 (file)
@@ -117,7 +117,7 @@ static void vlynq_irq_unmask(unsigned int irq)
        BUG_ON(!dev);
        virq = irq - dev->irq_start;
        val = dev->remote->int_device[virq >> 2];
-       val |= VINT_ENABLE << VINT_OFFSET(virq);
+       val |= (VINT_ENABLE | virq) << VINT_OFFSET(virq);
        dev->remote->int_device[virq >> 2] = val;
 }
 
@@ -196,10 +196,11 @@ static irqreturn_t vlynq_irq(int irq, void *dev_id)
 }
 
 static struct irq_chip vlynq_irq_chip = {
+        .typename = "VLYNQ",
         .name = "vlynq",
         .unmask = vlynq_irq_unmask,
         .mask = vlynq_irq_mask,
-       .set_type = vlynq_irq_type,
+        .set_type = vlynq_irq_type,
 };
 
 static int vlynq_setup_irq(struct vlynq_device *dev)
@@ -235,7 +236,7 @@ static int vlynq_setup_irq(struct vlynq_device *dev)
                dev->remote->int_device[i >> 2] = 0;
        }
 
-       if (request_irq(dev->irq, vlynq_irq, SA_SHIRQ, "AR7 VLYNQ", dev)) {
+       if (request_irq(dev->irq, vlynq_irq, SA_SHIRQ, "vlynq", dev)) {
                printk("%s: request_irq failed\n", dev->dev.bus_id);
                return -EAGAIN;
        }
@@ -307,6 +308,8 @@ int vlynq_device_enable(struct vlynq_device *dev)
                if (vlynq_linked(dev)) 
                        return vlynq_setup_irq(dev);
        }
+
+       return -ENODEV;
 }
 
 void vlynq_device_disable(struct vlynq_device *dev)