tizen: bootscript: Use set bootmode also for cpio initramfs
[platform/kernel/u-boot.git] / tizen / bootscript / tizen-boot-rpi4.scr
1 # U-boot script for tizen RPI4
2
3 setenv legacy_ramdisk_part      0x7
4 setenv legacy_recovery_part     0x8
5
6 if test "${target}" = "mmc0"; then;
7         setenv bootdev mmc
8 fi
9 if test "${target}" = "usb0"; then;
10         setenv bootdev usb
11         setenv opts "${opts} rootdelay=2"
12 fi
13
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}
18 fi
19
20 # set sane defaults
21 setenv partition_name "ramdisk"
22 setenv partition_ab "a"
23 setenv partition_fallback ${legacy_ramdisk_part}
24
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"
29         fi
30 fi
31 echo "boot from slot_${partition_ab}"
32
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...";
49         fi
50 fi
51
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"
57 fi
58
59 if test "${bootmode}" = "flash"; then;
60         if test -n "${ipaddr}"; then;
61                 ip_opt=\"ip=${ipaddr}::${gateway}:${netmask}\"
62         fi
63 fi
64
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}
69 else
70         setenv ramdiskpart ${partition_fallback}
71 fi
72
73 # setting console device if noting is set
74 if test -z "${console}"; then;
75         if test "$board_name" = "5 Model B"; then;
76                 fdt addr $fdt_addr;
77                 fdt get value uart "/axi/pcie@120000/rp1/serial@30000" status;
78                 if test "$uart" = "okay"; then;
79                         setenv console "console=ttyAMA0,115200n8";
80                 else
81                         setenv console "console=ttyAMA10,115200n8 earlycon";
82                 fi
83         else
84                 setenv console "console=ttyS0,115200n8 earlycon=uart8250,mmio32,0xfe215040";
85         fi
86 fi
87 echo "console: ${console}"
88
89 # DT image by model
90 setenv boot_prefixes \"/\"
91
92 # Find the ramdisk offset and block count
93 part start $bootdev $mmcrootdev $ramdiskpart ramdisk_start
94 part size $bootdev $mmcrootdev $ramdiskpart ramdisk_size
95
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
99
100 # boot from ram0 if there is sbin or it is initramfs
101 if test -e $bootdev $mmcrootdev:$ramdiskpart sbin/init; then;
102         setenv rootdev ram0
103         echo "Loading Ramdisk from partition ${ramdiskpart}";
104         $bootdev read $ramdisk_addr_r $ramdisk_start $ramdisk_size;
105 else
106         # Check for gzip (initramfs) magic
107         $bootdev read $ramdisk_addr_r $ramdisk_start 1;
108         if itest.w *$ramdisk_addr_r == 0x8b1f; then;
109                 setenv rootdev ram0
110                 echo "Loading initramfs from partition ${ramdiskpart}";
111                 $bootdev read $ramdisk_addr_r $ramdisk_start $ramdisk_size;
112         else
113                 if test "${bootdev}" = "mmc"; then;
114                         setenv rootdev mmcblk${mmcrootdev}p${mmcrootpart}
115                 fi
116                 if test "${bootdev}" = "usb"; then;
117                         setenv rootdev sda${mmcrootpart}
118                 fi
119                 setenv bootmode normal
120         fi
121 fi
122
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}\"
125
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";
129
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;
133         else
134                 booti $tizen_kernel_addr_r $ramdisk_addr_r:$ramdisksize $fdt_addr;
135         fi
136 fi
137 done