[PATCH 3/3] ARM: i.MX: make boards selectable only when firmware files are present
Sascha Hauer
s.hauer at pengutronix.de
Wed Apr 26 02:03:54 PDT 2023
Some i.MX boards need firmware files in the source tree. Make the boards
depending on firmware files selectable only when the firmware is there
to avoid failing compilation.
Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
arch/arm/mach-imx/Kconfig | 74 ++++++++++++++++++++++++++-------------
firmware/Kconfig | 21 +++++++++++
2 files changed, 70 insertions(+), 25 deletions(-)
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index ef0e5fc561..e10e84faa7 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -555,11 +555,35 @@ if 64BIT
comment "i.MX8M boards"
+if !FIRMWARE_IMX_LPDDR4_PMU_TRAIN
+comment "LPDDR4 firmware files missing, some boards are not selectable"
+endif
+
+if !FIRMWARE_IMX_DDR4_PMU_TRAIN
+comment "DDR4 firmware files missing, some boards are not selectable"
+endif
+
+if !FIRMWARE_IMX8MM_ATF
+comment "i.MX8MM TF-A files missing, i.MX8MM boards are disabled"
+endif
+
+if !FIRMWARE_IMX8MQ_ATF
+comment "i.MX8MQ TF-A files missing, i.MX8MQ boards are disabled"
+endif
+
+if !FIRMWARE_IMX8MN_ATF
+comment "i.MX8MN TF-A files missing, i.MX8MN boards are disabled"
+endif
+
+if !FIRMWARE_IMX8MP_ATF
+comment "i.MX8MP TF-A files missing, i.MX8MP boards are disabled"
+endif
+
config MACH_INNOCOMM_WB15
bool "InnoComm WB15 (i.MX8MM) EVK"
select ARCH_IMX8MM
- select FIRMWARE_IMX_LPDDR4_PMU_TRAIN
- select FIRMWARE_IMX8MM_ATF
+ depends on FIRMWARE_IMX_LPDDR4_PMU_TRAIN
+ depends on FIRMWARE_IMX8MM_ATF
select ARM_SMCCC
select MCI_IMX_ESDHC_PBL
select IMX8M_DRAM
@@ -570,8 +594,8 @@ config MACH_INNOCOMM_WB15
config MACH_MNT_REFORM
bool "MNT Reform"
select ARCH_IMX8MQ
- select FIRMWARE_IMX_LPDDR4_PMU_TRAIN
- select FIRMWARE_IMX8MQ_ATF
+ depends on FIRMWARE_IMX_LPDDR4_PMU_TRAIN
+ depends on FIRMWARE_IMX8MQ_ATF
select ARM_SMCCC
select MCI_IMX_ESDHC_PBL
select I2C_IMX_EARLY
@@ -579,8 +603,8 @@ config MACH_MNT_REFORM
config MACH_NXP_IMX8MM_EVK
bool "NXP i.MX8MM EVK Board"
select ARCH_IMX8MM
- select FIRMWARE_IMX_LPDDR4_PMU_TRAIN
- select FIRMWARE_IMX8MM_ATF
+ depends on FIRMWARE_IMX_LPDDR4_PMU_TRAIN
+ depends on FIRMWARE_IMX8MM_ATF
select ARM_SMCCC
select MCI_IMX_ESDHC_PBL
select IMX8M_DRAM
@@ -590,9 +614,9 @@ config MACH_NXP_IMX8MM_EVK
config MACH_NXP_IMX8MN_EVK
bool "NXP i.MX8MN EVK Board"
select ARCH_IMX8MN
- select FIRMWARE_IMX_LPDDR4_PMU_TRAIN
- select FIRMWARE_IMX_DDR4_PMU_TRAIN
- select FIRMWARE_IMX8MN_ATF
+ depends on FIRMWARE_IMX_LPDDR4_PMU_TRAIN
+ depends on FIRMWARE_IMX_DDR4_PMU_TRAIN
+ depends on FIRMWARE_IMX8MN_ATF
select ARM_SMCCC
select MCI_IMX_ESDHC_PBL
select IMX8M_DRAM
@@ -601,8 +625,8 @@ config MACH_NXP_IMX8MN_EVK
config MACH_NXP_IMX8MP_EVK
bool "NXP i.MX8MP EVK Board"
select ARCH_IMX8MP
- select FIRMWARE_IMX_LPDDR4_PMU_TRAIN
- select FIRMWARE_IMX8MP_ATF
+ depends on FIRMWARE_IMX_LPDDR4_PMU_TRAIN
+ depends on FIRMWARE_IMX8MP_ATF
select ARM_SMCCC
select MCI_IMX_ESDHC_PBL
select IMX8M_DRAM
@@ -611,24 +635,24 @@ config MACH_NXP_IMX8MP_EVK
config MACH_NXP_IMX8MQ_EVK
bool "NXP i.MX8MQ EVK Board"
select ARCH_IMX8MQ
- select FIRMWARE_IMX_LPDDR4_PMU_TRAIN
- select FIRMWARE_IMX8MQ_ATF
+ depends on FIRMWARE_IMX_LPDDR4_PMU_TRAIN
+ depends on FIRMWARE_IMX8MQ_ATF
select ARM_SMCCC
select MCI_IMX_ESDHC_PBL
config MACH_PHYTEC_SOM_IMX8MQ
bool "Phytec i.MX8M SOM"
select ARCH_IMX8MQ
- select FIRMWARE_IMX_LPDDR4_PMU_TRAIN
- select FIRMWARE_IMX8MQ_ATF
+ depends on FIRMWARE_IMX_LPDDR4_PMU_TRAIN
+ depends on FIRMWARE_IMX8MQ_ATF
select ARM_SMCCC
select MCI_IMX_ESDHC_PBL
config MACH_POLYHEX_DEBIX
bool "Polyhex DEBIX Model-A/B (i.MX8MP) Board"
select ARCH_IMX8MP
- select FIRMWARE_IMX_LPDDR4_PMU_TRAIN
- select FIRMWARE_IMX8MP_ATF
+ depends on FIRMWARE_IMX_LPDDR4_PMU_TRAIN
+ depends on FIRMWARE_IMX8MP_ATF
select ARM_SMCCC
select MCI_IMX_ESDHC_PBL
select IMX8M_DRAM
@@ -637,8 +661,8 @@ config MACH_POLYHEX_DEBIX
config MACH_PROTONIC_IMX8M
bool "Protonic-Holland i.MX8Mx based boards"
select ARCH_IMX8MM
- select FIRMWARE_IMX_LPDDR4_PMU_TRAIN
- select FIRMWARE_IMX8MM_ATF
+ depends on FIRMWARE_IMX_LPDDR4_PMU_TRAIN
+ depends on FIRMWARE_IMX8MM_ATF
select ARM_SMCCC
select MCI_IMX_ESDHC_PBL
select IMX8M_DRAM
@@ -647,8 +671,8 @@ config MACH_PROTONIC_IMX8M
config MACH_TQ_MBA8MPXL
bool "TQ i.MX8MP Dual/Quad on MBa8MPxL Board"
select ARCH_IMX8MP
- select FIRMWARE_IMX_LPDDR4_PMU_TRAIN
- select FIRMWARE_IMX8MP_ATF
+ depends on FIRMWARE_IMX_LPDDR4_PMU_TRAIN
+ depends on FIRMWARE_IMX8MP_ATF
select ARM_SMCCC
select MCI_IMX_ESDHC_PBL
select IMX8M_DRAM
@@ -657,8 +681,8 @@ config MACH_TQ_MBA8MPXL
config MACH_VARISCITE_DT8MCUSTOMBOARD_IMX8MP
bool "Variscite DT8MCustomBoard with DART-MX8M-PLUS"
select ARCH_IMX8MP
- select FIRMWARE_IMX_LPDDR4_PMU_TRAIN
- select FIRMWARE_IMX8MP_ATF
+ depends on FIRMWARE_IMX_LPDDR4_PMU_TRAIN
+ depends on FIRMWARE_IMX8MP_ATF
select ARM_SMCCC
select MCI_IMX_ESDHC_PBL
select IMX8M_DRAM
@@ -667,8 +691,8 @@ config MACH_VARISCITE_DT8MCUSTOMBOARD_IMX8MP
config MACH_ZII_IMX8MQ_DEV
bool "ZII i.MX8MQ based devices"
select ARCH_IMX8MQ
- select FIRMWARE_IMX_LPDDR4_PMU_TRAIN
- select FIRMWARE_IMX8MQ_ATF
+ depends on FIRMWARE_IMX_LPDDR4_PMU_TRAIN
+ depends on FIRMWARE_IMX8MQ_ATF
select ARM_SMCCC
select MCI_IMX_ESDHC_PBL
select MACH_ZII_COMMON
diff --git a/firmware/Kconfig b/firmware/Kconfig
index a12a8f3044..0f76a836af 100644
--- a/firmware/Kconfig
+++ b/firmware/Kconfig
@@ -8,33 +8,54 @@ config EXTRA_FIRMWARE_DIR
config FIRMWARE_IMX_LPDDR4_PMU_TRAIN
bool
+ default y
+ depends on $(success,test -e $(srctree)/firmware/lpddr4_pmu_train_1d_dmem.bin)
+ depends on $(success,test -e $(srctree)/firmware/lpddr4_pmu_train_1d_imem.bin)
+ depends on $(success,test -e $(srctree)/firmware/lpddr4_pmu_train_2d_dmem.bin)
+ depends on $(success,test -e $(srctree)/firmware/lpddr4_pmu_train_2d_imem.bin)
config FIRMWARE_IMX_DDR4_PMU_TRAIN
bool
+ default y
+ depends on $(success,test -e $(srctree)/firmware/ddr4_dmem_1d.bin)
+ depends on $(success,test -e $(srctree)/firmware/ddr4_dmem_2d.bin)
+ depends on $(success,test -e $(srctree)/firmware/ddr4_imem_1d.bin)
+ depends on $(success,test -e $(srctree)/firmware/ddr4_imem_2d.bin)
config FIRMWARE_IMX8MM_ATF
bool
+ default y
+ depends on $(success,test -e $(srctree)/firmware/imx8mm-bl31.bin)
config FIRMWARE_IMX8MN_ATF
bool
+ default y
+ depends on $(success,test -e $(srctree)/firmware/imx8mn-bl31.bin)
config FIRMWARE_IMX8MP_ATF
bool
+ default y
+ depends on $(success,test -e $(srctree)/firmware/imx8mp-bl31.bin)
config FIRMWARE_IMX8MQ_ATF
bool
+ default y
+ depends on $(success,test -e $(srctree)/firmware/imx8mq-bl31.bin)
config FIRMWARE_IMX8MM_OPTEE
bool "install OP-TEE on i.MX8MM boards"
depends on FIRMWARE_IMX8MM_ATF && PBL_OPTEE
+ depends on $(success,test -e $(srctree)/firmware/imx8mm-bl32.bin)
config FIRMWARE_IMX8MN_OPTEE
bool "install OP-TEE on i.MX8MN boards"
depends on FIRMWARE_IMX8MN_ATF && PBL_OPTEE
+ depends on $(success,test -e $(srctree)/firmware/imx8mn-bl32.bin)
config FIRMWARE_IMX8MP_OPTEE
bool "install OP-TEE on i.MX8MP boards"
depends on FIRMWARE_IMX8MP_ATF && PBL_OPTEE
+ depends on $(success,test -e $(srctree)/firmware/imx8mp-bl32.bin)
config FIRMWARE_CCBV2_OPTEE
bool
--
2.39.2
More information about the barebox
mailing list