Hi Joseph, [No need to have such a long CC list. Reducing it]
Thanks for working on this. On Wed, Jul 15, 2026 at 11:55 PM Joseph Guo <[email protected]> wrote: > > Add boot support and peripherals like eMMC/SD, UART, I2C, GPIO, ENETC0/1 > and PCIE0/1 for iMX95 15x15 FRDM. > Updated doc for build instructions. > > Signed-off-by: Lei Xu <[email protected]> > Signed-off-by: Joseph Guo <[email protected]> I tested this patch: U-Boot SPL 2026.07-00872-gc20daeac29e7 (Jul 23 2026 - 14:52:43 -0300) SYS Boot reason: por, origin: -1, errid: -1 I know this is not related to your patch, but please suppress this origin and errid information. They are just noise. WDT: Started watchdog@42490000 with servicing every 1000ms (40s timeout) Normal Boot Trying to boot from MMC2 Load image from MMC/SD 0xd5800 NOTICE: BL31: v2.12.0(release):lf-6.18.2-1.0.0 NOTICE: BL31: Built : 14:51:35, Jul 23 2026 U-Boot 2026.07-00872-gc20daeac29e7 (Jul 23 2026 - 14:52:43 -0300) CPU: NXP i.MX9596 Rev2.0 A55 at 1800 MHz CPU: Extended Industrial temperature grade (-40C to 125C) Model: NXP i.MX95 15X15 FRDM board DRAM: Delete node /soc/pcie@4c380000 Delete node /soc/pcie-ep@4c380000 7.8 GiB ERROR: reserving fdt memory region failed (addr=88000000 size=8000 flags=2): -22 ERROR: reserving fdt memory region failed (addr=88008000 size=8000 flags=2): -22 ERROR: reserving fdt memory region failed (addr=88010000 size=8000 flags=2): -22 ERROR: reserving fdt memory region failed (addr=88018000 size=8000 flags=2): -22 ERROR: reserving fdt memory region failed (addr=88020000 size=100000 flags=2): -22 ERROR: reserving fdt memory region failed (addr=88220000 size=1000 flags=2): -22 This error is unrelated to your patch and others have reported. Core: 272 devices, 23 uclasses, devicetree: separate WDT: Started watchdog@42490000 with servicing every 1000ms (40s timeout) MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2 Reading from MMC(1)... Loading Environment from MMC... OK clk_register: failed to get hsiopll device (parent of hsio_blk_ctl_clk) PCIe PLL lock timeout pcie_dw_imx pcie@4c300000: failed to wait pll lock Please fix this PLL lock error. In: serial@44380000 Out: serial@44380000 Err: serial@44380000 BuildInfo: - ELE firmware version 2.0.2-2a118457 switch to partitions #0, OK mmc1 is current device Net: eth0: enetc-0 [PRIME], eth1: enetc-1 Hit any key to stop autoboot: 0 u-boot=> > --- /dev/null > +++ b/arch/arm/dts/imx95-15x15-frdm-u-boot.dtsi > @@ -0,0 +1,81 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * Copyright 2026 NXP > + */ > + > +#include "imx95-u-boot.dtsi" > + > +/ { > + aliases { > + pci0 = &netc_bus0; > + pci1 = &netc_bus1; > + }; > +}; > + > +&{/binman/m33-oei-ddrfw/imx-lpddr/imx-lpddr-imem} { > + filename = "lpddr4x_imem_v202409.bin"; > +}; > + > +&{/binman/m33-oei-ddrfw/imx-lpddr/imx-lpddr-dmem} { > + filename = "lpddr4x_dmem_v202409.bin"; > +}; > + > +&{/binman/m33-oei-ddrfw/imx-lpddr-qb/imx-lpddr-imem-qb} { > + filename = "lpddr4x_imem_qb_v202409.bin"; > +}; > + > +&{/binman/m33-oei-ddrfw/imx-lpddr-qb/imx-lpddr-dmem-qb} { > + filename = "lpddr4x_dmem_qb_v202409.bin"; ... > +&pinctrl_reg_usdhc2_vmmc { > + bootph-pre-ram; Please help upstream the alias and bootph-pre-ram properties in the kernel. > +#if IS_ENABLED(CONFIG_OF_BOARD_FIXUP) > +int board_fix_fdt(void *fdt) > +{ > + /* Remove nodes based on fuses. */ > + return imx9_uboot_fixup_by_fuse(fdt); Shouldn't this be done at SoC level instead of per board? > +++ b/board/nxp/imx95_frdm/imx95_frdm.env > @@ -0,0 +1,93 @@ > +sec_boot=no Could you please add i.MX95 Secure Boot via another series? Has Secure Boot been tested with mainline U-Boot? If secure boot is not planned to be added for now, please remove sec_boot. > +imx95_frdm > +======================= Please align the underline with the title length; otherwise, building htmldoc will warn. This applies globally. For v4, please make sure it passes CI and share the green CI URL. > + > +U-Boot for the NXP i.MX95 15x15 FRDM board > + > +Quick Start > +----------- > + > +- Get ahab-container.img > +- Get DDR PHY Firmware Images > +- Get and Build OEI Images > +- Get and Build System Manager Image > +- Get and Build the ARM Trusted Firmware > +- Build the Bootloader Image > +- Boot > + > +Get ahab-container.img > +-------------------------------------- > + > +Note: srctree is U-Boot source directory > + > +.. code-block:: bash > + > + $ wget > https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-ele-imx-2.0.2-89161a8.bin > + $ sh firmware-ele-imx-2.0.2-89161a8.bin --auto-accept > + > +i.MX95 A0 silicon version > + > +.. code-block:: bash > + > + $ cp firmware-ele-imx-2.0.2-89161a8/mx95a0-ahab-container.img $(srctree) Please remove this. There is no A0 FRDM board in production, right? Keep only the B0 instruction. > + > +i.MX95 B0 silicon version > + > +.. code-block:: bash > + > + $ cp firmware-ele-imx-2.0.2-89161a8/mx95b0-ahab-container.img $(srctree) > + > + $ sudo apt -y install make gcc g++-multilib srecord > + $ wget > https://developer.arm.com/-/media/Files/downloads/gnu/13.3.rel1/binrel/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz I had to install 15.2.Rel1 instead. Please update. > + $ tar xvf arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz > + $ export TOOLS=$PWD > + $ git clone -b master https://github.com/nxp-imx/imx-oei.git > + $ cd imx-oei > + > +i.MX95 B0 silicon version on 15x15 LPDDR4X FRDM Board > + > +.. code-block:: bash > + > + $ make board=mx95lp4x-15 oei=ddr DEBUG=1 r=B0 all > + $ cp build/mx95lp4x-15/ddr/oei-m33-ddr.bin $(srctree) > + > +Get and Build System Manager Image > +-------------------------------------- > + > +Note: srctree is U-Boot source directory > +Get System Manager from: https://github.com/nxp-imx/imx-sm > +branch: master > + > +.. code-block:: bash > + > + $ sudo apt -y install make gcc g++-multilib srecord > + $ wget > https://developer.arm.com/-/media/Files/downloads/gnu/13.3.rel1/binrel/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz > + $ tar xvf arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz No need to install the toolchain twice. > +-------------------------- > + > +i.MX95 B0 silicon version on 15x15 LPDDR4X FRDM Board > + > +.. code-block:: bash > + > + $ export CROSS_COMPILE=aarch64-poky-linux- > + $ make imx95_15x15_frdm_defconfig > + $ make > + > +Copy imx-boot-imx95.bin to the MicroSD card: > + > +.. code-block:: bash > + > + $ sudo dd if=flash.bin of=/dev/sd[x] bs=1k seek=32 conv=fsync > + > +Boot > +---- > + > +Set i.MX95 boot device to MicroSD card Better explain to the users here how to force the SW1 switch to SD card boot. > +#ifndef __IMX95_EVK_H > +#define __IMX95_EVK_H This is not the EVK. Tested-by: Fabio Estevam <[email protected]>
