[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