MLK-16753-5 imx: mx6qsabreauto: add optee support
authorPeng Fan <peng.fan@nxp.com>
Thu, 9 Nov 2017 01:04:01 +0000 (09:04 +0800)
committerYe Li <ye.li@nxp.com>
Thu, 29 Apr 2021 07:56:06 +0000 (00:56 -0700)
Add defconfigs.
Enable Trustzone.
Update env to runtime boot OP-TEE.
To 6QP AUTO, TZASC not enabled now.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
(cherry picked from commit 62277d7e521894b079911fd8e8b26507ff03c018)
(cherry picked from commit b7be942860a15feb0bd660b1922d4ed9306f1184)
(cherry picked from commit 56d2100c6b3c483d063ce70ad7ce9d6da378ada6)
(cherry picked from commit 44242fe2c59c99936552cefd42b576feb51a25d7)
(cherry picked from commit 3a0b8a0a7a1b9286a3a4f5247970d15234b0632f)
(cherry picked from commit a8cdc36c02bb0b61257c0384e02acb0fed9399d7)

board/freescale/mx6sabreauto/imximage.cfg
board/freescale/mx6sabreauto/mx6dl.cfg
board/freescale/mx6sabreauto/mx6sabreauto.c
board/freescale/mx6sabreauto/mx6solo.cfg
board/freescale/mx6sabreauto/plugin.S
configs/mx6dlsabreauto_optee_defconfig [new file with mode: 0644]
configs/mx6qpsabreauto_optee_defconfig [new file with mode: 0644]
configs/mx6qsabreauto_optee_defconfig [new file with mode: 0644]
configs/mx6solosabreauto_optee_defconfig [new file with mode: 0644]
include/configs/mx6sabre_common.h

index f76e33b..4b4d360 100644 (file)
@@ -51,6 +51,11 @@ CSF CONFIG_CSF_SIZE
  *     Address   absolute address of the register
  *     value     value to be stored in the register
  */
+#ifdef CONFIG_IMX_OPTEE
+SET_BIT 4 0x20c4070 0x3c00000
+DATA 4 0x20e0024 0x00000003
+CHECK_BITS_SET 4 0x20e0024 0x3
+#endif
 DATA 4 0x020e0798 0x000C0000
 DATA 4 0x020e0758 0x00000000
 DATA 4 0x020e0588 0x00000030
index 69ca255..41a8bbc 100644 (file)
@@ -52,6 +52,11 @@ CSF CONFIG_CSF_SIZE
  *     Address   absolute address of the register
  *     value     value to be stored in the register
  */
+#ifdef CONFIG_IMX_OPTEE
+SET_BIT 4 0x20c4070 0x3c00000
+DATA 4 0x20e0024 0x00000003
+CHECK_BITS_SET 4 0x20e0024 0x3
+#endif
 DATA 4 0x020e0774 0x000C0000
 DATA 4 0x020e0754 0x00000000
 DATA 4 0x020e04ac 0x00000030
index f11cc29..a57f1ca 100644 (file)
@@ -910,6 +910,11 @@ int board_late_init(void)
        add_board_boot_modes(board_boot_modes);
 #endif
 
+       env_set("tee", "no");
+#ifdef CONFIG_IMX_OPTEE
+       env_set("tee", "yes");
+#endif
+
 #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
        env_set("board_name", "SABREAUTO");
 
index 14c1014..956d546 100644 (file)
@@ -52,6 +52,11 @@ CSF CONFIG_CSF_SIZE
  *     Address   absolute address of the register
  *     value     value to be stored in the register
  */
+#ifdef CONFIG_IMX_OPTEE
+SET_BIT 4 0x20c4070 0x3c00000
+DATA 4 0x20e0024 0x00000003
+CHECK_BITS_SET 4 0x20e0024 0x3
+#endif
 DATA 4, 0x020e0774, 0x000C0000
 DATA 4, 0x020e0754, 0x00000000
 DATA 4, 0x020e04ac, 0x00000030
