
From: Daniel Ritz <daniel.ritz@gmx.ch>

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 <akpm@osdl.org>
---

 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;
_
