[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: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
434440a280
commit
750deaa402
1 changed files with 36 additions and 19 deletions
|
@ -547,31 +547,48 @@ 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 */
|
*/
|
||||||
device = PCI_DEVICE_ID_VIA_82C686;
|
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;
|
||||||
|
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;
|
r->set = pirq_via586_set;
|
||||||
r->set = pirq_via586_set;
|
return 1;
|
||||||
return 1;
|
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;
|
||||||
r->set = pirq_via_set;
|
r->set = pirq_via_set;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue