Commit fd421f74dbd570dba8233f84780a3a0e91e2101e

Authored by Ji Luo
1 parent 33a2b5d57a

MA-14051 Enable trusty for imx8q xen

Open configs to add trusty os support for imx8q xen
build. The rpmb keyslot package must be checked and
copied to secure memory before trusty os boot.

Change-Id: I66201783fa8439f2685377c10f257f064057dcfa
Signed-off-by: Ji Luo <ji.luo@nxp.com>

Showing 7 changed files with 146 additions and 4 deletions Side-by-side Diff

arch/arm/mach-imx/imx8/Kconfig
... ... @@ -40,6 +40,9 @@
40 40 config SMC_FUSE
41 41 bool "Call fuse commands through SMC"
42 42  
  43 +config IMX8_TRUSTY_XEN
  44 + bool "Support Trusty Xen feature"
  45 +
43 46 choice
44 47 prompt "MX8 board select"
45 48 optional
arch/arm/mach-imx/imx8/parser.c
1 1 // SPDX-License-Identifier: GPL-2.0+
2 2 /*
3   - * Copyright 2018 NXP
  3 + * Copyright 2018-2019 NXP
4 4 */
5 5 #include <common.h>
6 6 #include <spl.h>
... ... @@ -282,6 +282,15 @@
282 282 */
283 283 #if defined(CONFIG_IMX_TRUSTY_OS) && !defined(CONFIG_DUAL_BOOTLOADER)
284 284 ret = check_rpmb_blob(mmc);
  285 +#endif
  286 +#if defined(CONFIG_IMX8_TRUSTY_XEN)
  287 + struct mmc *rpmb_mmc;
  288 +
  289 + rpmb_mmc = find_mmc_device(0);
  290 + if (ret = mmc_init(rpmb_mmc))
  291 + printf("mmc init failed %s\n", __func__);
  292 + else
  293 + ret = check_rpmb_blob(rpmb_mmc);
285 294 #endif
286 295 }
287 296 return ret;
configs/imx8qm_mek_androidauto_xen_defconfig
... ... @@ -9,6 +9,7 @@
9 9 CONFIG_DM=y
10 10 CONFIG_DM_WARN=n
11 11 CONFIG_DM_DEVICE_REMOVE=n
  12 +CONFIG_IMX_TRUSTY_OS=y
12 13  
13 14 CONFIG_DM_SERIAL=y
14 15 CONFIG_FSL_LPUART=n
... ... @@ -76,7 +77,7 @@
76 77 CONFIG_CMD_IMPORTENV=n
77 78 CONFIG_CMD_EDITENV=n
78 79 CONFIG_CMD_ENV_EXISTS=n
79   -CONFIG_CMD_MEMORY=n
  80 +CONFIG_CMD_MEMORY=y
80 81 CONFIG_CMD_CRC32=n
81 82 CONFIG_CMD_DM=n
82 83 CONFIG_CMD_LOADB=n
... ... @@ -118,4 +119,7 @@
118 119 CONFIG_SPL_LOAD_FIT=y
119 120 CONFIG_SPL_MMC_SUPPORT=y
120 121 CONFIG_SPL_GPIO_SUPPORT=y
  122 +
  123 +CONFIG_SPL_ENV_SUPPORT=y
  124 +CONFIG_SPL_LIBDISK_SUPPORT=y
