aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux
diff options
context:
space:
mode:
authorImre Kaloz <kaloz@openwrt.org>2008-09-02 11:28:57 +0000
committerImre Kaloz <kaloz@openwrt.org>2008-09-02 11:28:57 +0000
commit88041e0f1bc250db408e50e3b4cd9030aef81c8b (patch)
tree63493ad46b8256e7d8fd3a6833e93e90ea49fa87 /target/linux
parent059e7be269316b2de3aa556c70b9672e2d7b9894 (diff)
downloadupstream-88041e0f1bc250db408e50e3b4cd9030aef81c8b.tar.gz
upstream-88041e0f1bc250db408e50e3b4cd9030aef81c8b.tar.bz2
upstream-88041e0f1bc250db408e50e3b4cd9030aef81c8b.zip
final fix for BCM5354 USB cores, hopefully
SVN-Revision: 12499
Diffstat (limited to 'target/linux')
-rw-r--r--target/linux/brcm-2.4/files/arch/mips/bcm947xx/pcibios.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/target/linux/brcm-2.4/files/arch/mips/bcm947xx/pcibios.c b/target/linux/brcm-2.4/files/arch/mips/bcm947xx/pcibios.c
index 2d8549623a..0e993d1b95 100644
--- a/target/linux/brcm-2.4/files/arch/mips/bcm947xx/pcibios.c
+++ b/target/linux/brcm-2.4/files/arch/mips/bcm947xx/pcibios.c
@@ -292,6 +292,7 @@ pcibios_enable_device(struct pci_dev *dev, int mask)
* after calling pcibios_enable_device().
*/
if (sb_coreid(sbh) == SB_USB) {
+ printk(KERN_INFO "SB USB 1.1 init\n");
sb_core_disable(sbh, sb_coreflags(sbh, 0, 0));
sb_core_reset(sbh, 1 << 29, 0);
}
@@ -306,13 +307,22 @@ pcibios_enable_device(struct pci_dev *dev, int mask)
* phy components out of reset.
*/
else if (sb_coreid(sbh) == SB_USB20H) {
+
+ uint corerev = sb_corerev(sbh);
+
+ printk(KERN_INFO "SB USB20H init\n");
+ printk(KERN_INFO "SB COREREV: %d\n", corerev);
+
if (!sb_iscoreup(sbh)) {
+
+ printk(KERN_INFO "SB USB20H resetting\n");
+
sb_core_reset(sbh, 0, 0);
writel(0x7FF, (ulong)regs + 0x200);
udelay(1);
}
/* PRxxxx: War for 5354 failures. */
- if (sb_corerev(sbh) == 1) {
+ if (corerev == 1 || corerev == 2) {
uint32 tmp;
/* Change Flush control reg */
@@ -320,14 +330,14 @@ pcibios_enable_device(struct pci_dev *dev, int mask)
tmp &= ~8;
writel(tmp, (uintptr)regs + 0x400);
tmp = readl((uintptr)regs + 0x400);
- printk("USB20H fcr: 0x%x\n", tmp);
+ printk(KERN_INFO "USB20H fcr: 0x%x\n", tmp);
/* Change Shim control reg */
tmp = readl((uintptr)regs + 0x304);
tmp &= ~0x100;
writel(tmp, (uintptr)regs + 0x304);
tmp = readl((uintptr)regs + 0x304);
- printk("USB20H shim cr: 0x%x\n", tmp);
+ printk(KERN_INFO "USB20H shim cr: 0x%x\n", tmp);
}
} else