brcm47xx: fix cfe config detection on WGT634U broken in r33920
authorHauke Mehrtens <hauke@hauke-m.de>
Mon, 12 Nov 2012 21:32:33 +0000 (21:32 +0000)
committerHauke Mehrtens <hauke@hauke-m.de>
Mon, 12 Nov 2012 21:32:33 +0000 (21:32 +0000)
Thanks Russell Senior for reporting this.

SVN-Revision: 34175

target/linux/brcm47xx/patches-3.3/820-wgt634u-nvram-fix.patch

index 0aef7952d1d0b119c183bba8e17949a77b94cc7f..c2da5e07708d2c30513e9a8c822c660fc01da89b 100644 (file)
@@ -254,10 +254,10 @@ out the configuration than the in kernel cfe config reader.
  
  static u32 find_nvram_size(u32 end)
  {
-@@ -59,6 +61,25 @@ static void early_nvram_init_fill(u32 ba
-               }
-               off <<= 1;
-       }
+@@ -47,6 +49,26 @@ static void early_nvram_init_fill(u32 ba
+       u32 *src, *dst;
+       u32 size;
 +      cfe_env = 0;
 +
 +      /* XXX: hack for supporting the CFE environment stuff on WGT634U */
@@ -277,10 +277,11 @@ out the configuration than the in kernel cfe config reader.
 +                      return;
 +              }
 +      }
-       /* Try embedded NVRAM at 4 KB and 1 KB as last resorts */
-       header = (struct nvram_header *) KSEG1ADDR(base + 4096);
-@@ -166,6 +187,12 @@ int nvram_getenv(char *name, char *val,
++
+       /* TODO: when nvram is on nand flash check for bad blocks first. */
+       off = FLASH_MIN;
+       while (off <= lim) {
+@@ -166,6 +188,12 @@ int nvram_getenv(char *name, char *val,
        if (!nvram_buf[0])
                early_nvram_init();
  
@@ -293,7 +294,7 @@ out the configuration than the in kernel cfe config reader.
        /* Look for name=value and return value */
        var = &nvram_buf[sizeof(struct nvram_header)];
        end = nvram_buf + sizeof(nvram_buf) - 2;
-@@ -194,6 +221,9 @@ char *nvram_get(const char *name)
+@@ -194,6 +222,9 @@ char *nvram_get(const char *name)
        if (!nvram_buf[0])
                early_nvram_init();