[PATCH 2.4] enable read prefetch on o2micro bridges to fix HDSP

From: Daniel Ritz
Date: Sat Aug 21 2004 - 16:30:38 EST


hi marcelo

this is in 2.6 since june 21 and even longer on the linux-pcmcia list (2.6 version).
not a single negative report about this until now.

against 2.4-bknow

rgds
-daniel

--------------------

enable read prefetching on O2micro bridges. It fixes the problems
seen with the RME Hammerfall DSP. it's also known to fix problems
with an external cd-writer on a dell laptop.
Thanks to Eric Still from O2micro for the input.

Signed-off-by: Daniel Ritz <daniel.ritz@xxxxxx>

--- 1.17/drivers/pcmcia/yenta.c Mon May 17 22:09:06 2004
+++ edited/drivers/pcmcia/yenta.c Fri Jun 25 21:51:44 2004
@@ -845,6 +845,7 @@

#include "ti113x.h"
#include "ricoh.h"
+#include "o2micro.h"

/*
* Different cardbus controllers have slightly different
@@ -879,6 +880,8 @@
{ PD(ENE,1225), &ti_ops },
{ PD(ENE,1410), &ti_ops },
{ PD(ENE,1420), &ti_ops },
+
+ { PCI_VENDOR_ID_O2, PCI_ANY_ID, &o2micro_ops },

{ PD(RICOH,RL5C465), &ricoh_ops },
{ PD(RICOH,RL5C466), &ricoh_ops },
--- 1.3/drivers/pcmcia/o2micro.h Sat Oct 19 01:10:30 2002
+++ edited/drivers/pcmcia/o2micro.h Fri Jun 25 21:36:08 2004
@@ -120,4 +120,36 @@
#define O2_MODE_E_LED_OUT 0x08
#define O2_MODE_E_SKTA_ACTV 0x10

+static int o2micro_open(pci_socket_t *socket)
+{
+ /*
+ * 'reserved' register at 0x94/D4. chaning it to 0xCA (8 bit) enables
+ * read prefetching which for example makes the RME Hammerfall DSP
+ * working. for some bridges it is at 0x94, for others at 0xD4. it's
+ * ok to write to both registers on all O2 bridges.
+ * from Eric Still, 02Micro.
+ */
+ if (PCI_FUNC(socket->dev->devfn) == 0) {
+ config_writeb(socket, 0x94, 0xCA);
+ config_writeb(socket, 0xD4, 0xCA);
+ }
+
+ return 0;
+}
+
+static struct pci_socket_ops o2micro_ops = {
+ o2micro_open,
+ yenta_close,
+ yenta_init,
+ yenta_suspend,
+ yenta_get_status,
+ yenta_get_socket,
+ yenta_set_socket,
+ yenta_get_io_map,
+ yenta_set_io_map,
+ yenta_get_mem_map,
+ yenta_set_mem_map,
+ yenta_proc_setup
+};
+
#endif /* _LINUX_O2MICRO_H */
--- 1.11/drivers/pcmcia/i82365.c Sat Sep 27 17:41:26 2003
+++ edited/drivers/pcmcia/i82365.c Sat Aug 21 21:51:47 2004
@@ -63,7 +63,6 @@
#include "cirrus.h"
#include "vg468.h"
#include "ricoh.h"
-#include "o2micro.h"

#ifdef PCMCIA_DEBUG
static int pc_debug = PCMCIA_DEBUG;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/