mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 18:47:06 +00:00
273797f15a
SVN-Revision: 31772
46 lines
1.0 KiB
Diff
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;
|