bcm47xx: make WGT634U NVRAM patch apply again
authorRafał Miłecki <rafal@milecki.pl>
Fri, 12 Mar 2021 20:08:24 +0000 (21:08 +0100)
committerRafał Miłecki <rafal@milecki.pl>
Fri, 12 Mar 2021 20:09:11 +0000 (21:09 +0100)
Fixes: 1c48eee5b2bc ("kernel: backport Broadcom NVRAM driver cleanups")
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
target/linux/bcm47xx/patches-5.4/820-wgt634u-nvram-fix.patch

index 6d58c1b0424bf44cc7c9d81d7914c28a3c35b389..5f4af85df2f8bb661c16ccc7482406c81e756782 100644 (file)
@@ -250,28 +250,18 @@ out the configuration than the in kernel cfe config reader.
 +static int cfe_env;
 +extern char *cfe_env_get(char *nv_buf, const char *name);
  
- static u32 find_nvram_size(void __iomem *end)
- {
-@@ -52,7 +54,9 @@ static u32 find_nvram_size(void __iomem
- static int nvram_find_and_copy(void __iomem *iobase, u32 lim)
- {
-       struct nvram_header __iomem *header;
-+      int i;
-       u32 off;
-+      u32 *src, *dst;
-       u32 size;
-       if (nvram_len) {
-@@ -60,6 +64,26 @@ static int nvram_find_and_copy(void __io
+ /**
+  * bcm47xx_nvram_is_valid - check for a valid NVRAM at specified memory
+@@ -80,6 +82,26 @@ static int bcm47xx_nvram_find_and_copy(v
                return -EEXIST;
        }
  
 +      cfe_env = 0;
 +
 +      /* XXX: hack for supporting the CFE environment stuff on WGT634U */
-+      if (lim >= 8 * 1024 * 1024) {
-+              src = (u32 *)(iobase + 8 * 1024 * 1024 - 0x2000);
-+              dst = (u32 *)nvram_buf;
++      if (res_size >= 8 * 1024 * 1024) {
++              u32 *src = (u32 *)(flash_start + 8 * 1024 * 1024 - 0x2000);
++              u32 *dst = (u32 *)nvram_buf;
 +
 +              if ((*src & 0xff00ff) == 0x000001) {
 +                      printk("early_nvram_init: WGT634U NVRAM found.\n");
@@ -287,9 +277,9 @@ out the configuration than the in kernel cfe config reader.
 +      }
 +
        /* TODO: when nvram is on nand flash check for bad blocks first. */
-       off = FLASH_MIN;
-       while (off <= lim) {
-@@ -170,6 +194,13 @@ int bcm47xx_nvram_getenv(const char *nam
+       /* Try every possible flash size and check for NVRAM at its end */
+@@ -172,6 +194,13 @@ int bcm47xx_nvram_getenv(const char *nam
        if (!name)
                return -EINVAL;