common.mk: add support for fTPM in repo setup

Add support for compiling OP-TEE with the fTPM TA from the repo setup.
OPTEE_FTPM_PATH points to the new git optee_ftpm and MS_TPM_20_REF_PATH
points to the ms-tpm-20-ref, both checked out by repo.

Firmware-TPM support is enabled with MEASURED_BOOT_FTPM=y

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
diff --git a/common.mk b/common.mk
index cbe5557..f3eaf99 100644
--- a/common.mk
+++ b/common.mk
@@ -37,7 +37,9 @@
 OPTEE_TEST_PATH			?= $(ROOT)/optee_test
 OPTEE_EXAMPLES_PATH		?= $(ROOT)/optee_examples
 OPTEE_RUST_PATH			?= $(ROOT)/optee_rust
+OPTEE_FTPM_PATH			?= $(ROOT)/optee_ftpm
 BUILDROOT_TARGET_ROOT		?= $(ROOT)/out-br/target
+MS_TPM_20_REF_PATH		?= $(ROOT)/ms-tpm-20-ref
 
 # default high verbosity. slow uarts shall specify lower if prefered
 CFG_TEE_CORE_LOG_LEVEL		?= 3
@@ -276,6 +278,10 @@
 DEFCONFIG_XEN=--br-defconfig build/br-ext/configs/xen.conf
 endif
 
+ifeq ($(MEASURED_BOOT_FTPM),y)
+DEFCONFIG_TSS ?= --br-defconfig build/br-ext/configs/tss
+endif
+
 BR2_PER_PACKAGE_DIRECTORIES ?= y
 BR2_PACKAGE_LIBOPENSSL ?= y
 BR2_PACKAGE_MMC_UTILS ?= y
@@ -521,13 +527,8 @@
 endif
 ifeq ($(COMPILE_S_USER),64)
 OPTEE_OS_TA_DEV_KIT_DIR	?= $(OPTEE_OS_PATH)/out/arm/export-ta_arm64
-ifeq ($(MEASURED_BOOT_FTPM),y)
-# The fTPM TA can only be built for 32-bit so enable the 32-bit libraries as well
-OPTEE_OS_COMMON_EXTRA_FLAGS	+= CFG_USER_TA_TARGETS="ta_arm64 ta_arm32"
-else
 OPTEE_OS_COMMON_EXTRA_FLAGS	+= CFG_USER_TA_TARGETS=ta_arm64
 endif
-endif
 
 ifeq ($(COMPILE_S_KERNEL),64)
 OPTEE_OS_COMMON_EXTRA_FLAGS	+= CFG_ARM64_core=y
@@ -572,6 +573,11 @@
 	CFG_IN_TREE_EARLY_TAS="$(CFG_IN_TREE_EARLY_TAS)"
 
 .PHONY: optee-os-common
+ifeq ($(MEASURED_BOOT_FTPM),y)
+OPTEE_OS_COMMON_EXTRA_FLAGS += EARLY_TA_PATHS=$(OPTEE_FTPM_PATH)/out/bc50d971-d4c9-42c4-82cb-343fb7f37896.stripped.elf
+optee-os-common: ftpm
+endif
+
 optee-os-common:
 	$(MAKE) -C $(OPTEE_OS_PATH) $(OPTEE_OS_COMMON_FLAGS)
 
@@ -587,26 +593,23 @@
 # fTPM Rules
 ################################################################################
 
-# The fTPM implementation is based on ARM32 architecture whereas the rest of the
-# system is built to run on 64-bit mode (COMPILE_S_USER = 64). Therefore set
-# TA_DEV_KIT_DIR manually to the arm32 OPTEE toolkit rather than relying on
-# OPTEE_OS_TA_DEV_KIT_DIR variable.
 FTPM_FLAGS ?= 						\
-	TA_CPU=cortex-a9				\
-	TA_CROSS_COMPILE=$(AARCH32_CROSS_COMPILE)	\
-	TA_DEV_KIT_DIR=$(OPTEE_OS_PATH)/out/arm/export-ta_arm32 \
-	CFG_TA_DEBUG=y CFG_TEE_TA_LOG_LEVEL=4 CFG_TA_MEASURED_BOOT=y
+	CROSS_COMPILE=$(CROSS_COMPILE_S_USER)	\
+	TA_DEV_KIT_DIR=$(OPTEE_OS_TA_DEV_KIT_DIR) \
+	CFG_MS_TPM_20_REF=$(MS_TPM_20_REF_PATH) \
+	CFG_TA_MEASURED_BOOT=y $(if $(filter 1,$(DEBUG)),CFG_TA_DEBUG=y) \
+	O=out
 
 .PHONY: ftpm
 ftpm:
 ifeq ($(MEASURED_BOOT_FTPM),y)
 ftpm: optee-os-devkit
-	$(FTPM_FLAGS) $(MAKE) -C $(FTPM_PATH)
+	$(FTPM_FLAGS) $(MAKE) -C $(OPTEE_FTPM_PATH)
 endif
 
 .PHONY: ftpm-clean
 ftpm-clean:
 ifeq ($(MEASURED_BOOT_FTPM),y)
 ftpm-clean:
-	-$(FTPM_FLAGS) $(MAKE) -C $(FTPM_PATH) clean
+	-$(FTPM_FLAGS) $(MAKE) -C $(OPTEE_FTPM_PATH) clean
 endif