@@ -57,12 +57,18 @@ config BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW
default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN
default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP
+config BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW_IMX95
+ bool
+ default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX95
+
config BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW_IMX9
bool
default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91
default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93
-if BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW || BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW_IMX9
+if BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW || \
+ BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW_IMX9 || \
+ BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW_IMX95
choice
bool "DDR training binaries"
@@ -72,6 +78,11 @@ choice
kind of memory that is available on the target board (DDR4,
LPDDR4, etc...).
+config BR2_PACKAGE_FIRMWARE_IMX_LPDDR4X
+ bool "lpddr4x"
+ help
+ Use LPDDR4x binaries.
+
config BR2_PACKAGE_FIRMWARE_IMX_LPDDR4
bool "lpddr4"
help
@@ -46,6 +46,45 @@ ifneq ($(FIRMWARE_IMX_DDR_VERSION),)
FIRMWARE_IMX_DDR_VERSION_SUFFIX = _$(FIRMWARE_IMX_DDR_VERSION)
endif
+ifeq ($(BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW_IMX95),y)
+FIRMWARE_IMX_DDRFW_DIR = $(@D)/firmware/ddr/synopsys
+
+define FIRMWARE_IMX_GENERATE_DDR_HDR
+ wc -c $(FIRMWARE_IMX_DDRFW_DIR)/$(strip $(1)).bin | \
+ awk '{printf "%.8x", $$1}' | \
+ sed -e 's/\(..\)\(..\)\(..\)\(..\)/\4\3\2\1/' | \
+ xxd -r -p > $(BINARIES_DIR)/$(strip $(3)).bin
+
+ wc -c $(FIRMWARE_IMX_DDRFW_DIR)/$(strip $(2)).bin | \
+ awk '{printf "%.8x", $$1}' | \
+ sed -e 's/\(..\)\(..\)\(..\)\(..\)/\4\3\2\1/' | \
+ xxd -r -p >> $(BINARIES_DIR)/$(strip $(3)).bin
+endef
+
+define FIRMWARE_IMX_INSTALL_IMAGE_DDR_FW
+ $(call FIRMWARE_IMX_GENERATE_DDR_HDR, \
+ lpddr4x_imem_v202409,
+ lpddr4x_dmem_v202409,
+ fw-header)
+
+ $(call FIRMWARE_IMX_GENERATE_DDR_HDR, \
+ lpddr4x_imem_qb_v202409,
+ lpddr4x_dmem_qb_v202409,
+ fw-header-qb)
+
+ cat $(BINARIES_DIR)/fw-header.bin \
+ $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4x_imem_v202409.bin \
+ $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4x_dmem_v202409.bin \
+ $(BINARIES_DIR)/fw-header-qb.bin \
+ $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4x_imem_qb_v202409.bin \
+ $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4x_dmem_qb_v202409.bin > $(BINARIES_DIR)/ddr_fw.bin
+
+ rm -f $(BINARIES_DIR)/fw-header.bin
+ rm -f $(BINARIES_DIR)/fw-header-qb.bin
+endef
+
+endif
+
ifeq ($(BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW_IMX9),y)
FIRMWARE_IMX_DDRFW_DIR = $(@D)/firmware/ddr/synopsys