kernel: ssb/bcma: update to version from wireless-testing tag master-2012-05-16-2
[openwrt.git] / target / linux / brcm47xx / patches-3.3 / 182-bcma-scan-for-extra-address-space.patch
1 --- a/drivers/bcma/scan.c
2 +++ b/drivers/bcma/scan.c
3 @@ -323,6 +323,23 @@ static int bcma_get_next_core(struct bcm
4                         return -EILSEQ;
5         }
6  
7 +       /* First Slave Address Descriptor should be port 0:
8 +        * the main register space for the core
9 +        */
10 +       tmp = bcma_erom_get_addr_desc(bus, eromptr, SCAN_ADDR_TYPE_SLAVE, 0);
11 +       if (tmp <= 0) {
12 +               /* Try again to see if it is a bridge */
13 +               tmp = bcma_erom_get_addr_desc(bus, eromptr,
14 +                                             SCAN_ADDR_TYPE_BRIDGE, 0);
15 +               if (tmp <= 0) {
16 +                       return -EILSEQ;
17 +               } else {
18 +                       pr_info("Bridge found\n");
19 +                       return -ENXIO;
20 +               }
21 +       }
22 +       core->addr = tmp;
23 +
24         /* get & parse slave ports */
25         for (i = 0; i < ports[1]; i++) {
26                 for (j = 0; ; j++) {
27 @@ -335,7 +352,7 @@ static int bcma_get_next_core(struct bcm
28                                 break;
29                         } else {
30                                 if (i == 0 && j == 0)
31 -                                       core->addr = tmp;
32 +                                       core->addr1 = tmp;
33                         }
34                 }
35         }
36 --- a/include/linux/bcma/bcma.h
37 +++ b/include/linux/bcma/bcma.h
38 @@ -144,6 +144,7 @@ struct bcma_device {
39         u8 core_unit;
40  
41         u32 addr;
42 +       u32 addr1;
43         u32 wrap;
44  
45         void __iomem *io_addr;