diff options
Diffstat (limited to 'arch/i386/pci/irq.c')
-rw-r--r-- | arch/i386/pci/irq.c | 55 |
1 files changed, 36 insertions, 19 deletions
diff --git a/arch/i386/pci/irq.c b/arch/i386/pci/irq.c index cddafe33ff7c..19e6f4871d1e 100644 --- a/arch/i386/pci/irq.c +++ b/arch/i386/pci/irq.c | |||
@@ -547,31 +547,48 @@ static __init int intel_router_probe(struct irq_router *r, struct pci_dev *route | |||
547 | return 0; | 547 | return 0; |
548 | } | 548 | } |
549 | 549 | ||
550 | static __init int via_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) | 550 | static __init int via_router_probe(struct irq_router *r, |
551 | struct pci_dev *router, u16 device) | ||
551 | { | 552 | { |
552 | /* FIXME: We should move some of the quirk fixup stuff here */ | 553 | /* FIXME: We should move some of the quirk fixup stuff here */ |
553 | 554 | ||
554 | if (router->device == PCI_DEVICE_ID_VIA_82C686 && | 555 | /* |
555 | device == PCI_DEVICE_ID_VIA_82C586_0) { | 556 | * work arounds for some buggy BIOSes |
556 | /* Asus k7m bios wrongly reports 82C686A as 586-compatible */ | 557 | */ |
557 | device = PCI_DEVICE_ID_VIA_82C686; | 558 | if (device == PCI_DEVICE_ID_VIA_82C586_0) { |
559 | switch(router->device) { | ||
560 | case PCI_DEVICE_ID_VIA_82C686: | ||
561 | /* | ||
562 | * Asus k7m bios wrongly reports 82C686A | ||
563 | * as 586-compatible | ||
564 | */ | ||
565 | device = PCI_DEVICE_ID_VIA_82C686; | ||
566 | break; | ||
567 | case PCI_DEVICE_ID_VIA_8235: | ||
568 | /** | ||
569 | * Asus a7v-x bios wrongly reports 8235 | ||
570 | * as 586-compatible | ||
571 | */ | ||
572 | device = PCI_DEVICE_ID_VIA_8235; | ||
573 | break; | ||
574 | } | ||
558 | } | 575 | } |
559 | 576 | ||
560 | switch(device) | 577 | switch(device) { |
561 | { | 578 | case PCI_DEVICE_ID_VIA_82C586_0: |
562 | case PCI_DEVICE_ID_VIA_82C586_0: | 579 | r->name = "VIA"; |
563 | r->name = "VIA"; | 580 | r->get = pirq_via586_get; |
564 | r->get = pirq_via586_get; | 581 | r->set = pirq_via586_set; |
565 | r->set = pirq_via586_set; | 582 | return 1; |
566 | return 1; | 583 | case PCI_DEVICE_ID_VIA_82C596: |
567 | case PCI_DEVICE_ID_VIA_82C596: | 584 | case PCI_DEVICE_ID_VIA_82C686: |
568 | case PCI_DEVICE_ID_VIA_82C686: | 585 | case PCI_DEVICE_ID_VIA_8231: |
569 | case PCI_DEVICE_ID_VIA_8231: | 586 | case PCI_DEVICE_ID_VIA_8235: |
570 | /* FIXME: add new ones for 8233/5 */ | 587 | /* FIXME: add new ones for 8233/5 */ |
571 | r->name = "VIA"; | 588 | r->name = "VIA"; |
572 | r->get = pirq_via_get; | 589 | r->get = pirq_via_get; |
573 | r->set = pirq_via_set; | 590 | r->set = pirq_via_set; |
574 | return 1; | 591 | return 1; |
575 | } | 592 | } |
576 | return 0; | 593 | return 0; |
577 | } | 594 | } |