blob: 3732895a4e1f9b1b79cffc3bee0a3db791aa2b7f [file] [log] [blame]
Sam Wu083c4852023-04-25 19:37:54 +08001// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
4*/
5/*
6* uboot text based env
7* more details: https://u-boot.readthedocs.io/en/latest/usage/environment.html
8* or: v2023 doc/usage/environment.rst
9*/
Tao Zeng4dd2adf2024-02-21 15:26:04 +080010#ifdef CONFIG_NOVERBOSE_BUILD
11silent=1
12#else
13silent=0
14#endif
Sam Wu083c4852023-04-25 19:37:54 +080015firstboot=0
16lock=10101000
Sam Wu083c4852023-04-25 19:37:54 +080017upgrade_step=0
18jtag=disable
Sam Wuc7da1752023-07-28 12:05:06 +080019loadaddr=0x001080000
20dtb_mem_addr=0x001000000
Sam Wu083c4852023-04-25 19:37:54 +080021os_ident_addr=0x00500000
benlong.zhou7940f772023-07-21 09:21:09 +080022loadaddr_rtos=0x00080000
Bo Lv76f5c7d2023-07-27 15:16:40 +080023dtb_mem_addr=0x1000000
Sam Wu083c4852023-04-25 19:37:54 +080024loadaddr_kernel=0x03080000
Bo Lvda8d5b72023-07-31 14:58:21 +080025decaddr_kernel=0x01800000
Sam Wu083c4852023-04-25 19:37:54 +080026dv_fw_addr=0xa00000
27otg_device=1
28fdt_high=0x20000000
29EnableSelinux=enforcing
30recovery_offset=0
31osd_reverse=0
32video_reverse=0
33active_slot=normal
Sam Wu083c4852023-04-25 19:37:54 +080034boot_flag=0
35write_boot=0
Bo Lv119f5f32023-06-27 16:32:31 +080036fb_addr=0x00300000
Xindong Xu22e8daf2024-03-12 18:08:41 +080037fastboot_step=0
Bo Lv119f5f32023-06-27 16:32:31 +080038
Tao Zeng4dd2adf2024-02-21 15:26:04 +080039#ifdef CONFIG_NOVERBOSE_BUILD
40loglevel=2
41#else
Sam Wu083c4852023-04-25 19:37:54 +080042#ifdef CONFIG_KNL_LOG_LEVEL
43loglevel=CONFIG_KNL_LOG_LEVEL
44#else
45loglevel=8
46#endif//ifdef CONFIG_KNL_LOG_LEVEL
Tao Zeng4dd2adf2024-02-21 15:26:04 +080047#endif
Sam Wu083c4852023-04-25 19:37:54 +080048
49#ifdef CONFIG_DTB_BIND_KERNEL //load dtb from kernel, such as boot partition
50common_dtb_load=imgread dtb ${boot_part} ${dtb_mem_addr}
51#else
52common_dtb_load=imgread dtb _aml_dtb ${dtb_mem_addr}
53#endif//#ifdef CONFIG_DTB_BIND_KERNEL //load dtb from kernel, such as boot partition
54
Mingyen Hung96effce2023-09-01 00:39:46 -070055get_os_type=if imgread part ${boot_part} ${os_ident_addr} 0 0x1000; then os_ident ${os_ident_addr}; fi
Sam Wu083c4852023-04-25 19:37:54 +080056fatload_dev=usb
57fs_type=rootfstype=ramfs
58upgrade_check=
59 echo recovery_status=${recovery_status};
60 if itest.s "${recovery_status}" == "in_progress"; then
61 run storeargs; run recovery_from_flash;
62 else fi;
63 echo upgrade_step=${upgrade_step};
64 if itest ${upgrade_step} == 3; then run storeargs; run update; fi;
65
66initargs=init=/init ramoops.pstore_en=1 ramoops.record_size=0x8000 ramoops.console_size=0x4000 loop.max_part=4
67
68storeargs=
69 get_bootloaderversion;
70 setenv bootargs ${initargs}
yao zhang15ef11eb2023-11-21 14:46:44 +080071 loglevel=${loglevel} async_long_initcall=1 console=ttyS0,${baudrate} no_console_suspend earlycon=aml_uart,${uart_base}
Sam Wu083c4852023-04-25 19:37:54 +080072 ${fs_type} otg_device=${otg_device}
73 logo=${display_layer},loaded,${fb_addr} vout=${outputmode},enable panel_type=${panel_type}
74 hdmitx=${cecconfig},${colorattribute} hdmimode=${hdmimode}
75 hdmichecksum=${hdmichecksum} dolby_vision_on=${dolby_vision_on}
76 hdr_policy=${hdr_policy} hdr_priority=${hdr_priority}
77 frac_rate_policy=${frac_rate_policy} hdmi_read_edid=${hdmi_read_edid} cvbsmode=${cvbsmode}
78 osd_reverse=${osd_reverse} video_reverse=${video_reverse} irq_check_en=${Irq_check_en}
79 jtag=${jtag};
80 run cmdline_keys;
81
82switch_bootmode=
83 get_rebootmode;
84 if test ${reboot_mode} = factory_reset; then run recovery_from_flash;
85 else if test ${reboot_mode} = update; then run update;
86 else if test ${reboot_mode} = quiescent; then
87 setenv bootargs ${bootargs} androidboot.quiescent=1;
88 else if test ${reboot_mode} = recovery_quiescent; then
89 setenv bootargs ${bootargs} androidboot.quiescent=1;
90 run recovery_from_flash;
91 else if test ${reboot_mode} = cold_boot; then
92 else if test ${reboot_mode} = fastboot; then fastboot 0; fi;
93 fi;fi;fi;fi;fi;
94
95storeboot=
96 run get_os_type;
97 run storage_param;
98 if test ${os_type} = rtos; then
99 setenv loadaddr ${loadaddr_rtos};
100 store read ${loadaddr} ${boot_part} 0 0x400000;
101 bootm ${loadaddr};
102 else if test ${os_type} = kernel; then
103 get_avb_mode;
104 if fdt addr ${dtb_mem_addr}; then else echo retry common dtb; run common_dtb_load; fi;
105 setenv loadaddr ${loadaddr_kernel};
Mingyen Hung96effce2023-09-01 00:39:46 -0700106 if imgread kernel ${boot_part} ${loadaddr}; then
107#if CONFIG_PARTITION_ENCRYPTION
108 partition_enc apply;
109#endif
110 bootm ${loadaddr};
111 fi;
Sam Wu083c4852023-04-25 19:37:54 +0800112 else echo wrong OS format ${os_type}; fi;fi;
113 echo try upgrade as booting failure; run update;
114
115update=
116 /*first usb burning, second sdc_burn, third ext-sd autoscr/recovery, last udisk autoscr/recovery*/\
117 run usb_burning;
118 run recovery_from_sdcard;
119 run recovery_from_udisk;
120 run recovery_from_flash;
121
122recovery_from_fat_dev=
123 setenv loadaddr ${loadaddr_kernel};
124 if fatload ${fatload_dev} 0 ${loadaddr} aml_autoscript; then autoscr ${loadaddr}; fi;
125 if fatload ${fatload_dev} 0 ${loadaddr} recovery.img; then
126 if fatload ${fatload_dev} 0 ${dtb_mem_addr} dtb.img; then echo ${fatload_dev} dtb.img loaded; fi;
127 setenv bootargs ${bootargs} ${fs_type};
128 bootm ${loadaddr};
129 fi;
130recovery_from_udisk=
131 setenv fatload_dev usb;
132 if usb start 0; then run recovery_from_fat_dev; fi;
133recovery_from_sdcard=
134 setenv fatload_dev mmc;
135 if mmcinfo; then run recovery_from_fat_dev; fi;
136
137recovery_from_flash=
138 echo active_slot: ${active_slot};
Bing Jiangee808882023-09-15 15:29:24 +0800139 run storage_param;
Sam Wu083c4852023-04-25 19:37:54 +0800140 setenv loadaddr ${loadaddr_kernel};
141 if test ${active_slot} = normal; then
142 setenv bootargs ${bootargs} ${fs_type} aml_dt=${aml_dt}
143 recovery_part=${recovery_part} recovery_offset=${recovery_offset};
144 if test ${upgrade_step} = 3; then
145 if ext4load mmc 1:2 ${dtb_mem_addr} /recovery/dtb.img; then echo cache dtb.img loaded; fi;
146 if test ${vendor_boot_mode} = true; then
147 if imgread kernel ${recovery_part} ${loadaddr} ${recovery_offset}; then bootm ${loadaddr}; fi;
148 else
149 if ext4load mmc 1:2 ${loadaddr} /recovery/recovery.img; then
150 echo cache recovery.img loaded; bootm ${loadaddr};
151 fi;
152 fi;
153 else
154 if imgread dtb recovery ${dtb_mem_addr}; then
155 else echo restore dtb; run common_dtb_load;
156 fi;
157 fi;
Mingyen Hung96effce2023-09-01 00:39:46 -0700158 if imgread kernel ${recovery_part} ${loadaddr} ${recovery_offset}; then
159#if CONFIG_PARTITION_ENCRYPTION
160 partition_enc apply;
161#endif
162 bootm ${loadaddr};
163 fi;
Sam Wu083c4852023-04-25 19:37:54 +0800164 else
Sam Wu9db1ccc2023-05-09 18:31:35 +0800165 echo "active_slot ${active_slot} not supported";
Sam Wu083c4852023-04-25 19:37:54 +0800166 fi;
167
168bcb_cmd=
169 get_avb_mode;
170 get_valid_slot;
171 if test ${vendor_boot_mode} = true; then
Bo Lv119f5f32023-06-27 16:32:31 +0800172 setenv loadaddr_kernel 0x3000000;
Sam Wu083c4852023-04-25 19:37:54 +0800173 setenv dtb_mem_addr 0x1000000;
174 fi;
Bo Lv119f5f32023-06-27 16:32:31 +0800175 if test ${active_slot} != "normal"; then
Sam Wu083c4852023-04-25 19:37:54 +0800176 echo ab mode, read dtb from kernel;
177 setenv common_dtb_load imgread dtb ${boot_part} ${dtb_mem_addr};
178 fi;
179
180load_bmp_logo=
181 if imgread pic logo bootup $loadaddr; then bmp display $bootup_offset; fi;
182
183init_display=
184 get_rebootmode;
185 echo reboot_mode:::: ${reboot_mode};
186 if test ${reboot_mode} = quiescent; then
187 setenv reboot_mode_android "quiescent";
188 setenv dolby_status 0;
189 setenv dolby_vision_on 0;
Wenjie Qiao52d73732023-09-11 17:08:11 +0800190 run storeargs;
Sam Wu083c4852023-04-25 19:37:54 +0800191 setenv bootargs ${bootargs} androidboot.quiescent=1;
192 osd open;osd clear;
193 else if test ${reboot_mode} = recovery_quiescent; then
194 setenv reboot_mode_android "quiescent";
195 setenv dolby_status 0;
196 setenv dolby_vision_on 0;
Wenjie Qiao52d73732023-09-11 17:08:11 +0800197 run storeargs;
Sam Wu083c4852023-04-25 19:37:54 +0800198 setenv bootargs ${bootargs} androidboot.quiescent=1;
199 osd open;osd clear;
200 else
201 setenv reboot_mode_android "normal";
ruofei.zhao4a2ec0c2023-10-31 19:24:41 +0800202 hdmitx hpd;hdmitx get_parse_edid;
Bo Lvcb044df2023-08-07 10:55:30 +0800203 dovi process;watermark_init;osd open;osd clear;run load_bmp_logo;
204 bmp scale;vout output ${outputmode};dovi set;dovi pkg;vpp hdrpkt;
Wenjie Qiao52d73732023-09-11 17:08:11 +0800205 run storeargs;
Sam Wu083c4852023-04-25 19:37:54 +0800206 fi;fi;
207
208storage_param=
209 setenv bootargs ${bootargs} ${emmc_quirks};
210 store param;
211 setenv bootargs ${bootargs} ${mtdbootparts};
212
213cmdline_keys=
214 setenv region_code US;
215 if keyman init 0x1234; then
216 if keyman read usid ${loadaddr} str; then
217 setenv bootargs ${bootargs} androidboot.serialno=${usid};
218 setenv serial ${usid}; setenv serial# ${usid};
219 else
220 setenv bootargs ${bootargs} androidboot.serialno=ap222${cpu_id};
221 setenv serial ap222${cpu_id}; setenv serial# ap222${cpu_id};
222 fi;
223 if keyman read region_code ${loadaddr} str; then fi;
224 if keyman read mac ${loadaddr} str; then
225 setenv bootargs ${bootargs} mac=${mac} androidboot.mac=${mac};
226 fi;
227 if keyman read deviceid ${loadaddr} str; then
228 setenv bootargs ${bootargs} androidboot.deviceid=${deviceid};
229 fi;
230 fi;
231 setenv bootargs ${bootargs} androidboot.wificountrycode=${region_code};
232 factory_provision init;
233
234upgrade_key=
235 if gpio input GPIOD_2; then
236 echo detect upgrade key; run update;
237 fi;
238