Hi Hauke, On Mon, Mar 12, 2012 at 07:08, Hauke Mehrtens <hauke@xxxxxxxxxx> wrote: > Some cores like the USB core have two address spaces. In the USB host > controller one address space is used for the OHCI and the other for the > EHCI controller interface. The USB controller is the only core I found > with two address spaces. This code is based on the AI scan function > ai_scan() in shared/aiutils.c i the Broadcom SDK. > > CC: Rafał Miłecki <zajec5@xxxxxxxxx> > CC: linux-wireless@xxxxxxxxxxxxxxx > Signed-off-by: Hauke Mehrtens <hauke@xxxxxxxxxx> > --- > drivers/bcma/scan.c | 18 +++++++++++++++++- > include/linux/bcma/bcma.h | 1 + > 2 files changed, 18 insertions(+), 1 deletions(-) > > diff --git a/drivers/bcma/scan.c b/drivers/bcma/scan.c > index 3a2f672..3c2eeed 100644 > --- a/drivers/bcma/scan.c > +++ b/drivers/bcma/scan.c > @@ -286,6 +286,22 @@ static int bcma_get_next_core(struct bcma_bus *bus, u32 __iomem **eromptr, > 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) { > + pr_info("found bridge"); > + return -ENXIO; > + } Should this do something if the second bcma_erom_get_addr_desc() call returns an error? We seem to be putting any errors from that call into the addr member of the core structure below. > + } > + core->addr = tmp; > + > /* get & parse slave ports */ > for (i = 0; i < ports[1]; i++) { > for (j = 0; ; j++) { > @@ -298,7 +314,7 @@ static int bcma_get_next_core(struct bcma_bus *bus, u32 __iomem **eromptr, > break; > } else { > if (i == 0 && j == 0) > - core->addr = tmp; > + core->addr1 = tmp; > } > } > } > diff --git a/include/linux/bcma/bcma.h b/include/linux/bcma/bcma.h > index 83c209f..7fe41e1 100644 > --- a/include/linux/bcma/bcma.h > +++ b/include/linux/bcma/bcma.h > @@ -138,6 +138,7 @@ struct bcma_device { > u8 core_index; > > u32 addr; > + u32 addr1; > u32 wrap; > > void __iomem *io_addr; > -- > 1.7.5.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-wireless" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Julian Calaby Email: julian.calaby@xxxxxxxxx Profile: http://www.google.com/profiles/julian.calaby/ .Plan: http://sites.google.com/site/juliancalaby/