|
@@ -116,13 +116,12 @@ static int o2micro_override(struct yenta_socket *socket)
|
|
|
* from Eric Still, 02Micro.
|
|
|
*/
|
|
|
u8 a, b;
|
|
|
+ bool use_speedup;
|
|
|
|
|
|
if (PCI_FUNC(socket->dev->devfn) == 0) {
|
|
|
a = config_readb(socket, O2_RESERVED1);
|
|
|
b = config_readb(socket, O2_RESERVED2);
|
|
|
-
|
|
|
- dev_printk(KERN_INFO, &socket->dev->dev,
|
|
|
- "O2: res at 0x94/0xD4: %02x/%02x\n", a, b);
|
|
|
+ dev_dbg(&socket->dev->dev, "O2: 0x94/0xD4: %02x/%02x\n", a, b);
|
|
|
|
|
|
switch (socket->dev->device) {
|
|
|
/*
|
|
@@ -135,23 +134,37 @@ static int o2micro_override(struct yenta_socket *socket)
|
|
|
case PCI_DEVICE_ID_O2_6812:
|
|
|
case PCI_DEVICE_ID_O2_6832:
|
|
|
case PCI_DEVICE_ID_O2_6836:
|
|
|
- case PCI_DEVICE_ID_O2_6933:
|
|
|
- dev_printk(KERN_INFO, &socket->dev->dev,
|
|
|
- "Yenta O2: old bridge, disabling read "
|
|
|
- "prefetch/write burst\n");
|
|
|
- config_writeb(socket, O2_RESERVED1,
|
|
|
- a & ~(O2_RES_READ_PREFETCH | O2_RES_WRITE_BURST));
|
|
|
- config_writeb(socket, O2_RESERVED2,
|
|
|
- b & ~(O2_RES_READ_PREFETCH | O2_RES_WRITE_BURST));
|
|
|
+ case PCI_DEVICE_ID_O2_6933:
|
|
|
+ use_speedup = false;
|
|
|
break;
|
|
|
-
|
|
|
default:
|
|
|
- dev_printk(KERN_INFO , &socket->dev->dev,
|
|
|
- "O2: enabling read prefetch/write burst\n");
|
|
|
+ use_speedup = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* the user may override our decision */
|
|
|
+ if (strcasecmp(o2_speedup, "on") == 0)
|
|
|
+ use_speedup = true;
|
|
|
+ else if (strcasecmp(o2_speedup, "off") == 0)
|
|
|
+ use_speedup = false;
|
|
|
+ else if (strcasecmp(o2_speedup, "default") != 0)
|
|
|
+ dev_warn(&socket->dev->dev,
|
|
|
+ "O2: Unknown parameter, using 'default'");
|
|
|
+
|
|
|
+ if (use_speedup) {
|
|
|
+ dev_info(&socket->dev->dev,
|
|
|
+ "O2: enabling read prefetch/write burst\n");
|
|
|
+ config_writeb(socket, O2_RESERVED1,
|
|
|
+ a | O2_RES_READ_PREFETCH | O2_RES_WRITE_BURST);
|
|
|
+ config_writeb(socket, O2_RESERVED2,
|
|
|
+ b | O2_RES_READ_PREFETCH | O2_RES_WRITE_BURST);
|
|
|
+ } else {
|
|
|
+ dev_info(&socket->dev->dev,
|
|
|
+ "O2: disabling read prefetch/write burst\n");
|
|
|
config_writeb(socket, O2_RESERVED1,
|
|
|
- a | O2_RES_READ_PREFETCH | O2_RES_WRITE_BURST);
|
|
|
+ a & ~(O2_RES_READ_PREFETCH | O2_RES_WRITE_BURST));
|
|
|
config_writeb(socket, O2_RESERVED2,
|
|
|
- b | O2_RES_READ_PREFETCH | O2_RES_WRITE_BURST);
|
|
|
+ b & ~(O2_RES_READ_PREFETCH | O2_RES_WRITE_BURST));
|
|
|
}
|
|
|
}
|
|
|
|