Skip to content

Commit

Permalink
[DEB] Add StarFive SDK boot support to U-Boot env
Browse files Browse the repository at this point in the history
Signed-off-by: MichaIng <[email protected]>
  • Loading branch information
MichaIng committed Oct 25, 2023
1 parent 9eed968 commit 66a4ba5
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions linux-image-visionfive2/etc/u-boot-initial-env
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ ipaddr=192.168.120.230

preboot=run chipa_set_uboot
chipa_set_uboot=fdt addr "${uboot_fdt_addr}"; run chipa_set
chipa_set=if test "${chip_vision}" = A; then echo 'VisionFive 2 revision A detected, updating device tree for Ethernet access ...'; run chipa_gmac_set; fi
chipa_set=if test "${chip_vision}" = 'A'; then echo 'VisionFive 2 revision A detected, updating device tree for Ethernet access ...'; run chipa_gmac_set; fi
chipa_gmac_set=fdt set /soc/ethernet@16030000/ethernet-phy@0 tx_inverted_10 <0x0>; fdt set /soc/ethernet@16030000/ethernet-phy@0 tx_inverted_100 <0x0>; fdt set /soc/ethernet@16030000/ethernet-phy@0 tx_inverted_1000 <0x0>; fdt set /soc/ethernet@16030000/ethernet-phy@0 tx_delay_sel <0x9>; fdt set /soc/ethernet@16040000/ethernet-phy@1 tx_inverted_10 <0x0>; fdt set /soc/ethernet@16040000/ethernet-phy@1 tx_inverted_100 <0x0>; fdt set /soc/ethernet@16040000/ethernet-phy@1 tx_inverted_1000 <0x0>; fdt set /soc/ethernet@16040000/ethernet-phy@1 tx_delay_sel <0x9>

bootcmd=setenv devnum; for target in "${boot_targets}"; do echo "Trying to boot from ${target} ..."; run "bootcmd_${target}"; done
Expand All @@ -28,13 +28,13 @@ bootcmd_mmc1=devnum=1; run mmc_boot
bootcmd_usb0=devnum=0; run usb_boot
bootcmd_nvme0=devnum=0; run nvme_boot
bootcmd_mmc0=devnum=0; run mmc_boot
bootcmd_dhcp=devtype=dhcp; usb start; pci enum; if dhcp "${scriptaddr}" boot.scr.uimg; then source "${scriptaddr}"; fi; setenv efi_fdtfile "${fdtfile}"; setenv efi_old_vci "${bootp_vci}"; setenv efi_old_arch "${bootp_arch}"; setenv bootp_vci 'PXEClient:Arch:00027:UNDI:003000'; setenv bootp_arch '0x1b'; if dhcp "${kernel_addr_r}"; then tftpboot "${fdt_addr_r}" "dtb/${efi_fdtfile}"; if fdt addr "${fdt_addr_r}"; then bootefi "${kernel_addr_r}" "${fdt_addr_r}"; else bootefi "${kernel_addr_r}" "${fdtcontroladdr}"; fi; fi; setenv bootp_vci "${efi_old_vci}"; setenv bootp_arch "${efi_old_arch}"; setenv efi_fdtfile; setenv efi_old_arch; setenv efi_old_vci
bootcmd_dhcp=devtype=dhcp; pci enum; usb reset; if dhcp "${scriptaddr}" boot.scr.uimg; then source "${scriptaddr}"; fi; setenv efi_fdtfile "${fdtfile}"; setenv efi_old_vci "${bootp_vci}"; setenv efi_old_arch "${bootp_arch}"; setenv bootp_vci 'PXEClient:Arch:00027:UNDI:003000'; setenv bootp_arch '0x1b'; if dhcp "${kernel_addr_r}"; then tftpboot "${fdt_addr_r}" "dtb/${efi_fdtfile}"; if fdt addr "${fdt_addr_r}"; then bootefi "${kernel_addr_r}" "${fdt_addr_r}"; else bootefi "${kernel_addr_r}" "${fdtcontroladdr}"; fi; fi; setenv bootp_vci "${efi_old_vci}"; setenv bootp_arch "${efi_old_arch}"; setenv efi_fdtfile; setenv efi_old_arch; setenv efi_old_vci

mmc_boot=if mmc dev "${devnum}"; then devtype=mmc; run scan_dev_for_boot_part; fi
usb_boot=pci enum; usb reset; usb start; if usb dev "${devnum}"; then devtype=usb; run scan_dev_for_boot_part; fi
usb_boot=pci enum; usb reset; if usb dev "${devnum}"; then devtype=usb; run scan_dev_for_boot_part; fi
nvme_boot=pci enum; nvme scan; if nvme dev "${devnum}"; then devtype=nvme; run scan_dev_for_boot_part; fi

scan_dev_for_boot_part=part list "${devtype}" "${devnum}" -bootable devplist; env exists devplist || setenv devplist 1; for bootpart in ${devplist}; do if fstype "${devtype}" "${devnum}:${bootpart}" bootfstype; then run scan_dev_for_boot; fi; done; setenv devplist
scan_dev_for_boot_part=part list "${devtype}" "${devnum}" -bootable devplist; env exists devplist || setenv devplist 1; for bootpart in ${devplist}; do if fstype "${devtype}" "${devnum}:${bootpart}" bootfstype; then run scan_dev_for_boot; fi; done; setenv devplist; run starfive_sdk_boot
scan_dev_for_boot=echo "Scanning ${devtype} ${devnum}:${bootpart} ..."; for prefix in ${boot_prefixes}; do run scan_dev_for_uenv; run starfive_fdt_rewrite; run scan_dev_for_extlinux; run scan_dev_for_scripts; done; run scan_dev_for_efi
scan_dev_for_uenv=if test -e "${devtype}" "${devnum}:${bootpart}" "${prefix}${bootenv}"; then echo "Found U-Boot environment file ${prefix}${bootenv}"; run load_uenv; fi
scan_dev_for_extlinux=if test -e "${devtype}" "${devnum}:${bootpart}" "${prefix}extlinux/extlinux.conf"; then echo "Found ${prefix}extlinux/extlinux.conf"; run boot_extlinux; echo 'SCRIPT FAILED: continuing ...'; fi
Expand Down Expand Up @@ -73,3 +73,5 @@ cpu_speed_1500_set=echo 'Updating device tree for 1500 MHz CPU speed ...'; fdt r
cpu_vol_1020_set=echo 'Updating device tree for 1.02V CPU voltage ...'; fdt set /opp-table-0/opp-1500000000 opp-microvolt <1020000>
cpu_vol_1040_set=echo 'Updating device tree for 1.04V CPU voltage ...'; fdt set /opp-table-0/opp-1500000000 opp-microvolt <1040000>
cpu_vol_1060_set=echo 'Updating device tree for 1.06V CPU voltage ...'; fdt set /opp-table-0/opp-1500000000 opp-microvolt <1060000>

starfive_sdk_boot=if test -e "${devtype}" "${devnum}:3" /vf2_uEnv.txt && fatload "${devtype}" "${devnum}:3" "${scriptaddr}" /vf2_uEnv.txt; then setenv loadaddr 0x60000000; if "${devtype}" = 'nvme'; then setenv sdev_blk "nvme${devnum}n1p4"; elif "${devtype}" = 'usb'; then setenv sdev_blk sda4; else setenv sdev_blk "mmcblk${devnum}p4"; fi; setenv bootdelay 2; setenv bootdev "${devtype}"; setenv bootpart 3; env import -t "${scriptaddr}" "${filesize}"; run boot2; fi

0 comments on commit 66a4ba5

Please sign in to comment.