@ -181,6 +181,46 @@ void init_cplbtables(void)
}
}
static int global_board_data_init ( void )
{
# ifndef CONFIG_SYS_GBL_DATA_ADDR
# define CONFIG_SYS_GBL_DATA_ADDR 0
# endif
# ifndef CONFIG_SYS_BD_INFO_ADDR
# define CONFIG_SYS_BD_INFO_ADDR 0
# endif
bd_t * bd ;
if ( CONFIG_SYS_GBL_DATA_ADDR ) {
gd = ( gd_t * ) ( CONFIG_SYS_GBL_DATA_ADDR ) ;
memset ( ( void * ) gd , 0 , GENERATED_GBL_DATA_SIZE ) ;
} else {
static gd_t _bfin_gd ;
gd = & _bfin_gd ;
}
if ( CONFIG_SYS_BD_INFO_ADDR ) {
bd = ( bd_t * ) ( CONFIG_SYS_BD_INFO_ADDR ) ;
memset ( bd , 0 , GENERATED_BD_INFO_SIZE ) ;
} else {
static bd_t _bfin_bd ;
bd = & _bfin_bd ;
}
gd - > bd = bd ;
bd - > bi_r_version = version_string ;
bd - > bi_cpu = MK_STR ( CONFIG_BFIN_CPU ) ;
bd - > bi_board_name = BFIN_BOARD_NAME ;
bd - > bi_vco = get_vco ( ) ;
bd - > bi_cclk = get_cclk ( ) ;
bd - > bi_sclk = get_sclk ( ) ;
bd - > bi_memstart = CONFIG_SYS_SDRAM_BASE ;
bd - > bi_memsize = CONFIG_SYS_MAX_RAM_SIZE ;
return 0 ;
}
/*
* All attempts to come up with a " common " initialization sequence
* that works for all boards and architectures failed : some of the
@ -201,7 +241,6 @@ extern int timer_init(void);
void board_init_f ( ulong bootflag )
{
bd_t * bd ;
char buf [ 32 ] ;
# ifdef CONFIG_BOARD_EARLY_INIT_F
@ -234,21 +273,8 @@ void board_init_f(ulong bootflag)
hang ( ) ;
# endif
serial_early_puts ( " Init global data \n " ) ;
gd = ( gd_t * ) ( CONFIG_SYS_GBL_DATA_ADDR ) ;
memset ( ( void * ) gd , 0 , GENERATED_GBL_DATA_SIZE ) ;
bd = ( bd_t * ) ( CONFIG_SYS_BD_INFO_ADDR ) ;
gd - > bd = bd ;
memset ( ( void * ) bd , 0 , GENERATED_BD_INFO_SIZE ) ;
bd - > bi_r_version = version_string ;
bd - > bi_cpu = MK_STR ( CONFIG_BFIN_CPU ) ;
bd - > bi_board_name = BFIN_BOARD_NAME ;
bd - > bi_vco = get_vco ( ) ;
bd - > bi_cclk = get_cclk ( ) ;
bd - > bi_sclk = get_sclk ( ) ;
bd - > bi_memstart = CONFIG_SYS_SDRAM_BASE ;
bd - > bi_memsize = CONFIG_SYS_MAX_RAM_SIZE ;
global_board_data_init ( ) ;
/* Initialize */
serial_early_puts ( " IRQ init \n " ) ;
@ -276,7 +302,7 @@ void board_init_f(ulong bootflag)
if ( CONFIG_MEM_SIZE ) {
printf ( " RAM: " ) ;
print_size ( bd - > bi_memsize , " \n " ) ;
print_size ( gd - > bd - > bi_memsize , " \n " ) ;
}
# if defined(CONFIG_POST)