diff options
author | Hauke Mehrtens <hauke@openwrt.org> | 2012-09-30 11:44:44 +0000 |
---|---|---|
committer | Hauke Mehrtens <hauke@openwrt.org> | 2012-09-30 11:44:44 +0000 |
commit | 0056094a9819c28bb56f2d161c4f0a0fa86ec821 (patch) | |
tree | 55347e4e6a53a8a6f7be5b3b3eaea19c54b9ed00 /target/linux/brcm47xx/patches-3.3/202-bcma-init-sprom-struct-earlier.patch | |
parent | a65fa180cdb298f1a63dd7c09a58c720ebf6ca47 (diff) | |
download | upstream-0056094a9819c28bb56f2d161c4f0a0fa86ec821.tar.gz upstream-0056094a9819c28bb56f2d161c4f0a0fa86ec821.tar.bz2 upstream-0056094a9819c28bb56f2d161c4f0a0fa86ec821.zip |
[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.patch | 37 |
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 0000000000..03540f04cc --- /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); + |