summaryrefslogtreecommitdiffstats
path: root/target/linux/brcm47xx/patches-3.0/0028-bcma-scan-for-extra-address-space.patch
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2011-12-19 23:39:13 +0000
committerHauke Mehrtens <hauke@hauke-m.de>2011-12-19 23:39:13 +0000
commit5b8686c303af8e3a94e5d6b1f762610f9831c439 (patch)
tree0505a287c4bbd0aba2e2e5483bbcb0c475999409 /target/linux/brcm47xx/patches-3.0/0028-bcma-scan-for-extra-address-space.patch
parent1aa5a61754d4995d8144a48dde0565211da0d5a8 (diff)
downloadmaster-31e0f0ae-5b8686c303af8e3a94e5d6b1f762610f9831c439.tar.gz
master-31e0f0ae-5b8686c303af8e3a94e5d6b1f762610f9831c439.tar.bz2
master-31e0f0ae-5b8686c303af8e3a94e5d6b1f762610f9831c439.zip
brcm47xx: add new usb driver for bcma bus and replace ssb usb driver.
This new usb driver uses an extra device so the ehci and the ohci driver are not depending on ech other any more. SVN-Revision: 29575
Diffstat (limited to 'target/linux/brcm47xx/patches-3.0/0028-bcma-scan-for-extra-address-space.patch')
-rw-r--r--target/linux/brcm47xx/patches-3.0/0028-bcma-scan-for-extra-address-space.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/target/linux/brcm47xx/patches-3.0/0028-bcma-scan-for-extra-address-space.patch b/target/linux/brcm47xx/patches-3.0/0028-bcma-scan-for-extra-address-space.patch
new file mode 100644
index 0000000000..d74dfcb73e
--- /dev/null
+++ b/target/linux/brcm47xx/patches-3.0/0028-bcma-scan-for-extra-address-space.patch
@@ -0,0 +1,60 @@
+From 1735daf1db79d338dccfc55444b52ed52af79e86 Mon Sep 17 00:00:00 2001
+From: Hauke Mehrtens <hauke@hauke-m.de>
+Date: Sun, 20 Nov 2011 18:22:35 +0100
+Subject: [PATCH 15/21] bcma: scan for extra address space
+
+Some cores like the USB core have two address spaces. In the USB host
+controller one address space is used for the OHCI and the other for the
+EHCI controller interface. The USB controller is the only core I found
+with two address spaces. This code is based on the AI scan function
+ai_scan() in shared/aiutils.c i the Broadcom SDK.
+
+Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
+---
+ drivers/bcma/scan.c | 17 ++++++++++++++++-
+ include/linux/bcma/bcma.h | 1 +
+ 2 files changed, 17 insertions(+), 1 deletions(-)
+
+--- a/drivers/bcma/scan.c
++++ b/drivers/bcma/scan.c
+@@ -286,6 +286,21 @@ static int bcma_get_next_core(struct bcm
+ return -EILSEQ;
+ }
+
++
++ /* First Slave Address Descriptor should be port 0:
++ * the main register space for the core
++ */
++ tmp = bcma_erom_get_addr_desc(bus, eromptr, SCAN_ADDR_TYPE_SLAVE, 0);
++ if (tmp < 0) {
++ /* Try again to see if it is a bridge */
++ tmp = bcma_erom_get_addr_desc(bus, eromptr, SCAN_ADDR_TYPE_BRIDGE, 0);
++ if (tmp) {
++ printk("found bridge\n");
++ }
++
++ }
++ core->addr = tmp;
++
+ /* get & parse slave ports */
+ for (i = 0; i < ports[1]; i++) {
+ for (j = 0; ; j++) {
+@@ -298,7 +313,7 @@ static int bcma_get_next_core(struct bcm
+ break;
+ } else {
+ if (i == 0 && j == 0)
+- core->addr = tmp;
++ core->addr1 = tmp;
+ }
+ }
+ }
+--- a/include/linux/bcma/bcma.h
++++ b/include/linux/bcma/bcma.h
+@@ -138,6 +138,7 @@ struct bcma_device {
+ u8 core_index;
+
+ u32 addr;
++ u32 addr1;
+ u32 wrap;
+
+ void __iomem *io_addr;