Commit fd1ef4006a3edb02654ec9df49dfcd67ea04bdf0

Authored by Bai Ping
Committed by Ye Li
1 parent 7f8558cdff

MLK-17082-02 imx: add optee support for imx6sl

Add defconfig for tee support;
  Enable the TZASC support;
  Add env config for tee support.

Signed-off-by: Bai Ping <ping.bai@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
(cherry picked from commit 3535868b89df84d3e6554114f7867f9ef908ff01)
(cherry picked from commit 82a0b53092cdc0b025749f4d8f1cdfcc66e07db7)
(cherry picked from commit dc1602c2d7f9d1ff021e46a9187bbcb10f172a71)
(cherry picked from commit 181ae93e7b804db6dca4a0d2c3aaf547413428bb)

Showing 4 changed files with 125 additions and 22 deletions Side-by-side Diff

board/freescale/mx6slevk/imximage.cfg
... ... @@ -52,6 +52,11 @@
52 52 DATA 4 0x020c407c 0xffffffff
53 53 DATA 4 0x020c4080 0xffffffff
54 54  
  55 +#ifdef CONFIG_IMX_OPTEE
  56 +DATA 4 0x020e0024 0x00000001
  57 +CHECK_BITS_SET 4 0x020e0024 0x1
  58 +#endif
  59 +
