2019-06-04 10:11:33 +02:00
// SPDX-License-Identifier: GPL-2.0-only
2014-05-13 21:46:16 +08:00
/*
* Copyright 2014 Freescale Semiconductor , Inc .
*/
# include <linux/irqchip.h>
# include <linux/of_platform.h>
2014-09-24 10:11:19 +08:00
# include <linux/phy.h>
# include <linux/regmap.h>
# include <linux/mfd/syscon.h>
# include <linux/mfd/syscon/imx6q-iomuxc-gpr.h>
2014-05-13 21:46:16 +08:00
# 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
2014-09-24 10:11:19 +08:00
static void __init imx6sx_enet_clk_sel ( void )
{
struct regmap * gpr ;
gpr = syscon_regmap_lookup_by_compatible ( " fsl,imx6sx-iomuxc-gpr " ) ;
if ( ! IS_ERR ( gpr ) ) {
regmap_update_bits ( gpr , IOMUXC_GPR1 ,
IMX6SX_GPR1_FEC_CLOCK_MUX_SEL_MASK , 0 ) ;
regmap_update_bits ( gpr , IOMUXC_GPR1 ,
IMX6SX_GPR1_FEC_CLOCK_PAD_DIR_MASK , 0 ) ;
} else {
pr_err ( " failed to find fsl,imx6sx-iomux-gpr regmap \n " ) ;
}
}
static inline void imx6sx_enet_init ( void )
{
imx6sx_enet_clk_sel ( ) ;
}
2014-05-13 21:46:16 +08:00
static void __init imx6sx_init_machine ( void )
{
2020-05-20 13:51:27 +08:00
of_platform_default_populate ( NULL , NULL , NULL ) ;
2014-05-13 21:46:16 +08:00
2014-09-24 10:11:19 +08:00
imx6sx_enet_init ( ) ;
2014-05-13 21:46:16 +08:00
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 )
{
2015-03-13 16:05:37 +00:00
imx_gpc_check_dt ( ) ;
2014-05-13 21:46:16 +08:00
imx_init_revision_from_anatop ( ) ;
imx_init_l2cache ( ) ;
imx_src_init ( ) ;
irqchip_init ( ) ;
2015-04-29 13:07:03 +08:00
imx6_pm_ccm_init ( " fsl,imx6sx-ccm " ) ;
2014-05-13 21:46:16 +08:00
}
2014-06-20 13:44:05 +08:00
static void __init imx6sx_init_late ( void )
{
2014-12-17 12:24:12 +08:00
imx6sx_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) " )
2016-06-18 18:09:31 -07:00
. l2c_aux_val = 0 ,
. l2c_aux_mask = ~ 0 ,
2014-05-13 21:46:16 +08:00
. 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
MACHINE_END