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;
13 # find 'inform' partition or use ${mmcinformpart} fallback
14 part number $bootdev $mmcbootdev "inform" res
15 if test -n "${res}"; then;
16 setenv mmcinformpart ${res}
20 setenv partition_name "ramdisk"
21 setenv partition_ab "a"
22 setenv partition_fallback ${legacy_ramdisk_part}
24 if test -e $bootdev $mmcbootdev:$mmcinformpart $slotfile; then;
25 ext4load $bootdev $mmcbootdev:$mmcinformpart $slot_addr $slotfile;
26 if itest.b *${slot_addr} == 0x62; then;
27 setenv partition_ab "b"
30 echo "boot from slot_${partition_ab}"
32 if test -e $bootdev $mmcbootdev:$mmcinformpart $rebootparamfile; then;
33 ext4load $bootdev $mmcbootdev:$mmcinformpart $rebootparam_addr $rebootparamfile;
34 if itest.l *${rebootparam_addr} == ${upgrade_val}; then;
35 setenv partition_name "ramdisk-recovery"
36 setenv partition_fallback ${legacy_recovery_part}
37 setenv bootmode "fota"
38 elif itest.l *${rebootparam_addr} == ${recovery_val}; then;
39 setenv partition_name "ramdisk-recovery"
40 setenv partition_fallback ${legacy_recovery_part}
41 setenv bootmode "recovery"
42 elif itest.l *${rebootparam_addr} == ${download_val}; then;
43 setenv partition_name "ramdisk-recovery"
44 setenv partition_fallback ${legacy_recovery_part}
45 setenv bootmode "flash"
46 elif itest.l *${rebootparam_addr} == ${nodef_val}; then;
47 echo "This reboot parameter is not supported...";
51 # This is for jumping to flash mode on u-boot.
52 if test "${bootmode}" = "download"; then;
53 setenv partition_name "ramdisk-recovery"
54 setenv partition_fallback ${legacy_recovery_part}
55 setenv bootmode "flash"
58 if test "${bootmode}" = "flash"; then;
59 if test -n "${ipaddr}"; then;
60 ip_opt=\"ip=${ipaddr}::${gateway}:${netmask}\"
64 # find the selected ramdisk variant partition
65 part number $bootdev $mmcbootdev "${partition_name}_${partition_ab}" res
66 if test -n "${res}"; then;
67 setenv ramdiskpart ${res}
69 setenv ramdiskpart ${partition_fallback}
72 # setting console device if noting is set
73 if test -z "${console}"; then;
74 if test "$board_name" = "5 Model B"; then;
76 fdt get value uart "/axi/pcie@120000/rp1/serial@30000" status;
77 if test "$uart" = "okay"; then;
78 setenv console "console=ttyAMA0,115200n8";
80 setenv console "console=ttyAMA10,115200n8 earlycon";
83 setenv console "console=ttyS0,115200n8 earlycon=uart8250,mmio32,0xfe215040";
86 echo "console: ${console}"
89 setenv boot_prefixes \"/\"
91 # Find the ramdisk offset and block count
92 part start $bootdev $mmcrootdev $ramdiskpart ramdisk_start
93 part size $bootdev $mmcrootdev $ramdiskpart ramdisk_size
95 # Set to ramdisksize with real partition size. (Need to multiply block-size 0x200)
96 setexpr ramdisksize $ramdisk_size * 200
97 setexpr tizen_kernel_addr_r $ramdisk_addr_r + $ramdisksize
99 # boot from ram0 if there is sbin or it is initramfs
100 if test -e $bootdev $mmcrootdev:$ramdiskpart sbin/init; then;
102 echo "Loading Ramdisk from partition ${ramdiskpart}";
103 $bootdev read $ramdisk_addr_r $ramdisk_start $ramdisk_size;
105 # Check for gzip (initramfs) magic
106 $bootdev read $ramdisk_addr_r $ramdisk_start 1;
107 if itest.w *$ramdisk_addr_r == 0x8b1f; then;
109 echo "Loading initramfs from partition ${ramdiskpart}";
110 $bootdev read $ramdisk_addr_r $ramdisk_start $ramdisk_size;
112 if test "${bootdev}" = "mmc"; then;
113 setenv rootdev mmcblk${mmcrootdev}p${mmcrootpart}
115 if test "${bootdev}" = "usb"; then;
116 setenv rootdev sda${mmcrootpart}
118 setenv bootmode normal
122 # To use cmdline for using serial console. /* Normal mode */
123 setenv bootargs \"${tizen_bootarg} cgroup_enable=memory root=/dev/${rootdev} rw bootmode=${bootmode} partition_ab=${partition_ab} rootwait ${console} ${opts} ${ip_opt}\"
125 echo "Searching for kernel in"; for prefix in $boot_prefixes; do
126 if load $bootdev $mmcbootdev:$mmcbootpart $tizen_kernel_addr_r $prefix$kernel; then;
127 echo ${bootmode} "boot";
129 # use fdt already preloaded by the firmware available at $fdt_addr
130 if test "$kernel" = "zImage"; then;
131 bootz $tizen_kernel_addr_r $ramdisk_addr_r:$ramdisksize $fdt_addr;
133 booti $tizen_kernel_addr_r $ramdisk_addr_r:$ramdisksize $fdt_addr;