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;
> +};
> +
> +&reg_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

Reply via email to