From: Justin Klaassen Date: Sat, 13 Jan 2024 20:28:57 +0000 (+0000) Subject: rockchip: fix boot from non-MMC devices X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=4d49ce1bde84fdd83f0e9df5ec9c43f4ff2a0a9a;p=openwrt%2Fstaging%2Flinusw.git rockchip: fix boot from non-MMC devices Booting from non-MMC devices on Rockchip targets without this change results in a boot failure: Model: FriendlyElec NanoPi R5S Net: eth0: ethernet@fe2a0000 Hit any key to stop autoboot: 0 ** Booting bootflow 'nvme#0.blk#1.bootdev.part_1' with script ** No partition table - mmc 0 ** ** No partition table - mmc 0 ** Couldn't find partition mmc 0:1 Can't set block device Wrong Image Type for bootm command ERROR -91: Protocol wrong type for socket: can't get kernel image! Boot failed (err=1) This change fixes the default boot script for Rockchip targets to support booting from non-MMC devices such as NVMe or USB drives. Some targets with only a boot rom (e.g. NanoPi R5S) may require u-boot to be installed on the eMMC or a MicroSD card in order to boot from non-MMC devices. Fixes: #14420 Reviewed-by: Tianling Shen Signed-off-by: Justin Klaassen --- diff --git a/target/linux/rockchip/image/Makefile b/target/linux/rockchip/image/Makefile index d34948f6ae..5de053bdb6 100644 --- a/target/linux/rockchip/image/Makefile +++ b/target/linux/rockchip/image/Makefile @@ -21,7 +21,7 @@ endef define Build/boot-script # Make an U-boot image and copy it to the boot partition - mkimage -A arm -O linux -T script -C none -a 0 -e 0 -d $(if $(1),$(1),mmc).bootscript $@.boot/boot.scr + mkimage -A arm -O linux -T script -C none -a 0 -e 0 -d $(if $(1),$(1),default).bootscript $@.boot/boot.scr endef define Build/pine64-img diff --git a/target/linux/rockchip/image/default.bootscript b/target/linux/rockchip/image/default.bootscript new file mode 100644 index 0000000000..e9de14ff7a --- /dev/null +++ b/target/linux/rockchip/image/default.bootscript @@ -0,0 +1,15 @@ +part uuid ${devtype} ${devnum}:2 uuid + +if test $stdout = 'serial@fe660000' ; +then serial_addr=',0xfe660000'; +elif test $stdout = 'serial@ff130000' ; +then serial_addr=',0xff130000'; +elif test $stdout = 'serial@ff1a0000' ; +then serial_addr=',0xff1a0000'; +fi; + +setenv bootargs "console=ttyS2,1500000 console=tty1 earlycon=uart8250,mmio32${serial_addr} swiotlb=1 root=PARTUUID=${uuid} rw rootwait"; + +load ${devtype} ${devnum}:1 ${kernel_addr_r} kernel.img + +bootm ${kernel_addr_r} diff --git a/target/linux/rockchip/image/mmc.bootscript b/target/linux/rockchip/image/mmc.bootscript deleted file mode 100644 index 60b59e1b6b..0000000000 --- a/target/linux/rockchip/image/mmc.bootscript +++ /dev/null @@ -1,15 +0,0 @@ -part uuid mmc ${devnum}:2 uuid - -if test $stdout = 'serial@fe660000' ; -then serial_addr=',0xfe660000'; -elif test $stdout = 'serial@ff130000' ; -then serial_addr=',0xff130000'; -elif test $stdout = 'serial@ff1a0000' ; -then serial_addr=',0xff1a0000'; -fi; - -setenv bootargs "console=ttyS2,1500000 console=tty1 earlycon=uart8250,mmio32${serial_addr} swiotlb=1 root=PARTUUID=${uuid} rw rootwait"; - -load mmc ${devnum}:1 ${kernel_addr_r} kernel.img - -bootm ${kernel_addr_r}