# U-boot script for tizen RPI4
+setenv legacy_ramdisk_part 0x7
+setenv legacy_recovery_part 0x8
+
if test "${target}" = "mmc0"; then;
setenv bootdev mmc
fi
if test "${target}" = "usb0"; then;
setenv bootdev usb
+ setenv opts "${opts} rootdelay=2"
+fi
+
+# find 'inform' partition or use ${mmcinformpart} fallback
+part number $bootdev $mmcbootdev "inform" res
+if test -n "${res}"; then;
+ setenv mmcinformpart ${res}
+fi
+
+# set sane defaults
+setenv partition_name "ramdisk"
+setenv partition_ab "a"
+setenv partition_fallback ${legacy_ramdisk_part}
+
+if test -e $bootdev $mmcbootdev:$mmcinformpart $slotfile; then;
+ ext4load $bootdev $mmcbootdev:$mmcinformpart $slot_addr $slotfile;
+ if itest.b *${slot_addr} == 0x62; then;
+ setenv partition_ab "b"
+ fi
fi
+echo "boot from slot_${partition_ab}"
if test -e $bootdev $mmcbootdev:$mmcinformpart $rebootparamfile; then;
ext4load $bootdev $mmcbootdev:$mmcinformpart $rebootparam_addr $rebootparamfile;
if itest.l *${rebootparam_addr} == ${upgrade_val}; then;
- setenv ramdiskpart 8
- setenv bootmode fota
+ setenv partition_name "ramdisk-recovery"
+ setenv partition_fallback ${legacy_recovery_part}
+ setenv bootmode "fota"
elif itest.l *${rebootparam_addr} == ${recovery_val}; then;
- setenv ramdiskpart 8
- setenv bootmode recovery
+ setenv partition_name "ramdisk-recovery"
+ setenv partition_fallback ${legacy_recovery_part}
+ setenv bootmode "recovery"
elif itest.l *${rebootparam_addr} == ${download_val}; then;
- setenv ramdiskpart 8
- setenv bootmode flash
+ setenv partition_name "ramdisk-recovery"
+ setenv partition_fallback ${legacy_recovery_part}
+ setenv bootmode "flash"
elif itest.l *${rebootparam_addr} == ${nodef_val}; then;
echo "This reboot parameter is not supported...";
fi
# This is for jumping to flash mode on u-boot.
if test "${bootmode}" = "download"; then;
- setenv ramdiskpart 8
- setenv bootmode flash
+ setenv partition_name "ramdisk-recovery"
+ setenv partition_fallback ${legacy_recovery_part}
+ setenv bootmode "flash"
fi
if test "${bootmode}" = "flash"; then;
fi
fi
+# find the selected ramdisk variant partition
+part number $bootdev $mmcbootdev "${partition_name}_${partition_ab}" res
+if test -n "${res}"; then;
+ setenv ramdiskpart ${res}
+else
+ setenv ramdiskpart ${partition_fallback}
+fi
+
# boot from ram0 if there is sbin
if test -e $bootdev $mmcrootdev:$ramdiskpart sbin/init; then;
setenv rootdev ram0
# setting console device if noting is set
if test -z "${console}"; then;
- setenv console "console=ttyS0,115200n8 earlycon=uart8250,mmio32,0xfe215040"
+ if test "$board_name" = "5 Model B"; then;
+ fdt addr $fdt_addr;
+ fdt get value uart "/axi/pcie@120000/rp1/serial@30000" status;
+ if test "$uart" = "okay"; then;
+ setenv console "console=ttyAMA0,115200n8";
+ else
+ setenv console "console=ttyAMA10,115200n8 earlycon";
+ fi
+ else
+ setenv console "console=ttyS0,115200n8 earlycon=uart8250,mmio32,0xfe215040";
+ fi
fi
echo "console: ${console}"
# DT image by model
-setenv fdtfile \"bcm2711-rpi-4-b.dtb\"
setenv boot_prefixes \"/\"
# To use cmdline for using serial console. /* Normal mode */
-setenv bootargs \"${tizen_bootarg} root=/dev/${rootdev} rw bootmode=${bootmode} rootwait ${console} ${opts} ${ip_opt}\"
+setenv bootargs \"${tizen_bootarg} cgroup_enable=memory root=/dev/${rootdev} rw bootmode=${bootmode} partition_ab=${partition_ab} rootwait ${console} ${opts} ${ip_opt}\"
# Find the ramdisk offset and block count
part start $bootdev $mmcrootdev $ramdiskpart ramdisk_start
echo "Searching for kernel in"; for prefix in $boot_prefixes; do
if load $bootdev $mmcbootdev:$mmcbootpart $tizen_kernel_addr_r $prefix$kernel; then;
echo ${bootmode} "boot";
- load $bootdev $mmcbootdev:$mmcbootpart $fdt_addr $fdtfile;
if test -e $bootdev $mmcrootdev:$ramdiskpart sbin/init; then;
- echo "Loading Ramdisk from partition"${ramdiskpart};
+ echo "Loading Ramdisk from partition ${ramdiskpart}";
$bootdev read $ramdisk_addr_r $ramdisk_start $ramdisk_size;
fi
+ # use fdt already preloaded by the firmware available at $fdt_addr
if test "$kernel" = "zImage"; then;
bootz $tizen_kernel_addr_r $ramdisk_addr_r:$ramdisksize $fdt_addr;
else