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>
This commit is contained in:
Kumar Gala 2010-11-30 15:58:27 -06:00 committed by Wolfgang Denk
parent 296cae732b
commit bb141079d3
1 changed files with 9 additions and 6 deletions

View File

@ -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;
}
/*