@ -23,13 +23,49 @@
*/
# include <common.h>
# include <malloc.h>
# include <asm/e820.h>
# include <asm/u-boot-x86.h>
# include <asm/global_data.h>
# include <asm/arch-coreboot/sysinfo.h>
# include <asm/arch-coreboot/tables.h>
DECLARE_GLOBAL_DATA_PTR ;
unsigned install_e820_map ( unsigned max_entries , struct e820entry * entries )
{
int i ;
unsigned num_entries = min ( lib_sysinfo . n_memranges , max_entries ) ;
if ( num_entries < lib_sysinfo . n_memranges ) {
printf ( " Warning: Limiting e820 map to %d entries. \n " ,
num_entries ) ;
}
for ( i = 0 ; i < num_entries ; i + + ) {
struct memrange * memrange = & lib_sysinfo . memrange [ i ] ;
entries [ i ] . addr = memrange - > base ;
entries [ i ] . size = memrange - > size ;
entries [ i ] . type = memrange - > type ;
}
return num_entries ;
}
int dram_init_f ( void )
{
gd - > ram_size = 64 * 1024 * 1024 ;
int i ;
phys_size_t ram_size = 0 ;
for ( i = 0 ; i < lib_sysinfo . n_memranges ; i + + ) {
struct memrange * memrange = & lib_sysinfo . memrange [ i ] ;
unsigned long long end = memrange - > base + memrange - > size ;
if ( memrange - > type = = CB_MEM_RAM & & end > ram_size )
ram_size = end ;
}
gd - > ram_size = ram_size ;
if ( ram_size = = 0 )
return - 1 ;
return 0 ;
}