ARM: imx: add i.mx6ul msl support
authorFrank Li <Frank.Li@freescale.com>
Thu, 9 Jul 2015 18:09:41 +0000 (02:09 +0800)
committerShawn Guo <shawnguo@kernel.org>
Tue, 14 Jul 2015 07:06:14 +0000 (15:06 +0800)
i.MX6UL is a new SOC, add MSL support

Signed-off-by: Frank Li <Frank.Li@freescale.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm/mach-imx/Kconfig
arch/arm/mach-imx/Makefile
arch/arm/mach-imx/cpu.c
arch/arm/mach-imx/mach-imx6ul.c [new file with mode: 0644]
arch/arm/mach-imx/mxc.h

index 573536f1bb739200e8a234a3a4844c5b591aa0ff..8ceda2844c4ffee32405d85a48c8bdcd86272591 100644 (file)
@@ -548,6 +548,14 @@ config SOC_IMX6SX
        help
          This enables support for Freescale i.MX6 SoloX processor.
 
+config SOC_IMX6UL
+       bool "i.MX6 UltraLite support"
+       select PINCTRL_IMX6UL
+       select SOC_IMX6
+
+       help
+         This enables support for Freescale i.MX6 UltraLite processor.
+
 config SOC_IMX7D
        bool "i.MX7 Dual support"
        select PINCTRL_IMX7D
index 37c502ac959508cc4b02c36d24c0086f753c2fa0..fb689d813b098464655d45a0cb52b1fb3d150858 100644 (file)
@@ -83,6 +83,7 @@ endif
 obj-$(CONFIG_SOC_IMX6Q) += mach-imx6q.o
 obj-$(CONFIG_SOC_IMX6SL) += mach-imx6sl.o
 obj-$(CONFIG_SOC_IMX6SX) += mach-imx6sx.o
+obj-$(CONFIG_SOC_IMX6UL) += mach-imx6ul.o
 obj-$(CONFIG_SOC_IMX7D) += mach-imx7d.o
 
 ifeq ($(CONFIG_SUSPEND),y)
index a7fa92a7b1d7122e5edfda24247b3b1afb52bc18..5b0f752d5507fe337408cfb9abc3a079beb458dd 100644 (file)
@@ -130,6 +130,9 @@ struct device * __init imx_soc_device_init(void)
        case MXC_CPU_IMX6Q:
                soc_id = "i.MX6Q";
                break;
+       case MXC_CPU_IMX6UL:
+               soc_id = "i.MX6UL";
+               break;
        case MXC_CPU_IMX7D:
                soc_id = "i.MX7D";
                break;
diff --git a/arch/arm/mach-imx/mach-imx6ul.c b/arch/arm/mach-imx/mach-imx6ul.c
new file mode 100644 (file)
index 0000000..f206506
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2015 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_platform.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+
+#include "common.h"
+
+static void __init imx6ul_init_machine(void)
+{
+       struct device *parent;
+
+       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, NULL);
+       imx_anatop_init();
+}
+
+static void __init imx6ul_init_irq(void)
+{
+       imx_init_revision_from_anatop();
+       imx_src_init();
+       irqchip_init();
+}
+
+static const char *imx6ul_dt_compat[] __initconst = {
+       "fsl,imx6ul",
+       NULL,
+};
+
+DT_MACHINE_START(IMX6UL, "Freescale i.MX6 Ultralite (Device Tree)")
+       .init_irq       = imx6ul_init_irq,
+       .init_machine   = imx6ul_init_machine,
+       .dt_compat      = imx6ul_dt_compat,
+MACHINE_END
index c4436d4fd6fdb6be76ca1613027ee424b752113a..a5b1af6d7441e262a49bd19d2611adfdc3364b14 100644 (file)
@@ -38,6 +38,7 @@
 #define MXC_CPU_IMX6DL         0x61
 #define MXC_CPU_IMX6SX         0x62
 #define MXC_CPU_IMX6Q          0x63
+#define MXC_CPU_IMX6UL         0x64
 #define MXC_CPU_IMX7D          0x72
 
 #define IMX_DDR_TYPE_LPDDR2            1
@@ -165,6 +166,11 @@ static inline bool cpu_is_imx6sx(void)
        return __mxc_cpu_type == MXC_CPU_IMX6SX;
 }
 
+static inline bool cpu_is_imx6ul(void)
+{
+       return __mxc_cpu_type == MXC_CPU_IMX6UL;
+}
+
 static inline bool cpu_is_imx6q(void)
 {
        return __mxc_cpu_type == MXC_CPU_IMX6Q;