diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2012-01-15 21:18:34 +0000 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2012-01-15 21:18:34 +0000 |
commit | 034cf5643f7e0c2e2466e8e9ff1d4e9fad7fe6ec (patch) | |
tree | 87503a64bc69e384733b723ff3679349e1f4a00c /target/linux/brcm47xx/patches-3.2/0028-bcma-scan-for-extra-address-space.patch | |
parent | c3d134af127ff4666447fc798b0c4ebe52f571bf (diff) | |
download | upstream-034cf5643f7e0c2e2466e8e9ff1d4e9fad7fe6ec.tar.gz upstream-034cf5643f7e0c2e2466e8e9ff1d4e9fad7fe6ec.tar.bz2 upstream-034cf5643f7e0c2e2466e8e9ff1d4e9fad7fe6ec.zip |
brcm47xx: add support for kernel 3.2
SVN-Revision: 29756
Diffstat (limited to 'target/linux/brcm47xx/patches-3.2/0028-bcma-scan-for-extra-address-space.patch')
-rw-r--r-- | target/linux/brcm47xx/patches-3.2/0028-bcma-scan-for-extra-address-space.patch | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/target/linux/brcm47xx/patches-3.2/0028-bcma-scan-for-extra-address-space.patch b/target/linux/brcm47xx/patches-3.2/0028-bcma-scan-for-extra-address-space.patch new file mode 100644 index 0000000000..d74dfcb73e --- /dev/null +++ b/target/linux/brcm47xx/patches-3.2/0028-bcma-scan-for-extra-address-space.patch @@ -0,0 +1,60 @@ +From 1735daf1db79d338dccfc55444b52ed52af79e86 Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens <hauke@hauke-m.de> +Date: Sun, 20 Nov 2011 18:22:35 +0100 +Subject: [PATCH 15/21] bcma: scan for extra address space + +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. + +Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> +--- + drivers/bcma/scan.c | 17 ++++++++++++++++- + include/linux/bcma/bcma.h | 1 + + 2 files changed, 17 insertions(+), 1 deletions(-) + +--- a/drivers/bcma/scan.c ++++ b/drivers/bcma/scan.c +@@ -286,6 +286,21 @@ 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) { ++ printk("found bridge\n"); ++ } ++ ++ } ++ core->addr = tmp; ++ + /* get & parse slave ports */ + for (i = 0; i < ports[1]; i++) { + for (j = 0; ; j++) { +@@ -298,7 +313,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 +@@ -138,6 +138,7 @@ struct bcma_device { + u8 core_index; + + u32 addr; ++ u32 addr1; + u32 wrap; + + void __iomem *io_addr; |