2014-05-13 21:46:16 +08:00
/*
* Copyright 2014 Freescale Semiconductor , Inc .
*
* 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/irqchip.h>
# include <linux/of_platform.h>
# include <asm/mach/arch.h>
# include <asm/mach/map.h>
# include "common.h"
2014-06-20 13:44:05 +08:00
# include "cpuidle.h"
2014-05-13 21:46:16 +08:00
static void __init imx6sx_init_machine ( void )
{
struct device * parent ;
mxc_arch_reset_init_dt ( ) ;
parent = imx_soc_device_init ( ) ;
if ( parent = = NULL )
pr_warn ( " failed to initialize soc device \n " ) ;
of_platform_populate ( NULL , of_default_bus_match_table , NULL , parent ) ;
imx_anatop_init ( ) ;
2014-06-20 13:20:54 +08:00
imx6sx_pm_init ( ) ;
2014-05-13 21:46:16 +08:00
}
static void __init imx6sx_init_irq ( void )
{
imx_init_revision_from_anatop ( ) ;
imx_init_l2cache ( ) ;
imx_src_init ( ) ;
imx_gpc_init ( ) ;
irqchip_init ( ) ;
}
2014-06-20 13:44:05 +08:00
static void __init imx6sx_init_late ( void )
{
imx6q_cpuidle_init ( ) ;
2014-06-25 17:10:12 +08:00
if ( IS_ENABLED ( CONFIG_ARM_IMX6Q_CPUFREQ ) )
platform_device_register_simple ( " imx6q-cpufreq " , - 1 , NULL , 0 ) ;
2014-06-20 13:44:05 +08:00
}
2014-07-01 16:03:00 +08:00
static const char * const imx6sx_dt_compat [ ] __initconst = {
2014-05-13 21:46:16 +08:00
" fsl,imx6sx " ,
NULL ,
} ;
DT_MACHINE_START ( IMX6SX , " Freescale i.MX6 SoloX (Device Tree) " )
. map_io = debug_ll_io_init ,
. init_irq = imx6sx_init_irq ,
. init_machine = imx6sx_init_machine ,
. dt_compat = imx6sx_dt_compat ,
2014-06-20 13:44:05 +08:00
. init_late = imx6sx_init_late ,
2014-05-13 21:46:16 +08:00
. restart = mxc_restart ,
MACHINE_END