1 # U-boot script for tizen RPI4
3 setenv legacy_ramdisk_part 0x7
4 setenv legacy_recovery_part 0x8
6 if test "${target}" = "mmc0"; then;
9 if test "${target}" = "usb0"; then;
11 setenv opts "${opts} rootdelay=2"
14 # find 'inform' partition or use ${mmcinformpart} fallback
15 part number $bootdev $mmcbootdev "inform" res
16 if test -n "${res}"; then;
17 setenv mmcinformpart ${res}
21 setenv partition_name "ramdisk"
22 setenv partition_ab "a"
23 setenv partition_fallback ${legacy_ramdisk_part}
25 if test -e $bootdev $mmcbootdev:$mmcinformpart $slotfile; then;
26 ext4load $bootdev $mmcbootdev:$mmcinformpart $slot_addr $slotfile;
27 if itest.b *${slot_addr} == 0x62; then;
28 setenv partition_ab "b"
31 echo "boot from slot_${partition_ab}"
33 if test -e $bootdev $mmcbootdev:$mmcinformpart $rebootparamfile; then;
34 ext4load $bootdev $mmcbootdev:$mmcinformpart $rebootparam_addr $rebootparamfile;
35 if itest.l *${rebootparam_addr} == ${upgrade_val}; then;
36 setenv partition_name "ramdisk-recovery"
37 setenv partition_fallback ${legacy_recovery_part}
38 setenv bootmode "fota"
39 elif itest.l *${rebootparam_addr} == ${recovery_val}; then;
40 setenv partition_name "ramdisk-recovery"
41 setenv partition_fallback ${legacy_recovery_part}
42 setenv bootmode "recovery"
43 elif itest.l *${rebootparam_addr} == ${download_val}; then;
44 setenv partition_name "ramdisk-recovery"
45 setenv partition_fallback ${legacy_recovery_part}
46 setenv bootmode "flash"
47 elif itest.l *${rebootparam_addr} == ${nodef_val}; then;
48 echo "This reboot parameter is not supported...";
52 # This is for jumping to flash mode on u-boot.
53 if test "${bootmode}" = "download"; then;
54 setenv partition_name "ramdisk-recovery"
55 setenv partition_fallback ${legacy_recovery_part}
56 setenv bootmode "flash"
59 if test "${bootmode}" = "flash"; then;
60 if test -n "${ipaddr}"; then;
61 ip_opt=\"ip=${ipaddr}::${gateway}:${netmask}\"
65 # find the selected ramdisk variant partition
66 part number $bootdev $mmcbootdev "${partition_name}_${partition_ab}" res
67 if test -n "${res}"; then;
68 setenv ramdiskpart ${res}
70 setenv ramdiskpart ${partition_fallback}
73 # setting console device if noting is set
74 if test -z "${console}"; then;
75 if test "$board_name" = "5 Model B"; then;
77 fdt get value uart "/axi/pcie@120000/rp1/serial@30000" status;
78 if test "$uart" = "okay"; then;
79 setenv console "console=ttyAMA0,115200n8";
81 setenv console "console=ttyAMA10,115200n8 earlycon";
84 setenv console "console=ttyS0,115200n8 earlycon=uart8250,mmio32,0xfe215040";
87 echo "console: ${console}"
90 setenv boot_prefixes \"/\"
92 # Find the ramdisk offset and block count
93 part start $bootdev $mmcrootdev $ramdiskpart ramdisk_start
94 part size $bootdev $mmcrootdev $ramdiskpart ramdisk_size
96 # Set to ramdisksize with real partition size. (Need to multiply block-size 0x200)
97 setexpr ramdisksize $ramdisk_size * 200
98 setexpr tizen_kernel_addr_r $ramdisk_addr_r + $ramdisksize
100 # boot from ram0 if there is sbin or it is initramfs
101 if test -e $bootdev $mmcrootdev:$ramdiskpart sbin/init; then;
103 echo "Loading Ramdisk from partition ${ramdiskpart}";
104 $bootdev read $ramdisk_addr_r $ramdisk_start $ramdisk_size;
106 # Check for gzip (initramfs) magic
107 $bootdev read $ramdisk_addr_r $ramdisk_start 1;
108 if itest.w *$ramdisk_addr_r == 0x8b1f; then;
110 echo "Loading initramfs from partition ${ramdiskpart}";
111 $bootdev read $ramdisk_addr_r $ramdisk_start $ramdisk_size;
113 if test "${bootdev}" = "mmc"; then;
114 setenv rootdev mmcblk${mmcrootdev}p${mmcrootpart}
116 if test "${bootdev}" = "usb"; then;
117 setenv rootdev sda${mmcrootpart}
119 setenv bootmode normal
123 # To use cmdline for using serial console. /* Normal mode */
124 setenv bootargs \"${tizen_bootarg} cgroup_enable=memory root=/dev/${rootdev} rw bootmode=${bootmode} partition_ab=${partition_ab} rootwait ${console} ${opts} ${ip_opt}\"
126 echo "Searching for kernel in"; for prefix in $boot_prefixes; do
127 if load $bootdev $mmcbootdev:$mmcbootpart $tizen_kernel_addr_r $prefix$kernel; then;
128 echo ${bootmode} "boot";
130 # use fdt already preloaded by the firmware available at $fdt_addr
131 if test "$kernel" = "zImage"; then;
132 bootz $tizen_kernel_addr_r $ramdisk_addr_r:$ramdisksize $fdt_addr;
134 booti $tizen_kernel_addr_r $ramdisk_addr_r:$ramdisksize $fdt_addr;