aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn Guo <shawn.guo@linaro.org>2013-05-02 23:24:47 -0400
committerNitin Garg <nitin.garg@freescale.com>2014-04-16 09:00:34 -0400
commit0b3870feb52b9d3f75237f88efbec1038ece5e1f (patch)
treed588a3720ccb1f06134a239eeaf04d3fdbc0a7d8
parentb2002eb6c78d32e5af3e704b9f4801d579625c2e (diff)
ARM: imx: add initial support for imx6sl
Commit 31a2fbf70e1cf3fcd6623a928a5547a2c5c6733f upstream. Add initial support for i.MX6 SoloLite. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
-rw-r--r--arch/arm/mach-imx/Kconfig19
-rw-r--r--arch/arm/mach-imx/Makefile1
-rw-r--r--arch/arm/mach-imx/common.h1
-rw-r--r--arch/arm/mach-imx/mach-imx6sl.c51
4 files changed, 72 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index ba44328464f3..a4022481875a 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -816,6 +816,25 @@ config SOC_IMX6Q
816 help 816 help
817 This enables support for Freescale i.MX6 Quad processor. 817 This enables support for Freescale i.MX6 Quad processor.
818 818
819config SOC_IMX6SL
820 bool "i.MX6 SoloLite support"
821 select ARM_ERRATA_754322
822 select ARM_ERRATA_775420
823 select ARM_GIC
824 select CPU_V7
825 select HAVE_IMX_ANATOP
826 select HAVE_IMX_GPC
827 select HAVE_IMX_MMDC
828 select HAVE_IMX_SRC
829 select PINCTRL
830 select PINCTRL_IMX6SL
831 select PL310_ERRATA_588369 if CACHE_PL310
832 select PL310_ERRATA_727915 if CACHE_PL310
833 select PL310_ERRATA_769419 if CACHE_PL310
834
835 help
836 This enables support for Freescale i.MX6 SoloLite processor.
837
819endif 838endif
820 839
821source "arch/arm/mach-imx/devices/Kconfig" 840source "arch/arm/mach-imx/devices/Kconfig"
diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
index 70ae7c490ac0..2a4754dc7c69 100644
--- a/arch/arm/mach-imx/Makefile
+++ b/arch/arm/mach-imx/Makefile
@@ -98,6 +98,7 @@ AFLAGS_headsmp.o :=-Wa,-march=armv7-a
98obj-$(CONFIG_SMP) += headsmp.o platsmp.o 98obj-$(CONFIG_SMP) += headsmp.o platsmp.o
99obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o 99obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
100obj-$(CONFIG_SOC_IMX6Q) += clk-imx6q.o mach-imx6q.o 100obj-$(CONFIG_SOC_IMX6Q) += clk-imx6q.o mach-imx6q.o
101obj-$(CONFIG_SOC_IMX6SL) += clk-imx6sl.o mach-imx6sl.o
101 102
102ifeq ($(CONFIG_PM),y) 103ifeq ($(CONFIG_PM),y)
103obj-$(CONFIG_SOC_IMX6Q) += pm-imx6q.o headsmp.o 104obj-$(CONFIG_SOC_IMX6Q) += pm-imx6q.o headsmp.o
diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h
index 963971e11f6a..208e76fcc6b9 100644
--- a/arch/arm/mach-imx/common.h
+++ b/arch/arm/mach-imx/common.h
@@ -69,6 +69,7 @@ extern int mx31_clocks_init_dt(void);
69extern int mx51_clocks_init_dt(void); 69extern int mx51_clocks_init_dt(void);
70extern int mx53_clocks_init_dt(void); 70extern int mx53_clocks_init_dt(void);
71extern int mx6q_clocks_init(void); 71extern int mx6q_clocks_init(void);
72extern int imx6sl_clocks_init(void);
72extern struct platform_device *mxc_register_gpio(char *name, int id, 73extern struct platform_device *mxc_register_gpio(char *name, int id,
73 resource_size_t iobase, resource_size_t iosize, int irq, int irq_high); 74 resource_size_t iobase, resource_size_t iosize, int irq, int irq_high);
74extern void mxc_set_cpu_type(unsigned int type); 75extern void mxc_set_cpu_type(unsigned int type);
diff --git a/arch/arm/mach-imx/mach-imx6sl.c b/arch/arm/mach-imx/mach-imx6sl.c
new file mode 100644
index 000000000000..0130ee6284f1
--- /dev/null
+++ b/arch/arm/mach-imx/mach-imx6sl.c
@@ -0,0 +1,51 @@
1/*
2 * Copyright 2013 Freescale Semiconductor, Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 *
8 */
9
10#include <linux/irqchip.h>
11#include <linux/of.h>
12#include <linux/of_platform.h>
13#include <asm/hardware/cache-l2x0.h>
14#include <asm/mach/arch.h>
15#include <asm/mach/map.h>
16
17#include "common.h"
18
19static void __init imx6sl_init_machine(void)
20{
21 mxc_arch_reset_init_dt();
22
23 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
24}
25
26static void __init imx6sl_init_irq(void)
27{
28 l2x0_of_init(0, ~0UL);
29 imx_src_init();
30 imx_gpc_init();
31 irqchip_init();
32}
33
34static void __init imx6sl_timer_init(void)
35{
36 imx6sl_clocks_init();
37}
38
39static const char *imx6sl_dt_compat[] __initdata = {
40 "fsl,imx6sl",
41 NULL,
42};
43
44DT_MACHINE_START(IMX6SL, "Freescale i.MX6 SoloLite (Device Tree)")
45 .map_io = debug_ll_io_init,
46 .init_irq = imx6sl_init_irq,
47 .init_time = imx6sl_timer_init,
48 .init_machine = imx6sl_init_machine,
49 .dt_compat = imx6sl_dt_compat,
50 .restart = mxc_restart,
51MACHINE_END