From: Jaehoon Chung Date: Wed, 31 Jul 2024 05:42:10 +0000 (+0900) Subject: tizen: bootscript: Add tizen-boot-bpif3.scr file X-Git-Tag: accepted/tizen/unified/x/20240805.104545~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=220f16902eb248b900e7017f838d3b05d24dbca6;p=platform%2Fkernel%2Fu-boot-spacemit.git tizen: bootscript: Add tizen-boot-bpif3.scr file Add tizen-boot-bpif3.scr file for tizen boot script. Change-Id: I2528655cce03079df51f0b0ae64a3ed77202c8b2 Signed-off-by: Jaehoon Chung --- diff --git a/tizen/bootscript/tizen-boot-bpif3.scr b/tizen/bootscript/tizen-boot-bpif3.scr new file mode 100644 index 0000000000..0733e6347f --- /dev/null +++ b/tizen/bootscript/tizen-boot-bpif3.scr @@ -0,0 +1,157 @@ +# U-boot script for tizen BPIF3 and QEMU + +if test -z "${devtype}"; then + setenv devtype "${bootdevtype}" + if test "${target}" = "virtio0"; then; + setenv devtype virtio + fi + if test "${target}" = "mmc0" -o "${target}" = "mmc1"; then; + setenv devtype mmc + fi + if test "${target}" = "usb0"; then; + setenv devtype usb + fi + if test "${target}" = "nvme" -o "${target}" = "nvme0"; then; + setenv devtype nvme + fi +fi + +# find 'inform' partition +part number $devtype $devnum "inform" informpart +if test -z "${informpart}"; then; + echo No \"inform\" partition found. + exit +fi + +setenv partition_ab "a" +setenv slotfile "partition-ab.info" +if test -e $devtype $devnum:$informpart $slotfile; then; + ext4load $devtype $devnum:$informpart $slot_addr $slotfile; + if itest.b *${slot_addr} == 0x62; then; + setenv partition_ab "b" + fi +fi +echo "boot from slot_${partition_ab}" + +# find the boot partition +part number $devtype $devnum "bootfs" bootpart + +# set sane defaults +setenv partition_name "ramdisk" +if test -z "${bootmode}"; then; + setenv bootmode "normal" +fi + +# check rebootparamfile +if test -e $devtype $devnum:$informpart $rebootparamfile; then; + ext4load $devtype $devnum:$informpart $rebootparam_addr $rebootparamfile; + if itest.l *${rebootparam_addr} == ${upgrade_val}; then; + setenv partition_name "ramdisk-recovery" + setenv bootmode "fota" + if test -e $devtype $devnum:$informpart $upgradetypefile; then; + ext4load $devtype $devnum:$informpart $upgradetype_addr $upgradetypefile; + if itest.l *${upgradetype_addr} == ${upgradetype_online_val}; then; + setenv partition_name "ramdisk" + fi + fi + elif itest.l *${rebootparam_addr} == ${recovery_val}; then; + setenv partition_name "ramdisk-recovery" + setenv bootmode "recovery" + elif itest.l *${rebootparam_addr} == ${download_val}; then; + setenv partition_name "ramdisk-recovery" + setenv bootmode "flash" + elif itest.l *${rebootparam_addr} == ${nodef_val}; then; + echo "This reboot parameter is not supported..."; + fi +fi + +# This is for jumping to flash mode on u-boot. +if test "${bootmode}" = "download"; then; + setenv partition_name "ramdisk-recovery" + setenv bootmode "flash" +fi + +if test "${bootmode}" = "flash"; then; + if test -n "${ipaddr}"; then; + ip_opt=\"ip=${ipaddr}::${gateway}:${netmask}::eth0:off\" + fi +fi + +# find the selected ramdisk variant partition and load it +part number $devtype $devnum "${partition_name}_${partition_ab}" ramdiskpart +if test -n "${ramdiskpart}"; then; + # Find the ramdisk offset and block count + part start $devtype $devnum $ramdiskpart ramdisk_start + part size $devtype $devnum $ramdiskpart ramdisk_size + # Load it + $devtype dev $devnum; + $devtype read $ramdisk_addr_r $ramdisk_start $ramdisk_size; + # Set to ramdisk_size with real partition size. (Need to multiply block-size 0x200) + setexpr ramdisk_size $ramdisk_size * 200 +else + echo No \"${partition_name}_${partition_ab}\" partition found. +fi + +# check loaded ramdisk +if test -e $devtype $devnum:$ramdiskpart sbin/init; then; + echo "Using ramdisk from partition ${ramdiskpart}"; + # boot from ram0 if there is sbin + setenv rootargs root=/dev/ram0 rw +elif itest.w *$ramdisk_addr_r == 0x8b1f; then; # check for gzip (initramfs) magic + echo "Using initramfs from partition ${ramdiskpart}"; + setenv rootargs +else + echo "Booting without initrd/initramfs"; + setenv bootmode normal + setenv ramdisk_size 0 + + # find the rootfs partition + part number $devtype $devnum "rootfs_${partition_ab}" rootfspart + if test -z "${rootfspart}"; then; + echo No \"rootfs_${partition_ab}\" partition found. + exit + fi + + # simplified hex2dec conversion for 0x1..0x13->1..19 range + if itest $rootfspart > 9; then; + setexpr rootfspart $rootfspart + 6 + else + setexpr rootfspart $rootfspart + 0 + fi + if test "${devtype}" = "mmc"; then; + setenv rootargs root=/dev/mmcblk${devnum}p${rootfspart} rw rootwait + elif test "${devtype}" = "usb"; then; + setenv rootargs root=/dev/sda${rootfspart} rw rootwait + elif test "${devtype}" = "nvme"; then; + setenv rootargs root=/dev/nvme0n1p${rootfspart} rw rootwait + elif test "${devtype}" = "virtio"; then; + setenv rootargs root=/dev/vda${rootfspart} rw rootwait + fi +fi + +# set console device if nothing is set +if test -z "${console}"; then; + setenv console "console=ttyS0,115200"; +fi +echo "console: ${console}" + +setenv bootargs \"${tizen_bootarg} ${rootargs} bootmode=${bootmode} partition_ab=${partition_ab} ${console} ${opts} ${ip_opt}\" + +setenv boot_prefixes \"/\" + +setexpr tizen_kernel_addr_r $ramdisk_addr_r + $ramdisk_size +echo "Searching for kernel in"; for prefix in $boot_prefixes; do +echo $prefix$kernel; +if load $devtype $devnum:$bootpart $tizen_kernel_addr_r $prefix$kernel; then; + echo ${bootmode} "boot"; + if test "${board_name}" = "qemu-riscv"; then + # If running in QEMU use the DeviceTree provided by + # the emulator. It is the most accurate description of + # the platform. + fdt move $fdt_addr $fdt_addr_r + else + load $devtype $devnum:$bootpart $fdt_addr_r $prefix$fdtfile + fi + booti $tizen_kernel_addr_r $ramdisk_addr_r:$ramdisk_size $fdt_addr_r; +fi +done