aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/bcma
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/bcma')
-rw-r--r--drivers/bcma/scan.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/bcma/scan.c b/drivers/bcma/scan.c
index f94cccccfa56..3bea7fe25b20 100644
--- a/drivers/bcma/scan.c
+++ b/drivers/bcma/scan.c
@@ -297,6 +297,23 @@ static int bcma_get_next_core(struct bcma_bus *bus, u32 __iomem **eromptr,
297 return -EILSEQ; 297 return -EILSEQ;
298 } 298 }
299 299
300 /* First Slave Address Descriptor should be port 0:
301 * the main register space for the core
302 */
303 tmp = bcma_erom_get_addr_desc(bus, eromptr, SCAN_ADDR_TYPE_SLAVE, 0);
304 if (tmp <= 0) {
305 /* Try again to see if it is a bridge */
306 tmp = bcma_erom_get_addr_desc(bus, eromptr,
307 SCAN_ADDR_TYPE_BRIDGE, 0);
308 if (tmp <= 0) {
309 return -EILSEQ;
310 } else {
311 pr_info("Bridge found\n");
312 return -ENXIO;
313 }
314 }
315 core->addr = tmp;
316
300 /* get & parse slave ports */ 317 /* get & parse slave ports */
301 for (i = 0; i < ports[1]; i++) { 318 for (i = 0; i < ports[1]; i++) {
302 for (j = 0; ; j++) { 319 for (j = 0; ; j++) {
@@ -309,7 +326,7 @@ static int bcma_get_next_core(struct bcma_bus *bus, u32 __iomem **eromptr,
309 break; 326 break;
310 } else { 327 } else {
311 if (i == 0 && j == 0) 328 if (i == 0 && j == 0)
312 core->addr = tmp; 329 core->addr1 = tmp;
313 } 330 }
314 } 331 }
315 } 332 }