blob: 79beb6cd7ac908e7f5b09f118e6b7e039bdddabc [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*/
10firstboot=0
11lock=10101000
12silent=0
13upgrade_step=0
14jtag=disable
15loadaddr=0x00020000
16os_ident_addr=0x00500000
17loadaddr_rtos=0x00001000
18loadaddr_kernel=0x03080000
19dv_fw_addr=0xa00000
20otg_device=1
21fdt_high=0x20000000
22EnableSelinux=enforcing
23recovery_offset=0
24osd_reverse=0
25video_reverse=0
26active_slot=normal
27vendor_boot_part=vendor_boot
28boot_flag=0
29write_boot=0
30
31#ifdef CONFIG_KNL_LOG_LEVEL
32loglevel=CONFIG_KNL_LOG_LEVEL
33#else
34loglevel=8
35#endif//ifdef CONFIG_KNL_LOG_LEVEL
36
37#ifdef CONFIG_DTB_BIND_KERNEL //load dtb from kernel, such as boot partition
38common_dtb_load=imgread dtb ${boot_part} ${dtb_mem_addr}
39#else
40common_dtb_load=imgread dtb _aml_dtb ${dtb_mem_addr}
41#endif//#ifdef CONFIG_DTB_BIND_KERNEL //load dtb from kernel, such as boot partition
42
43get_os_type=if store read ${os_ident_addr} ${boot_part} 0 0x1000; then os_ident ${os_ident_addr}; fi
44fatload_dev=usb
45fs_type=rootfstype=ramfs
46upgrade_check=
47 echo recovery_status=${recovery_status};
48 if itest.s "${recovery_status}" == "in_progress"; then
49 run storeargs; run recovery_from_flash;
50 else fi;
51 echo upgrade_step=${upgrade_step};
52 if itest ${upgrade_step} == 3; then run storeargs; run update; fi;
53
54initargs=init=/init ramoops.pstore_en=1 ramoops.record_size=0x8000 ramoops.console_size=0x4000 loop.max_part=4
55
56storeargs=
57 get_bootloaderversion;
58 setenv bootargs ${initargs}
59 loglevel=${loglevel} console=ttyS0,${baudrate} no_console_suspend earlycon=aml_uart,${uart_base}
60 ${fs_type} otg_device=${otg_device}
61 logo=${display_layer},loaded,${fb_addr} vout=${outputmode},enable panel_type=${panel_type}
62 hdmitx=${cecconfig},${colorattribute} hdmimode=${hdmimode}
63 hdmichecksum=${hdmichecksum} dolby_vision_on=${dolby_vision_on}
64 hdr_policy=${hdr_policy} hdr_priority=${hdr_priority}
65 frac_rate_policy=${frac_rate_policy} hdmi_read_edid=${hdmi_read_edid} cvbsmode=${cvbsmode}
66 osd_reverse=${osd_reverse} video_reverse=${video_reverse} irq_check_en=${Irq_check_en}
67 jtag=${jtag};
68 run cmdline_keys;
69
70switch_bootmode=
71 get_rebootmode;
72 if test ${reboot_mode} = factory_reset; then run recovery_from_flash;
73 else if test ${reboot_mode} = update; then run update;
74 else if test ${reboot_mode} = quiescent; then
75 setenv bootargs ${bootargs} androidboot.quiescent=1;
76 else if test ${reboot_mode} = recovery_quiescent; then
77 setenv bootargs ${bootargs} androidboot.quiescent=1;
78 run recovery_from_flash;
79 else if test ${reboot_mode} = cold_boot; then
80 else if test ${reboot_mode} = fastboot; then fastboot 0; fi;
81 fi;fi;fi;fi;fi;
82
83storeboot=
84 run get_os_type;
85 run storage_param;
86 if test ${os_type} = rtos; then
87 setenv loadaddr ${loadaddr_rtos};
88 store read ${loadaddr} ${boot_part} 0 0x400000;
89 bootm ${loadaddr};
90 else if test ${os_type} = kernel; then
91 get_avb_mode;
92 if fdt addr ${dtb_mem_addr}; then else echo retry common dtb; run common_dtb_load; fi;
93 setenv loadaddr ${loadaddr_kernel};
94 if imgread kernel ${boot_part} ${loadaddr}; then bootm ${loadaddr}; fi;
95 else echo wrong OS format ${os_type}; fi;fi;
96 echo try upgrade as booting failure; run update;
97
98update=
99 /*first usb burning, second sdc_burn, third ext-sd autoscr/recovery, last udisk autoscr/recovery*/\
100 run usb_burning;
101 run recovery_from_sdcard;
102 run recovery_from_udisk;
103 run recovery_from_flash;
104
105recovery_from_fat_dev=
106 setenv loadaddr ${loadaddr_kernel};
107 if fatload ${fatload_dev} 0 ${loadaddr} aml_autoscript; then autoscr ${loadaddr}; fi;
108 if fatload ${fatload_dev} 0 ${loadaddr} recovery.img; then
109 if fatload ${fatload_dev} 0 ${dtb_mem_addr} dtb.img; then echo ${fatload_dev} dtb.img loaded; fi;
110 setenv bootargs ${bootargs} ${fs_type};
111 bootm ${loadaddr};
112 fi;
113recovery_from_udisk=
114 setenv fatload_dev usb;
115 if usb start 0; then run recovery_from_fat_dev; fi;
116recovery_from_sdcard=
117 setenv fatload_dev mmc;
118 if mmcinfo; then run recovery_from_fat_dev; fi;
119
120recovery_from_flash=
121 echo active_slot: ${active_slot};
122 setenv loadaddr ${loadaddr_kernel};
123 if test ${active_slot} = normal; then
124 setenv bootargs ${bootargs} ${fs_type} aml_dt=${aml_dt}
125 recovery_part=${recovery_part} recovery_offset=${recovery_offset};
126 if test ${upgrade_step} = 3; then
127 if ext4load mmc 1:2 ${dtb_mem_addr} /recovery/dtb.img; then echo cache dtb.img loaded; fi;
128 if test ${vendor_boot_mode} = true; then
129 if imgread kernel ${recovery_part} ${loadaddr} ${recovery_offset}; then bootm ${loadaddr}; fi;
130 else
131 if ext4load mmc 1:2 ${loadaddr} /recovery/recovery.img; then
132 echo cache recovery.img loaded; bootm ${loadaddr};
133 fi;
134 fi;
135 else
136 if imgread dtb recovery ${dtb_mem_addr}; then
137 else echo restore dtb; run common_dtb_load;
138 fi;
139 fi;
140 if imgread kernel ${recovery_part} ${loadaddr} ${recovery_offset}; then bootm ${loadaddr}; fi;
141 else
Sam Wu9db1ccc2023-05-09 18:31:35 +0800142 echo "active_slot ${active_slot} not supported";
Sam Wu083c4852023-04-25 19:37:54 +0800143 fi;
144
145bcb_cmd=
146 get_avb_mode;
147 get_valid_slot;
148 if test ${vendor_boot_mode} = true; then
149 setenv loadaddr_kernel 0x3080000;
150 setenv dtb_mem_addr 0x1000000;
151 fi;
152 if test ${active_slot}” != "normal"; then
153 echo ab mode, read dtb from kernel;
154 setenv common_dtb_load imgread dtb ${boot_part} ${dtb_mem_addr};
155 fi;
156
157load_bmp_logo=
158 if imgread pic logo bootup $loadaddr; then bmp display $bootup_offset; fi;
159
160init_display=
161 get_rebootmode;
162 echo reboot_mode:::: ${reboot_mode};
163 if test ${reboot_mode} = quiescent; then
164 setenv reboot_mode_android "quiescent";
165 setenv dolby_status 0;
166 setenv dolby_vision_on 0;
167 run storeargs;
168 setenv bootargs ${bootargs} androidboot.quiescent=1;
169 osd open;osd clear;
170 else if test ${reboot_mode} = recovery_quiescent; then
171 setenv reboot_mode_android "quiescent";
172 setenv dolby_status 0;
173 setenv dolby_vision_on 0;
174 run storeargs;
175 setenv bootargs ${bootargs} androidboot.quiescent=1;
176 osd open;osd clear;
177 else
178 setenv reboot_mode_android "normal";
179 run storeargs;
180 fi;fi;
181
182storage_param=
183 setenv bootargs ${bootargs} ${emmc_quirks};
184 store param;
185 setenv bootargs ${bootargs} ${mtdbootparts};
186
187cmdline_keys=
188 setenv region_code US;
189 if keyman init 0x1234; then
190 if keyman read usid ${loadaddr} str; then
191 setenv bootargs ${bootargs} androidboot.serialno=${usid};
192 setenv serial ${usid}; setenv serial# ${usid};
193 else
194 setenv bootargs ${bootargs} androidboot.serialno=ap222${cpu_id};
195 setenv serial ap222${cpu_id}; setenv serial# ap222${cpu_id};
196 fi;
197 if keyman read region_code ${loadaddr} str; then fi;
198 if keyman read mac ${loadaddr} str; then
199 setenv bootargs ${bootargs} mac=${mac} androidboot.mac=${mac};
200 fi;
201 if keyman read deviceid ${loadaddr} str; then
202 setenv bootargs ${bootargs} androidboot.deviceid=${deviceid};
203 fi;
204 fi;
205 setenv bootargs ${bootargs} androidboot.wificountrycode=${region_code};
206 factory_provision init;
207
208upgrade_key=
209 if gpio input GPIOD_2; then
210 echo detect upgrade key; run update;
211 fi;
212