55 60 DATA 4 0x020e0344 0x00003030
56 61 DATA 4 0x020e0348 0x00003030
57 62 DATA 4 0x020e034c 0x00003030
board/freescale/mx6slevk/mx6slevk.c
... ... @@ -701,6 +701,11 @@
701 701  
702 702 int board_late_init(void)
703 703 {
  704 + env_set("tee", "no");
  705 +#ifdef CONFIG_IMX_OPTEE
  706 + env_set("tee", "yes");
  707 +#endif
  708 +
704 709 #ifdef CONFIG_ENV_IS_IN_MMC
705 710 board_late_mmc_env_init();
706 711 #endif
configs/mx6slevk_optee_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_ARCH_MX6=y
  3 +CONFIG_TARGET_MX6SLEVK=y
  4 +CONFIG_ENV_SIZE=0x2000
  5 +CONFIG_ENV_OFFSET=0xE0000
  6 +CONFIG_DM_GPIO=y
  7 +CONFIG_NR_DRAM_BANKS=1
  8 +# CONFIG_CMD_BMODE is not set
  9 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6slevk/imximage.cfg"
  10 +CONFIG_SUPPORT_RAW_INITRD=y
  11 +CONFIG_BOUNCE_BUFFER=y
  12 +CONFIG_BOARD_EARLY_INIT_F=y
  13 +CONFIG_IMX_OPTEE=y
  14 +CONFIG_BOOTDELAY=3
  15 +CONFIG_HUSH_PARSER=y
  16 +CONFIG_CMD_BOOTZ=y
  17 +# CONFIG_CMD_IMLS is not set
  18 +# CONFIG_CMD_FLASH is not set
  19 +CONFIG_CMD_MEMTEST=y
  20 +CONFIG_CMD_GPIO=y
  21 +CONFIG_CMD_I2C=y
  22 +CONFIG_CMD_MMC=y
  23 +CONFIG_CMD_PART=y
  24 +CONFIG_CMD_USB=y
  25 +# CONFIG_CMD_SETEXPR is not set
  26 +CONFIG_CMD_DHCP=y
  27 +CONFIG_CMD_MII=y
  28 +CONFIG_CMD_PING=y
  29 +CONFIG_CMD_CACHE=y
  30 +CONFIG_CMD_EXT2=y
  31 +CONFIG_CMD_EXT4=y
  32 +CONFIG_CMD_EXT4_WRITE=y
  33 +CONFIG_CMD_FAT=y
  34 +CONFIG_CMD_FS_GENERIC=y
  35 +CONFIG_OF_CONTROL=y
  36 +CONFIG_DEFAULT_DEVICE_TREE="imx6sl-evk"
  37 +CONFIG_ENV_IS_IN_MMC=y
  38 +CONFIG_SYS_RELOC_GD_ENV_ADDR=y
  39 +CONFIG_DM=y
  40 +CONFIG_DM_I2C=y
  41 +CONFIG_DM_MMC=y
  42 +CONFIG_FSL_USDHC=y
  43 +CONFIG_MTD=y
  44 +CONFIG_DM_SPI_FLASH=y
  45 +CONFIG_SF_DEFAULT_MODE=0
  46 +CONFIG_SF_DEFAULT_SPEED=20000000
  47 +CONFIG_SPI_FLASH_STMICRO=y
  48 +CONFIG_PHYLIB=y
  49 +CONFIG_MII=y
  50 +CONFIG_PINCTRL=y
  51 +CONFIG_PINCTRL_IMX6=y
  52 +CONFIG_DM_PMIC=y
  53 +CONFIG_DM_PMIC_PFUZE100=y
  54 +CONFIG_DM_REGULATOR=y
  55 +CONFIG_DM_REGULATOR_PFUZE100=y
  56 +CONFIG_DM_REGULATOR_FIXED=y
  57 +CONFIG_DM_REGULATOR_GPIO=y
  58 +CONFIG_SPI=y
  59 +CONFIG_DM_SPI=y
  60 +CONFIG_MXC_SPI=y
  61 +CONFIG_DM_THERMAL=y
  62 +CONFIG_USB=y
  63 +CONFIG_DM_USB=y
  64 +CONFIG_USB_STORAGE=y
  65 +CONFIG_USB_HOST_ETHER=y
  66 +CONFIG_USB_ETHER_ASIX=y
  67 +CONFIG_DM_ETH=y
  68 +CONFIG_FEC_MXC=y
  69 +CONFIG_PHY_SMSC=y
include/configs/mx6slevk.h
... ... @@ -58,18 +58,26 @@
58 58 "\0" \
59 59 "initrd_addr=0x83800000\0" \
60 60 "initrd_high=0xffffffff\0" \
61   - "bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};\0" \
  61 + "bootcmd_mfg=run mfgtool_args;" \
  62 + "if test ${tee} = yes; then " \
  63 + "bootm ${tee_addr} ${initrd_addr} ${fdt_addr}; " \
  64 + "else " \
  65 + "bootz ${loadaddr} ${initrd_addr} ${fdt_addr}; " \
  66 + "fi;\0"
62 67  
63 68 #define CONFIG_EXTRA_ENV_SETTINGS \
64 69 CONFIG_MFG_ENV_SETTINGS \
  70 + TEE_ENV \
65 71 "epdc_waveform=epdc_splash.bin\0" \
66 72 "script=boot.scr\0" \
67 73 "image=zImage\0" \
68 74 "console=ttymxc0\0" \
69 75 "fdt_high=0xffffffff\0" \
70 76 "initrd_high=0xffffffff\0" \
71   - "fdt_file=imx6sl-evk.dtb\0" \" \
  77 + "fdt_file=undefined\0" \" \
72 78 "fdt_addr=0x83000000\0" \
  79 + "tee_addr=0x84000000\0" \
  80 + "tee_file=uTee-6slevk\0" \
73 81 "boot_fdt=try\0" \
74 82 "ip_dyn=yes\0" \
75 83 "mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \
76 84  
77 85  
78 86  
79 87  
... ... @@ -84,20 +92,25 @@
84 92 "source\0" \
85 93 "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
86 94 "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
  95 + "loadtee=fatload mmc ${mmcdev}:${mmcpart} ${tee_addr} ${tee_file}\0" \
87 96 "mmcboot=echo Booting from mmc ...; " \
88 97 "run mmcargs; " \
89   - "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
90   - "if run loadfdt; then " \
91   - "bootz ${loadaddr} - ${fdt_addr}; " \
92   - "else " \
93   - "if test ${boot_fdt} = try; then " \
94   - "bootz; " \
  98 + "if test ${tee} = yes; then " \
  99 + "run loadfdt; run loadtee; bootm ${tee_addr} - ${fdt_addr}; " \
  100 + "else " \
  101 + "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
  102 + "if run loadfdt; then " \
  103 + "bootz ${loadaddr} - ${fdt_addr}; " \
95 104 "else " \
96   - "echo WARN: Cannot load the DT; " \
  105 + "if test ${boot_fdt} = try; then " \
  106 + "bootz; " \
  107 + "else " \
  108 + "echo WARN: Cannot load the DT; " \
  109 + "fi; " \
97 110 "fi; " \
  111 + "else " \
  112 + "bootz; " \
98 113 "fi; " \
99   - "else " \
100   - "bootz; " \
101 114 "fi;\0" \
102 115 "netargs=setenv bootargs console=${console},${baudrate} " \
103 116 "root=/dev/nfs " \
104 117  
105 118  
106 119  
... ... @@ -110,21 +123,32 @@
110 123 "setenv get_cmd tftp; " \
111 124 "fi; " \
112 125 "${get_cmd} ${image}; " \
113   - "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
114   - "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
115   - "bootz ${loadaddr} - ${fdt_addr}; " \
116   - "else " \
117   - "if test ${boot_fdt} = try; then " \
118   - "bootz; " \
  126 + "if test ${tee} = yes; then " \
  127 + "${get_cmd} ${tee_addr} ${tee_file}; " \
  128 + "${get_cmd} ${fdt_addr} ${fdt_file}; " \
  129 + "bootm ${tee_addr} - ${fdt_addr}; " \
  130 + "else " \
  131 + "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
  132 + "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
  133 + "bootz ${loadaddr} - ${fdt_addr}; " \
119 134 "else " \
120   - "echo WARN: Cannot load the DT; " \
  135 + "if test ${boot_fdt} = try; then " \
  136 + "bootz; " \
  137 + "else " \
  138 + "echo WARN: Cannot load the DT; " \
  139 + "fi; " \
121 140 "fi; " \
122   - "fi; " \
123   - "else " \
124   - "bootz; " \
125   - "fi;\0"
  141 + "else " \
  142 + "bootz; " \
  143 + "fi;" \
  144 + "fi;\0" \
  145 + "findfdt="\
  146 + "if test $fdt_file = undefined; then " \
  147 + "setenv fdt_file imx6sl-evk.dtb; " \
  148 + "fi;\0" \
126 149  
127 150 #define CONFIG_BOOTCOMMAND \
  151 + "run findfdt;" \
128 152 "mmc dev ${mmcdev};" \
129 153 "mmc dev ${mmcdev}; if mmc rescan; then " \
130 154 "if run loadbootscript; then " \