hello!
i have previously reported on the problems we have using CONFIG_NONCOHERENT_IO
on Au1500 AD stepping systems (mtx-1):
* USB host only works reliably if we set CONFIG_NONCOHERENT_IO=y.
* the prims54 wlan driver on PCI only works when we have
CONFIG_NONCOHERENT_IO=n.
so up to now prism54 and USB were mutually exclusive.
i have now found a way to use both USB host and a prism54 card at the same
time with the modifications in the patch at the end of this mail. it sets the
"NC" bit for PCI only on pre-AC silicon stepping CPUs, as it was already
mentioned in the comment. but, actually i have to commit, that i'm not
totally sure of what i am doing and if this would be the right way to do it.
but it seems to work well...
greetings,
bruno
--- linux/arch/mips/au1000/common/pci_fixup.c.orig 2004-11-25
20:14:24.907902616 +0100
+++ linux/arch/mips/au1000/common/pci_fixup.c 2004-11-25 20:27:08.842766864
+0100
@@ -75,10 +75,13 @@
#ifdef CONFIG_NONCOHERENT_IO
/*
- * Set the NC bit in controller for pre-AC silicon
+ * Set the NC bit in controller for Au1500 pre-AC silicon
*/
- au_writel( 1<<16 | au_readl(Au1500_PCI_CFG), Au1500_PCI_CFG);
- printk("Non-coherent PCI accesses enabled\n");
+ u32 prid = read_c0_prid();
+ if ( (prid & 0xFF000000) == 0x01000000 && prid < 0x01030202) {
+ au_writel( 1<<16 | au_readl(Au1500_PCI_CFG), Au1500_PCI_CFG);
+ printk("Non-coherent PCI accesses enabled\n");
+ }
#endif
set_io_port_base(virt_io_addr);
pgpWKmB0kPfGs.pgp
Description: PGP signature
|