# SPDX-License-Identifier: GPL-2.0 firmware-$(CONFIG_FIRMWARE_IMX_LPDDR4_PMU_TRAIN) += \ lpddr4_pmu_train_1d_dmem.bin \ lpddr4_pmu_train_1d_imem.bin \ lpddr4_pmu_train_2d_dmem.bin \ lpddr4_pmu_train_2d_imem.bin firmware-$(CONFIG_FIRMWARE_IMX_DDR4_PMU_TRAIN) += \ ddr4_dmem_1d.bin \ ddr4_dmem_2d.bin \ ddr4_imem_1d.bin \ ddr4_imem_2d.bin firmware-$(CONFIG_FIRMWARE_IMX8MM_ATF) += imx8mm-bl31.bin firmware-$(CONFIG_FIRMWARE_IMX8MN_ATF) += imx8mn-bl31.bin firmware-$(CONFIG_FIRMWARE_IMX8MP_ATF) += imx8mp-bl31.bin firmware-$(CONFIG_FIRMWARE_IMX8MQ_ATF) += imx8mq-bl31.bin firmware-$(CONFIG_ARCH_RK3568) += rk3568-bl31.bin firmware-$(CONFIG_ARCH_RK3568_OPTEE) += rk3568-op-tee.bin firmware-$(CONFIG_DRIVER_NET_FSL_FMAN) += fsl_fman_ucode_ls1046_r1.0_106_4_18.bin firmware-$(CONFIG_ARCH_LAYERSCAPE_PPA) += ppa-ls1046a.bin firmware-$(CONFIG_FIRMWARE_CCBV2_OPTEE) += ccbv2_optee.bin # Create $(fwdir) from $(CONFIG_EXTRA_FIRMWARE_DIR) -- if it doesn't have a # leading /, it's relative to $(srctree). fwdir := $(subst $(quote),,$(CONFIG_EXTRA_FIRMWARE_DIR)) fwdir := $(addprefix $(srctree)/,$(filter-out /%,$(fwdir)))$(filter /%,$(fwdir)) obj-pbl-y := $(addsuffix .gen.o, $(firmware-y)) FWNAME = $(patsubst $(obj)/%.gen.S,%,$@) FWSTR = $(subst /,_,$(subst .,_,$(subst -,_,$(FWNAME)))) ASM_ALIGN = $(if $(CONFIG_64BIT),3,2) filechk_fwbin = { \ echo "/* Generated by $(src)/Makefile */" ;\ echo " .section .rodata.$(FWSTR)" ;\ echo " .p2align $(ASM_ALIGN)" ;\ echo ".global _fw_$(FWSTR)_start" ;\ echo "_fw_$(FWSTR)_start:" ;\ echo " .incbin \"$(fwdir)/$(FWNAME)\"" ;\ echo ".global _fw_$(FWSTR)_end" ;\ echo "_fw_$(FWSTR)_end:" ;\ } $(obj)/%.gen.S: FORCE $(call filechk,fwbin) # The .o files depend on the binaries directly; the .S files don't. $(patsubst %,$(obj)/%.gen.o, $(obj-pbl-y)): $(obj)/%.gen.o: $(fwdir)/% # The same for pbl: $(patsubst %,$(obj)/%.gen.pbl.o, $(obj-pbl-y)): $(obj)/%.gen.pbl.o: $(fwdir)/% obj-pbl-y += $(patsubst %,%.gen.o, $(fw-external-y)) targets := $(patsubst $(obj)/%,%, \ $(shell find $(obj) -name \*.gen.S 2>/dev/null)) # just to build a built-in.o. Otherwise compilation fails when no # firmware is built. obj- += dummy.o