blob: ad3607d0327b68cf0277573a836757e6d9ccfea5 [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
Xingxing Wang5ba19fe2024-09-10 15:33:55 +080038default_governor=performance
Bo Lv119f5f32023-06-27 16:32:31 +080039
Tao Zeng4dd2adf2024-02-21 15:26:04 +080040#ifdef CONFIG_NOVERBOSE_BUILD
41loglevel=2
42#else
Sam Wu083c4852023-04-25 19:37:54 +080043#ifdef CONFIG_KNL_LOG_LEVEL
44loglevel=CONFIG_KNL_LOG_LEVEL
45#else
46loglevel=8
47#endif//ifdef CONFIG_KNL_LOG_LEVEL
Tao Zeng4dd2adf2024-02-21 15:26:04 +080048#endif
Sam Wu083c4852023-04-25 19:37:54 +080049
50#ifdef CONFIG_DTB_BIND_KERNEL //load dtb from kernel, such as boot partition
51common_dtb_load=imgread dtb ${boot_part} ${dtb_mem_addr}
52#else
53common_dtb_load=imgread dtb _aml_dtb ${dtb_mem_addr}
54#endif//#ifdef CONFIG_DTB_BIND_KERNEL //load dtb from kernel, such as boot partition
55
Mingyen Hung96effce2023-09-01 00:39:46 -070056get_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 +080057fatload_dev=usb
58fs_type=rootfstype=ramfs
59upgrade_check=
60 echo recovery_status=${recovery_status};
61 if itest.s "${recovery_status}" == "in_progress"; then
62 run storeargs; run recovery_from_flash;
63 else fi;
64 echo upgrade_step=${upgrade_step};
65 if itest ${upgrade_step} == 3; then run storeargs; run update; fi;
66
67initargs=init=/init ramoops.pstore_en=1 ramoops.record_size=0x8000 ramoops.console_size=0x4000 loop.max_part=4
68
69storeargs=
70 get_bootloaderversion;
71 setenv bootargs ${initargs}
yao zhang15ef11eb2023-11-21 14:46:44 +080072 loglevel=${loglevel} async_long_initcall=1 console=ttyS0,${baudrate} no_console_suspend earlycon=aml_uart,${uart_base}
Sam Wu083c4852023-04-25 19:37:54 +080073 ${fs_type} otg_device=${otg_device}
lizhi.hu77c2a882024-03-21 16:28:16 +080074 logo=${display_layer},loaded,${fb_addr} vout=${outputmode},enable
lizhi.hu506ddfa2024-07-10 21:35:41 +080075 connector0_type=${connector0_type} connector1_type=${connector1_type}
Xingxing Wang5ba19fe2024-09-10 15:33:55 +080076 connector2_type=${connector2_type} cpufreq.default_governor=${default_governor}
lizhi.hu05fa7cf2024-09-20 19:10:10 +080077 lcd0=${lcd0_attr} lcd_debug=${lcd_debug}
Sam Wu083c4852023-04-25 19:37:54 +080078 hdmitx=${cecconfig},${colorattribute} hdmimode=${hdmimode}
79 hdmichecksum=${hdmichecksum} dolby_vision_on=${dolby_vision_on}
80 hdr_policy=${hdr_policy} hdr_priority=${hdr_priority}
xiang.wu1d9b4e332024-08-02 19:19:23 +080081 frac_rate_policy=${actual_frac_rate} hdmi_read_edid=${hdmi_read_edid} cvbsmode=${cvbsmode}
Sam Wu083c4852023-04-25 19:37:54 +080082 osd_reverse=${osd_reverse} video_reverse=${video_reverse} irq_check_en=${Irq_check_en}
ruofei.zhaoab821032024-05-07 14:43:58 +080083 jtag=${jtag} config_csc_en=${config_csc_en};
Sam Wuefee52f2024-04-29 12:03:12 +080084 setenv bootargs ${bootargs} production_mode=${production_mode};
Sam Wu083c4852023-04-25 19:37:54 +080085 run cmdline_keys;
86
87switch_bootmode=
88 get_rebootmode;
89 if test ${reboot_mode} = factory_reset; then run recovery_from_flash;
90 else if test ${reboot_mode} = update; then run update;
91 else if test ${reboot_mode} = quiescent; then
92 setenv bootargs ${bootargs} androidboot.quiescent=1;
93 else if test ${reboot_mode} = recovery_quiescent; then
94 setenv bootargs ${bootargs} androidboot.quiescent=1;
95 run recovery_from_flash;
96 else if test ${reboot_mode} = cold_boot; then
97 else if test ${reboot_mode} = fastboot; then fastboot 0; fi;
98 fi;fi;fi;fi;fi;
99
100storeboot=
101 run get_os_type;
102 run storage_param;
103 if test ${os_type} = rtos; then
104 setenv loadaddr ${loadaddr_rtos};
105 store read ${loadaddr} ${boot_part} 0 0x400000;
106 bootm ${loadaddr};
107 else if test ${os_type} = kernel; then
108 get_avb_mode;
109 if fdt addr ${dtb_mem_addr}; then else echo retry common dtb; run common_dtb_load; fi;
110 setenv loadaddr ${loadaddr_kernel};
Mingyen Hung96effce2023-09-01 00:39:46 -0700111 if imgread kernel ${boot_part} ${loadaddr}; then
112#if CONFIG_PARTITION_ENCRYPTION
113 partition_enc apply;
114#endif
115 bootm ${loadaddr};
116 fi;
Sam Wu083c4852023-04-25 19:37:54 +0800117 else echo wrong OS format ${os_type}; fi;fi;
118 echo try upgrade as booting failure; run update;
119
120update=
121 /*first usb burning, second sdc_burn, third ext-sd autoscr/recovery, last udisk autoscr/recovery*/\
122 run usb_burning;
123 run recovery_from_sdcard;
124 run recovery_from_udisk;
125 run recovery_from_flash;
126
127recovery_from_fat_dev=
128 setenv loadaddr ${loadaddr_kernel};
129 if fatload ${fatload_dev} 0 ${loadaddr} aml_autoscript; then autoscr ${loadaddr}; fi;
130 if fatload ${fatload_dev} 0 ${loadaddr} recovery.img; then
131 if fatload ${fatload_dev} 0 ${dtb_mem_addr} dtb.img; then echo ${fatload_dev} dtb.img loaded; fi;
132 setenv bootargs ${bootargs} ${fs_type};
133 bootm ${loadaddr};
134 fi;
135recovery_from_udisk=
136 setenv fatload_dev usb;
137 if usb start 0; then run recovery_from_fat_dev; fi;
138recovery_from_sdcard=
139 setenv fatload_dev mmc;
140 if mmcinfo; then run recovery_from_fat_dev; fi;
141
142recovery_from_flash=
143 echo active_slot: ${active_slot};
Bing Jiangee808882023-09-15 15:29:24 +0800144 run storage_param;
Sam Wu083c4852023-04-25 19:37:54 +0800145 setenv loadaddr ${loadaddr_kernel};
146 if test ${active_slot} = normal; then
147 setenv bootargs ${bootargs} ${fs_type} aml_dt=${aml_dt}
148 recovery_part=${recovery_part} recovery_offset=${recovery_offset};
149 if test ${upgrade_step} = 3; then
150 if ext4load mmc 1:2 ${dtb_mem_addr} /recovery/dtb.img; then echo cache dtb.img loaded; fi;
151 if test ${vendor_boot_mode} = true; then
152 if imgread kernel ${recovery_part} ${loadaddr} ${recovery_offset}; then bootm ${loadaddr}; fi;
153 else
154 if ext4load mmc 1:2 ${loadaddr} /recovery/recovery.img; then
155 echo cache recovery.img loaded; bootm ${loadaddr};
156 fi;
157 fi;
158 else
159 if imgread dtb recovery ${dtb_mem_addr}; then
160 else echo restore dtb; run common_dtb_load;
161 fi;
162 fi;
Mingyen Hung96effce2023-09-01 00:39:46 -0700163 if imgread kernel ${recovery_part} ${loadaddr} ${recovery_offset}; then
164#if CONFIG_PARTITION_ENCRYPTION
165 partition_enc apply;
166#endif
167 bootm ${loadaddr};
168 fi;
Sam Wu083c4852023-04-25 19:37:54 +0800169 else
Sam Wu9db1ccc2023-05-09 18:31:35 +0800170 echo "active_slot ${active_slot} not supported";
Sam Wu083c4852023-04-25 19:37:54 +0800171 fi;
172
173bcb_cmd=
174 get_avb_mode;
175 get_valid_slot;
176 if test ${vendor_boot_mode} = true; then
Bo Lv119f5f32023-06-27 16:32:31 +0800177 setenv loadaddr_kernel 0x3000000;
Sam Wu083c4852023-04-25 19:37:54 +0800178 setenv dtb_mem_addr 0x1000000;
179 fi;
Bo Lv119f5f32023-06-27 16:32:31 +0800180 if test ${active_slot} != "normal"; then
Sam Wu083c4852023-04-25 19:37:54 +0800181 echo ab mode, read dtb from kernel;
182 setenv common_dtb_load imgread dtb ${boot_part} ${dtb_mem_addr};
183 fi;
184
185load_bmp_logo=
186 if imgread pic logo bootup $loadaddr; then bmp display $bootup_offset; fi;
187
188init_display=
189 get_rebootmode;
190 echo reboot_mode:::: ${reboot_mode};
191 if test ${reboot_mode} = quiescent; then
192 setenv reboot_mode_android "quiescent";
193 setenv dolby_status 0;
194 setenv dolby_vision_on 0;
Wenjie Qiao52d73732023-09-11 17:08:11 +0800195 run storeargs;
Sam Wu083c4852023-04-25 19:37:54 +0800196 setenv bootargs ${bootargs} androidboot.quiescent=1;
197 osd open;osd clear;
198 else if test ${reboot_mode} = recovery_quiescent; then
199 setenv reboot_mode_android "quiescent";
200 setenv dolby_status 0;
201 setenv dolby_vision_on 0;
Wenjie Qiao52d73732023-09-11 17:08:11 +0800202 run storeargs;
Sam Wu083c4852023-04-25 19:37:54 +0800203 setenv bootargs ${bootargs} androidboot.quiescent=1;
204 osd open;osd clear;
205 else
206 setenv reboot_mode_android "normal";
ruofei.zhao4a2ec0c2023-10-31 19:24:41 +0800207 hdmitx hpd;hdmitx get_parse_edid;
Bo Lvcb044df2023-08-07 10:55:30 +0800208 dovi process;watermark_init;osd open;osd clear;run load_bmp_logo;
209 bmp scale;vout output ${outputmode};dovi set;dovi pkg;vpp hdrpkt;
Wenjie Qiao52d73732023-09-11 17:08:11 +0800210 run storeargs;
Sam Wu083c4852023-04-25 19:37:54 +0800211 fi;fi;
212
213storage_param=
214 setenv bootargs ${bootargs} ${emmc_quirks};
215 store param;
216 setenv bootargs ${bootargs} ${mtdbootparts};
217
218cmdline_keys=
219 setenv region_code US;
220 if keyman init 0x1234; then
221 if keyman read usid ${loadaddr} str; then
222 setenv bootargs ${bootargs} androidboot.serialno=${usid};
223 setenv serial ${usid}; setenv serial# ${usid};
224 else
225 setenv bootargs ${bootargs} androidboot.serialno=ap222${cpu_id};
226 setenv serial ap222${cpu_id}; setenv serial# ap222${cpu_id};
227 fi;
228 if keyman read region_code ${loadaddr} str; then fi;
229 if keyman read mac ${loadaddr} str; then
230 setenv bootargs ${bootargs} mac=${mac} androidboot.mac=${mac};
231 fi;
232 if keyman read deviceid ${loadaddr} str; then
233 setenv bootargs ${bootargs} androidboot.deviceid=${deviceid};
234 fi;
235 fi;
236 setenv bootargs ${bootargs} androidboot.wificountrycode=${region_code};
237 factory_provision init;
238
239upgrade_key=
240 if gpio input GPIOD_2; then
241 echo detect upgrade key; run update;
242 fi;
243