X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=target%2Flinux%2Fbrcm47xx%2Fpatches-3.18%2F820-wgt634u-nvram-fix.patch;h=4738c223c4efb5b8787e76ab7949152df273fcbd;hb=99a468a9dd7ab7538cb22c972ad62f73646ca89b;hp=ea002fe73218c804a035c16773b48f0d3eed9d04;hpb=3bdf05441aa8e7df8e41793eff8a9bbd50c5f153;p=librecmc%2Flibrecmc.git diff --git a/target/linux/brcm47xx/patches-3.18/820-wgt634u-nvram-fix.patch b/target/linux/brcm47xx/patches-3.18/820-wgt634u-nvram-fix.patch index ea002fe732..4738c223c4 100644 --- a/target/linux/brcm47xx/patches-3.18/820-wgt634u-nvram-fix.patch +++ b/target/linux/brcm47xx/patches-3.18/820-wgt634u-nvram-fix.patch @@ -12,7 +12,7 @@ out the configuration than the in kernel cfe config reader. +obj-y += cfe_env.o --- /dev/null +++ b/arch/mips/bcm47xx/cfe_env.c -@@ -0,0 +1,229 @@ +@@ -0,0 +1,228 @@ +/* + * CFE environment variable access + * @@ -138,8 +138,7 @@ out the configuration than the in kernel cfe config reader. + * @return value of variable or NULL if undefined + */ + -+char* -+cfe_env_get(unsigned char *nv_buf, char* name) ++char *cfe_env_get(unsigned char *nv_buf, const char *name) +{ + int size; + unsigned char *buffer; @@ -244,16 +243,16 @@ out the configuration than the in kernel cfe config reader. + --- a/arch/mips/bcm47xx/nvram.c +++ b/arch/mips/bcm47xx/nvram.c -@@ -22,6 +22,8 @@ - +@@ -37,6 +37,8 @@ struct nvram_header { static char nvram_buf[NVRAM_SPACE]; + static size_t nvram_len; static const u32 nvram_sizes[] = {0x8000, 0xF000, 0x10000}; +static int cfe_env; +extern char *cfe_env_get(char *nv_buf, const char *name); static u32 find_nvram_size(void __iomem *end) { -@@ -51,6 +53,26 @@ static int nvram_find_and_copy(void __io +@@ -66,6 +68,26 @@ static int nvram_find_and_copy(void __io return -EEXIST; } @@ -261,8 +260,8 @@ out the configuration than the in kernel cfe config reader. + + /* 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; ++ src = (u32 *)(iobase + 8 * 1024 * 1024 - 0x2000); ++ dst = (u32 *)nvram_buf; + + if ((*src & 0xff00ff) == 0x000001) { + printk("early_nvram_init: WGT634U NVRAM found.\n"); @@ -280,9 +279,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) { -@@ -142,6 +164,13 @@ int bcm47xx_nvram_getenv(char *name, cha - return err; - } +@@ -180,6 +202,13 @@ int bcm47xx_nvram_getenv(const char *nam + if (!name) + return -EINVAL; + if (cfe_env) { + value = cfe_env_get(nvram_buf, name); @@ -291,6 +290,6 @@ out the configuration than the in kernel cfe config reader. + return snprintf(val, val_len, "%s", value); + } + - /* Look for name=value and return value */ - var = &nvram_buf[sizeof(struct nvram_header)]; - end = nvram_buf + sizeof(nvram_buf) - 2; + if (!nvram_len) { + err = nvram_init(); + if (err)