tizen: rpi: add support for RPi5 console
[platform/kernel/u-boot.git] / tizen / bootscript / tizen-boot-rpi4.scr
index 1ee425d..d2bb38b 100644 (file)
@@ -1,23 +1,49 @@
 # 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
@@ -25,8 +51,9 @@ 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;
@@ -35,6 +62,14 @@ 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
@@ -50,16 +85,25 @@ fi
 
 # 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
@@ -72,12 +116,12 @@ setexpr tizen_kernel_addr_r $ramdisk_addr_r + $ramdisksize
 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