diff options
author | Shawn Guo <shawn.guo@linaro.org> | 2013-05-02 23:24:47 -0400 |
---|---|---|
committer | Nitin Garg <nitin.garg@freescale.com> | 2014-04-16 09:00:34 -0400 |
commit | 0b3870feb52b9d3f75237f88efbec1038ece5e1f (patch) | |
tree | d588a3720ccb1f06134a239eeaf04d3fdbc0a7d8 | |
parent | b2002eb6c78d32e5af3e704b9f4801d579625c2e (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/Kconfig | 19 | ||||
-rw-r--r-- | arch/arm/mach-imx/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-imx/common.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-imx/mach-imx6sl.c | 51 |
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 | ||
819 | config 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 | |||
819 | endif | 838 | endif |
820 | 839 | ||
821 | source "arch/arm/mach-imx/devices/Kconfig" | 840 | source "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 | |||
98 | obj-$(CONFIG_SMP) += headsmp.o platsmp.o | 98 | obj-$(CONFIG_SMP) += headsmp.o platsmp.o |
99 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o | 99 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o |
100 | obj-$(CONFIG_SOC_IMX6Q) += clk-imx6q.o mach-imx6q.o | 100 | obj-$(CONFIG_SOC_IMX6Q) += clk-imx6q.o mach-imx6q.o |
101 | obj-$(CONFIG_SOC_IMX6SL) += clk-imx6sl.o mach-imx6sl.o | ||
101 | 102 | ||
102 | ifeq ($(CONFIG_PM),y) | 103 | ifeq ($(CONFIG_PM),y) |
103 | obj-$(CONFIG_SOC_IMX6Q) += pm-imx6q.o headsmp.o | 104 | obj-$(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); | |||
69 | extern int mx51_clocks_init_dt(void); | 69 | extern int mx51_clocks_init_dt(void); |
70 | extern int mx53_clocks_init_dt(void); | 70 | extern int mx53_clocks_init_dt(void); |
71 | extern int mx6q_clocks_init(void); | 71 | extern int mx6q_clocks_init(void); |
72 | extern int imx6sl_clocks_init(void); | ||
72 | extern struct platform_device *mxc_register_gpio(char *name, int id, | 73 | extern 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); |
74 | extern void mxc_set_cpu_type(unsigned int type); | 75 | extern 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 | |||
19 | static 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 | |||
26 | static 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 | |||
34 | static void __init imx6sl_timer_init(void) | ||
35 | { | ||
36 | imx6sl_clocks_init(); | ||
37 | } | ||
38 | |||
39 | static const char *imx6sl_dt_compat[] __initdata = { | ||
40 | "fsl,imx6sl", | ||
41 | NULL, | ||
42 | }; | ||
43 | |||
44 | DT_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, | ||
51 | MACHINE_END | ||