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 | 172 ++++++++++++++++++++++++++++
 arch/arm/mach-imx/imx9/Kconfig           |   6 +
 board/freescale/imx95_evk/Kconfig        |  12 ++
 board/freescale/imx95_evk/Makefile       |  11 ++
 board/freescale/imx95_evk/imx95_evk.c    |  75 ++++++++++++
 board/freescale/imx95_evk/spl.c          | 119 +++++++++++++++++++
 configs/imx95_19x19_evk_defconfig        | 189 +++++++++++++++++++++++++++++++
 include/configs/imx95_evk.h              | 148 ++++++++++++++++++++++++
 8 files changed, 732 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..205f8ce5f9dd73421a6ded86c78d7c5f03adc5a6
--- /dev/null
+++ b/arch/arm/dts/imx95-19x19-evk-u-boot.dtsi
@@ -0,0 +1,172 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2023 NXP
+ */
+
+&{/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";
+};
diff --git a/arch/arm/mach-imx/imx9/Kconfig b/arch/arm/mach-imx/imx9/Kconfig
index 
f594f998895b9578ea43e83ecb6579e1bce9c88e..934a802698f9552977ab84783e72b917553decb4
 100644
--- a/arch/arm/mach-imx/imx9/Kconfig
+++ b/arch/arm/mach-imx/imx9/Kconfig
@@ -46,11 +46,17 @@ config TARGET_PHYCORE_IMX93
        select IMX93
        select IMX9_LPDDR4X
 
+config TARGET_IMX95_19X19_EVK
+       bool "imx95_19x19_evk"
+       select IMX95
+       imply OF_UPSTREAM
+
 endchoice
 
 source "board/freescale/imx93_evk/Kconfig"
 source "board/phytec/phycore_imx93/Kconfig"
 source "board/variscite/imx93_var_som/Kconfig"
+source "board/freescale/imx95_evk/Kconfig"
 
 endif
 
