1
0
mirror of https://github.com/DigitalDevices/dddvb.git synced 2023-10-10 13:37:43 +02:00

MSI fixes

- ack only the status bits belonging to corresponding interrupt handler
- set msi 2 instead of 1
This commit is contained in:
Ralph Metzler 2016-04-13 11:31:30 +02:00
parent c4133d98c1
commit 0b4d6d807a
2 changed files with 4 additions and 4 deletions

View File

@ -3217,11 +3217,11 @@ static irqreturn_t irq_handler0(int irq, void *dev_id)
u32 s = ddbreadl(dev, INTERRUPT_STATUS); u32 s = ddbreadl(dev, INTERRUPT_STATUS);
do { do {
if (s == 0xffffffff) if (s & 0x80000000)
return IRQ_NONE; return IRQ_NONE;
if (!(s & 0xfff00)) if (!(s & 0xfff00))
return IRQ_NONE; return IRQ_NONE;
ddbwritel(dev, s, INTERRUPT_ACK); ddbwritel(dev, s & 0xfff00, INTERRUPT_ACK);
irq_handle_io(dev, s); irq_handle_io(dev, s);
} while ((s = ddbreadl(dev, INTERRUPT_STATUS))); } while ((s = ddbreadl(dev, INTERRUPT_STATUS)));
@ -3238,7 +3238,7 @@ static irqreturn_t irq_handler1(int irq, void *dev_id)
return IRQ_NONE; return IRQ_NONE;
if (!(s & 0x0000f)) if (!(s & 0x0000f))
return IRQ_NONE; return IRQ_NONE;
ddbwritel(dev, s, INTERRUPT_ACK); ddbwritel(dev, s & 0x0000f, INTERRUPT_ACK);
irq_handle_msg(dev, s); irq_handle_msg(dev, s);
} while ((s = ddbreadl(dev, INTERRUPT_STATUS))); } while ((s = ddbreadl(dev, INTERRUPT_STATUS)));

View File

@ -175,7 +175,7 @@ static int __devinit ddb_probe(struct pci_dev *pdev,
#else #else
stat = pci_enable_msi_block(dev->pdev, 2); stat = pci_enable_msi_block(dev->pdev, 2);
if (stat == 0) { if (stat == 0) {
dev->msi = 1; dev->msi = 2;
pr_info("DDBridge: using 2 MSI interrupts\n"); pr_info("DDBridge: using 2 MSI interrupts\n");
} }
if (stat == 1) if (stat == 1)