@ -54,6 +54,7 @@ DECLARE_GLOBAL_DATA_PTR;
# define BOARDREV_MASK 0x10100000
# define BOARDREV_MASK 0x10100000
# define BOARDREV_B 0x10100000
# define BOARDREV_B 0x10100000
# define BOARDREV_C 0x00100000
# define BOARDREV_C 0x00100000
# define BOARDREV_D 0x00000000
# define SYSCLK_66 66666666
# define SYSCLK_66 66666666
# define SYSCLK_50 50000000
# define SYSCLK_50 50000000
@ -64,7 +65,7 @@ unsigned long get_board_sys_clk(ulong dummy)
volatile ccsr_gpio_t * pgpio = ( void * ) ( CONFIG_SYS_MPC85xx_GPIO_ADDR ) ;
volatile ccsr_gpio_t * pgpio = ( void * ) ( CONFIG_SYS_MPC85xx_GPIO_ADDR ) ;
u32 val_gpdat , sysclk_gpio , board_rev_gpio ;
u32 val_gpdat , sysclk_gpio , board_rev_gpio ;
val_gpdat = pgpio - > gpdat ;
val_gpdat = in_be32 ( & pgpio - > gpdat ) ;
sysclk_gpio = val_gpdat & SYSCLK_MASK ;
sysclk_gpio = val_gpdat & SYSCLK_MASK ;
board_rev_gpio = val_gpdat & BOARDREV_MASK ;
board_rev_gpio = val_gpdat & BOARDREV_MASK ;
if ( board_rev_gpio = = BOARDREV_C ) {
if ( board_rev_gpio = = BOARDREV_C ) {
@ -77,6 +78,11 @@ unsigned long get_board_sys_clk(ulong dummy)
return SYSCLK_66 ;
return SYSCLK_66 ;
else
else
return SYSCLK_50 ;
return SYSCLK_50 ;
} else if ( board_rev_gpio = = BOARDREV_D ) {
if ( sysclk_gpio = = 0 )
return SYSCLK_66 ;
else
return SYSCLK_100 ;
}
}
return 0 ;
return 0 ;
}
}
@ -100,12 +106,14 @@ int checkboard (void)
char board_rev = 0 ;
char board_rev = 0 ;
struct cpu_type * cpu ;
struct cpu_type * cpu ;
val_gpdat = pgpio - > gpdat ;
val_gpdat = in_be32 ( & pgpio - > gpdat ) ;
board_rev_gpio = val_gpdat & BOARDREV_MASK ;
board_rev_gpio = val_gpdat & BOARDREV_MASK ;
if ( board_rev_gpio = = BOARDREV_C )
if ( board_rev_gpio = = BOARDREV_C )
board_rev = ' C ' ;
board_rev = ' C ' ;
else if ( board_rev_gpio = = BOARDREV_B )
else if ( board_rev_gpio = = BOARDREV_B )
board_rev = ' B ' ;
board_rev = ' B ' ;
else if ( board_rev_gpio = = BOARDREV_D )
board_rev = ' D ' ;
else
else
panic ( " Unexpected Board REV %x detected!! \n " , board_rev_gpio ) ;
panic ( " Unexpected Board REV %x detected!! \n " , board_rev_gpio ) ;
@ -159,6 +167,7 @@ int board_eth_init(bd_t *bis)
volatile ccsr_gur_t * gur = ( void * ) ( CONFIG_SYS_MPC85xx_GUTS_ADDR ) ;
volatile ccsr_gur_t * gur = ( void * ) ( CONFIG_SYS_MPC85xx_GUTS_ADDR ) ;
int num = 0 ;
int num = 0 ;
char * tmp ;
char * tmp ;
u32 pordevsr ;
unsigned int vscfw_addr ;
unsigned int vscfw_addr ;
# ifdef CONFIG_TSEC1
# ifdef CONFIG_TSEC1
@ -171,7 +180,8 @@ int board_eth_init(bd_t *bis)
# endif
# endif
# ifdef CONFIG_TSEC3
# ifdef CONFIG_TSEC3
SET_STD_TSEC_INFO ( tsec_info [ num ] , 3 ) ;
SET_STD_TSEC_INFO ( tsec_info [ num ] , 3 ) ;
if ( ! ( gur - > pordevsr & MPC85xx_PORDEVSR_SGMII3_DIS ) )
pordevsr = in_be32 ( & gur - > pordevsr ) ;
if ( ! ( pordevsr & MPC85xx_PORDEVSR_SGMII3_DIS ) )
tsec_info [ num ] . flags | = TSEC_SGMII ;
tsec_info [ num ] . flags | = TSEC_SGMII ;
num + + ;
num + + ;
# endif
# endif