On Fri, Dec 20, 2024 at 10:55:14AM +0800, Alice Guo wrote: > From: Ye Li <ye...@nxp.com> > > This patch adds i.MX95 19x19 EVK board basic support. > > Signed-off-by: Ye Li <ye...@nxp.com> > Signed-off-by: Alice Guo <alice....@nxp.com> > Reviewed-by: Peng Fan <peng....@nxp.com> > --- > arch/arm/dts/imx95-19x19-evk-u-boot.dtsi | 224 > ++++++++++++++++++++++++++ > arch/arm/mach-imx/imx9/Kconfig | 6 + > arch/arm/mach-imx/imx9/scmi/container.cfg | 10 ++ > arch/arm/mach-imx/imx9/scmi/imximage.cfg | 15 ++ > arch/arm/mach-imx/imx9/scmi/soc.c | 1 + > board/freescale/imx95_evk/Kconfig | 12 ++ > board/freescale/imx95_evk/MAINTAINERS | 6 + > board/freescale/imx95_evk/Makefile | 11 ++ > board/freescale/imx95_evk/imx95_19x19_evk.env | 95 +++++++++++ > board/freescale/imx95_evk/imx95_evk.c | 54 +++++++ > board/freescale/imx95_evk/spl.c | 117 ++++++++++++++ > configs/imx95_19x19_evk_defconfig | 178 ++++++++++++++++++++ > doc/board/nxp/imx95_evk.rst | 109 +++++++++++++ > doc/board/nxp/index.rst | 1 + > include/configs/imx95_evk.h | 36 +++++ > 15 files changed, 875 insertions(+) > > diff --git a/arch/arm/dts/imx95-19x19-evk-u-boot.dtsi > b/arch/arm/dts/imx95-19x19-evk-u-boot.dtsi > new file mode 100644 > index > 0000000000000000000000000000000000000000..5c891518448d24204f5ca2a00957b47a0a24bd70 > --- /dev/null > +++ b/arch/arm/dts/imx95-19x19-evk-u-boot.dtsi > @@ -0,0 +1,224 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * Copyright 2024 NXP > + */ > + > +#ifdef CONFIG_BINMAN > +/ { > + binman { > + multiple-images; > + > + m33-oei-ddrfw { > + filename = "m33-oei-ddrfw.bin"; > + > + nxp-append-ddrfw { > + oei_m33_ddr_image = "oei-m33-ddr.bin"; > + lpddr_imem = "lpddr5_imem_v202311.bin"; > + lpddr_dmem = "lpddr5_dmem_v202311.bin"; > + lpddr_imem_qb = "lpddr5_imem_qb_v202311.bin"; > + lpddr_dmem_qb = "lpddr5_dmem_qb_v202311.bin"; > + }; > + }; > + > + spl { > + filename = "spl.bin"; > + > + mkimage { > + args = "-n spl/u-boot-spl.cfgout -T imx8image"; > + }; > + }; > + > + u-boot { > + filename = "uboot.bin"; > + > + mkimage { > + args = "-n u-boot-container.cfgout -T > imx8image"; > + }; > + }; > + > + imx-boot { > + filename = "imx-boot-imx95.bin"; > + pad-byte = <0x00>; > + > + blob-ext@1 { > + align = <0x400>; > + align-size = <0x400>; > + offset = <0x0>; > + filename = "spl.bin"; > + }; > + > + blob-ext@2 { > + filename = "uboot.bin"; > + }; > + }; > + }; > +}; > +#endif > + > +&{/soc} { > + bootph-all; > + bootph-pre-ram; > +}; > + > +&aips1 { > + bootph-all; > + bootph-pre-ram; > +}; > + > +&aips2 { > + bootph-all; > + bootph-pre-ram; > +}; > + > +&aips3 { > + bootph-pre-ram; > +}; > + > +&gpio1 { > + reg = <0 0x47400000 0 0x1000>, <0 0x47400040 0 0x40>; > +}; > + > +&gpio2 { > + reg = <0 0x43810000 0 0x1000>, <0 0x43810040 0 0x40>; > + bootph-pre-ram; > +}; > + > +&gpio3 { > + reg = <0 0x43820000 0 0x1000>, <0 0x43820040 0 0x40>; > + bootph-pre-ram; > +}; > + > +&gpio4 { > + reg = <0 0x43840000 0 0x1000>, <0 0x43840040 0 0x40>; > + bootph-pre-ram; > +}; > + > +&gpio5 { > + reg = <0 0x43850000 0 0x1000>, <0 0x43850040 0 0x40>; > + bootph-pre-ram; > +}; > + > +&lpuart1 { > + clocks = <&scmi_clk IMX95_CLK_LPUART1>, <&scmi_clk IMX95_CLK_LPUART1>; > + clock-names = "ipg", "per"; > + bootph-pre-ram; > +}; > + > +&mu2 { > + bootph-all; > + bootph-pre-ram; > +}; > + > +&osc_24m { > + bootph-all; > + bootph-pre-ram; > +}; > + > +&clk_ext1 { > + bootph-all; > + bootph-pre-ram; > +}; > + > +&sram0 { > + bootph-all; > + bootph-pre-ram; > +}; > + > +&scmi_buf0 { > + bootph-all; > + bootph-pre-ram; > +}; > + > +&scmi_buf1 { > + bootph-all; > + bootph-pre-ram; > +}; > + > +&{/firmware} { > + bootph-all; > + bootph-pre-ram; > +}; > + > +&{/firmware/scmi} { > + bootph-all; > + bootph-pre-ram; > +}; > + > +&{/firmware/scmi/protocol@11} { > + bootph-all; > + bootph-pre-ram; > +}; > + > +&{/firmware/scmi/protocol@13} { > + bootph-all; > + bootph-pre-ram; > +}; > + > +&{/firmware/scmi/protocol@14} { > + bootph-all; > + bootph-pre-ram; > +}; > + > +&{/firmware/scmi/protocol@19} { > + bootph-all; > + bootph-pre-ram; > +}; > + > +&pinctrl_uart1 { > + bootph-pre-ram; > +}; > + > +&usdhc1 { > + bootph-pre-ram; > +}; > + > +&pinctrl_usdhc1 { > + bootph-pre-ram; > +}; > + > +&pinctrl_usdhc1_100mhz { > + bootph-pre-ram; > +}; > + > +&pinctrl_usdhc1_200mhz { > + bootph-pre-ram; > +}; > + > +&usdhc2 { > + 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; > +}; > + > +®_usdhc2_vmmc { > + bootph-pre-ram; > +}; > + > +&pinctrl_reg_usdhc2_vmmc { > + bootph-pre-ram; > +}; > + > +&elemu3 { > + compatible = "fsl,imx93-mu-s4"; > + status = "okay"; > + bootph-all; > + bootph-pre-ram; > +}; > + > +&wdog3 { > + status = "disabled"; > +};
Hi Alice, Would it be possible to factor out the common parts of the U-Boot SPL/Pre-relocation device tree into an imx95-u-boot.dtsi file, like U-Boot already has for imx8mp/imx8mm? From what I understand, the binman configuration and some DT nodes (e.g. soc, aips*, scmi*, elemu*, gpio2-5) are required on all boards, as they are bus parent nodes or needed by the SoC implementation. In the downstream kernel, there are already other boards apart from the EVK (e.g., Verdin-EVK), and we’re also working on a new SoM family (Toradex SMARC iMX95). Having the common parts factored out would make things more organized and easier to upstream. Best regards, João Paulo