summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandy.hu <andy.hu@starfivetech.com>2023-08-17 11:13:21 +0300
committerandy.hu <andy.hu@starfivetech.com>2023-08-17 11:13:21 +0300
commit7f96b15e26f14df56fa9d480c0cc6f7434997360 (patch)
tree7de373571c152b1199a291033ff15045662e2fb7
parent063ca7d1a799cf50fea9e0ca913c1e93cb5ff361 (diff)
parent1f262420f254129f6be776086561057bc6bfaa41 (diff)
downloadu-boot-7f96b15e26f14df56fa9d480c0cc6f7434997360.tar.xz
Merge branch 'CR_6370_nvme_sd_boot_samin.guo' into 'vf2-devel'VF2_v3.6.1
CR6370: riscv: starfive: vf2: Optimize boot logic(sd/nvme) See merge request sbc/u-boot!61
-rw-r--r--configs/starfive_visionfive2_defconfig6
-rw-r--r--include/configs/starfive-visionfive2.h222
2 files changed, 119 insertions, 109 deletions
diff --git a/configs/starfive_visionfive2_defconfig b/configs/starfive_visionfive2_defconfig
index 4b426d6ca7..ab97830688 100644
--- a/configs/starfive_visionfive2_defconfig
+++ b/configs/starfive_visionfive2_defconfig
@@ -29,10 +29,10 @@ CONFIG_SPI_BOOT=y
CONFIG_USE_BOOTARGS=y
CONFIG_BOOTARGS="console=tty1 console=ttyS0,115200 debug rootwait earlycon=sbi"
CONFIG_USE_BOOTCOMMAND=y
-CONFIG_BOOTCOMMAND="run load_vf2_env;run importbootenv;run boot2; run scan_boot_dev; run load_distro_uenv;run distro_bootcmd"
+CONFIG_BOOTCOMMAND="run sdk_boot_env; run distro_boot_env"
CONFIG_USE_PREBOOT=y
-CONFIG_PREBOOT="run chipa_set_uboot;run mmcbootenv"
-CONFIG_DEFAULT_FDT_FILE="starfive/starfive_visionfive2.dtb"
+CONFIG_PREBOOT="run chipa_set_uboot;"
+CONFIG_DEFAULT_FDT_FILE="starfive/jh7110-visionfive-v2.dtb"
CONFIG_LOG_MAX_LEVEL=4
CONFIG_SPL_LOG=y
CONFIG_DISPLAY_CPUINFO=y
diff --git a/include/configs/starfive-visionfive2.h b/include/configs/starfive-visionfive2.h
index 969ac55a3d..8092362651 100644
--- a/include/configs/starfive-visionfive2.h
+++ b/include/configs/starfive-visionfive2.h
@@ -164,56 +164,6 @@
"run cma_ddr8g_set;" \
"fi; \0 "
-
-#define VF2_DISTRO_BOOTENV \
- "fatbootpart=1:3\0" \
- "bootdev=mmc\0" \
- "scan_boot_dev=" \
- "if test ${bootmode} = flash; then " \
- "if pci enum; then " \
- "nvme scan; " \
- "echo pci enum ...;" \
- "fi; " \
- "if nvme dev; then " \
- "setenv fatbootpart ${devnvme}:${nvmepart};" \
- "setenv devnum ${devnvme};" \
- "setenv bootdev nvme;" \
- "else " \
- "if mmc dev ${devnum}; then " \
- "echo found device ${devnum};" \
- "else " \
- "setenv devnum 0;" \
- "mmc dev 0;" \
- "fi; " \
- "fi; " \
- "fi; \0" \
- "load_distro_uenv=" \
- "fatload ${bootdev} ${devnum}:3 ${loadaddr} /${bootenv}; " \
- "setenv fatbootpart ${devnum}:3; " \
- "env import ${loadaddr} 200; \0" \
- "fdt_loaddtb=" \
- "fatload ${bootdev} ${fatbootpart} ${fdt_addr_r} /dtbs/${fdtfile}; fdt addr ${fdt_addr_r}; \0" \
- "fdt_sizecheck=" \
- "fatsize ${bootdev} ${fatbootpart} /dtbs/${fdtfile}; \0" \
- "set_fdt_distro=" \
- "if test ${chip_vision} = A; then " \
- "if test ${memory_size} = 200000000; then " \
- "run chipa_gmac_set;" \
- "run visionfive2_mem_set;" \
- "fatwrite ${bootdev} ${fatbootpart} ${fdt_addr_r} /dtbs/${fdtfile} ${filesize};" \
- "else " \
- "run chipa_gmac_set;" \
- "run visionfive2_mem_set;" \
- "fatwrite ${bootdev} ${fatbootpart} ${fdt_addr_r} /dtbs/${fdtfile} ${filesize};" \
- "fi;" \
- "else " \
- "run visionfive2_mem_set;" \
- "run cpu_vol_set;" \
- "fatwrite ${bootdev} ${fatbootpart} ${fdt_addr_r} /dtbs/${fdtfile} ${filesize};" \
- "fi; \0" \
- "bootcmd_distro=" \
- "run fdt_loaddtb; run fdt_sizecheck; run set_fdt_distro; sysboot ${bootdev} ${fatbootpart} fat ${scriptaddr} /${boot_syslinux_conf}; \0" \
-
#define PARTS_DEFAULT \
"name=loader1,start=17K,size=1M,type=${type_guid_gpt_loader1};" \
"name=loader2,size=4MB,type=${type_guid_gpt_loader2};" \
@@ -248,63 +198,124 @@
"run visionfive2_mem_set;" \
"run chipa_set;\0"
-#define CHIPA_SET_FORCE \
- "chipa_set_uboot_force=" \
- "fdt addr ${uboot_fdt_addr};" \
- "run chipa_gmac_set; \0" \
- "chipa_set_linux_force=" \
- "fdt addr ${fdt_addr_r};" \
- "run visionfive2_mem_set;" \
- "run chipa_gmac_set; \0" \
-
-#define VISIONFIVE2_BOOTENV_NVME \
- "nvmepart=3\0" \
- "devnvme=0\0" \
- "nvme_env=vf2_nvme_uEnv.txt\0" \
-
-#define VISIONFIVE2_BOOTENV \
+#define VF2_SDK_BOOTENV \
"bootenv=uEnv.txt\0" \
- "testenv=vf2_uEnv.txt\0" \
+ "bootenv_sdk=vf2_uEnv.txt\0" \
+ "boot_devs=mmc nvme\0" \
+ "emmc_devnum=0\0" \
+ "sd_devnum=1\0" \
+ "mmc_devnum_l=1 0\0" \
+ "nvme_devnum_l=0 0\0"
+
+#define JH7110_SDK_BOOTENV \
"bootdir=/boot\0" \
- "mmcpart=3\0" \
- "load_vf2_env=fatload mmc ${bootpart} ${loadaddr} ${testenv}\0" \
- "loadbootenv=fatload mmc ${bootpart} ${loadaddr} ${bootenv}\0" \
- "ext4bootenv=" \
- "ext4load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootenv}\0"\
- "importbootenv=" \
- "echo Importing environment from ${devnum}/${devnvme} ...; "\
- "env import -t ${loadaddr} ${filesize}\0" \
- "scan_mmc_dev=" \
- "if test ${bootmode} = flash; then " \
- "if pci enum; then " \
- "nvme scan; " \
- "echo pci enum ...;" \
+ "bootpart=3\0" \
+ "rootpart=4\0" \
+ "load_sdk_uenv=" \
+ "fatload ${bootdev} ${devnum}:${bootpart} ${loadaddr} ${bootenv_sdk};" \
+ "env import -t ${loadaddr} ${filesize}; \0" \
+ "mmc_test_and_boot=" \
+ "if mmc dev ${devnum}; then " \
+ "echo Try booting from MMC${devnum} ...; " \
+ "setenv sdev_blk mmcblk${devnum}p${rootpart};" \
+ "run load_sdk_uenv; run boot2;" \
+ "fi;\0" \
+ "bootenv_mmc=" \
+ "setenv bootdev mmc;" \
+ "if test ${bootmode} = flash; then " \
+ "for mmc_devnum in ${mmc_devnum_l}; do " \
+ "setenv devnum ${mmc_devnum}; " \
+ "run mmc_test_and_boot;" \
+ "done;" \
"fi; " \
- "if nvme dev; then " \
- "setenv btpart ${devnvme}:${nvmepart};" \
- "setenv load_vf2_env fatload nvme ${btpart} ${loadaddr} ${nvme_env};" \
- "else " \
- "if mmc dev ${devnum}; then " \
- "echo found device ${devnum};" \
- "else " \
- "setenv devnum 0;" \
- "mmc dev 0;" \
- "fi; " \
- "if mmc rescan; then " \
- "run loadbootenv && run importbootenv; "\
- "run ext4bootenv && run importbootenv; "\
- "if test -n $uenvcmd; then " \
- "echo Running uenvcmd ...; " \
- "run uenvcmd; " \
- "fi; " \
- "fi; " \
- "fi; " \
- "fi; " \
- "echo bootmode ${bootmode} device ${devnum}/${devnvme};\0" \
- "mmcbootenv=run scan_mmc_dev; " \
- "setenv bootpart ${devnum}:${mmcpart};\0" \
+ "if test ${bootmode} = sd; then " \
+ "setenv devnum ${sd_devnum};" \
+ "run mmc_test_and_boot;" \
+ "fi; " \
+ "if test ${bootmode} = emmc; then " \
+ "setenv devnum ${emmc_devnum};"\
+ "run mmc_test_and_boot;" \
+ "fi; \0" \
+ "bootenv_nvme=" \
+ "if test ${bootmode} = flash; then " \
+ "for nvme_devnum in ${nvme_devnum_l}; do " \
+ "setenv devnum ${nvme_devnum};" \
+ "if pci enum; then " \
+ "nvme scan; " \
+ "fi; " \
+ "if nvme dev ${devnum}; then " \
+ "echo Try booting from NVME${devnum} ...; " \
+ "setenv bootdev nvme;" \
+ "setenv sdev_blk nvme${devnum}n1p${rootpart};" \
+ "run load_sdk_uenv; run boot2;" \
+ "fi; " \
+ "done; " \
+ "fi; \0" \
+ "sdk_boot_env=" \
+ "for bootdev_s in ${boot_devs}; do " \
+ "run bootenv_${bootdev_s}; " \
+ "done;\0" \
"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0"
+#define JH7110_DISTRO_BOOTENV \
+ "bootdir=/boot\0" \
+ "bootpart=3\0" \
+ "rootpart=4\0" \
+ "load_distro_uenv=" \
+ "fatload ${bootdev} ${devnum}:${bootpart} ${loadaddr} /${bootenv}; " \
+ "env import ${loadaddr} ${filesize}; \0" \
+ "fdt_loaddtb=" \
+ "fatload ${bootdev} ${devnum}:${bootpart} ${fdt_addr_r} /dtbs/${fdtfile}; fdt addr ${fdt_addr_r}; \0" \
+ "fdt_sizecheck=" \
+ "fatsize ${bootdev} ${devnum}:${bootpart} /dtbs/${fdtfile}; \0" \
+ "set_fdt_distro=" \
+ "run chipa_set_linux; run cpu_vol_set;" \
+ "fatwrite ${bootdev} ${devnum}:${bootpart} ${fdt_addr_r} /dtbs/${fdtfile} ${filesize}; \0" \
+ "bootcmd_distro=" \
+ "run load_distro_uenv; " \
+ "run fdt_loaddtb; run fdt_sizecheck; run set_fdt_distro; " \
+ "sysboot ${bootdev} ${devnum}:${bootpart} fat ${scriptaddr} /${boot_syslinux_conf}; \0" \
+ "distro_mmc_test_and_boot=" \
+ "if mmc dev ${devnum}; then " \
+ "echo Try booting from MMC${devnum} ...; " \
+ "run bootcmd_distro;" \
+ "fi;\0" \
+ "distro_bootenv_mmc=" \
+ "setenv bootdev mmc;" \
+ "if test ${bootmode} = flash; then " \
+ "for mmc_devnum in ${mmc_devnum_l}; do "\
+ "setenv devnum ${mmc_devnum}; " \
+ "run distro_mmc_test_and_boot;" \
+ "done;" \
+ "fi; " \
+ "if test ${bootmode} = sd; then " \
+ "setenv devnum ${sd_devnum};" \
+ "run distro_mmc_test_and_boot;" \
+ "fi; " \
+ "if test ${bootmode} = emmc; then " \
+ "setenv devnum ${emmc_devnum};"\
+ "run distro_mmc_test_and_boot;" \
+ "fi; \0" \
+ "distro_bootenv_nvme=" \
+ "if test ${bootmode} = flash; then " \
+ "for nvme_devnum in ${nvme_devnum_l}; do " \
+ "setenv devnum ${nvme_devnum};" \
+ "if pci enum; then " \
+ "nvme scan; " \
+ "fi; " \
+ "if nvme dev ${devnum}; then " \
+ "echo Try booting from NVME${devnum} ...; " \
+ "setenv bootdev nvme;" \
+ "run bootcmd_distro; " \
+ "fi; " \
+ "done; " \
+ "fi; \0" \
+ "distro_boot_env=" \
+ "echo Tring booting distro ...;" \
+ "for bootdev_s in ${boot_devs}; do " \
+ "run distro_bootenv_${bootdev_s}; " \
+ "done; \0"
+
#define CONFIG_EXTRA_ENV_SETTINGS \
"fdt_high=0xffffffffffffffff\0" \
"initrd_high=0xffffffffffffffff\0" \
@@ -319,9 +330,9 @@
"ramdisk_addr_r=0x46100000\0" \
"fdtoverlay_addr_r=0x4f000000\0" \
"loadaddr=0x60000000\0" \
- VF2_DISTRO_BOOTENV \
- VISIONFIVE2_BOOTENV_NVME \
- VISIONFIVE2_BOOTENV \
+ VF2_SDK_BOOTENV \
+ JH7110_SDK_BOOTENV \
+ JH7110_DISTRO_BOOTENV \
CHIPA_GMAC_SET \
CHIPA_SET \
CPU_VOL_1020_SET \
@@ -331,7 +342,6 @@
CPU_SPEED_1500_SET \
CPU_FREQ_VOL_SET \
CMA_SIZE_SET \
- CHIPA_SET_FORCE \
VISIONFIVE2_MEM_SET \
"type_guid_gpt_loader1=" TYPE_GUID_LOADER1 "\0" \
"type_guid_gpt_loader2=" TYPE_GUID_LOADER2 "\0" \