diff options
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/fsl_corenet_serdes.c | 17 | 
1 files changed, 14 insertions, 3 deletions
| diff --git a/arch/powerpc/cpu/mpc85xx/fsl_corenet_serdes.c b/arch/powerpc/cpu/mpc85xx/fsl_corenet_serdes.c index 5bcf91abf..7fc00d8c6 100644 --- a/arch/powerpc/cpu/mpc85xx/fsl_corenet_serdes.c +++ b/arch/powerpc/cpu/mpc85xx/fsl_corenet_serdes.c @@ -1,5 +1,5 @@  /* - * Copyright 2009-2010 Freescale Semiconductor, Inc. + * Copyright 2009-2011 Freescale Semiconductor, Inc.   *   * See file CREDITS for list of people who contributed to this   * project. @@ -33,6 +33,8 @@  static u32 serdes_prtcl_map; +#define HWCONFIG_BUFFER_SIZE	128 +  #ifdef DEBUG  static const char *serdes_prtcl_str[] = {  	[NONE] = "NA", @@ -277,6 +279,15 @@ void fsl_serdes_init(void)  	const char *srds_lpd_arg;  	size_t arglen;  #endif +	char buffer[HWCONFIG_BUFFER_SIZE]; +	char *buf = NULL; + +	/* +	 * Extract hwconfig from environment since we have not properly setup +	 * the environment but need it for ddr config params +	 */ +	if (getenv_f("hwconfig", buffer, sizeof(buffer)) > 0) +		buf = buffer;  	/* Is serdes enabled at all? */  	if (!(in_be32(&gur->rcwsr[5]) & FSL_CORENET_RCWSR5_SRDS_EN)) @@ -295,8 +306,8 @@ void fsl_serdes_init(void)  	if (!IS_SVR_REV(get_svr(), 1, 0))  		for (bank = 1; bank < ARRAY_SIZE(srds_lpd_b); bank++) {  			sprintf(srds_lpd_opt, "fsl_srds_lpd_b%u", bank + 1); -			srds_lpd_arg = hwconfig_subarg("serdes", srds_lpd_opt, -						       &arglen); +			srds_lpd_arg = hwconfig_subarg_f("serdes", srds_lpd_opt, +						       &arglen, buf);  			if (srds_lpd_arg)  				srds_lpd_b[bank] = simple_strtoul(srds_lpd_arg,  								  NULL, 0); |