From: Daniel Ritz It turns out that just blindly enabling read prefetch is wrong for the older (and buggy) oz6833 bridge. fixed in the attached patch. - don't touch the oz6832/6833 - more verbose - only set the read prefetch and the write burst bits it broke on some old laptop with a cardbus tulip. Signed-off-by: Andrew Morton --- 25-akpm/drivers/pcmcia/o2micro.h | 19 +++++++++++++++++-- 1 files changed, 17 insertions(+), 2 deletions(-) diff -puN drivers/pcmcia/o2micro.h~yenta-dont-enable-read-prefetch-on-older-o2-bridges drivers/pcmcia/o2micro.h --- 25/drivers/pcmcia/o2micro.h~yenta-dont-enable-read-prefetch-on-older-o2-bridges 2004-10-26 19:02:15.983407360 -0700 +++ 25-akpm/drivers/pcmcia/o2micro.h 2004-10-26 19:02:15.987406752 -0700 @@ -129,9 +129,24 @@ static int o2micro_override(struct yenta * ok to write to both registers on all O2 bridges. * from Eric Still, 02Micro. */ + u8 a, b; + if (PCI_FUNC(socket->dev->devfn) == 0) { - config_writeb(socket, 0x94, 0xCA); - config_writeb(socket, 0xD4, 0xCA); + a = config_readb(socket, 0x94); + b = config_readb(socket, 0xD4); + + printk(KERN_INFO "Yenta O2: res at 0x94/0xD4: %02x/%02x\n", a, b); + + switch (socket->dev->device) { + case PCI_DEVICE_ID_O2_6832: + printk(KERN_INFO "Yenta O2: old bridge, not enabling read prefetch / write burst\n"); + break; + + default: + printk(KERN_INFO "Yenta O2: enabling read prefetch/write burst\n"); + config_writeb(socket, 0x94, a | 0x0a); + config_writeb(socket, 0xD4, b | 0x0a); + } } return 0; _