2013-01-18 13:42:20 +04:00
/*
* ARC FPGA Platform support code
*
* Copyright ( C ) 2012 Synopsys , Inc . ( www . synopsys . 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/types.h>
# include <linux/init.h>
2013-01-18 13:42:20 +04:00
# include <linux/device.h>
2013-01-18 13:42:20 +04:00
# include <linux/platform_device.h>
2013-01-18 13:42:24 +04:00
# include <linux/io.h>
2013-01-18 13:42:20 +04:00
# include <linux/console.h>
2013-01-18 13:42:21 +04:00
# include <linux/of_platform.h>
2013-01-18 13:42:20 +04:00
# include <asm/setup.h>
# include <asm/clk.h>
2013-01-23 15:02:48 +04:00
# include <asm/mach_desc.h>
2013-01-18 13:42:20 +04:00
# include <plat/memmap.h>
2013-01-23 15:02:48 +04:00
# include <plat/smp.h>
2013-01-18 13:42:26 +04:00
# include <plat/irq.h>
2013-01-18 13:42:20 +04:00
2013-01-23 15:02:48 +04:00
static void __init plat_fpga_early_init ( void )
2013-01-18 13:42:20 +04:00
{
pr_info ( " [plat-arcfpga]: registering early dev resources \n " ) ;
2013-01-18 13:42:20 +04:00
2014-02-28 12:13:44 +04:00
# ifdef CONFIG_ISS_SMP_EXTN
2013-01-18 13:42:26 +04:00
iss_model_init_early_smp ( ) ;
# endif
2013-01-18 13:42:20 +04:00
}
2013-01-23 15:02:48 +04:00
static void __init plat_fpga_populate_dev ( void )
2013-01-18 13:42:20 +04:00
{
2013-01-18 13:42:21 +04:00
/*
* Traverses flattened DeviceTree - registering platform devices
2014-06-24 12:25:13 +04:00
* ( if any ) complete with their resources
2013-01-18 13:42:21 +04:00
*/
2014-06-24 12:25:13 +04:00
of_platform_populate ( NULL , of_default_bus_match_table , NULL , NULL ) ;
2013-01-18 13:42:20 +04:00
}
2013-01-23 15:02:48 +04:00
/*----------------------- Machine Descriptions ------------------------------
*
* Machine description is simply a set of platform / board specific callbacks
* This is not directly related to DeviceTree based dynamic device creation ,
* however as part of early device tree scan , we also select the right
* callback set , by matching the DT compatible name .
*/
2014-01-27 18:34:17 +04:00
static const char * aa4_compat [ ] __initconst = {
2013-01-23 15:02:48 +04:00
" snps,arc-angel4 " ,
NULL ,
} ;
MACHINE_START ( ANGEL4 , " angel4 " )
. dt_compat = aa4_compat ,
. init_early = plat_fpga_early_init ,
. init_machine = plat_fpga_populate_dev ,
2014-02-28 12:13:44 +04:00
# ifdef CONFIG_ISS_SMP_EXTN
2013-01-23 15:02:48 +04:00
. init_smp = iss_model_init_smp ,
# endif
MACHINE_END
2014-01-27 18:34:17 +04:00
static const char * ml509_compat [ ] __initconst = {
2013-01-23 15:02:48 +04:00
" snps,arc-ml509 " ,
NULL ,
} ;
MACHINE_START ( ML509 , " ml509 " )
. dt_compat = ml509_compat ,
. init_early = plat_fpga_early_init ,
. init_machine = plat_fpga_populate_dev ,
2014-09-04 09:27:33 +04:00
# ifdef CONFIG_ISS_SMP_EXTN
2013-01-23 15:02:48 +04:00
. init_smp = iss_model_init_smp ,
# endif
MACHINE_END
2013-04-18 13:40:39 +04:00
2014-01-27 18:34:17 +04:00
static const char * nsimosci_compat [ ] __initconst = {
2013-04-18 13:40:39 +04:00
" snps,nsimosci " ,
NULL ,
} ;
MACHINE_START ( NSIMOSCI , " nsimosci " )
. dt_compat = nsimosci_compat ,
. init_early = NULL ,
. init_machine = plat_fpga_populate_dev ,
MACHINE_END