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