mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-09-18 02:02:26 +03:00
1014b0e07d
Reading the CFE properties causes system hangs on some devices. With this patch nvram read will be successful very time so cfe will no be read out. This code is not really correct but it will work around some problems for some people. Related ticket: #7693 git-svn-id: svn://svn.openwrt.org/openwrt/trunk@22663 3c298f89-4303-0410-b956-a3cf2f4a3e73
48 lines
1.5 KiB
Diff
48 lines
1.5 KiB
Diff
From ff7295cc37b1e4b31aed9f071374f43aa128329b Mon Sep 17 00:00:00 2001
|
|
From: Hauke Mehrtens <hauke@hauke-m.de>
|
|
Date: Fri, 30 Jul 2010 17:45:20 +0200
|
|
Subject: [PATCH 5/6] MIPS: BCM47xx: nvram_getenv fix return value.
|
|
|
|
nvram_getenv should behave like cfe_getenv. For now it is used like
|
|
cfe_getenv. cfe_getenv returns 0 on success and -1 in case of an error.
|
|
Change nvram_getenv to do the same.
|
|
|
|
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
|
---
|
|
arch/mips/bcm47xx/nvram.c | 4 ++--
|
|
arch/mips/include/asm/mach-bcm47xx/nvram.h | 3 +++
|
|
2 files changed, 5 insertions(+), 2 deletions(-)
|
|
|
|
--- a/arch/mips/bcm47xx/nvram.c
|
|
+++ b/arch/mips/bcm47xx/nvram.c
|
|
@@ -69,7 +69,7 @@ int nvram_getenv(char *name, char *val,
|
|
char *var, *value, *end, *eq;
|
|
|
|
if (!name)
|
|
- return 1;
|
|
+ return NVRAM_ERR_INV_PARAM;
|
|
|
|
if (!nvram_buf[0])
|
|
early_nvram_init();
|
|
@@ -89,6 +89,6 @@ int nvram_getenv(char *name, char *val,
|
|
return 0;
|
|
}
|
|
}
|
|
- return 1;
|
|
+ return NVRAM_ERR_ENVNOTFOUND;
|
|
}
|
|
EXPORT_SYMBOL(nvram_getenv);
|
|
--- a/arch/mips/include/asm/mach-bcm47xx/nvram.h
|
|
+++ b/arch/mips/include/asm/mach-bcm47xx/nvram.h
|
|
@@ -31,6 +31,10 @@ struct nvram_header {
|
|
#define NVRAM_MAX_VALUE_LEN 255
|
|
#define NVRAM_MAX_PARAM_LEN 64
|
|
|
|
+// TODO: replace by old values. This chaueses that the system will not try to look into the cfe.
|
|
+#define NVRAM_ERR_INV_PARAM 1 // -8
|
|
+#define NVRAM_ERR_ENVNOTFOUND 1 // -9
|
|
+
|
|
extern int nvram_getenv(char *name, char *val, size_t val_len);
|
|
|
|
#endif
|