diff options
Diffstat (limited to 'arch/arm/mach-imx/mach-imx6q.c')
| -rw-r--r-- | arch/arm/mach-imx/mach-imx6q.c | 37 | 
1 files changed, 11 insertions, 26 deletions
diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c index 4eb1b3ac794..1786b2d1257 100644 --- a/arch/arm/mach-imx/mach-imx6q.c +++ b/arch/arm/mach-imx/mach-imx6q.c @@ -12,12 +12,12 @@  #include <linux/clk.h>  #include <linux/clkdev.h> -#include <linux/cpuidle.h>  #include <linux/delay.h>  #include <linux/export.h>  #include <linux/init.h>  #include <linux/io.h>  #include <linux/irq.h> +#include <linux/irqchip.h>  #include <linux/of.h>  #include <linux/of_address.h>  #include <linux/of_irq.h> @@ -26,11 +26,10 @@  #include <linux/regmap.h>  #include <linux/micrel_phy.h>  #include <linux/mfd/syscon.h> -#include <asm/cpuidle.h>  #include <asm/smp_twd.h>  #include <asm/hardware/cache-l2x0.h> -#include <asm/hardware/gic.h>  #include <asm/mach/arch.h> +#include <asm/mach/map.h>  #include <asm/mach/time.h>  #include <asm/system_misc.h> @@ -201,37 +200,28 @@ static void __init imx6q_init_machine(void)  	imx6q_1588_init();  } -static struct cpuidle_driver imx6q_cpuidle_driver = { -	.name			= "imx6q_cpuidle", -	.owner			= THIS_MODULE, -	.en_core_tk_irqen	= 1, -	.states[0]		= ARM_CPUIDLE_WFI_STATE, -	.state_count		= 1, -}; -  static void __init imx6q_init_late(void)  { -	imx_cpuidle_init(&imx6q_cpuidle_driver); +	/* +	 * WAIT mode is broken on TO 1.0 and 1.1, so there is no point +	 * to run cpuidle on them. +	 */ +	if (imx6q_revision() > IMX_CHIP_REVISION_1_1) +		imx6q_cpuidle_init();  }  static void __init imx6q_map_io(void)  { -	imx_lluart_map_io(); +	debug_ll_io_init();  	imx_scu_map_io(); -	imx6q_clock_map_io();  } -static const struct of_device_id imx6q_irq_match[] __initconst = { -	{ .compatible = "arm,cortex-a9-gic", .data = gic_of_init, }, -	{ /* sentinel */ } -}; -  static void __init imx6q_init_irq(void)  {  	l2x0_of_init(0, ~0UL);  	imx_src_init();  	imx_gpc_init(); -	of_irq_init(imx6q_irq_match); +	irqchip_init();  }  static void __init imx6q_timer_init(void) @@ -241,10 +231,6 @@ static void __init imx6q_timer_init(void)  	imx_print_silicon_rev("i.MX6Q", imx6q_revision());  } -static struct sys_timer imx6q_timer = { -	.init = imx6q_timer_init, -}; -  static const char *imx6q_dt_compat[] __initdata = {  	"fsl,imx6q",  	NULL, @@ -254,8 +240,7 @@ DT_MACHINE_START(IMX6Q, "Freescale i.MX6 Quad (Device Tree)")  	.smp		= smp_ops(imx_smp_ops),  	.map_io		= imx6q_map_io,  	.init_irq	= imx6q_init_irq, -	.handle_irq	= imx6q_handle_irq, -	.timer		= &imx6q_timer, +	.init_time	= imx6q_timer_init,  	.init_machine	= imx6q_init_machine,  	.init_late      = imx6q_init_late,  	.dt_compat	= imx6q_dt_compat,  |