blob: 3a5f45aff12a263b8788de7ed941f61bfc3824f0 [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
Bo Lvef7b7192024-09-29 17:23:28 +080020dtb_mem_addr=0x01000000
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
Jiacai.Liudef0b7b2024-12-16 19:59:59 +080062 run init_display; run storeargs; run recovery_from_flash;
Sam Wu083c4852023-04-25 19:37:54 +080063 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};
Matthew Shyu218c5052024-12-09 02:52:09 -0800149 avb recovery 1;
Sam Wu083c4852023-04-25 19:37:54 +0800150 if test ${upgrade_step} = 3; then
151 if ext4load mmc 1:2 ${dtb_mem_addr} /recovery/dtb.img; then echo cache dtb.img loaded; fi;
152 if test ${vendor_boot_mode} = true; then
153 if imgread kernel ${recovery_part} ${loadaddr} ${recovery_offset}; then bootm ${loadaddr}; fi;
154 else
155 if ext4load mmc 1:2 ${loadaddr} /recovery/recovery.img; then
156 echo cache recovery.img loaded; bootm ${loadaddr};
157 fi;
158 fi;
159 else
160 if imgread dtb recovery ${dtb_mem_addr}; then
161 else echo restore dtb; run common_dtb_load;
162 fi;
163 fi;
Mingyen Hung96effce2023-09-01 00:39:46 -0700164 if imgread kernel ${recovery_part} ${loadaddr} ${recovery_offset}; then
165#if CONFIG_PARTITION_ENCRYPTION
166 partition_enc apply;
167#endif
168 bootm ${loadaddr};
169 fi;
Sam Wu083c4852023-04-25 19:37:54 +0800170 else
Sam Wu9db1ccc2023-05-09 18:31:35 +0800171 echo "active_slot ${active_slot} not supported";
Sam Wu083c4852023-04-25 19:37:54 +0800172 fi;
173
174bcb_cmd=
175 get_avb_mode;
176 get_valid_slot;
177 if test ${vendor_boot_mode} = true; then
Bo Lv119f5f32023-06-27 16:32:31 +0800178 setenv loadaddr_kernel 0x3000000;
Sam Wu083c4852023-04-25 19:37:54 +0800179 setenv dtb_mem_addr 0x1000000;
180 fi;
Bo Lv119f5f32023-06-27 16:32:31 +0800181 if test ${active_slot} != "normal"; then
Sam Wu083c4852023-04-25 19:37:54 +0800182 echo ab mode, read dtb from kernel;
183 setenv common_dtb_load imgread dtb ${boot_part} ${dtb_mem_addr};
184 fi;
185
186load_bmp_logo=
187 if imgread pic logo bootup $loadaddr; then bmp display $bootup_offset; fi;
188
189init_display=
190 get_rebootmode;
191 echo reboot_mode:::: ${reboot_mode};
192 if test ${reboot_mode} = quiescent; then
193 setenv reboot_mode_android "quiescent";
194 setenv dolby_status 0;
195 setenv dolby_vision_on 0;
Wenjie Qiao52d73732023-09-11 17:08:11 +0800196 run storeargs;
Sam Wu083c4852023-04-25 19:37:54 +0800197 setenv bootargs ${bootargs} androidboot.quiescent=1;
198 osd open;osd clear;
199 else if test ${reboot_mode} = recovery_quiescent; then
200 setenv reboot_mode_android "quiescent";
201 setenv dolby_status 0;
202 setenv dolby_vision_on 0;
Wenjie Qiao52d73732023-09-11 17:08:11 +0800203 run storeargs;
Sam Wu083c4852023-04-25 19:37:54 +0800204 setenv bootargs ${bootargs} androidboot.quiescent=1;
205 osd open;osd clear;
206 else
207 setenv reboot_mode_android "normal";
ruofei.zhao4a2ec0c2023-10-31 19:24:41 +0800208 hdmitx hpd;hdmitx get_parse_edid;
Bo Lvef7b7192024-09-29 17:23:28 +0800209#ifdef CONFIG_AML_DOLBY
210 dovi process;
211#endif
212 watermark_init;osd open;osd clear;run load_bmp_logo;
213 bmp scale;vout output ${outputmode};
214#ifdef CONFIG_AML_DOLBY
215 dovi set;dovi pkg;
216#endif
217 vpp hdrpkt;
Wenjie Qiao52d73732023-09-11 17:08:11 +0800218 run storeargs;
Sam Wu083c4852023-04-25 19:37:54 +0800219 fi;fi;
220
221storage_param=
222 setenv bootargs ${bootargs} ${emmc_quirks};
223 store param;
224 setenv bootargs ${bootargs} ${mtdbootparts};
225
226cmdline_keys=
227 setenv region_code US;
228 if keyman init 0x1234; then
229 if keyman read usid ${loadaddr} str; then
230 setenv bootargs ${bootargs} androidboot.serialno=${usid};
231 setenv serial ${usid}; setenv serial# ${usid};
232 else
233 setenv bootargs ${bootargs} androidboot.serialno=ap222${cpu_id};
234 setenv serial ap222${cpu_id}; setenv serial# ap222${cpu_id};
235 fi;
236 if keyman read region_code ${loadaddr} str; then fi;
237 if keyman read mac ${loadaddr} str; then
238 setenv bootargs ${bootargs} mac=${mac} androidboot.mac=${mac};
239 fi;
240 if keyman read deviceid ${loadaddr} str; then
241 setenv bootargs ${bootargs} androidboot.deviceid=${deviceid};
242 fi;
243 fi;
244 setenv bootargs ${bootargs} androidboot.wificountrycode=${region_code};
245 factory_provision init;
246
247upgrade_key=
248 if gpio input GPIOD_2; then
249 echo detect upgrade key; run update;
250 fi;
251