summaryrefslogtreecommitdiffstats
path: root/target/linux/brcm47xx/patches-3.3/182-bcma-scan-for-extra-address-space.patch
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2012-05-03 20:18:41 +0000
committerHauke Mehrtens <hauke@hauke-m.de>2012-05-03 20:18:41 +0000
commit22b2e3fbb9cc78d671e44f788a062031c97ffc6f (patch)
tree6395b1a6324793714e3d8d770a71cdc9362da4e1 /target/linux/brcm47xx/patches-3.3/182-bcma-scan-for-extra-address-space.patch
parent8e9d914343967982a1a48e80000bbb09161e636c (diff)
downloadmaster-31e0f0ae-22b2e3fbb9cc78d671e44f788a062031c97ffc6f.tar.gz
master-31e0f0ae-22b2e3fbb9cc78d671e44f788a062031c97ffc6f.tar.bz2
master-31e0f0ae-22b2e3fbb9cc78d671e44f788a062031c97ffc6f.zip
brcm47xx: add support for kernel 3.3
SVN-Revision: 31573
Diffstat (limited to 'target/linux/brcm47xx/patches-3.3/182-bcma-scan-for-extra-address-space.patch')
-rw-r--r--target/linux/brcm47xx/patches-3.3/182-bcma-scan-for-extra-address-space.patch45
1 files changed, 45 insertions, 0 deletions
diff --git a/target/linux/brcm47xx/patches-3.3/182-bcma-scan-for-extra-address-space.patch b/target/linux/brcm47xx/patches-3.3/182-bcma-scan-for-extra-address-space.patch
new file mode 100644
index 0000000000..6e68f0cc8f
--- /dev/null
+++ b/target/linux/brcm47xx/patches-3.3/182-bcma-scan-for-extra-address-space.patch
@@ -0,0 +1,45 @@
+--- a/drivers/bcma/scan.c
++++ b/drivers/bcma/scan.c
+@@ -297,6 +297,23 @@ 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 <= 0) {
++ return -EILSEQ;
++ } else {
++ pr_info("Bridge found\n");
++ return -ENXIO;
++ }
++ }
++ core->addr = tmp;
++
+ /* get & parse slave ports */
+ for (i = 0; i < ports[1]; i++) {
+ for (j = 0; ; j++) {
+@@ -309,7 +326,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
+@@ -139,6 +139,7 @@ struct bcma_device {
+ u8 core_unit;
+
+ u32 addr;
++ u32 addr1;
+ u32 wrap;
+
+ void __iomem *io_addr;