diff --git a/board/freescale/imx95_evk/Kconfig 
b/board/freescale/imx95_evk/Kconfig
new file mode 100644
index 
0000000000000000000000000000000000000000..f9a67353e5db6d3ec94784cf091e45d8817d541c
--- /dev/null
+++ b/board/freescale/imx95_evk/Kconfig
@@ -0,0 +1,12 @@
+if TARGET_IMX95_19X19_EVK
+
+config SYS_BOARD
+       default "imx95_evk"
+
+config SYS_VENDOR
+       default "freescale"
+
+config SYS_CONFIG_NAME
+       default "imx95_evk"
+
+endif
diff --git a/board/freescale/imx95_evk/Makefile 
b/board/freescale/imx95_evk/Makefile
new file mode 100644
index 
0000000000000000000000000000000000000000..d5cff91c961e0045514b44f508fa40650bc24116
--- /dev/null
+++ b/board/freescale/imx95_evk/Makefile
@@ -0,0 +1,11 @@
+#
+# Copyright 2023 NXP
+#
+# SPDX-License-Identifier:      GPL-2.0+
+#
+
+obj-y += imx95_evk.o
+
+ifdef CONFIG_SPL_BUILD
+obj-y += spl.o
+endif
diff --git a/board/freescale/imx95_evk/imx95_evk.c 
b/board/freescale/imx95_evk/imx95_evk.c
new file mode 100644
index 
0000000000000000000000000000000000000000..7a0617e3cb337ff1d2b6916b5f4889614a7e18c5
--- /dev/null
+++ b/board/freescale/imx95_evk/imx95_evk.c
@@ -0,0 +1,75 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2023 NXP
+ */
+
+#include <env.h>
+#include <init.h>
+#include <asm/global_data.h>
+#include <asm/arch-imx9/ccm_regs.h>
+#include <asm/arch/clock.h>
+#include <fdt_support.h>
+#include <usb.h>
+#include <dwc3-uboot.h>
+#include <asm/io.h>
+#include <linux/bitfield.h>
+#include <linux/bitops.h>
+#include <linux/delay.h>
+#include <miiphy.h>
+#include <netdev.h>
+#include <asm/gpio.h>
+#include <asm/mach-imx/sys_proto.h>
+
+#ifdef CONFIG_SCMI_FIRMWARE
+#include <scmi_agent.h>
+#include <scmi_protocols.h>
+#include "../../../dts/upstream/src/arm64/freescale/imx95-clock.h"
+#include "../../../dts/upstream/src/arm64/freescale/imx95-power.h"
+#endif
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int board_early_init_f(void)
+{
+       /* UART1: A55, UART2: M33, UART3: M7 */
+       init_uart_clk(0);
+
+       return 0;
+}
+
+#if CONFIG_IS_ENABLED(NET)
+int board_phy_config(struct phy_device *phydev)
+{
+       if (phydev->drv->config)
+               phydev->drv->config(phydev);
+       return 0;
+}
+#endif
+
+int board_init(void)
+{
+       return 0;
+}
+
+int board_late_init(void)
+{
+#ifdef CONFIG_ENV_IS_IN_MMC
+       board_late_mmc_env_init();
+#endif
+
+       return 0;
+}
+
+#ifdef CONFIG_OF_BOARD_SETUP
+int ft_board_setup(void *blob, struct bd_info *bd)
+{
+       return 0;
+}
+#endif
+
+int board_phys_sdram_size(phys_size_t *size)
+{
+       *size = PHYS_SDRAM_SIZE + PHYS_SDRAM_2_SIZE;
+
+       return 0;
+}
diff --git a/board/freescale/imx95_evk/spl.c b/board/freescale/imx95_evk/spl.c
new file mode 100644
index 
0000000000000000000000000000000000000000..1c8782b64641ce295ec2c1a4390f45b3b7fe0bc2
--- /dev/null
+++ b/board/freescale/imx95_evk/spl.c
@@ -0,0 +1,119 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2024 NXP
+ */
+
+#include <command.h>
+#include <cpu_func.h>
+#include <clk.h>
+#include <hang.h>
+#include <image.h>
+#include <init.h>
+#include <log.h>
+#include <spl.h>
+#include <asm/global_data.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/syscounter.h>
+#include <asm/mach-imx/ele_api.h>
+#include <asm/sections.h>
+#include <dm/uclass.h>
+#include <dm/device.h>
+#include <dm/uclass-internal.h>
+#include <dm/device-internal.h>
+#include <linux/delay.h>
+#include <linux/iopoll.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/ccm_regs.h>
+#ifdef CONFIG_SCMI_FIRMWARE
+#include <scmi_agent.h>
+#include <scmi_protocols.h>
+#include "../../../dts/upstream/src/arm64/freescale/imx95-clock.h"
+#include "../../../dts/upstream/src/arm64/freescale/imx95-power.h"
+#endif
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int spl_board_boot_device(enum boot_device boot_dev_spl)
+{
+       switch (boot_dev_spl) {
+       case SD1_BOOT:
+       case MMC1_BOOT:
+               return BOOT_DEVICE_MMC1;
+       case SD2_BOOT:
+       case MMC2_BOOT:
+               return BOOT_DEVICE_MMC2;
+       case USB_BOOT:
+               return BOOT_DEVICE_BOARD;
+       default:
+               return BOOT_DEVICE_NONE;
+       }
+}
+
+void spl_board_init(void)
+{
+       puts("Normal Boot\n");
+}
+
+extern int imx9_probe_mu(void);
+
+void board_init_f(ulong dummy)
+{
+       int ret;
+       bool ddrmix_power = false;
+
+       /* Clear the BSS. */
+       memset(__bss_start, 0, __bss_end - __bss_start);
+
+#ifdef CONFIG_SPL_RECOVER_DATA_SECTION
+       if (IS_ENABLED(CONFIG_SPL_BUILD)) {
+               spl_save_restore_data();
+       }
+#endif
+
+       timer_init();
+
+       /* Need dm_init() to run before any SCMI calls can be made. */
+       spl_early_init();
+
+       /* Need enable SCMI drivers and ELE driver before enabling console */
+       ret = imx9_probe_mu();
+       if (ret)
+               hang(); /* if MU not probed, nothing can output, just hang here 
*/
+
+       arch_cpu_init();
+
+       board_early_init_f();
+
+       preloader_console_init();
+
+       printf("SOC: 0x%x\n", gd->arch.soc_rev);
+       printf("LC: 0x%x\n", gd->arch.lifecycle);
+
+       /* Will set ARM freq to max rate */
+       clock_init_late();
+
+       /* Check is DDR MIX is already powered up. */
+       u32 state = 0;
+       struct udevice *dev;
+
+       ret = uclass_get_device_by_name(UCLASS_CLK, "protocol@14", &dev);
+       if (ret)
+               printf("%s: %d\n", __func__, ret);
+
+       ret = scmi_pwd_state_get(dev, IMX95_PD_DDR, &state);
+       if (ret) {
+               printf("scmi_pwd_state_get Failed %d for DDRMIX\n", ret);
+       } else {
+               if (state == BIT(30)) {
+                       panic("DDRMIX is powered OFF, Please initialize DDR 
with OEI \n");
+               } else {
+                       printf("DDRMIX is powered UP \n");
+                       ddrmix_power = true;
+               }
+       }
+
+       board_init_r(NULL, 0);
+}
diff --git a/configs/imx95_19x19_evk_defconfig 
b/configs/imx95_19x19_evk_defconfig
new file mode 100644
index 
0000000000000000000000000000000000000000..24ac94fb3a23ca7b367e44d0698dfd28ac327dc4
--- /dev/null
+++ b/configs/imx95_19x19_evk_defconfig
@@ -0,0 +1,189 @@
+CONFIG_ARM=y
+CONFIG_ARCH_IMX9=y
+CONFIG_TEXT_BASE=0x90200000
+CONFIG_SYS_MALLOC_LEN=0x2000000
+CONFIG_SYS_MALLOC_F_LEN=0x10000
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
+CONFIG_NR_DRAM_BANKS=3
+CONFIG_ENV_SIZE=0x4000
+CONFIG_ENV_OFFSET=0x700000
+CONFIG_ENV_SECT_SIZE=0x10000
+CONFIG_DM_GPIO=y
+CONFIG_DEFAULT_DEVICE_TREE="freescale/imx95-19x19-evk"
+CONFIG_SPL_TEXT_BASE=0x20480000
+CONFIG_TARGET_IMX95_19X19_EVK=y
+CONFIG_SYS_PROMPT="u-boot=> "
+CONFIG_SPL_SERIAL=y
+CONFIG_SPL_DRIVERS_MISC=y
+CONFIG_SPL_STACK=0x204d6000
+CONFIG_SPL=y
+CONFIG_SPL_LOAD_IMX_CONTAINER=y
+CONFIG_IMX_CONTAINER_CFG="arch/arm/mach-imx/imx9/scmi/container.cfg"
+CONFIG_SYS_LOAD_ADDR=0x90400000
+CONFIG_SYS_MEMTEST_START=0x90000000
+CONFIG_SYS_MEMTEST_END=0xA0000000
+CONFIG_REMAKE_ELF=y
+CONFIG_SYS_MONITOR_LEN=524288
+CONFIG_DISTRO_DEFAULTS=y
+CONFIG_BOOTCOMMAND="run distro_bootcmd;run bsp_bootcmd"
+CONFIG_DEFAULT_FDT_FILE="imx95-19x19-evk.dtb"
+CONFIG_ARCH_MISC_INIT=y
+CONFIG_BOARD_EARLY_INIT_F=y
+CONFIG_BOARD_LATE_INIT=y
+CONFIG_SPL_MAX_SIZE=0x20000
+CONFIG_SPL_HAS_BSS_LINKER_SECTION=y
+CONFIG_SPL_BSS_START_ADDR=0x204d6000
+CONFIG_SPL_BSS_MAX_SIZE=0x2000
+CONFIG_SPL_BOARD_INIT=y
+CONFIG_SPL_MMC=y
+CONFIG_SPL_GPIO=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_USE_SECTOR=y
+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x1040
+CONFIG_SPL_POWER=y
+CONFIG_SDP_LOADADDR=0x90400000
+
+CONFIG_SPL_WATCHDOG=y
+CONFIG_SYS_MAXARGS=64
+CONFIG_SYS_CBSIZE=2048
+CONFIG_SYS_PBSIZE=2074
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_NVEDIT_EFI=y
+CONFIG_CMD_CRC32=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_PART=y
+CONFIG_CMD_POWEROFF=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=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_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=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_SYS_RELOC_GD_ENV_ADDR=y
+CONFIG_SYS_MMC_ENV_DEV=1
+CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
+CONFIG_USE_ETHPRIME=y
+CONFIG_ETHPRIME="eth0"
+CONFIG_NET_RANDOM_ETHADDR=y
+CONFIG_SPL_DM=y
+CONFIG_REGMAP=y
+CONFIG_SYSCON=y
+CONFIG_DFU_MMC=y
+CONFIG_DFU_RAM=y
+CONFIG_IMX_RGPIO2P=y
+
+CONFIG_MTD=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_DM_SPI=y
+CONFIG_NXP_FSPI=y
+CONFIG_SPI=y
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_FLASH_MT35XU=y
+CONFIG_SF_DEFAULT_BUS=0
+CONFIG_SF_DEFAULT_SPEED=40000000
+
+CONFIG_DM_PCA953X=y
+CONFIG_DM_I2C=y
+CONFIG_SYS_I2C_IMX_LPI2C=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_PHY=y
+CONFIG_MII=y
+CONFIG_PINCTRL=y
+CONFIG_SPL_PINCTRL=y
+CONFIG_SPL_DM_REGULATOR=y
+CONFIG_SPL_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_DM_RTC=y
+CONFIG_DM_SERIAL=y
+CONFIG_FSL_LPUART=y
+CONFIG_ULP_WATCHDOG=y
+CONFIG_LZO=y
+CONFIG_BZIP2=y
+CONFIG_HUSH_PARSER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_OF_SYSTEM_SETUP=y
+CONFIG_ADP5585_GPIO=y
+
+CONFIG_POWER_DOMAIN=y
+
+# SCMI options
+CONFIG_DM_MAILBOX=y
+CONFIG_SCMI_FIRMWARE=y
+CONFIG_SCMI_AGENT_SMCCC=n
+CONFIG_CLK_SCMI=y
+CONFIG_CLK=y
+CONFIG_SPL_CLK_SCMI=y
+CONFIG_SPL_CLK=y
+CONFIG_PINCTRL_IMX_SCMI=y
+CONFIG_SCMI_POWER_DOMAIN=y
+#
+CONFIG_SPL_DM_MAILBOX=y
+CONFIG_SPL_FIRMWARE=y
+#CONFIG_SPL_POWER_DOMAIN=y
+CONFIG_SPL_IMX_MU_MBOX=y
+CONFIG_IMX_MU_MBOX=y
+
+#CONFIG_REMOTEPROC_SCMI_LMM=y
+#CONFIG_CMD_REMOTEPROC=y
+
+# CONFIG_RESET_SCMI=y
+# CONFIG_DM_REGULATOR_SCMI=y
+CONFIG_SPL_OF_TRANSLATE=y
+
+CONFIG_PCI=y
+CONFIG_PCIE_ECAM_GENERIC=y
+CONFIG_PCI_SCAN_SHOW=y
+CONFIG_CMD_PCI=y
+CONFIG_OF_BOARD_SETUP=y
+CONFIG_DM_ETH=y
+CONFIG_DM_MDIO=y
+CONFIG_PHYLIB=y
+CONFIG_PHYLIB_10G=y
+CONFIG_PHY_AQUANTIA=y
+CONFIG_PHY_REALTEK=y
+CONFIG_FSL_ENETC=y
+
+CONFIG_SYS_RX_ETH_BUFFER=8
+CONFIG_IMX8_ROMAPI=n
+CONFIG_CLK_CCF=y
+CONFIG_SPL_CLK_CCF=y
+
+CONFIG_SPL_RECOVER_DATA_SECTION=y
+# CONFIG_BINMAN_FDT is not set
diff --git a/include/configs/imx95_evk.h b/include/configs/imx95_evk.h
new file mode 100644
index 
0000000000000000000000000000000000000000..caac8bffe08648c7eb044dbc2fbdbd8c50474ac1
--- /dev/null
+++ b/include/configs/imx95_evk.h
@@ -0,0 +1,148 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2024 NXP
+ */
+
+#ifndef __IMX95_EVK_H
+#define __IMX95_EVK_H
+
+#include <linux/sizes.h>
+#include <linux/stringify.h>
+#include <asm/arch/imx-regs.h>
+
+#define CFG_SYS_UBOOT_BASE     \
+       (QSPI0_AMBA_BASE + CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR * 512)
+
+#ifdef CONFIG_AHAB_BOOT
+#define AHAB_ENV "sec_boot=yes\0"
+#else
+#define AHAB_ENV "sec_boot=no\0"
+#endif
+
+#define BOOTENV
+
+/* Initial environment variables */
+#define CFG_EXTRA_ENV_SETTINGS         \
+       BOOTENV \
+       AHAB_ENV \
+       "initrd_addr=0x93800000\0" \
+       "initrd_high=0xffffffffffffffff\0" \
+       "emmc_dev=0\0"\
+       "sd_dev=1\0" \
+       "prepare_mcore=setenv mcore_clk clk-imx95.mcore_booted;\0" \
+       "scriptaddr=0x93500000\0" \
+       "kernel_addr_r=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \
+       "image=Image\0" \
+       "splashimage=0xA0000000\0" \
+       "console=ttyLP0,115200 earlycon\0" \
+       "fdt_addr_r=0x93000000\0"                       \
+       "fdt_addr=0x93000000\0"                 \
+       "fdt_high=0xffffffffffffffff\0"         \
+       "cntr_addr=0xA8000000\0"                        \
+       "cntr_file=os_cntr_signed.bin\0" \
+       "boot_fit=no\0" \
+       "fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
+       "bootm_size=0x10000000\0" \
+       "mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \
+       "mmcpart=1\0" \
+       "mmcroot=/dev/mmcblk1p2 rootwait rw\0" \
+       "mmcautodetect=yes\0" \
+       "mmcargs=setenv bootargs ${mcore_clk} console=${console} 
root=${mmcroot}\0 " \
+       "loadbootscript=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} 
${script};\0" \
+       "bootscript=echo Running bootscript from mmc ...; " \
+               "source\0" \
+       "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
+       "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr_r} ${fdtfile}\0" \
+       "loadcntr=fatload mmc ${mmcdev}:${mmcpart} ${cntr_addr} ${cntr_file}\0" 
\
+       "auth_os=auth_cntr ${cntr_addr}\0" \
+       "boot_os=booti ${loadaddr} - ${fdt_addr_r};\0" \
+       "mmcboot=echo Booting from mmc ...; " \
+               "run mmcargs; " \
+               "if test ${sec_boot} = yes; then " \
+                       "if run auth_os; then " \
+                               "run boot_os; " \
+                       "else " \
+                               "echo ERR: failed to authenticate; " \
+                       "fi; " \
+               "else " \
+                       "if test ${boot_fit} = yes || test ${boot_fit} = try; 
then " \
+                               "bootm ${loadaddr}; " \
+                       "else " \
+                               "if run loadfdt; then " \
+                                       "run boot_os; " \
+                               "else " \
+                                       "echo WARN: Cannot load the DT; " \
+                               "fi; " \
+                       "fi;" \
+               "fi;\0" \
+       "netargs=setenv bootargs ${mcore_clk} console=${console} " \
+               "root=/dev/nfs " \
+               "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
+       "netboot=echo Booting from net ...; " \
+               "run netargs;  " \
+               "if test ${ip_dyn} = yes; then " \
+                       "setenv get_cmd dhcp; " \
+               "else " \
+                       "setenv get_cmd tftp; " \
+               "fi; " \
+               "if test ${sec_boot} = yes; then " \
+                       "${get_cmd} ${cntr_addr} ${cntr_file}; " \
+                       "if run auth_os; then " \
+                               "run boot_os; " \
+                       "else " \
+                               "echo ERR: failed to authenticate; " \
+                       "fi; " \
+               "else " \
+                       "${get_cmd} ${loadaddr} ${image}; " \
+                       "if test ${boot_fit} = yes || test ${boot_fit} = try; 
then " \
+                               "bootm ${loadaddr}; " \
+                       "else " \
+                               "if ${get_cmd} ${fdt_addr_r} ${fdtfile}; then " 
\
+                                       "run boot_os; " \
+                               "else " \
+                                       "echo WARN: Cannot load the DT; " \
+                               "fi; " \
+                       "fi;" \
+               "fi;\0" \
+       "bsp_bootcmd=echo Running BSP bootcmd ...; " \
+               "mmc dev ${mmcdev}; if mmc rescan; then " \
+                  "if run loadbootscript; then " \
+                          "run bootscript; " \
+                  "else " \
+                          "if test ${sec_boot} = yes; then " \
+                                  "if run loadcntr; then " \
+                                          "run mmcboot; " \
+                                  "else run netboot; " \
+                                  "fi; " \
+                           "else " \
+                                  "if run loadimage; then " \
+                                          "run mmcboot; " \
+                                  "else run netboot; " \
+                                  "fi; " \
+                               "fi; " \
+                  "fi; " \
+          "fi;"
+
+/* Link Definitions */
+
+#define CFG_SYS_INIT_RAM_ADDR        0x90000000
+#define CFG_SYS_INIT_RAM_SIZE        0x200000
+
+#define CFG_SYS_SDRAM_BASE           0x90000000
+#define PHYS_SDRAM                      0x90000000
+/* Totally 16GB */
+#define PHYS_SDRAM_SIZE                        0x70000000 /* 2GB  - 256MB DDR 
*/
+#define PHYS_SDRAM_2_SIZE              0x380000000 /* 14GB */
+
+#define CFG_SYS_FSL_USDHC_NUM  2
+
+/* Using ULP WDOG for reset */
+#define WDOG_BASE_ADDR          WDG3_BASE_ADDR
+
+/* USB configs */
+#if defined(CONFIG_CMD_NET)
+#define PHY_ANEG_TIMEOUT 20000
+/* Number of Rx BD rings: 8 per ENETC instance */
+#endif
+
+#endif

-- 
2.34.1

Reply via email to