Lines 369-376
Link Here
|
369 |
* we must mask the PCI_INTERRUPT_LINE value versus 0xf to get |
369 |
* we must mask the PCI_INTERRUPT_LINE value versus 0xf to get |
370 |
* interrupts delivered properly. |
370 |
* interrupts delivered properly. |
371 |
* |
371 |
* |
372 |
* TODO: When we have device-specific interrupt routers, |
|
|
373 |
* quirk_via_irqpic will go away from quirks. |
374 |
*/ |
372 |
*/ |
375 |
|
373 |
|
376 |
/* |
374 |
/* |
Lines 393-414
Link Here
|
393 |
d->irq = irq; |
391 |
d->irq = irq; |
394 |
} |
392 |
} |
395 |
|
393 |
|
396 |
static void __init quirk_via_irqpic(struct pci_dev *dev) |
|
|
397 |
{ |
398 |
u8 irq, new_irq = dev->irq & 0xf; |
399 |
|
400 |
pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq); |
401 |
|
402 |
if (new_irq != irq) { |
403 |
printk(KERN_INFO "PCI: Via IRQ fixup for %s, from %d to %d\n", |
404 |
dev->slot_name, irq, new_irq); |
405 |
|
406 |
udelay(15); |
407 |
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq); |
408 |
} |
409 |
} |
410 |
|
411 |
|
412 |
/* |
394 |
/* |
413 |
* PIIX3 USB: We have to disable USB interrupts that are |
395 |
* PIIX3 USB: We have to disable USB interrupts that are |
414 |
* hardwired to PIRQD# and may be shared with an |
396 |
* hardwired to PIRQD# and may be shared with an |
Lines 643-650
Link Here
|
643 |
|
625 |
|
644 |
static void __init quirk_via_bridge(struct pci_dev *pdev) |
626 |
static void __init quirk_via_bridge(struct pci_dev *pdev) |
645 |
{ |
627 |
{ |
646 |
if(pdev->devfn == 0) |
628 |
if(pdev->devfn == 0) { |
|
|
629 |
printk(KERN_INFO "PCI: Via IRQ fixup\n"); |
647 |
interrupt_line_quirk = 1; |
630 |
interrupt_line_quirk = 1; |
|
|
631 |
} |
632 |
|
648 |
} |
633 |
} |
649 |
|
634 |
|
650 |
/* |
635 |
/* |
Lines 773-781
Link Here
|
773 |
#endif |
758 |
#endif |
774 |
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_via_acpi }, |
759 |
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_via_acpi }, |
775 |
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_via_acpi }, |
760 |
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_via_acpi }, |
776 |
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_2, quirk_via_irqpic }, |
|
|
777 |
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5, quirk_via_irqpic }, |
778 |
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_6, quirk_via_irqpic }, |
779 |
|
761 |
|
780 |
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_VIPER_7410, quirk_amd_ioapic }, |
762 |
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_VIPER_7410, quirk_amd_ioapic }, |
781 |
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_FE_GATE_700C, quirk_amd_ordering }, |
763 |
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_FE_GATE_700C, quirk_amd_ordering }, |