mirror of https://gitee.com/openkylin/linux.git
[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
|
@ -547,31 +547,48 @@ static __init int intel_router_probe(struct irq_router *r, struct pci_dev *route
|
|||
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 */
|
||||
|
||||
if (router->device == PCI_DEVICE_ID_VIA_82C686 &&
|
||||
device == PCI_DEVICE_ID_VIA_82C586_0) {
|
||||
/* Asus k7m bios wrongly reports 82C686A as 586-compatible */
|
||||
device = PCI_DEVICE_ID_VIA_82C686;
|
||||
/*
|
||||
* work arounds for some buggy BIOSes
|
||||
*/
|
||||
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)
|
||||
{
|
||||
case PCI_DEVICE_ID_VIA_82C586_0:
|
||||
r->name = "VIA";
|
||||
r->get = pirq_via586_get;
|
||||
r->set = pirq_via586_set;
|
||||
return 1;
|
||||
case PCI_DEVICE_ID_VIA_82C596:
|
||||
case PCI_DEVICE_ID_VIA_82C686:
|
||||
case PCI_DEVICE_ID_VIA_8231:
|
||||
switch(device) {
|
||||
case PCI_DEVICE_ID_VIA_82C586_0:
|
||||
r->name = "VIA";
|
||||
r->get = pirq_via586_get;
|
||||
r->set = pirq_via586_set;
|
||||
return 1;
|
||||
case PCI_DEVICE_ID_VIA_82C596:
|
||||
case PCI_DEVICE_ID_VIA_82C686:
|
||||
case PCI_DEVICE_ID_VIA_8231:
|
||||
case PCI_DEVICE_ID_VIA_8235:
|
||||
/* FIXME: add new ones for 8233/5 */
|
||||
r->name = "VIA";
|
||||
r->get = pirq_via_get;
|
||||
r->set = pirq_via_set;
|
||||
return 1;
|
||||
r->name = "VIA";
|
||||
r->get = pirq_via_get;
|
||||
r->set = pirq_via_set;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue