diff options
Diffstat (limited to 'make_helpers')
-rw-r--r-- | make_helpers/build_macros.mk | 58 | ||||
-rw-r--r-- | make_helpers/defaults.mk | 3 | ||||
-rw-r--r-- | make_helpers/tbbr/tbbr_tools.mk | 2 |
3 files changed, 58 insertions, 5 deletions
diff --git a/make_helpers/build_macros.mk b/make_helpers/build_macros.mk index 7531f6d80..a4fbc5ac2 100644 --- a/make_helpers/build_macros.mk +++ b/make_helpers/build_macros.mk @@ -101,7 +101,7 @@ endef # FIP_ADD_PAYLOAD appends the command line arguments required by fiptool # to package a new payload. Optionally, it adds the dependency on this payload # $(1) = payload filename (i.e. bl31.bin) -# $(2) = command line option for the specified payload (i.e. --bl31) +# $(2) = command line option for the specified payload (i.e. --soc-fw) # $(3) = fip target dependency (optional) (i.e. bl31) define FIP_ADD_PAYLOAD $(eval FIP_ARGS += $(2) $(1)) @@ -121,14 +121,15 @@ endef # using a build option. It also adds a dependency on the image file, aborting # the build if the file does not exist. # $(1) = build option to specify the image filename (SCP_BL2, BL33, etc) -# $(2) = command line option for fiptool (scp_bl2, bl33, etc) +# $(2) = command line option for fiptool (--scp-fw, --nt-fw, etc) # Example: -# $(eval $(call FIP_ADD_IMG,BL33,--bl33)) +# $(eval $(call FIP_ADD_IMG,BL33,--nt-fw)) define FIP_ADD_IMG CRT_DEPS += check_$(1) FIP_DEPS += check_$(1) $(call FIP_ADD_PAYLOAD,$(value $(1)),$(2)) +.PHONY: check_$(1) check_$(1): $$(if $(value $(1)),,$$(error "Platform '${PLAT}' requires $(1). Please set $(1) to point to the right file")) endef @@ -154,14 +155,15 @@ endef # FWU_FIP_ADD_IMG allows the platform to pack a binary image in the FWU FIP # $(1) build option to specify the image filename (BL2U, NS_BL2U, etc) -# $(2) command line option for fiptool (bl2u, ns_bl2u, etc) +# $(2) command line option for fiptool (--ap-fwu-cfg, --fwu, etc) # Example: -# $(eval $(call FWU_FIP_ADD_IMG,BL2U,--bl2u)) +# $(eval $(call FWU_FIP_ADD_IMG,BL2U,--ap-fwu-cfg)) define FWU_FIP_ADD_IMG FWU_CRT_DEPS += check_$(1) FWU_FIP_DEPS += check_$(1) $(call FWU_FIP_ADD_PAYLOAD,$(value $(1)),$(2)) +.PHONY: check_$(1) check_$(1): $$(if $(value $(1)),,$$(error "Platform '${PLAT}' requires $(1). Please set $(1) to point to the right file")) endef @@ -336,3 +338,49 @@ $(eval $(call MAKE_TOOL_ARGS,$(1),$(BIN),$(2))) endef +define SOURCES_TO_DTBS + $(notdir $(patsubst %.dts,%.dtb,$(filter %.dts,$(1)))) +endef + +# MAKE_FDT macro defines the targets and options to build each FDT binary +# Arguments: (none) +define MAKE_FDT + $(eval DTB_BUILD_DIR := ${BUILD_PLAT}/fdts) + $(eval DTBS := $(addprefix $(DTB_BUILD_DIR)/,$(call SOURCES_TO_DTBS,$(FDT_SOURCES)))) + $(eval TEMP_DTB_DIRS := $(sort $(dir ${DTBS}))) + # The $(dir ) function leaves a trailing / on the directory names + # Rip off the / to match directory names with make rule targets. + $(eval DTB_DIRS := $(patsubst %/,%,$(TEMP_DTB_DIRS))) + +$(eval $(foreach objd,${DTB_DIRS},$(call MAKE_PREREQ_DIR,${objd},${BUILD_DIR}))) + +fdt_dirs: ${DTB_DIRS} + +endef + +# MAKE_DTB generate the Flattened device tree binary (device tree binary) +# $(1) = output directory +# $(2) = input dts +define MAKE_DTB + +$(eval DOBJ := $(1)/$(patsubst %.dts,%.dtb,$(notdir $(2)))) +$(eval DEP := $(patsubst %.dtb,%.d,$(DOBJ))) + +$(DOBJ): $(2) | fdt_dirs + @echo " DTC $$<" + $$(Q)$$(DTC) $$(DTC_FLAGS) -d $(DEP) -o $$@ $$< + +-include $(DEP) + +endef + +# MAKE_DTBS builds flattened device tree sources +# $(1) = output directory +# $(2) = list of flattened device tree source files +define MAKE_DTBS + $(eval DOBJS := $(filter %.dts,$(2))) + $(eval REMAIN := $(filter-out %.dts,$(2))) + $(eval $(foreach obj,$(DOBJS),$(call MAKE_DTB,$(1),$(obj)))) + + $(and $(REMAIN),$(error Unexpected s present: $(REMAIN))) +endef diff --git a/make_helpers/defaults.mk b/make_helpers/defaults.mk index eb1bb0aea..a80a4915a 100644 --- a/make_helpers/defaults.mk +++ b/make_helpers/defaults.mk @@ -27,6 +27,9 @@ ARM_GIC_ARCH := 2 # Base commit to perform code check on BASE_COMMIT := origin/master +# Execute BL2 at EL3 +BL2_AT_EL3 := 0 + # By default, consider that the platform may release several CPUs out of reset. # The platform Makefile is free to override this value. COLD_BOOT_SINGLE_CPU := 0 diff --git a/make_helpers/tbbr/tbbr_tools.mk b/make_helpers/tbbr/tbbr_tools.mk index 6e6e27396..cda8d7266 100644 --- a/make_helpers/tbbr/tbbr_tools.mk +++ b/make_helpers/tbbr/tbbr_tools.mk @@ -64,7 +64,9 @@ $(if ${NON_TRUSTED_WORLD_KEY},$(eval $(call CERT_ADD_CMD_OPT,${NON_TRUSTED_WORLD $(if ${BL2},$(eval $(call CERT_ADD_CMD_OPT,${BL2},--tb-fw,true)),\ $(eval $(call CERT_ADD_CMD_OPT,$(call IMG_BIN,2),--tb-fw,true))) $(eval $(call CERT_ADD_CMD_OPT,${BUILD_PLAT}/tb_fw.crt,--tb-fw-cert)) +ifeq (${BL2_AT_EL3}, 0) $(eval $(call FIP_ADD_PAYLOAD,${BUILD_PLAT}/tb_fw.crt,--tb-fw-cert)) +endif # Add the SCP_BL2 CoT (key cert + img cert + image) ifneq (${SCP_BL2},) |