index 8e8f410..6301ae1 100644 (file)
        str r1, [r0, #0x07c]
        ldr r1, =0x00000FFF
        str r1, [r0, #0x080]
+
+#ifdef CONFIG_IMX_OPTEE
+#ifndef CONFIG_MX6QP
+       ldr r0, =0x20e0024
+       ldr r1, =0x3
+       str r1, [r0]
+#endif
+#endif
 .endm
 
 .macro imx6_qos_setting
diff --git a/configs/mx6dlsabreauto_optee_defconfig b/configs/mx6dlsabreauto_optee_defconfig
new file mode 100644 (file)
index 0000000..a374dbf
--- /dev/null
@@ -0,0 +1,76 @@
+CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
+CONFIG_MX6DL=y
+CONFIG_TARGET_MX6DLSABREAUTO=y
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_ENV_SIZE=0x2000
+CONFIG_ENV_OFFSET=0xE0000
+CONFIG_SYS_MMC_ENV_DEV=2
+CONFIG_DM_VIDEO=y
+# CONFIG_VIDEO_BPP8 is not set
+# CONFIG_VIDEO_BPP32 is not set
+CONFIG_SYS_WHITE_ON_BLACK=y
+CONFIG_VIDEO_IPUV3=y
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6sabreauto/mx6dl.cfg"
+CONFIG_IMX_OPTEE=y
+CONFIG_ENV_IS_IN_MMC=y
+CONFIG_BOOTDELAY=3
+# CONFIG_CONSOLE_MUX is not set
+CONFIG_SYS_CONSOLE_IS_IN_ENV=y
+CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
+CONFIG_SUPPORT_RAW_INITRD=y
+CONFIG_BOUNCE_BUFFER=y
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_BOOTZ=y
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_MEMTEST=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_PART=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_MXC_UART=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_CI_UDC=y
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_USB_HOST_ETHER=y
+CONFIG_USB_ETHER_ASIX=y
+CONFIG_USB_GADGET_MANUFACTURER="FSL"
+CONFIG_USB_GADGET_VENDOR_NUM=0x0525
+CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
+
+# CONFIG_VIDEO_SW_CURSOR is not set
+# CONFIG_OF_LIBFDT=y
+
+CONFIG_DEFAULT_DEVICE_TREE="imx6dl-sabreauto"
+CONFIG_OF_CONTROL=y
+CONFIG_DM_GPIO=y
+CONFIG_DM_PCA953X=y
+CONFIG_DM_I2C=y
+CONFIG_DM_MMC=y
+CONFIG_FSL_USDHC=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_IMX6=y
+CONFIG_DM_PMIC=y
+CONFIG_DM_PMIC_PFUZE100=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_PFUZE100=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_DM_ETH=y
+CONFIG_PHYLIB=y
+CONFIG_MII=y
diff --git a/configs/mx6qpsabreauto_optee_defconfig b/configs/mx6qpsabreauto_optee_defconfig
new file mode 100644 (file)
index 0000000..bc262de
--- /dev/null
@@ -0,0 +1,76 @@
+CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
+CONFIG_MX6QP=y
+CONFIG_TARGET_MX6QPSABREAUTO=y
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_ENV_SIZE=0x2000
+CONFIG_ENV_OFFSET=0xE0000
+CONFIG_SYS_MMC_ENV_DEV=2
+CONFIG_DM_VIDEO=y
+# CONFIG_VIDEO_BPP8 is not set
+# CONFIG_VIDEO_BPP32 is not set
+CONFIG_SYS_WHITE_ON_BLACK=y
+CONFIG_VIDEO_IPUV3=y
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6sabreauto/mx6qp.cfg"
+CONFIG_IMX_OPTEE=y
+CONFIG_ENV_IS_IN_MMC=y
+CONFIG_BOOTDELAY=3
+# CONFIG_CONSOLE_MUX is not set
+CONFIG_SYS_CONSOLE_IS_IN_ENV=y
+CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
+CONFIG_SUPPORT_RAW_INITRD=y
+CONFIG_BOUNCE_BUFFER=y
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_BOOTZ=y
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_MEMTEST=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_PART=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_MXC_UART=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_CI_UDC=y
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_USB_HOST_ETHER=y
+CONFIG_USB_ETHER_ASIX=y
+CONFIG_USB_GADGET_MANUFACTURER="FSL"
+CONFIG_USB_GADGET_VENDOR_NUM=0x0525
+CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
+
+# CONFIG_VIDEO_SW_CURSOR is not set
+# CONFIG_OF_LIBFDT=y
+
+CONFIG_DEFAULT_DEVICE_TREE="imx6qp-sabreauto"
+CONFIG_OF_CONTROL=y
+CONFIG_DM_GPIO=y
+CONFIG_DM_PCA953X=y
+CONFIG_DM_I2C=y
+CONFIG_DM_MMC=y
+CONFIG_FSL_USDHC=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_IMX6=y
+CONFIG_DM_PMIC=y
+CONFIG_DM_PMIC_PFUZE100=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_PFUZE100=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_DM_ETH=y
+CONFIG_PHYLIB=y
+CONFIG_MII=y
diff --git a/configs/mx6qsabreauto_optee_defconfig b/configs/mx6qsabreauto_optee_defconfig
new file mode 100644 (file)
index 0000000..09d586c
--- /dev/null
@@ -0,0 +1,76 @@
+CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
+CONFIG_MX6Q=y
+CONFIG_TARGET_MX6QSABREAUTO=y
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_ENV_SIZE=0x2000
+CONFIG_ENV_OFFSET=0xE0000
+CONFIG_SYS_MMC_ENV_DEV=2
+CONFIG_DM_VIDEO=y
+# CONFIG_VIDEO_BPP8 is not set
+# CONFIG_VIDEO_BPP32 is not set
+CONFIG_SYS_WHITE_ON_BLACK=y
+CONFIG_VIDEO_IPUV3=y
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6sabreauto/imximage.cfg"
+CONFIG_IMX_OPTEE=y
+CONFIG_ENV_IS_IN_MMC=y
+CONFIG_BOOTDELAY=3
+# CONFIG_CONSOLE_MUX is not set
+CONFIG_SYS_CONSOLE_IS_IN_ENV=y
+CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
+CONFIG_SUPPORT_RAW_INITRD=y
+CONFIG_BOUNCE_BUFFER=y
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_BOOTZ=y
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_MEMTEST=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_PART=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_MXC_UART=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_CI_UDC=y
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_USB_HOST_ETHER=y
+CONFIG_USB_ETHER_ASIX=y
+CONFIG_USB_GADGET_MANUFACTURER="FSL"
+CONFIG_USB_GADGET_VENDOR_NUM=0x0525
+CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
+
+# CONFIG_VIDEO_SW_CURSOR is not set
+# CONFIG_OF_LIBFDT=y
+
+CONFIG_DEFAULT_DEVICE_TREE="imx6q-sabreauto"
+CONFIG_OF_CONTROL=y
+CONFIG_DM_GPIO=y
+CONFIG_DM_PCA953X=y
+CONFIG_DM_I2C=y
+CONFIG_DM_MMC=y
+CONFIG_FSL_USDHC=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_IMX6=y
+CONFIG_DM_PMIC=y
+CONFIG_DM_PMIC_PFUZE100=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_PFUZE100=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_DM_ETH=y
+CONFIG_PHYLIB=y
+CONFIG_MII=y
diff --git a/configs/mx6solosabreauto_optee_defconfig b/configs/mx6solosabreauto_optee_defconfig
new file mode 100644 (file)
index 0000000..b4f7781
--- /dev/null
@@ -0,0 +1,76 @@
+CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
+CONFIG_MX6S=y
+CONFIG_TARGET_MX6SOLOSABREAUTO=y
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_ENV_SIZE=0x2000
+CONFIG_ENV_OFFSET=0xE0000
+CONFIG_SYS_MMC_ENV_DEV=2
+CONFIG_DM_VIDEO=y
+# CONFIG_VIDEO_BPP8 is not set
+# CONFIG_VIDEO_BPP32 is not set
+CONFIG_SYS_WHITE_ON_BLACK=y
+CONFIG_VIDEO_IPUV3=y
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6sabreauto/mx6solo.cfg"
+CONFIG_IMX_OPTEE=y
+CONFIG_ENV_IS_IN_MMC=y
+CONFIG_BOOTDELAY=3
+# CONFIG_CONSOLE_MUX is not set
+CONFIG_SYS_CONSOLE_IS_IN_ENV=y
+CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
+CONFIG_SUPPORT_RAW_INITRD=y
+CONFIG_BOUNCE_BUFFER=y
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_BOOTZ=y
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_MEMTEST=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_PART=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_MXC_UART=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_CI_UDC=y
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_USB_HOST_ETHER=y
+CONFIG_USB_ETHER_ASIX=y
+CONFIG_USB_GADGET_MANUFACTURER="FSL"
+CONFIG_USB_GADGET_VENDOR_NUM=0x0525
+CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
+
+# CONFIG_VIDEO_SW_CURSOR is not set
+# CONFIG_OF_LIBFDT=y
+
+CONFIG_DEFAULT_DEVICE_TREE="imx6dl-sabreauto"
+CONFIG_OF_CONTROL=y
+CONFIG_DM_GPIO=y
+CONFIG_DM_PCA953X=y
+CONFIG_DM_I2C=y
+CONFIG_DM_MMC=y
+CONFIG_FSL_USDHC=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_IMX6=y
+CONFIG_DM_PMIC=y
+CONFIG_DM_PMIC_PFUZE100=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_PFUZE100=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_DM_ETH=y
+CONFIG_PHYLIB=y
+CONFIG_MII=y
index 4eb409c..bec665f 100644 (file)
                "\0" \
                "initrd_addr=0x12C00000\0" \
                "initrd_high=0xffffffff\0" \
-               "bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};\0" \
-
+               "bootcmd_mfg=run mfgtool_args; " \
+                       "if test ${tee} = yes; then " \
+                               "bootm ${tee_addr} ${initrd_addr} ${fdt_addr}; " \
+                       "else " \
+                               "bootz ${loadaddr} ${initrd_addr} ${fdt_addr}; " \
+                       "fi;\0"
 
 #ifdef CONFIG_SUPPORT_EMMC_BOOT
 #define EMMC_ENV \
@@ -85,7 +89,9 @@
         */
 #define CONFIG_EXTRA_ENV_SETTINGS \
        CONFIG_MFG_ENV_SETTINGS \
+       TEE_ENV \
        "fdt_addr=0x18000000\0" \
+       "tee_addr=0x20000000\0" \
        "fdt_high=0xffffffff\0"   \
        "console=" CONSOLE_DEV "\0" \
        "bootargs=console=" CONSOLE_DEV ",115200 ubi.mtd=6 "  \
                "\0" \
        "bootcmd=nand read ${loadaddr} 0x4000000 0xc00000;"\
                "nand read ${fdt_addr} 0x5000000 0x100000;"\
-               "bootz ${loadaddr} - ${fdt_addr}\0"
+               "if test ${tee} = yes; then " \
+                       "nand read ${tee_addr} 0x4000000 0x400000;"\
+                       "bootm ${tee_addr} - ${fdt_addr};" \
+               "else " \
+                       "bootz ${loadaddr} - ${fdt_addr};" \
+               "fi\0"
 
 #elif defined(CONFIG_SATA_BOOT)
 
 #define CONFIG_EXTRA_ENV_SETTINGS \
                CONFIG_MFG_ENV_SETTINGS \
+               TEE_ENV \
                "image=zImage\0" \
                "fdt_file=undefined\0" \
                "fdt_addr=0x18000000\0" \
                "fdt_high=0xffffffff\0"   \
+               "tee_addr=0x20000000\0" \
+               "tee_file=undefined\0" \
                "findfdt="\
                        "if test $fdt_file = undefined; then " \
                                "if test $board_name = SABREAUTO && test $board_rev = MX6QP; then " \
                                "fi; " \
                        "fi;\0" \
                "findtee="\
+                       "if test $tee_file = undefined; then " \
+                               "if test $board_name = SABREAUTO && test $board_rev = MX6QP; then " \
+                                       "setenv tee_file uTee-6qpauto; fi; " \
+                               "if test $board_name = SABREAUTO && test $board_rev = MX6Q; then " \
+                                       "setenv tee_file uTee-6qauto; fi; " \
+                               "if test $board_name = SABREAUTO && test $board_rev = MX6DL; then " \
+                                       "setenv tee_file uTee-6dlauto; fi; " \
+                               "if test $board_name = SABRESD && test $board_rev = MX6QP; then " \
+                                       "setenv tee_file uTee-6qpsdb; fi; " \
+                               "if test $board_name = SABRESD && test $board_rev = MX6Q; then " \
+                                       "setenv tee_file uTee-6qsdb; fi; " \
+                               "if test $board_name = SABRESD && test $board_rev = MX6DL; then " \
+                                       "setenv tee_file uTee-6dlsdb; fi; " \
+                               "if test $tee_file = undefined; then " \
+                                       "echo WARNING: Could not determine tee to use; fi; " \
+                       "fi;\0" \
                "bootargs=console=" CONSOLE_DEV ",115200 \0"\
                "bootargs_sata=setenv bootargs ${bootargs} " \
                        "root=/dev/sda2 rootwait rw \0" \
                "bootcmd_sata=run bootargs_sata; sata init; " \
-                       "run findfdt;" \
+                       "run findfdt; run findtee;" \
                        "fatload sata 0:1 ${loadaddr} ${image}; " \
                        "fatload sata 0:1 ${fdt_addr} ${fdt_file}; " \
-                       "bootz ${loadaddr} - ${fdt_addr} \0" \
+                       "if test ${tee} = yes; then " \
+                               "fatload sata 0:1 ${tee_addr} ${tee_file}; " \
+                               "bootm ${tee_addr} - ${fdt_addr}; " \
+                       "else " \
+                               "bootz ${loadaddr} - ${fdt_addr}; " \
+                       "fi \0"\
                "bootcmd=run bootcmd_sata \0"
 
 #else
 
 #define CONFIG_EXTRA_ENV_SETTINGS \
        CONFIG_MFG_ENV_SETTINGS \
+       TEE_ENV \
        "epdc_waveform=epdc_splash.bin\0" \
        "script=boot.scr\0" \
        "image=zImage\0" \
        "fdt_file=undefined\0" \
        "fdt_addr=0x18000000\0" \
+       "tee_addr=0x20000000\0" \
+       "tee_file=undefined\0" \
        "boot_fdt=try\0" \
        "ip_dyn=yes\0" \
        "console=" CONSOLE_DEV "\0" \
                "load mmc ${mmcdev}:${mmcpart} ${loadaddr} boot/${image}\0" \
        "loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file} || " \
                "load mmc ${mmcdev}:${mmcpart} ${fdt_addr} boot/${fdt_file}\0" \
+       "loadtee=load mmc ${mmcdev}:${mmcpart} ${tee_addr} ${tee_file} || " \
+               "load mmc ${mmcdev}:${mmcpart} ${tee_addr} boot/${tee_file}\0" \
        "mmcboot=echo Booting from mmc ...; " \
                "run mmcargs; " \
-               "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
-                       "if run loadfdt; then " \
-                               "bootz ${loadaddr} - ${fdt_addr}; " \
-                       "else " \
-                               "if test ${boot_fdt} = try; then " \
-                                       "bootz; " \
+               "if test ${tee} = yes; then " \
+                       "run loadfdt; run loadtee; bootm ${tee_addr} - ${fdt_addr}; " \
+               "else " \
+                       "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+                               "if run loadfdt; then " \
+                                       "bootz ${loadaddr} - ${fdt_addr}; " \
                                "else " \
-                                       "echo WARN: Cannot load the DT; " \
+                                       "if test ${boot_fdt} = try; then " \
+                                               "bootz; " \
+                                       "else " \
+                                               "echo WARN: Cannot load the DT; " \
+                                       "fi; " \
                                "fi; " \
-                       "fi; " \
-               "else " \
-                       "bootz; " \
+                       "else " \
+                               "bootz; " \
+                       "fi;" \
                "fi;\0" \
        "netargs=setenv bootargs console=${console},${baudrate} ${smp} " \
                "root=/dev/nfs " \
                        "setenv get_cmd tftp; " \
                "fi; " \
                "${get_cmd} ${image}; " \
-               "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
-                       "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
-                               "bootz ${loadaddr} - ${fdt_addr}; " \
-                       "else " \
-                               "if test ${boot_fdt} = try; then " \
-                                       "bootz; " \
+               "if test ${tee} = yes; then " \
+                       "${get_cmd} ${tee_addr} ${tee_file}; " \
+                       "${get_cmd} ${fdt_addr} ${fdt_file}; " \
+                       "bootm ${tee_addr} - ${fdt_addr}; " \
+               "else " \
+                       "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+                               "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
+                                       "bootz ${loadaddr} - ${fdt_addr}; " \
                                "else " \
-                                       "echo WARN: Cannot load the DT; " \
+                                       "if test ${boot_fdt} = try; then " \
+                                               "bootz; " \
+                                       "else " \
+                                               "echo WARN: Cannot load the DT; " \
+                                       "fi; " \
                                "fi; " \
+                       "else " \
+                               "bootz; " \
                        "fi; " \
-               "else " \
-                       "bootz; " \
                "fi;\0" \
                "findfdt="\
                        "if test $fdt_file = undefined; then " \
                                "if test $fdt_file = undefined; then " \
                                        "echo WARNING: Could not determine dtb to use; fi; " \
                        "fi;\0" \
+               "findtee="\
+                       "if test $tee_file = undefined; then " \
+                               "if test $board_name = SABREAUTO && test $board_rev = MX6QP; then " \
+                                       "setenv tee_file uTee-6qpauto; fi; " \
+                               "if test $board_name = SABREAUTO && test $board_rev = MX6Q; then " \
+                                       "setenv tee_file uTee-6qauto; fi; " \
+                               "if test $board_name = SABREAUTO && test $board_rev = MX6DL; then " \
+                                       "setenv tee_file uTee-6dlauto; fi; " \
+                               "if test $board_name = SABRESD && test $board_rev = MX6QP; then " \
+                                       "setenv tee_file uTee-6qpsdb; fi; " \
+                               "if test $board_name = SABRESD && test $board_rev = MX6Q; then " \
+                                       "setenv tee_file uTee-6qsdb; fi; " \
+                               "if test $board_name = SABRESD && test $board_rev = MX6DL; then " \
+                                       "setenv tee_file uTee-6dlsdb; fi; " \
+                               "if test $tee_file = undefined; then " \
+                                       "echo WARNING: Could not determine tee to use; fi; " \
+                       "fi;\0" \
 
 #define CONFIG_BOOTCOMMAND \
        "run findfdt;" \
+       "run findtee;" \
        "mmc dev ${mmcdev};" \
        "if mmc rescan; then " \
                "if run loadbootscript; then " \