46 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- 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;
 |