From 2cbca9a255674649730b3f440a6142cf16030267 Mon Sep 17 00:00:00 2001 From: Peter Griffin Date: Fri, 25 Oct 2019 11:04:01 +0200 Subject: [PATCH] optee: Add support for optee imx fork to imx8mqevk optee imx fork like most other imx forked components is more fully featured for imx devices and supports things like CAAM accleration. Signed-off-by: Peter Griffin --- conf/machine/include/imx-base.inc | 15 +++++++++++++++ recipes-bsp/imx-atf/imx-atf_2.0.bb | 9 +++++++++ recipes-bsp/imx-mkimage/imx-boot_0.2.bb | 15 ++++++++++++++- 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/conf/machine/include/imx-base.inc b/conf/machine/include/imx-base.inc index 7e5437d3..459b98d4 100644 --- a/conf/machine/include/imx-base.inc +++ b/conf/machine/include/imx-base.inc @@ -266,6 +266,11 @@ PREFERRED_VERSION_libdrm_mx6 ?= "2.4.91.imx" PREFERRED_VERSION_libdrm_mx7 ?= "2.4.91.imx" PREFERRED_VERSION_libdrm_mx8 ?= "2.4.91.imx" +# Use i.MX optee Version +PREFERRED_VERSION_optee-os_mx8 ?= "3.2.0.imx" +PREFERRED_VERSION_optee-client_mx8 ?= "3.2.0.imx" +PREFERRED_VERSION_optee-test_mx8 ?= "3.2.0.imx" + # Handle default kernel IMX_DEFAULT_KERNEL = "linux-imx" IMX_DEFAULT_KERNEL_mxs = "linux-fslc" @@ -287,19 +292,29 @@ SOC_DEFAULT_IMAGE_FSTYPES_mxs = "uboot-mxsboot-sdcard wic.gz" # Do not update fstab file when using wic images WIC_CREATE_EXTRA_ARGS ?= "--no-fstab-update" +OPTEE_BOOT_IMAGE = "uTee" +OPTEE_BOOT_IMAGE_aarch64 = "" + +SDCARD_ROOTFS ?= "${IMGDEPLOYDIR}/${IMAGE_NAME}.rootfs.ext4" + IMAGE_FSTYPES ?= "${SOC_DEFAULT_IMAGE_FSTYPES}" IMAGE_BOOT_FILES ?= " \ ${KERNEL_IMAGETYPE} \ ${@make_dtb_boot_files(d)} \ + ${@bb.utils.contains('MACHINE_FEATURES', 'optee', '${OPTEE_BOOT_IMAGE}', '', d)} \ " ### wic default support +OPTEE_WKS_FILE_DEPENDS = "optee-os" +OPTEE_WKS_FILE_DEPENDS_aarch64 = "" + WKS_FILE_DEPENDS ?= " \ virtual/bootloader \ \ e2fsprogs-native \ bmap-tools-native \ + ${@bb.utils.contains('MACHINE_FEATURES', 'optee', '${OPTEE_WKS_FILE_DEPENDS}', '', d)} \ " WKS_FILE_DEPENDS_mx8 += "imx-boot" diff --git a/recipes-bsp/imx-atf/imx-atf_2.0.bb b/recipes-bsp/imx-atf/imx-atf_2.0.bb index 6a1ed74d..15122520 100644 --- a/recipes-bsp/imx-atf/imx-atf_2.0.bb +++ b/recipes-bsp/imx-atf/imx-atf_2.0.bb @@ -30,16 +30,25 @@ EXTRA_OEMAKE += " \ PLAT=${PLATFORM} \ " +BUILD_OPTEE = "${@bb.utils.contains('MACHINE_FEATURES', 'optee', 'true', 'false', d)}" + do_compile() { # Clear LDFLAGS to avoid the option -Wl recognize issue unset LDFLAGS oe_runmake bl31 + if ${BUILD_OPTEE}; then + oe_runmake clean BUILD_BASE=build-optee + oe_runmake BUILD_BASE=build-optee SPD=opteed bl31 + fi } do_install[noexec] = "1" do_deploy() { install -Dm 0644 ${S}/build/${PLATFORM}/release/bl31.bin ${DEPLOYDIR}/${BOOT_TOOLS}/bl31-${PLATFORM}.bin + if ${BUILD_OPTEE}; then + install -m 0644 ${S}/build-optee/${PLATFORM}/release/bl31.bin ${DEPLOYDIR}/${BOOT_TOOLS}/bl31-${PLATFORM}.bin-optee + fi } addtask deploy after do_compile diff --git a/recipes-bsp/imx-mkimage/imx-boot_0.2.bb b/recipes-bsp/imx-mkimage/imx-boot_0.2.bb index 04e8b11e..7518c911 100644 --- a/recipes-bsp/imx-mkimage/imx-boot_0.2.bb +++ b/recipes-bsp/imx-mkimage/imx-boot_0.2.bb @@ -14,6 +14,7 @@ DEPENDS += " \ firmware-imx \ ${IMX_EXTRA_FIRMWARE} \ imx-atf \ + ${@bb.utils.contains('MACHINE_FEATURES', 'optee', 'optee-os', '', d)} \ " DEPENDS_append_mx8m = " dtc-native" BOOT_NAME = "imx-boot" @@ -30,6 +31,7 @@ do_compile[depends] += " \ virtual/bootloader:do_deploy \ ${@' '.join('%s:do_deploy' % r for r in '${IMX_EXTRA_FIRMWARE}'.split() )} \ imx-atf:do_deploy \ + ${@bb.utils.contains('MACHINE_FEATURES', 'optee', 'optee-os:do_deploy', '', d)} \ " SC_FIRMWARE_NAME ?= "scfw_tcm.bin" @@ -39,7 +41,7 @@ ATF_MACHINE_NAME_mx8qm = "bl31-imx8qm.bin" ATF_MACHINE_NAME_mx8qxp = "bl31-imx8qx.bin" ATF_MACHINE_NAME_mx8mq = "bl31-imx8mq.bin" ATF_MACHINE_NAME_mx8mm = "bl31-imx8mm.bin" -ATF_MACHINE_NAME_append = "${@bb.utils.contains('COMBINED_FEATURES', 'optee', '-optee', '', d)}" +ATF_MACHINE_NAME_append = "${@bb.utils.contains('MACHINE_FEATURES', 'optee', '-optee', '', d)}" UBOOT_NAME = "u-boot-${MACHINE}.bin-${UBOOT_CONFIG}" BOOT_CONFIG_MACHINE = "${BOOT_NAME}-${MACHINE}-${UBOOT_CONFIG}.bin" @@ -52,6 +54,8 @@ SOC_TARGET_mx8qxp = "iMX8QX" SOC_TARGET_mx8mq = "iMX8M" SOC_TARGET_mx8mm = "iMX8MM" +DEPLOY_OPTEE = "${@bb.utils.contains('MACHINE_FEATURES', 'optee', 'true', 'false', d)}" + IMXBOOT_TARGETS ?= \ "${@bb.utils.contains('UBOOT_CONFIG', 'fspi', 'flash_flexspi', \ bb.utils.contains('UBOOT_CONFIG', 'nand', 'flash_nand', \ @@ -99,6 +103,9 @@ compile_mx8x() { do_compile() { compile_${SOC_FAMILY} # mkimage for i.MX8 + if ${DEPLOY_OPTEE}; then + cp ${DEPLOY_DIR_IMAGE}/tee.bin ${BOOT_STAGING} + fi for target in ${IMXBOOT_TARGETS}; do bbnote "building ${SOC_TARGET} - ${target}" make SOC=${SOC_TARGET} dtbs=${UBOOT_DTB_NAME} ${target} @@ -141,6 +148,12 @@ do_deploy() { deploy_${SOC_FAMILY} # copy the tool mkimage to deploy path and sc fw, dcd and uboot install -m 0644 ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} + + # copy tee.bin to deploy path + if ${DEPLOY_OPTEE}; then + install -m 0644 ${DEPLOY_DIR_IMAGE}/tee.bin ${DEPLOYDIR}/${BOOT_TOOLS} + fi + # copy makefile (soc.mak) for reference install -m 0644 ${BOOT_STAGING}/soc.mak ${DEPLOYDIR}/${BOOT_TOOLS} # copy the generated boot image to deploy path -- 2.40.1