summaryrefslogtreecommitdiffstats
path: root/target/linux/brcm47xx/patches-3.3/202-bcma-init-sprom-struct-earlier.patch
diff options
context:
space:
mode:
authorhauke <hauke@3c298f89-4303-0410-b956-a3cf2f4a3e73>2012-09-30 11:44:44 +0000
committerhauke <hauke@3c298f89-4303-0410-b956-a3cf2f4a3e73>2012-09-30 11:44:44 +0000
commit6f8cf8b4c0bdd8d31ff8d15008c42b508ff68adc (patch)
tree55347e4e6a53a8a6f7be5b3b3eaea19c54b9ed00 /target/linux/brcm47xx/patches-3.3/202-bcma-init-sprom-struct-earlier.patch
parentea60258a5f33755dfb081f70ace11cd33783d889 (diff)
[brcm47xx]: bcma: initialize sprom earlier
The chip common and the PCIe code are accessing the sprom struct which is not filled when these cores are initialized. Fix this by adding an early initialize and fill the sprom struct before accessing it in other code. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33600 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/brcm47xx/patches-3.3/202-bcma-init-sprom-struct-earlier.patch')
-rw-r--r--target/linux/brcm47xx/patches-3.3/202-bcma-init-sprom-struct-earlier.patch37
1 files changed, 37 insertions, 0 deletions
diff --git a/target/linux/brcm47xx/patches-3.3/202-bcma-init-sprom-struct-earlier.patch b/target/linux/brcm47xx/patches-3.3/202-bcma-init-sprom-struct-earlier.patch
new file mode 100644
index 000000000..03540f04c
--- /dev/null
+++ b/target/linux/brcm47xx/patches-3.3/202-bcma-init-sprom-struct-earlier.patch
@@ -0,0 +1,37 @@
+--- a/drivers/bcma/main.c
++++ b/drivers/bcma/main.c
+@@ -165,6 +165,20 @@ int __devinit bcma_bus_register(struct b
+ return -1;
+ }
+
++ /* Early init CC core */
++ core = bcma_find_core(bus, bcma_cc_core_id(bus));
++ if (core) {
++ bus->drv_cc.core = core;
++ bcma_core_chipcommon_early_init(&bus->drv_cc);
++ }
++
++ /* Try to get SPROM */
++ err = bcma_sprom_get(bus);
++ if (err == -ENOENT) {
++ bcma_err(bus, "No SPROM available\n");
++ } else if (err)
++ bcma_err(bus, "Failed to get SPROM: %d\n", err);
++
+ /* Init CC core */
+ core = bcma_find_core(bus, bcma_cc_core_id(bus));
+ if (core) {
+@@ -193,13 +207,6 @@ int __devinit bcma_bus_register(struct b
+ bcma_core_gmac_cmn_init(&bus->drv_gmac_cmn);
+ }
+
+- /* Try to get SPROM */
+- err = bcma_sprom_get(bus);
+- if (err == -ENOENT) {
+- bcma_err(bus, "No SPROM available\n");
+- } else if (err)
+- bcma_err(bus, "Failed to get SPROM: %d\n", err);
+-
+ /* Register found cores */
+ bcma_register_cores(bus);
+