configs/imx8qm_mek_spl_trusty_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_ARCH_IMX8=y
  3 +CONFIG_DEFAULT_DEVICE_TREE="fsl-imx8qm-mek"
  4 +CONFIG_TARGET_IMX8QM_MEK=y
  5 +CONFIG_SYS_TEXT_BASE=0x80020000
  6 +CONFIG_CMD_IMPORTENV=n
  7 +CONFIG_SYS_MALLOC_F_LEN=0x2000
  8 +CONFIG_DM=y
  9 +CONFIG_CMD_CACHE=y
  10 +
  11 +CONFIG_DM_SERIAL=y
  12 +CONFIG_FSL_LPUART=y
  13 +CONFIG_OF_CONTROL=y
  14 +CONFIG_DM_I2C=y
  15 +# CONFIG_DM_I2C_COMPAT is not set
  16 +CONFIG_SYS_I2C_IMX_LPI2C=y
  17 +CONFIG_CMD_I2C=y
  18 +
  19 +CONFIG_SPL=y
  20 +CONFIG_SPL_GPIO_SUPPORT=y
  21 +CONFIG_SPL_MMC_SUPPORT=y
  22 +CONFIG_FIT=y
  23 +CONFIG_SPL_LOAD_FIT=y
  24 +CONFIG_SPL_BOARD_INIT=y
  25 +CONFIG_SPL_TINY_MEMSET=y
  26 +CONFIG_SPL_OF_CONTROL=y
  27 +
  28 +CONFIG_USB_XHCI_HCD=y
  29 +CONFIG_USB_XHCI_IMX8=y
  30 +
  31 +CONFIG_DM_USB=y
  32 +
  33 +CONFIG_USB=y
  34 +CONFIG_USB_TCPC=y
  35 +
  36 +CONFIG_USB_GADGET=y
  37 +#CONFIG_CI_UDC=y
  38 +CONFIG_USB_GADGET_DOWNLOAD=y
  39 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  40 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  41 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  42 +
  43 +CONFIG_USB_CDNS3=y
  44 +CONFIG_USB_CDNS3_GADGET=y
  45 +CONFIG_USB_GADGET_DUALSPEED=y
  46 +
  47 +CONFIG_CMD_GPIO=y
  48 +CONFIG_DM_GPIO=y
  49 +CONFIG_DM_PCA953X=y
  50 +CONFIG_BOOTDELAY=3
  51 +CONFIG_IMX_BOOTAUX=y
  52 +CONFIG_FS_FAT=y
  53 +CONFIG_CMD_FAT=y
  54 +CONFIG_CMD_MMC=y
  55 +CONFIG_DM_MMC=y
  56 +CONFIG_MMC_IO_VOLTAGE=y
  57 +CONFIG_MMC_UHS_SUPPORT=y
  58 +CONFIG_MMC_HS400_SUPPORT=y
  59 +CONFIG_EFI_PARTITION=y
  60 +CONFIG_FSL_FSPI=y
  61 +CONFIG_DM_SPI=y
  62 +CONFIG_DM_SPI_FLASH=y
  63 +CONFIG_SPI_FLASH=y
  64 +CONFIG_SPI_FLASH_4BYTES_ADDR=y
  65 +CONFIG_SPI_FLASH_STMICRO=y
  66 +CONFIG_CMD_SF=y
  67 +
  68 +CONFIG_CMD_PING=y
  69 +CONFIG_CMD_DHCP=y
  70 +CONFIG_CMD_MII=y
  71 +CONFIG_DM_ETH=y
  72 +# CONFIG_EFI_LOADER is not set
  73 +
  74 +CONFIG_DM_REGULATOR=y
  75 +CONFIG_DM_REGULATOR_FIXED=y
  76 +CONFIG_DM_REGULATOR_GPIO=y
  77 +
  78 +CONFIG_VIDEO=y
  79 +CONFIG_VIDEO_IMX_HDP_LOAD=y
  80 +
  81 +CONFIG_PINCTRL=y
  82 +CONFIG_PINCTRL_IMX8=y
  83 +
  84 +CONFIG_POWER_DOMAIN=y
  85 +CONFIG_IMX8_POWER_DOMAIN=y
  86 +
  87 +CONFIG_DM_THERMAL=y
  88 +CONFIG_IMX_SC_THERMAL=y
  89 +
  90 +CONFIG_ENV_IS_IN_MMC=y
  91 +
  92 +CONFIG_SMC_FUSE=y
  93 +CONFIG_CMD_MEMTEST=y
  94 +CONFIG_IMX8_TRUSTY_XEN=y
  95 +
  96 +CONFIG_SPL_ENV_SUPPORT=y
  97 +CONFIG_SPL_LIBDISK_SUPPORT=y
include/configs/imx8qm_mek.h
... ... @@ -437,6 +437,8 @@
437 437 #include "imx8qm_mek_android.h"
438 438 #elif defined (CONFIG_ANDROID_AUTO_SUPPORT)
439 439 #include "imx8qm_mek_android_auto.h"
  440 +#elif defined (CONFIG_IMX8_TRUSTY_XEN)
  441 +#include "imx8qm_mek_trusty_xen.h"
440 442 #endif
441 443  
442 444 #endif /* __IMX8QM_MEK_H */
include/configs/imx8qm_mek_trusty_xen.h
  1 +/*
  2 + * Copyright 2019 NXP
  3 + *
  4 + * SPDX-License-Identifier: GPL-2.0+
  5 + */
  6 +
  7 +#ifndef __IMX8QM_MEK_TRUSTY_XEN_H
  8 +#define __IMX8QM_MEK_TRUSTY_XEN_H
  9 +
  10 +#ifdef CONFIG_SPL_BUILD
  11 +
  12 +#undef CONFIG_BLK
  13 +#define CONFIG_AVB_SUPPORT
  14 +#define AVB_RPMB
  15 +#define KEYSLOT_HWPARTITION_ID 2
  16 +#define KEYSLOT_BLKS 0x3FFF
  17 +#define AVB_AB_I_UNDERSTAND_LIBAVB_AB_IS_DEPRECATED
  18 +
  19 +#define CONFIG_SUPPORT_EMMC_RPMB
  20 +
  21 +#endif
  22 +
  23 +#endif
lib/avb/fsl/fsl_avbkey.c
1 1 /*
2 2 * Copyright (C) 2016 Freescale Semiconductor, Inc.
3   - * Copyright 2017 NXP
  3 + * Copyright 2017-2019 NXP
4 4 * SPDX-License-Identifier: GPL-2.0+
5 5 *
6 6 */
... ... @@ -71,6 +71,9 @@
71 71 struct blk_desc *dev_desc = NULL;
72 72  
73 73 struct mmc *mmc;
  74 +#ifdef CONFIG_IMX8_TRUSTY_XEN
  75 + mmcc = 0;
  76 +#endif
74 77 mmc = find_mmc_device(mmcc);
75 78 if (!mmc) {
76 79 printf("boota: cannot find '%d' mmc device\n", mmcc);
... ... @@ -702,7 +705,8 @@
702 705 #endif /* AVB_RPMB */
703 706  
704 707 #ifdef CONFIG_SPL_BUILD
705   -#if defined(CONFIG_IMX_TRUSTY_OS) && !defined(CONFIG_AVB_ATX)
  708 +#if defined (CONFIG_IMX8_TRUSTY_XEN) || \
  709 + (defined(CONFIG_IMX_TRUSTY_OS) && !defined(CONFIG_AVB_ATX))
706 710 int check_rpmb_blob(struct mmc *mmc)
707 711 {
708 712 int ret = 0;