diff mbox series

[2/4] package/freescale-imx: add i.MX91 and i.MX93 SoC support

Message ID 20231011110932.4425-3-sebastien.szymanski@armadeus.com
State Superseded
Headers show
Series i.MX91 and i.MX93 support | expand

Commit Message

Sébastien Szymanski Oct. 11, 2023, 11:09 a.m. UTC
This commit adds i.MX91 and i.MX93 support to Buildroot.
https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-9-processors:IMX9-PROCESSORS

There is no i.MX95 software provided by NXP at the moment that's why
i.MX95 is left behind.

Adapt package firmware-imx for the LPPDR4 firwmares binaries.

Signed-off-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
---
 package/freescale-imx/Config.in               |  8 +++++++
 package/freescale-imx/firmware-imx/Config.in  |  9 ++++++++
 .../firmware-imx/firmware-imx.mk              | 23 +++++++++++++++++++
 3 files changed, 40 insertions(+)
diff mbox series

Patch

diff --git a/package/freescale-imx/Config.in b/package/freescale-imx/Config.in
index fe3f265941a8..192b1c0d70d1 100644
--- a/package/freescale-imx/Config.in
+++ b/package/freescale-imx/Config.in
@@ -61,6 +61,12 @@  config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X
 config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8DXL
 	bool "imx8dxl"
 
+config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91
+	bool "imx91"
+
+config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93
+	bool "imx93"
+
 endchoice
 
 config BR2_PACKAGE_FREESCALE_IMX_PLATFORM
@@ -80,6 +86,8 @@  config BR2_PACKAGE_FREESCALE_IMX_PLATFORM
 	default "IMX8MM" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM
 	default "IMX8MN" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN
 	default "IMX8MP" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP
+	default "IMX91" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91
+	default "IMX93" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93
 
 config BR2_PACKAGE_FREESCALE_IMX_HAS_VPU
 	bool
diff --git a/package/freescale-imx/firmware-imx/Config.in b/package/freescale-imx/firmware-imx/Config.in
index 087ddef8771b..7be6761253c9 100644
--- a/package/freescale-imx/firmware-imx/Config.in
+++ b/package/freescale-imx/firmware-imx/Config.in
@@ -55,6 +55,8 @@  config BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW
 	default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM
 	default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN
 	default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP
+	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
 
@@ -73,11 +75,15 @@  config BR2_PACKAGE_FIRMWARE_IMX_LPDDR4
 
 config BR2_PACKAGE_FIRMWARE_IMX_DDR4
 	bool "DDR4"
+	depends on !BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91
+	depends on !BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93
 	help
 	  Use DDR4 binaries (i.e.: ddr4_*_201810.bin).
 
 config BR2_PACKAGE_FIRMWARE_IMX_DDR3
 	bool "DDR3"
+	depends on !BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91
+	depends on !BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93
 	help
 	  Use DDR3 binaries (i.e.: ddr3_*_201810.bin).
 
@@ -89,6 +95,9 @@  config BR2_PACKAGE_FIRMWARE_IMX_DDR_VERSION
 	# unconditionally use HW version 201810 when DDR3/DDR4 was
 	# selected
 	default "201810" if BR2_PACKAGE_FIRMWARE_IMX_DDR3 || BR2_PACKAGE_FIRMWARE_IMX_DDR4
+	default "202201" if \
+		BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91 || \
+		BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93
 	help
 	  Use a specific version of the imx ddr binaries. Leaving this
 	  field empty will select the default version.
diff --git a/package/freescale-imx/firmware-imx/firmware-imx.mk b/package/freescale-imx/firmware-imx/firmware-imx.mk
index 66ef8c3930be..a08e8c4fb097 100644
--- a/package/freescale-imx/firmware-imx/firmware-imx.mk
+++ b/package/freescale-imx/firmware-imx/firmware-imx.mk
@@ -43,11 +43,33 @@  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)
+ifeq ($(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91)$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93),y)
+FIRMWARE_IMX_DDR_VERSION_SUFFIX = _v$(FIRMWARE_IMX_DDR_VERSION)
+endif
 endif
 
 ifeq ($(BR2_PACKAGE_FIRMWARE_IMX_LPDDR4),y)
 FIRMWARE_IMX_DDRFW_DIR = $(@D)/firmware/ddr/synopsys
 
+ifeq ($(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91)$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93),y)
+define FIRMWARE_IMX_INSTALL_IMAGE_DDR_FW
+	# Create padded versions of lpddr4_pmu_* and generate lpddr4_pmu_train_fw.bin.
+	# lpddr4_pmu_train_fw.bin is needed when generating imx9-boot-sd.bin
+	# which is done in post-image script.
+	$(call FIRMWARE_IMX_PREPARE_DDR_FW, \
+		lpddr4_imem_1d$(FIRMWARE_IMX_DDR_VERSION_SUFFIX),
+		lpddr4_dmem_1d$(FIRMWARE_IMX_DDR_VERSION_SUFFIX),
+		lpddr4_pmu_train_1d_fw)
+	$(call FIRMWARE_IMX_PREPARE_DDR_FW, \
+		lpddr4_imem_2d$(FIRMWARE_IMX_DDR_VERSION_SUFFIX),
+		lpddr4_dmem_2d$(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
+	ln -sf $(BINARIES_DIR)/lpddr4_pmu_train_fw.bin $(BINARIES_DIR)/ddr_fw.bin
+endef
+else
 define FIRMWARE_IMX_INSTALL_IMAGE_DDR_FW
 	# Create padded versions of lpddr4_pmu_* and generate lpddr4_pmu_train_fw.bin.
 	# lpddr4_pmu_train_fw.bin is needed when generating imx8-boot-sd.bin
@@ -71,6 +93,7 @@  define FIRMWARE_IMX_INSTALL_IMAGE_DDR_FW
 	cp $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4*.bin $(BINARIES_DIR)/
 endef
 endif
+endif
 
 ifeq ($(BR2_PACKAGE_FIRMWARE_IMX_DDR4),y)
 FIRMWARE_IMX_DDRFW_DIR = $(@D)/firmware/ddr/synopsys