summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--target/linux/ar7-2.6/files/arch/mips/ar7/vlynq-pci.c4
-rw-r--r--target/linux/ar7-2.6/files/arch/mips/ar7/vlynq.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/target/linux/ar7-2.6/files/arch/mips/ar7/vlynq-pci.c b/target/linux/ar7-2.6/files/arch/mips/ar7/vlynq-pci.c
index eb32de031c..a32ea8d44c 100644
--- a/target/linux/ar7-2.6/files/arch/mips/ar7/vlynq-pci.c
+++ b/target/linux/ar7-2.6/files/arch/mips/ar7/vlynq-pci.c
@@ -22,6 +22,7 @@
#include <linux/pci.h>
#include <linux/kernel.h>
#include <linux/init.h>
+#include <linux/irq.h>
#include <asm/ar7/vlynq.h>
#define VLYNQ_PCI_SLOTS 2
@@ -61,6 +62,7 @@ static struct vlynq_pci_config known_devices[] = {
{ .size = 0x0, .offset = 0x0 },
},
.irq = 0, .chip = 0x9066104c,
+ .irq_type = IRQ_TYPE_EDGE_RISING,
.class = PCI_CLASS_NETWORK_OTHER,
.num_regs = 5,
.regs = {
@@ -313,6 +315,8 @@ static int vlynq_pci_probe(struct vlynq_device *dev)
vlynq_set_local_mapping(dev, dev->mem_start, mapping);
vlynq_set_remote_mapping(dev, 0, config->rx_mapping);
+ set_irq_type(vlynq_virq_to_irq(dev, config->irq), config->irq_type);
+
addr = (u32)ioremap_nocache(dev->mem_start, 0x10000);
if (!addr) {
printk(KERN_ERR "%s: failed to remap io memory\n",
diff --git a/target/linux/ar7-2.6/files/arch/mips/ar7/vlynq.c b/target/linux/ar7-2.6/files/arch/mips/ar7/vlynq.c
index 80cb836d9a..e0d3b1ffe2 100644
--- a/target/linux/ar7-2.6/files/arch/mips/ar7/vlynq.c
+++ b/target/linux/ar7-2.6/files/arch/mips/ar7/vlynq.c
@@ -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;
}