Commit 750deaa4 authored by aleksey_gorelov@phoenix.com's avatar aleksey_gorelov@phoenix.com Committed by Linus Torvalds

[PATCH] asus vt8235 router buggy bios workaround

Hopefully fix http://bugzilla.kernel.org/show_bug.cgi?id=5235

Similar problem has been reported before here:
http://groups.google.com/group/linux.kernel/browse_thread/thread/def4ca19dbc3cd4/5cffbf349f2c87a4?tvc=2&q=Aleksey+Gorelov&hl=en#5cffbf349f2c87a4
and was related to bug in BIOS reporting 82C686 router compatible to 586.

I suspect BIOS on this board has similar issue: reports VT8235 router to be
compatible with 586 one - which is obviously not true.  Patch from the link
above has already incorporated in both 2.6 & 2.4 series, but might not work
in this particular case.
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 434440a2
...@@ -547,18 +547,34 @@ static __init int intel_router_probe(struct irq_router *r, struct pci_dev *route ...@@ -547,18 +547,34 @@ static __init int intel_router_probe(struct irq_router *r, struct pci_dev *route
return 0; return 0;
} }
static __init int via_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) static __init int via_router_probe(struct irq_router *r,
struct pci_dev *router, u16 device)
{ {
/* FIXME: We should move some of the quirk fixup stuff here */ /* FIXME: We should move some of the quirk fixup stuff here */
if (router->device == PCI_DEVICE_ID_VIA_82C686 && /*
device == PCI_DEVICE_ID_VIA_82C586_0) { * work arounds for some buggy BIOSes
/* Asus k7m bios wrongly reports 82C686A as 586-compatible */ */
if (device == PCI_DEVICE_ID_VIA_82C586_0) {
switch(router->device) {
case PCI_DEVICE_ID_VIA_82C686:
/*
* Asus k7m bios wrongly reports 82C686A
* as 586-compatible
*/
device = PCI_DEVICE_ID_VIA_82C686; device = PCI_DEVICE_ID_VIA_82C686;
break;
case PCI_DEVICE_ID_VIA_8235:
/**
* Asus a7v-x bios wrongly reports 8235
* as 586-compatible
*/
device = PCI_DEVICE_ID_VIA_8235;
break;
}
} }
switch(device) switch(device) {
{
case PCI_DEVICE_ID_VIA_82C586_0: case PCI_DEVICE_ID_VIA_82C586_0:
r->name = "VIA"; r->name = "VIA";
r->get = pirq_via586_get; r->get = pirq_via586_get;
...@@ -567,6 +583,7 @@ static __init int via_router_probe(struct irq_router *r, struct pci_dev *router, ...@@ -567,6 +583,7 @@ static __init int via_router_probe(struct irq_router *r, struct pci_dev *router,
case PCI_DEVICE_ID_VIA_82C596: case PCI_DEVICE_ID_VIA_82C596:
case PCI_DEVICE_ID_VIA_82C686: case PCI_DEVICE_ID_VIA_82C686:
case PCI_DEVICE_ID_VIA_8231: case PCI_DEVICE_ID_VIA_8231:
case PCI_DEVICE_ID_VIA_8235:
/* FIXME: add new ones for 8233/5 */ /* FIXME: add new ones for 8233/5 */
r->name = "VIA"; r->name = "VIA";
r->get = pirq_via_get; r->get = pirq_via_get;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment