MLK-19589 imx6ulz: add imx6ulz support
authorBai Ping <ping.bai@nxp.com>
Fri, 14 Sep 2018 10:23:08 +0000 (18:23 +0800)
committerYe Li <ye.li@nxp.com>
Fri, 24 May 2019 11:28:49 +0000 (04:28 -0700)
Add i.MX6ULZ support. the i.MX6ULZ is SW compatible
with i.MX6ULL. so most code of i.MX6ULL can be reused
by i.MX6ULZ.

Signed-off-by: Bai Ping <ping.bai@nxp.com>
(cherry picked from commit 99a6bc0ccc69e1517316056e23772d7743f3ae1e)
(cherry picked from commit 7b58ff50dddec98ba6f5acae208eaf9cd99f7a6c)

arch/arm/dts/Makefile
arch/arm/dts/imx6ulz-14x14-evk.dts [new file with mode: 0644]
arch/arm/include/asm/arch-imx/cpu.h
arch/arm/include/asm/mach-imx/sys_proto.h
arch/arm/mach-imx/cpu.c
arch/arm/mach-imx/mx6/soc.c
board/freescale/mx6ullevk/mx6ullevk.c
configs/mx6ulz_14x14_evk_defconfig [new file with mode: 0644]

index 96f00f7..9ddabaf 100644 (file)
@@ -566,6 +566,7 @@ dtb-$(CONFIG_MX6ULL) += \
        imx6ull-14x14-evk-gpmi-weim.dtb \
        imx6ull-9x9-evk.dtb \
        imx6ull-colibri.dtb \
+       imx6ulz-14x14-evk.dtb
 
 dtb-$(CONFIG_MX7) += imx7d-sdb.dtb \
        imx7d-sdb-qspi.dtb \
diff --git a/arch/arm/dts/imx6ulz-14x14-evk.dts b/arch/arm/dts/imx6ulz-14x14-evk.dts
new file mode 100644 (file)
index 0000000..42bf535
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2018 NXP.
+ *
+ * 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 "imx6ull-14x14-evk.dts"
+
+/ {
+       model = "Freescale i.MX6 ULZ 14x14 EVK Board";
+       compatible = "fsl,imx6ulz-14x14-evk", "fsl,imx6ull";
+
+       backlight {
+               status = "disabled";
+       };
+
+       pxp_v4l2 {
+               status = "disabled";
+       };
+};
index c75ce60..6b0abf4 100644 (file)
@@ -18,6 +18,7 @@
 #define MXC_CPU_MX6Q           0x63
 #define MXC_CPU_MX6UL          0x64
 #define MXC_CPU_MX6ULL         0x65
+#define MXC_CPU_MX6ULZ         0x6b /* dummy ID */
 #define MXC_CPU_MX6SOLO                0x66 /* dummy */
 #define MXC_CPU_MX6SLL         0x67
 #define MXC_CPU_MX6D           0x6A
index 6b81f01..877f04f 100644 (file)
@@ -38,7 +38,7 @@
 #define is_mx6sl() (is_cpu_type(MXC_CPU_MX6SL))
 #define is_mx6solo() (is_cpu_type(MXC_CPU_MX6SOLO))
 #define is_mx6ul() (is_cpu_type(MXC_CPU_MX6UL))
-#define is_mx6ull() (is_cpu_type(MXC_CPU_MX6ULL))
+#define is_mx6ull() (is_cpu_type(MXC_CPU_MX6ULL) || is_cpu_type(MXC_CPU_MX6ULZ))
 #define is_mx6sll() (is_cpu_type(MXC_CPU_MX6SLL))
 
 #define is_mx7ulp() (is_cpu_type(MXC_CPU_MX7ULP))
index b0750b9..5325295 100644 (file)
@@ -197,6 +197,8 @@ const char *get_imx_type(u32 imxtype)
                return "6UL";   /* Ultra-Lite version of the mx6 */
        case MXC_CPU_MX6ULL:
                return "6ULL";  /* ULL version of the mx6 */
+       case MXC_CPU_MX6ULZ:
+               return "6ULZ";  /* ULL version of the mx6 */
        case MXC_CPU_MX51:
                return "51";
        case MXC_CPU_MX53:
index 810ea65..59e25c0 100644 (file)
@@ -89,6 +89,10 @@ u32 get_cpu_rev(void)
                                type = MXC_CPU_MX6D;
                }
 
+               if (type == MXC_CPU_MX6ULL) {
+                       if (readl(SRC_BASE_ADDR + 0x1c) & (1 << 6))
+                               type = MXC_CPU_MX6ULZ;
+               }
        }
        major = ((reg >> 8) & 0xff);
        if ((major >= 1) &&
index 484d56a..2f98b92 100644 (file)
@@ -395,6 +395,9 @@ int board_late_init(void)
                env_set("board_rev", "9X9");
        else
                env_set("board_rev", "14X14");
+
+       if (is_cpu_type(MXC_CPU_MX6ULZ))
+               env_set("fdt_file", "imx6ulz-14x14-evk.dtb");
 #endif
 
 #ifdef CONFIG_ENV_IS_IN_MMC
@@ -410,6 +413,8 @@ int checkboard(void)
 {
        if (is_mx6ull_9x9_evk())
                puts("Board: MX6ULL 9x9 EVK\n");
+       else if (is_cpu_type(MXC_CPU_MX6ULZ))
+               puts("Board: MX6ULZ 14x14 EVK\n");
        else
                puts("Board: MX6ULL 14x14 EVK\n");
 
diff --git a/configs/mx6ulz_14x14_evk_defconfig b/configs/mx6ulz_14x14_evk_defconfig
new file mode 100644 (file)
index 0000000..f8631a7
--- /dev/null
@@ -0,0 +1,61 @@
+CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
+CONFIG_TARGET_MX6ULL_14X14_EVK=y
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ullevk/imximage.cfg"
+CONFIG_SUPPORT_RAW_INITRD=y
+CONFIG_BOUNCE_BUFFER=y
+CONFIG_VIDEO=y
+CONFIG_BOOTDELAY=3
+CONFIG_BOARD_EARLY_INIT_F=y
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_BOOTZ=y
+# CONFIG_CMD_IMLS is not set
+CONFIG_CMD_MEMTEST=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_SF=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_BMP=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_NET=y
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="imx6ulz-14x14-evk"
+CONFIG_ENV_IS_IN_MMC=y
+CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
+CONFIG_DM_GPIO=y
+CONFIG_DM_74X164=y
+CONFIG_DM_I2C=y
+CONFIG_DM_MMC=y
+CONFIG_FSL_ESDHC=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_SPI_FLASH=y
+CONFIG_SF_DEFAULT_MODE=0
+CONFIG_SF_DEFAULT_SPEED=40000000
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_PHYLIB=y
+CONFIG_PHY_MICREL=y
+CONFIG_DM_ETH=y
+CONFIG_MII=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_IMX6=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_SPI=y
+CONFIG_DM_SPI=y
+CONFIG_SOFT_SPI=y
+CONFIG_FSL_QSPI=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_HOST_ETHER=y
+CONFIG_USB_ETHER_ASIX=y