From 4c2f0b918c65b1de934800bcc82e571ca4f96b86 Mon Sep 17 00:00:00 2001 From: Bram Vlerick Date: Tue, 16 Aug 2022 09:05:17 +0200 Subject: [PATCH] package/freescale-imx/firmware-imx: allow ddr firmware version override Add support for selecting a specific version of the DDR firmware version. For example Variscite's imx8mp-var-dart SOM requires the "_202006" version of the lpddr4_pmu_train_* binaries. Signed-off-by: Bram Vlerick Signed-off-by: Thomas Petazzoni --- package/freescale-imx/firmware-imx/Config.in | 10 +++++ .../firmware-imx/firmware-imx.mk | 39 +++++++++++++------ 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/package/freescale-imx/firmware-imx/Config.in b/package/freescale-imx/firmware-imx/Config.in index 06c4d8036c..0c1913e227 100644 --- a/package/freescale-imx/firmware-imx/Config.in +++ b/package/freescale-imx/firmware-imx/Config.in @@ -82,6 +82,16 @@ config BR2_PACKAGE_FIRMWARE_IMX_DDR3 endchoice # DDR training FW +config BR2_PACKAGE_FIRMWARE_IMX_DDR_VERSION + string "DDR3/DDR4/LPDDR4 firmware version" + # Needed for backward compatibility, the package used to + # unconditionally use HW version 201810 when DDR3/DDR4 was + # selected + default "201810" if BR2_PACKAGE_FIRMWARE_IMX_DDR3 || BR2_PACKAGE_FIRMWARE_IMX_DDR4 + help + Use a specific version of the imx ddr binaries. Leaving this + field empty will select the default version. + config BR2_PACKAGE_FIRMWARE_IMX_IMEM_LEN hex "(LP)DDR IMEM padding length" default 0x8000 diff --git a/package/freescale-imx/firmware-imx/firmware-imx.mk b/package/freescale-imx/firmware-imx/firmware-imx.mk index 4884079d5c..99fe71a91c 100644 --- a/package/freescale-imx/firmware-imx/firmware-imx.mk +++ b/package/freescale-imx/firmware-imx/firmware-imx.mk @@ -36,6 +36,11 @@ define FIRMWARE_IMX_PREPARE_DDR_FW $(FIRMWARE_IMX_DDRFW_DIR)/$(strip $(3)).bin endef +FIRMWARE_IMX_DDR_VERSION = $(call qstrip,$(BR2_PACKAGE_FIRMWARE_IMX_DDR_VERSION)) +ifneq ($(FIRMWARE_IMX_DDR_VERSION),) +FIRMWARE_IMX_DDR_VERSION_SUFFIX = _$(FIRMWARE_IMX_DDR_VERSION) +endif + ifeq ($(BR2_PACKAGE_FIRMWARE_IMX_LPDDR4),y) FIRMWARE_IMX_DDRFW_DIR = $(@D)/firmware/ddr/synopsys @@ -44,9 +49,13 @@ define FIRMWARE_IMX_INSTALL_IMAGE_DDR_FW # lpddr4_pmu_train_fw.bin is needed when generating imx8-boot-sd.bin # which is done in post-image script. $(call FIRMWARE_IMX_PREPARE_DDR_FW, \ - lpddr4_pmu_train_1d_imem,lpddr4_pmu_train_1d_dmem,lpddr4_pmu_train_1d_fw) + lpddr4_pmu_train_1d_imem$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + lpddr4_pmu_train_1d_dmem$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + lpddr4_pmu_train_1d_fw) $(call FIRMWARE_IMX_PREPARE_DDR_FW, \ - lpddr4_pmu_train_2d_imem,lpddr4_pmu_train_2d_dmem,lpddr4_pmu_train_2d_fw) + lpddr4_pmu_train_2d_imem$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + lpddr4_pmu_train_2d_dmem$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + lpddr4_pmu_train_2d_fw) cat $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_pmu_train_1d_fw.bin \ $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_pmu_train_2d_fw.bin > \ $(BINARIES_DIR)/lpddr4_pmu_train_fw.bin @@ -67,13 +76,17 @@ define FIRMWARE_IMX_INSTALL_IMAGE_DDR_FW # ddr4_fw.bin is needed when generating imx8-boot-sd.bin # which is done in post-image script. $(call FIRMWARE_IMX_PREPARE_DDR_FW, \ - ddr4_imem_1d_201810,ddr4_dmem_1d_201810,ddr4_1d_201810_fw) + ddr4_imem_1d$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + ddr4_dmem_1d$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + ddr4_1d_fw) $(call FIRMWARE_IMX_PREPARE_DDR_FW, \ - ddr4_imem_2d_201810,ddr4_dmem_2d_201810,ddr4_2d_201810_fw) - cat $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_1d_201810_fw.bin \ - $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_2d_201810_fw.bin > \ - $(BINARIES_DIR)/ddr4_201810_fw.bin - ln -sf $(BINARIES_DIR)/ddr4_201810_fw.bin $(BINARIES_DIR)/ddr_fw.bin + ddr4_imem_2d$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + ddr4_dmem_2d$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + ddr4_2d_fw) + cat $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_1d_fw.bin \ + $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_2d_fw.bin > \ + $(BINARIES_DIR)/ddr4_fw.bin + ln -sf $(BINARIES_DIR)/ddr4_fw.bin $(BINARIES_DIR)/ddr_fw.bin # U-Boot supports creation of the combined flash.bin image. To make # sure that U-Boot can access all available files copy them to @@ -90,10 +103,12 @@ define FIRMWARE_IMX_INSTALL_IMAGE_DDR_FW # ddr3_fw.bin is needed when generating imx8-boot-sd.bin # which is done in post-image script. $(call FIRMWARE_IMX_PREPARE_DDR_FW, \ - ddr3_imem_1d_201810,ddr3_dmem_1d_201810,ddr3_1d_201810_fw) - cat $(FIRMWARE_IMX_DDRFW_DIR)/ddr3_1d_201810_fw.bin > \ - $(BINARIES_DIR)/ddr3_201810_fw.bin - ln -sf $(BINARIES_DIR)/ddr3_201810_fw.bin $(BINARIES_DIR)/ddr_fw.bin + ddr3_imem_1d$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + ddr3_dmem_1d$(FIRMWARE_IMX_DDR_VERSION_SUFFIX), + ddr3_1d_fw) + cat $(FIRMWARE_IMX_DDRFW_DIR)/ddr3_1d_fw.bin > \ + $(BINARIES_DIR)/ddr3_fw.bin + ln -sf $(BINARIES_DIR)/ddr3_fw.bin $(BINARIES_DIR)/ddr_fw.bin # U-Boot supports creation of the combined flash.bin image. To make # sure that U-Boot can access all available files copy them to