2013-05-03 07:24:47 +04:00
/*
* Copyright 2013 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.h>
# include <linux/of_platform.h>
2013-09-04 06:58:17 +04:00
# include <linux/mfd/syscon.h>
# include <linux/mfd/syscon/imx6q-iomuxc-gpr.h>
# include <linux/regmap.h>
2013-05-03 07:24:47 +04:00
# include <asm/mach/arch.h>
# include <asm/mach/map.h>
# include "common.h"
2013-09-04 06:58:17 +04:00
static void __init imx6sl_fec_init ( void )
{
struct regmap * gpr ;
/* set FEC clock from internal PLL clock source */
gpr = syscon_regmap_lookup_by_compatible ( " fsl,imx6sl-iomuxc-gpr " ) ;
if ( ! IS_ERR ( gpr ) ) {
regmap_update_bits ( gpr , IOMUXC_GPR1 ,
IMX6SL_GPR1_FEC_CLOCK_MUX2_SEL_MASK , 0 ) ;
regmap_update_bits ( gpr , IOMUXC_GPR1 ,
IMX6SL_GPR1_FEC_CLOCK_MUX1_SEL_MASK , 0 ) ;
} else {
pr_err ( " failed to find fsl,imx6sl-iomux-gpr regmap \n " ) ;
}
}
2013-05-03 07:24:47 +04:00
static void __init imx6sl_init_machine ( void )
{
2013-08-13 12:59:28 +04:00
struct device * parent ;
2013-05-03 07:24:47 +04:00
mxc_arch_reset_init_dt ( ) ;
2013-08-13 12:59:28 +04:00
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 ) ;
2013-09-04 06:58:17 +04:00
imx6sl_fec_init ( ) ;
2013-05-03 07:24:47 +04:00
}
static void __init imx6sl_init_irq ( void )
{
2013-08-13 12:54:05 +04:00
imx_init_revision_from_anatop ( ) ;
2013-07-08 17:52:33 +04:00
imx_init_l2cache ( ) ;
2013-05-03 07:24:47 +04:00
imx_src_init ( ) ;
imx_gpc_init ( ) ;
irqchip_init ( ) ;
}
static const char * imx6sl_dt_compat [ ] __initdata = {
" fsl,imx6sl " ,
NULL ,
} ;
DT_MACHINE_START ( IMX6SL , " Freescale i.MX6 SoloLite (Device Tree) " )
. map_io = debug_ll_io_init ,
. init_irq = imx6sl_init_irq ,
. init_machine = imx6sl_init_machine ,
. dt_compat = imx6sl_dt_compat ,
. restart = mxc_restart ,
MACHINE_END