From: Joseph Guo <[email protected]> Add boot support and peripherals like eMMC/SD, UART, I2C, GPIO, ENETC0/1 and PCIE0/1 for iMX95 19x19 FRDM PRO board. Updated imx95_frdm doc to include build instruction for FRDM-IMX95-PRO.
Signed-off-by: Joseph Guo <[email protected]> --- Note: boot phase properties upstream have been sent [1]. These properties can be removed in imx95-19x19-frdm-pro-uboot.dtsi after upstream changed. [1] https://lore.kernel.org/all/[email protected]/ --- arch/arm/dts/imx95-19x19-frdm-pro-u-boot.dtsi | 65 +++++++++++ arch/arm/mach-imx/imx9/Kconfig | 8 ++ board/nxp/imx95_frdm/Kconfig | 2 +- board/nxp/imx95_frdm/MAINTAINERS | 1 + configs/imx95_19x19_frdm_pro_defconfig | 153 ++++++++++++++++++++++++++ doc/board/nxp/imx95_frdm.rst | 29 ++++- include/configs/imx95_frdm.h | 4 + 7 files changed, 260 insertions(+), 2 deletions(-) diff --git a/arch/arm/dts/imx95-19x19-frdm-pro-u-boot.dtsi b/arch/arm/dts/imx95-19x19-frdm-pro-u-boot.dtsi new file mode 100644 index 0000000000000000000000000000000000000000..f1fcd3630102e002a715af2d2798d75726041b96 --- /dev/null +++ b/arch/arm/dts/imx95-19x19-frdm-pro-u-boot.dtsi @@ -0,0 +1,65 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2026 NXP + */ + +#include "imx95-u-boot.dtsi" + +/ { + aliases { + pci0 = &netc_bus0; + pci1 = &netc_bus1; + }; +}; + +&lpuart1 { + bootph-pre-ram; +}; + +®_usdhc2_vmmc { + bootph-pre-ram; +}; + +&usdhc1 { + bootph-pre-ram; +}; + +&usdhc2 { + bootph-pre-ram; +}; + +&pinctrl_uart1 { + bootph-pre-ram; +}; + +&pinctrl_usdhc1 { + bootph-pre-ram; +}; + +&pinctrl_usdhc1_100mhz { + bootph-pre-ram; +}; + +&pinctrl_usdhc1_200mhz { + bootph-pre-ram; +}; + +&pinctrl_usdhc2 { + bootph-pre-ram; +}; + +&pinctrl_usdhc2_100mhz { + bootph-pre-ram; +}; + +&pinctrl_usdhc2_200mhz { + bootph-pre-ram; +}; + +&pinctrl_usdhc2_gpio { + bootph-pre-ram; +}; + +&pinctrl_reg_usdhc2_vmmc { + bootph-pre-ram; +}; diff --git a/arch/arm/mach-imx/imx9/Kconfig b/arch/arm/mach-imx/imx9/Kconfig index d66d4193906f8bf4b84494f1e64428efda3acd75..1630695e1cd27293eac18a605dc736230e78e329 100644 --- a/arch/arm/mach-imx/imx9/Kconfig +++ b/arch/arm/mach-imx/imx9/Kconfig @@ -192,6 +192,14 @@ config TARGET_IMX95_15X15_FRDM imply BOOTSTD_BOOTCOMMAND imply OF_UPSTREAM +config TARGET_IMX95_19X19_FRDM_PRO + bool "imx95_19x19_frdm_pro" + select OF_BOARD_FIXUP + select IMX95 + imply BOOTSTD_FULL + imply BOOTSTD_BOOTCOMMAND + imply OF_UPSTREAM + config TARGET_IMX943_EVK bool "imx943_evk" select OF_BOARD_FIXUP diff --git a/board/nxp/imx95_frdm/Kconfig b/board/nxp/imx95_frdm/Kconfig index 0da9a56adadec661792c38b1258e4eb914af5aa5..c0d85f421fd83710826bafa0b249346ede821f80 100644 --- a/board/nxp/imx95_frdm/Kconfig +++ b/board/nxp/imx95_frdm/Kconfig @@ -1,4 +1,4 @@ -if TARGET_IMX95_15X15_FRDM +if TARGET_IMX95_15X15_FRDM || TARGET_IMX95_19X19_FRDM_PRO config SYS_BOARD default "imx95_frdm" diff --git a/board/nxp/imx95_frdm/MAINTAINERS b/board/nxp/imx95_frdm/MAINTAINERS index 33870f054e7452ed3af36f19236163d451c93665..01a200169e9e4ff5e8f6296e0a0631c06868f3a1 100644 --- a/board/nxp/imx95_frdm/MAINTAINERS +++ b/board/nxp/imx95_frdm/MAINTAINERS @@ -4,3 +4,4 @@ S: Maintained F: board/nxp/imx95_frdm/ F: include/configs/imx95_frdm.h F: configs/imx95_15x15_frdm_defconfig +F: configs/imx95_19x19_frdm_pro_defconfig diff --git a/configs/imx95_19x19_frdm_pro_defconfig b/configs/imx95_19x19_frdm_pro_defconfig new file mode 100644 index 0000000000000000000000000000000000000000..14ff08d5d34ae92e463345a39bb5d2831fb1824b --- /dev/null +++ b/configs/imx95_19x19_frdm_pro_defconfig @@ -0,0 +1,153 @@ +CONFIG_ARM=y +CONFIG_ARCH_IMX9=y +CONFIG_TEXT_BASE=0x90200000 +CONFIG_SYS_MALLOC_LEN=0x2000000 +CONFIG_SYS_MALLOC_F_LEN=0x10000 +CONFIG_SPL_GPIO=y +CONFIG_SPL_LIBCOMMON_SUPPORT=y +CONFIG_SPL_LIBGENERIC_SUPPORT=y +CONFIG_NR_DRAM_BANKS=3 +CONFIG_ENV_SOURCE_FILE="imx95_frdm" +CONFIG_SF_DEFAULT_SPEED=40000000 +CONFIG_ENV_SIZE=0x4000 +CONFIG_ENV_OFFSET=0x700000 +CONFIG_DM_GPIO=y +CONFIG_DEFAULT_DEVICE_TREE="freescale/imx95-19x19-frdm-pro" +CONFIG_TARGET_IMX95_19X19_FRDM_PRO=y +CONFIG_OF_LIBFDT_OVERLAY=y +CONFIG_SYS_MONITOR_LEN=524288 +CONFIG_SPL_MMC=y +CONFIG_SPL_SERIAL=y +CONFIG_SPL_DRIVERS_MISC=y +CONFIG_SPL_TEXT_BASE=0x20480000 +CONFIG_SPL_HAS_BSS_LINKER_SECTION=y +CONFIG_SPL_BSS_START_ADDR=0x204d6000 +CONFIG_SPL_BSS_MAX_SIZE=0x2000 +CONFIG_SYS_LOAD_ADDR=0x90400000 +CONFIG_SPL=y +CONFIG_SPL_RECOVER_DATA_SECTION=y +CONFIG_PCI=y +CONFIG_SYS_MEMTEST_START=0x90000000 +CONFIG_SYS_MEMTEST_END=0xA0000000 +CONFIG_REMAKE_ELF=y +CONFIG_FIT=y +CONFIG_FIT_VERBOSE=y +CONFIG_OF_SYSTEM_SETUP=y +CONFIG_BOOTCOMMAND="bootflow scan -l; run bsp_bootcmd" +CONFIG_DEFAULT_FDT_FILE="imx95-19x19-frdm-pro.dtb" +CONFIG_SYS_CBSIZE=2048 +CONFIG_SYS_PBSIZE=2074 +# CONFIG_BOARD_INIT is not set +CONFIG_BOARD_LATE_INIT=y +CONFIG_PCI_INIT_R=y +CONFIG_SPL_MAX_SIZE=0x20000 +CONFIG_SPL_BOARD_INIT=y +CONFIG_SPL_LOAD_IMX_CONTAINER=y +# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set +CONFIG_SPL_SYS_MALLOC=y +CONFIG_SPL_HAS_CUSTOM_MALLOC_START=y +CONFIG_SPL_CUSTOM_SYS_MALLOC_ADDR=0x93200000 +CONFIG_SPL_SYS_MALLOC_SIZE=0x80000 +CONFIG_SPL_SYS_MMCSD_RAW_MODE=y +CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x1040 +CONFIG_SPL_I2C=y +CONFIG_SPL_DM_MAILBOX=y +CONFIG_SPL_POWER=y +CONFIG_SPL_WATCHDOG=y +CONFIG_SYS_PROMPT="u-boot=> " +CONFIG_CMD_ERASEENV=y +CONFIG_CMD_NVEDIT_EFI=y +CONFIG_CRC32_VERIFY=y +CONFIG_CMD_MEMTEST=y +CONFIG_CMD_CLK=y +CONFIG_CMD_DFU=y +CONFIG_CMD_FUSE=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_GPT=y +CONFIG_CMD_I2C=y +CONFIG_CMD_MMC=y +CONFIG_CMD_PCI=y +CONFIG_CMD_POWEROFF=y +CONFIG_CMD_REMOTEPROC=y +CONFIG_CMD_SNTP=y +CONFIG_CMD_CACHE=y +CONFIG_CMD_EFIDEBUG=y +CONFIG_CMD_RTC=y +CONFIG_CMD_TIME=y +CONFIG_CMD_GETTIME=y +CONFIG_CMD_TIMER=y +CONFIG_CMD_REGULATOR=y +CONFIG_CMD_HASH=y +CONFIG_CMD_EXT4_WRITE=y +CONFIG_OF_CONTROL=y +CONFIG_SPL_OF_CONTROL=y +CONFIG_ENV_OVERWRITE=y +CONFIG_ENV_IS_NOWHERE=y +CONFIG_ENV_IS_IN_MMC=y +CONFIG_ENV_RELOC_GD_ENV_ADDR=y +CONFIG_ENV_MMC_DEVICE_INDEX=1 +CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y +CONFIG_USE_ETHPRIME=y +CONFIG_ETHPRIME="eth0" +CONFIG_NET_RANDOM_ETHADDR=y +CONFIG_SYS_RX_ETH_BUFFER=8 +CONFIG_SPL_DM=y +CONFIG_SYSCON=y +CONFIG_SPL_OF_TRANSLATE=y +CONFIG_CLK=y +CONFIG_SPL_CLK=y +CONFIG_SPL_CLK_CCF=y +CONFIG_CLK_CCF=y +CONFIG_CLK_SCMI=y +CONFIG_SPL_CLK_SCMI=y +CONFIG_DFU_MMC=y +CONFIG_DFU_RAM=y +CONFIG_SPL_FIRMWARE=y +# CONFIG_SCMI_AGENT_SMCCC is not set +CONFIG_IMX_SM_CPU=y +CONFIG_IMX_SM_LMM=y +CONFIG_IMX_RGPIO2P=y +CONFIG_DM_PCA953X=y +CONFIG_ADP5585_GPIO=y +CONFIG_DM_I2C=y +CONFIG_SYS_I2C_IMX_LPI2C=y +CONFIG_IMX_MU_MBOX=y +CONFIG_SUPPORT_EMMC_BOOT=y +CONFIG_MMC_IO_VOLTAGE=y +CONFIG_MMC_UHS_SUPPORT=y +CONFIG_MMC_HS400_ES_SUPPORT=y +CONFIG_MMC_HS400_SUPPORT=y +CONFIG_FSL_USDHC=y +CONFIG_MTD=y +CONFIG_DM_SPI_FLASH=y +CONFIG_SPI_FLASH_SFDP_SUPPORT=y +CONFIG_SPI_FLASH_WINBOND=y +CONFIG_PHYLIB=y +CONFIG_PHY_AQUANTIA=y +CONFIG_PHY_MOTORCOMM=y +CONFIG_DM_MDIO=y +CONFIG_MII=y +CONFIG_FSL_ENETC=y +CONFIG_PCIE_ECAM_GENERIC=y +CONFIG_PHY=y +CONFIG_PINCTRL=y +CONFIG_SPL_PINCTRL=y +CONFIG_PINCTRL_IMX_SCMI=y +CONFIG_POWER_DOMAIN=y +CONFIG_SCMI_POWER_DOMAIN=y +CONFIG_DM_REGULATOR=y +CONFIG_SPL_DM_REGULATOR=y +CONFIG_DM_REGULATOR_FIXED=y +CONFIG_SPL_DM_REGULATOR_FIXED=y +CONFIG_DM_REGULATOR_GPIO=y +CONFIG_REMOTEPROC_IMX=y +CONFIG_DM_RTC=y +CONFIG_DM_SERIAL=y +CONFIG_FSL_LPUART=y +CONFIG_SPI=y +CONFIG_DM_SPI=y +CONFIG_NXP_FSPI=y +CONFIG_ULP_WATCHDOG=y +CONFIG_LZO=y +CONFIG_BZIP2=y +CONFIG_WDT=y diff --git a/doc/board/nxp/imx95_frdm.rst b/doc/board/nxp/imx95_frdm.rst index 85ef9022e76fc0d8f2a5524128309939f22f4715..a0a5422bf8a7ba574f38dc19898f19f4dc4a6f8a 100644 --- a/doc/board/nxp/imx95_frdm.rst +++ b/doc/board/nxp/imx95_frdm.rst @@ -3,7 +3,7 @@ imx95_frdm ======================= -U-Boot for the NXP i.MX95 15x15 FRDM board +U-Boot for the NXP i.MX95 15x15 FRDM board & i.MX95 19x19 FRDM PRO board Quick Start ----------- @@ -73,6 +73,13 @@ i.MX95 B0 silicon version on 15x15 LPDDR4X FRDM Board $ make board=mx95lp4x-15 oei=ddr DEBUG=1 r=B0 all $ cp build/mx95lp4x-15/ddr/oei-m33-ddr.bin $(srctree) +i.MX95 B0 silicon version on 19x19 LPDDR5 FRDM PRO Board + +.. code-block:: bash + + $ make board=mx95lp5-19 oei=ddr DEBUG=1 r=B0 all + $ cp build/mx95lp5-19/ddr/oei-m33-ddr.bin $(srctree) + Get and Build System Manager Image -------------------------------------- @@ -88,9 +95,21 @@ branch: master $ export TOOLS=$PWD $ git clone -b master https://github.com/nxp-imx/imx-sm.git $ cd imx-sm + +i.MX95 B0 silicon version on 15x15 LPDDR4X FRDM Board + +.. code-block:: bash + $ make config=mx95evk all $ cp build/mx95evk/m33_image.bin $(srctree) +i.MX95 B0 silicon version on 19x19 LPDDR5 FRDM PRO Board + +.. code-block:: bash + + $ make config=other/mx95frdm-pro all + $ cp build/other/mx95frdm-pro/m33_image.bin $(srctree) + Get and Build the ARM Trusted Firmware -------------------------------------- @@ -119,6 +138,14 @@ i.MX95 B0 silicon version on 15x15 LPDDR4X FRDM Board $ make imx95_15x15_frdm_defconfig $ make +i.MX95 B0 silicon version on 19x19 LPDDR5 FRDM PRO Board + +.. code-block:: bash + + $ export CROSS_COMPILE=aarch64-poky-linux- + $ make imx95_19x19_frdm_pro_defconfig + $ make + Copy imx-boot-imx95.bin to the MicroSD card: .. code-block:: bash diff --git a/include/configs/imx95_frdm.h b/include/configs/imx95_frdm.h index e64294a2bb15a025351b9bc9f2c8a0ee0a7e9224..78a28d7a5a137070c29ac25a0b219599866f6923 100644 --- a/include/configs/imx95_frdm.h +++ b/include/configs/imx95_frdm.h @@ -18,7 +18,11 @@ #define PHYS_SDRAM_SIZE 0x70000000 /* 2GB - 256MB DDR */ +#ifdef CONFIG_TARGET_IMX95_19X19_FRDM_PRO +#define PHYS_SDRAM_2_SIZE 0x380000000UL /* 14GB (Totally 16GB) */ +#else #define PHYS_SDRAM_2_SIZE 0x180000000 /* 6GB (Totally 8GB) */ +#endif #define CFG_SYS_SECURE_SDRAM_BASE 0x8A000000 /* Secure DDR region for A55 */ #define CFG_SYS_SECURE_SDRAM_SIZE 0x04000000 -- 2.34.1
