2010-10-13 10:52:46 +04:00
/*
* MIPS support for CONFIG_OF device tree support
*
* Copyright ( C ) 2010 Cisco Systems Inc . < dediao @ cisco . com >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*/
# include <linux/init.h>
2011-07-24 00:30:40 +04:00
# include <linux/export.h>
2010-10-13 10:52:46 +04:00
# include <linux/errno.h>
# include <linux/types.h>
# include <linux/bootmem.h>
# include <linux/initrd.h>
# include <linux/debugfs.h>
# include <linux/of.h>
# include <linux/of_fdt.h>
# include <linux/of_irq.h>
# include <linux/of_platform.h>
# include <asm/page.h>
# include <asm/prom.h>
int __init early_init_dt_scan_memory_arch ( unsigned long node ,
const char * uname , int depth ,
void * data )
{
return early_init_dt_scan_memory ( node , uname , depth , data ) ;
}
void __init early_init_dt_add_memory_arch ( u64 base , u64 size )
{
return add_memory_region ( base , size , BOOT_MEM_RAM ) ;
}
2011-01-14 01:36:09 +03:00
void * __init early_init_dt_alloc_memory_arch ( u64 size , u64 align )
2010-10-13 10:52:46 +04:00
{
2011-01-14 01:36:09 +03:00
return __alloc_bootmem ( size , align , __pa ( MAX_DMA_ADDRESS ) ) ;
2010-10-13 10:52:46 +04:00
}
# ifdef CONFIG_BLK_DEV_INITRD
void __init early_init_dt_setup_initrd_arch ( unsigned long start ,
unsigned long end )
{
initrd_start = ( unsigned long ) __va ( start ) ;
initrd_end = ( unsigned long ) __va ( end ) ;
initrd_below_start_ok = 1 ;
}
# endif
void __init early_init_devtree ( void * params )
{
/* Setup flat device-tree pointer */
initial_boot_params = params ;
/* Retrieve various informations from the /chosen node of the
* device - tree , including the platform type , initrd location and
* size , and more . . .
*/
2011-04-29 10:18:16 +04:00
of_scan_flat_dt ( early_init_dt_scan_chosen , arcs_cmdline ) ;
2010-10-13 10:52:46 +04:00
/* Scan memory nodes */
of_scan_flat_dt ( early_init_dt_scan_root , NULL ) ;
of_scan_flat_dt ( early_init_dt_scan_memory_arch , NULL ) ;
}
2012-01-25 18:03:19 +04:00
void __init __dt_setup_arch ( struct boot_param_header * bph )
{
if ( be32_to_cpu ( bph - > magic ) ! = OF_DT_HEADER ) {
pr_err ( " DTB has bad magic, ignoring builtin OF DTB \n " ) ;
return ;
}
initial_boot_params = bph ;
2012-05-02 14:27:35 +04:00
early_init_devtree ( initial_boot_params ) ;
2012-01-25 18:03:19 +04:00
}