@ -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 ) ;