aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorKumar Gala <galak@kernel.crashing.org>2010-11-30 15:58:27 -0600
committerWolfgang Denk <wd@denx.de>2010-12-09 11:01:13 +0100
commitbb141079d34bebb073c5b0566313e1441973ec01 (patch)
treed9a792cb775390f7ced1948454155b8fee7c2c22 /common
parent296cae732b0dbe374abc9b26fed6f73588b9d1e2 (diff)
hwconfig: Fix handling of env_hwconfig, board_hwconfig, and cpu_hwconfig
The handling of env_hwconfig, board_hwconfig, and cpu_hwconfig got broken when we removed the boards defining dummy board_hwconfig & cpu_hwconfig values. We fix this by handling the various strings in priority order. If hwconfig_parse returns NULL for a given string we check the next one in order (env_hwconfig, board_hwconfig, followed by cpu_hwconfig). Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'common')
-rw-r--r--common/hwconfig.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/common/hwconfig.c b/common/hwconfig.c
index da8d3edb0..193863a97 100644
--- a/common/hwconfig.c
+++ b/common/hwconfig.c
@@ -75,7 +75,7 @@ const char board_hwconfig[] __attribute__((weak)) = "";
static const char *__hwconfig(const char *opt, size_t *arglen)
{
- const char *env_hwconfig = NULL;
+ const char *env_hwconfig = NULL, *ret;
char buf[HWCONFIG_PRE_RELOC_BUF_SIZE];
if (gd->flags & GD_FLG_ENV_READY) {
@@ -92,17 +92,20 @@ static const char *__hwconfig(const char *opt, size_t *arglen)
env_hwconfig = buf;
}
- if (env_hwconfig)
- return hwconfig_parse(env_hwconfig, strlen(env_hwconfig),
+ if (env_hwconfig) {
+ ret = hwconfig_parse(env_hwconfig, strlen(env_hwconfig),
opt, ";", ':', arglen);
+ if (ret)
+ return ret;
+ }
- return hwconfig_parse(board_hwconfig, strlen(board_hwconfig),
+ ret = hwconfig_parse(board_hwconfig, strlen(board_hwconfig),
opt, ";", ':', arglen);
+ if (ret)
+ return ret;
return hwconfig_parse(cpu_hwconfig, strlen(cpu_hwconfig),
opt, ";", ':', arglen);
-
- return NULL;
}
/*