brcm47xx: fix a bug in the sprom handling of bcma, this broke all bcma based SoCs.
authorhauke <hauke@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sat, 14 Apr 2012 12:12:22 +0000 (12:12 +0000)
committerhauke <hauke@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sat, 14 Apr 2012 12:12:22 +0000 (12:12 +0000)
bcma: use fallback sprom if no on chip sprom is available

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31285 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/brcm47xx/patches-3.2/060-bcma-use-fallback-sprom-if-no-on-chip-sprom-is-avail.patch [new file with mode: 0644]

diff --git a/target/linux/brcm47xx/patches-3.2/060-bcma-use-fallback-sprom-if-no-on-chip-sprom-is-avail.patch b/target/linux/brcm47xx/patches-3.2/060-bcma-use-fallback-sprom-if-no-on-chip-sprom-is-avail.patch
new file mode 100644 (file)
index 0000000..abc638d
--- /dev/null
@@ -0,0 +1,24 @@
+--- a/drivers/bcma/sprom.c
++++ b/drivers/bcma/sprom.c
+@@ -404,16 +404,19 @@ int bcma_sprom_get(struct bcma_bus *bus)
+               return -EOPNOTSUPP;
+       if (!bcma_sprom_ext_available(bus)) {
++              bool sprom_onchip;
++
+               /*
+                * External SPROM takes precedence so check
+                * on-chip OTP only when no external SPROM
+                * is present.
+                */
+-              if (bcma_sprom_onchip_available(bus)) {
++              sprom_onchip = bcma_sprom_onchip_available(bus);
++              if (sprom_onchip) {
+                       /* determine offset */
+                       offset = bcma_sprom_onchip_offset(bus);
+               }
+-              if (!offset) {
++              if (!offset || !sprom_onchip) {
+                       /*
+                        * Maybe there is no SPROM on the device?
+                        * Now we ask the arch code if there is some sprom