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/debugfs.h>
# include <linux/of.h>
# include <linux/of_fdt.h>
2014-10-21 08:28:02 +04:00
# include <linux/of_platform.h>
2010-10-13 10:52:46 +04:00
# include <asm/page.h>
# include <asm/prom.h>
2013-04-11 09:34:59 +04:00
static char mips_machine_name [ 64 ] = " Unknown " ;
__init void mips_set_machine_name ( const char * name )
{
if ( name = = NULL )
return ;
2013-05-26 11:06:06 +04:00
strlcpy ( mips_machine_name , name , sizeof ( mips_machine_name ) ) ;
2013-04-11 09:34:59 +04:00
pr_info ( " MIPS: machine is %s \n " , mips_get_machine_name ( ) ) ;
}
char * mips_get_machine_name ( void )
{
return mips_machine_name ;
}
# ifdef CONFIG_OF
2010-10-13 10:52:46 +04:00
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
}
2014-04-01 00:13:07 +04:00
void __init __dt_setup_arch ( void * bph )
2012-01-25 18:03:19 +04:00
{
2013-08-26 19:20:26 +04:00
if ( ! early_init_dt_scan ( bph ) )
2012-01-25 18:03:19 +04:00
return ;
2012-05-02 14:27:35 +04:00
2013-08-28 18:56:40 +04:00
mips_set_machine_name ( of_flat_dt_get_machine_name ( ) ) ;
2012-01-25 18:03:19 +04:00
}
2014-10-21 08:28:02 +04:00
int __init __dt_register_buses ( const char * bus0 , const char * bus1 )
{
static struct of_device_id of_ids [ 3 ] ;
if ( ! of_have_populated_dt ( ) )
panic ( " device tree not present " ) ;
strlcpy ( of_ids [ 0 ] . compatible , bus0 , sizeof ( of_ids [ 0 ] . compatible ) ) ;
2014-12-25 20:49:07 +03:00
if ( bus1 ) {
strlcpy ( of_ids [ 1 ] . compatible , bus1 ,
sizeof ( of_ids [ 1 ] . compatible ) ) ;
}
2014-10-21 08:28:02 +04:00
if ( of_platform_populate ( NULL , of_ids , NULL , NULL ) )
panic ( " failed to populate DT " ) ;
return 0 ;
}
2013-04-11 09:34:59 +04:00
# endif