diff options
| author | Kumar Gala <galak@kernel.crashing.org> | 2010-11-30 15:58:27 -0600 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2010-12-09 11:01:13 +0100 | 
| commit | bb141079d34bebb073c5b0566313e1441973ec01 (patch) | |
| tree | d9a792cb775390f7ced1948454155b8fee7c2c22 /common/hwconfig.c | |
| parent | 296cae732b0dbe374abc9b26fed6f73588b9d1e2 (diff) | |
| download | olio-uboot-2014.01-bb141079d34bebb073c5b0566313e1441973ec01.tar.xz olio-uboot-2014.01-bb141079d34bebb073c5b0566313e1441973ec01.zip | |
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/hwconfig.c')
| -rw-r--r-- | common/hwconfig.c | 15 | 
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;  }  /* |