[Buildroot] [PATCH v5 1/3] package/freescale-imx: add i.MX91 and i.MX93 SoC support

Arnout Vandecappelle arnout at mind.be
Mon Feb 12 21:46:13 UTC 2024



On 08/02/2024 13:54, Sébastien Szymanski wrote:
> 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.
> 
> Reviewed-by: Gary Bisson <bisson.gary at gmail.com>
> Signed-off-by: Sébastien Szymanski <sebastien.szymanski at armadeus.com>

  Applied to master, with changes as already mentioned in my review:

      - Remove BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91A1 option.
      - Re-wrap help text.
      - Introduce BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW_IMX9 instead of
        reusing BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW.
      - Create completely separate instance of
        FIRMWARE_IMX_INSTALL_IMAGE_DDR_FW for
        BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW_IMX9.
      - Drop the training binaries choice for IMX9.
      - Drop the firmware version option for IMX9.
      - Keep options for IMEM and DMEM padding.

  Regards,
  Arnout

> ---
> Changes for v5:
>   - none
> 
> Changes for v4
>   - move i.MX Silicon Revision changes into this patch (Gary Bisson)
>   - BR2_PACKAGE_FIRMWARE_IMX_DDR_VERSION default to "v202201" instead of
>     just "202201" (Gary Bisson)
>   - Copy all DDR files to $(BINARIES_DIR) as U-Boot can now create a
>     bootable image:
>     https://source.denx.de/u-boot/u-boot/-/commit/f637dfe8c468229c9fb313d13c46d51cdbb88824
>   - remove "pmu_train" from generated _pad binary file names
> 
> Changes for v3:
>   - none
> 
> Changes for v2:
>   - none
> ---
>   package/freescale-imx/Config.in                    | 37 ++++++++++++++++++++++
>   package/freescale-imx/firmware-imx/Config.in       |  9 ++++++
>   package/freescale-imx/firmware-imx/firmware-imx.mk | 25 +++++++++++++++
>   3 files changed, 71 insertions(+)
> 
> diff --git a/package/freescale-imx/Config.in b/package/freescale-imx/Config.in
> index 1c26b3cc6f4c..ba169ead18cb 100644
> --- a/package/freescale-imx/Config.in
> +++ b/package/freescale-imx/Config.in
> @@ -61,6 +61,41 @@ 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
> +
> +choice
> +	prompt "i.MX Silicon Revision"
> +	default BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91A1 \
> +		if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91
> +	default BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93A1 \
> +		if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93
> +	depends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91 || \
> +		BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93
> +	help
> +	  Some packages related to the selected i.MX platform need to know the
> +	  silicon revision of the platform they will run on.
> +	  If you don't know, leave the default value.
> +
> +	  Note - mismatches may result in a failure to boot!
> +
> +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91A1
> +	bool "imx91a1"
> +	depends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX91
> +
> +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93A0
> +	bool "imx93a0"
> +	depends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93
> +
> +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93A1
> +	bool "imx93a1"
> +	depends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX93
> +
>   endchoice
>   
>   config BR2_PACKAGE_FREESCALE_IMX_PLATFORM
> @@ -80,6 +115,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..d83b5e129a9f 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 "v202201" 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..1f36f917cdc8 100644
> --- a/package/freescale-imx/firmware-imx/firmware-imx.mk
> +++ b/package/freescale-imx/firmware-imx/firmware-imx.mk
> @@ -48,6 +48,30 @@ 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_{d,i}mem_{1,2}d_* and generate lpddr4_fw.bin.
> +	# lpddr4_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_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_2d_fw)
> +	cat $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_1d_fw.bin \
> +		$(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_2d_fw.bin > \
> +		$(BINARIES_DIR)/lpddr4_fw.bin
> +	ln -sf $(BINARIES_DIR)/lpddr4_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
> +	# the binary dir.
> +	cp $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4*.bin $(BINARIES_DIR)/
> +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 +95,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
> 



More information about the buildroot mailing list