1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-11-01 19:06:16 +02:00
openwrt-xburst/target/linux/brcm47xx/patches-3.3/182-bcma-scan-for-extra-address-space.patch
hauke b1e2eade99 kernel: ssb/bcma: update to version from wireless-testing tag master-2012-05-16-2
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31772 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-05-17 13:22:38 +00:00

46 lines
1.0 KiB
Diff

--- a/drivers/bcma/scan.c
+++ b/drivers/bcma/scan.c
@@ -323,6 +323,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++) {
@@ -335,7 +352,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
@@ -144,6 +144,7 @@ struct bcma_device {
u8 core_unit;
u32 addr;
+ u32 addr1;
u32 wrap;
void __iomem *io_addr;