blob: 7af5dadb586804e21e4f1c24aff83eaffac60793 [file] [log] [blame]
Bo Lv72d0e902023-01-02 14:27:34 +00001/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
2/*
3 * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
4 */
5
6#ifndef __BASE_ENV_H__
7#define __BASE_ENV_H__
8
9#include <asm/amlogic/arch/cpu.h>
10
11#ifdef CONFIG_DTB_BIND_KERNEL //load dtb from kernel, such as boot partition
12#define CONFIG_DTB_LOAD "imgread dtb ${boot_part} ${dtb_mem_addr}"
13#else
14#define CONFIG_DTB_LOAD "imgread dtb _aml_dtb ${dtb_mem_addr}"
15#endif//#ifdef CONFIG_DTB_BIND_KERNEL //load dtb from kernel, such as boot partition
16
17/* args/envs */
Bo Lv72d0e902023-01-02 14:27:34 +000018#define CONFIG_EXTRA_ENV_SETTINGS_BASE \
19 "firstboot=1\0"\
20 "upgrade_step=0\0"\
21 "jtag=disable\0"\
22 "loadaddr=0x00020000\0"\
23 "os_ident_addr=0x00500000\0"\
24 "loadaddr_rtos=0x00001000\0"\
25 "loadaddr_kernel=0x03000000\0"\
26 "fb_addr=0x00300000\0" \
27 "dolby_status=0\0" \
28 "dolby_vision_on=0\0" \
29 "dv_fw_dir_odm_ext=/odm_ext/firmware/dovi_fw.bin\0" \
30 "dv_fw_dir_vendor=/vendor/firmware/dovi_fw.bin\0" \
31 "dv_fw_dir=/oem/firmware/dovi_fw.bin\0" \
32 "lock=10101000\0"\
33 "recovery_offset=0\0"\
34 "active_slot=normal\0"\
35 "boot_part=boot\0"\
36 "vendor_boot_part=vendor_boot\0"\
37 "board_logo_part=odm_ext\0" \
38 "rollback_flag=0\0"\
39 "boot_flag=0\0"\
40 "write_boot=0\0"\
41 "Irq_check_en=0\0"\
42 "recovery_mode=false\0"\
43 "retry_recovery_times=7\0"\
44 "androidboot.dtbo_idx=0\0"\
45 "common_dtb_load=" CONFIG_DTB_LOAD "\0"\
46 "get_os_type=if store read ${os_ident_addr} ${boot_part} 0 0x1000; then "\
47 "os_ident ${os_ident_addr}; fi\0"\
48 "fatload_dev=usb\0"\
49 "fs_type=""rootfstype=ramfs""\0"\
50 "disable_ir=0\0"\
51 "upgrade_check_base="\
52 "echo recovery_status=${recovery_status};"\
53 "if itest.s \"${recovery_status}\" == \"in_progress\"; then "\
54 "run init_display;run storeargs; run recovery_from_flash;"\
55 "else fi;"\
56 "echo upgrade_step=${upgrade_step}; "\
57 "if itest ${upgrade_step} == 3; then "\
58 "run init_display;run storeargs; run update; fi;"\
59 "\0"\
60 "storeargs_base="\
61 "get_bootloaderversion;" \
62 "setenv bootargs ${initargs} otg_device=${otg_device} "\
63 "logo=${display_layer},loaded,${fb_addr} "\
64 "vout=${outputmode},${vout_init} panel_type=${panel_type} "\
65 "hdmitx=${cecconfig},${colorattribute} hdmimode=${hdmimode} "\
66 "hdmichecksum=${hdmichecksum} dolby_vision_on=${dolby_vision_on} "\
67 "hdr_policy=${hdr_policy} hdr_priority=${hdr_priority} "\
jialong.jiang4c36ce82024-09-13 13:47:42 +080068 "dolby_status=${dolby_status} "\
xiang.wu1bab167c2024-08-13 13:22:40 +080069 "frac_rate_policy=${actual_frac_rate} hdmi_read_edid=${hdmi_read_edid} "\
Bo Lv72d0e902023-01-02 14:27:34 +000070 "cvbsmode=${cvbsmode} "\
71 "osd_reverse=${osd_reverse} video_reverse=${video_reverse} "\
72 "irq_check_en=${Irq_check_en} "\
73 "jtag=${jtag} disable_ir=${disable_ir};"\
hao.qiddc9ec02024-02-23 13:34:59 +080074 "setenv bootconfig ${initconfig} androidboot.selinux=${EnableSelinux} "\
Bo Lv72d0e902023-01-02 14:27:34 +000075 "androidboot.firstboot=${firstboot} "\
76 "androidboot.bootloader=${bootloader_version} "\
77 "androidboot.hardware=amlogic ;"\
78 "\0"\
79 "storeboot_base="\
80 "run get_os_type;"\
81 "run storage_param;"\
82 "if test ${os_type} = rtos; then "\
83 "setenv loadaddr ${loadaddr_rtos};"\
84 "store read ${loadaddr} ${boot_part} 0 0x400000;"\
85 "bootm ${loadaddr};"\
86 "else if test ${os_type} = kernel; then "\
87 "get_system_as_root_mode;"\
88 "echo system_mode in storeboot: ${system_mode};"\
89 "get_avb_mode;"\
90 "echo active_slot in storeboot: ${active_slot};"\
91 "if test ${system_mode} = 1; then "\
92 "setenv bootargs ${bootargs} ro rootwait skip_initramfs;"\
93 "else "\
94 "setenv bootconfig ${bootconfig} "\
95 "androidboot.force_normal_boot=1;"\
96 "fi;"\
97 "if test ${active_slot} != normal; then "\
98 "setenv bootconfig ${bootconfig} "\
99 "androidboot.slot_suffix=${active_slot};"\
100 "fi;"\
101 "setenv bootconfig ${bootconfig} androidboot.rollback=${rollback_flag};"\
102 "if fdt addr ${dtb_mem_addr}; then else "\
103 "echo retry common dtb; run common_dtb_load; fi;"\
104 "setenv loadaddr ${loadaddr_kernel};"\
105 "if imgread kernel ${boot_part} ${loadaddr}; then bootm ${loadaddr}; fi;"\
106 "else echo wrong OS format ${os_type}; fi;fi;"\
107 "echo try upgrade as booting failure; run update;"\
108 "\0" \
109 "update_base="\
110 /*first usb burning, second sdc_burn, third ext-sd autoscr/recovery*/\
111 /*last udisk autoscr/recovery*/\
112 "run usb_burning; "\
113 "run recovery_from_sdcard;"\
114 "run recovery_from_udisk;"\
115 "run recovery_from_flash;"\
116 "\0"\
117 "recovery_from_fat_dev_base="\
118 "setenv loadaddr ${loadaddr_kernel};"\
119 "if fatload ${fatload_dev} 0 ${loadaddr} aml_autoscript; then "\
Matthew Shyuc710a122023-12-14 00:08:41 -0800120 "if avb memory recovery ${loadaddr}; then " \
121 "avb recovery 1;" \
122 "autoscr ${loadaddr}; fi;"\
123 "fi;" \
Bo Lv72d0e902023-01-02 14:27:34 +0000124 "if fatload ${fatload_dev} 0 ${loadaddr} recovery.img; then "\
Matthew Shyuc710a122023-12-14 00:08:41 -0800125 "if avb memory recovery ${loadaddr}; then " \
126 "avb recovery 1;" \
127 "if fatload ${fatload_dev} 0 ${dtb_mem_addr} dtb.img; then "\
128 "echo ${fatload_dev} dtb.img loaded; fi;"\
129 "setenv bootargs ${bootargs} ${fs_type};"\
130 "bootm ${loadaddr};fi;"\
131 "fi;" \
Bo Lv72d0e902023-01-02 14:27:34 +0000132 "\0"\
133 "recovery_from_udisk_base="\
134 "setenv fatload_dev usb;"\
135 "if usb start 0; then run recovery_from_fat_dev; fi;"\
136 "\0"\
137 "recovery_from_sdcard_base="\
138 "setenv fatload_dev mmc;"\
139 "if mmcinfo; then run recovery_from_fat_dev; fi;"\
140 "\0"\
141 "recovery_from_flash_base="\
142 "echo active_slot: ${active_slot};"\
143 "setenv loadaddr ${loadaddr_kernel};"\
144 "setenv recovery_mode true;"\
145 "if test ${active_slot} = normal; then "\
146 "setenv bootargs ${bootargs} ${fs_type} aml_dt=${aml_dt} "\
147 "recovery_part=${recovery_part} recovery_offset=${recovery_offset};"\
Matthew Shyuc710a122023-12-14 00:08:41 -0800148 "avb recovery 1;" \
Bo Lv72d0e902023-01-02 14:27:34 +0000149 "if test ${upgrade_step} = 3; then "\
150 "if ext4load mmc 1:2 ${dtb_mem_addr} /recovery/dtb.img; then "\
151 "echo cache dtb.img loaded; fi;"\
152 "if test ${vendor_boot_mode} = true; then "\
153 "if imgread kernel ${recovery_part} ${loadaddr} "\
154 "${recovery_offset}; then bootm ${loadaddr}; fi;"\
155 "else "\
156 "if ext4load mmc 1:2 ${loadaddr} /recovery/recovery.img;"\
157 "then echo cache recovery.img loaded; bootm ${loadaddr}; 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;"\
164 "if imgread kernel ${recovery_part} ${loadaddr} ${recovery_offset}; then "\
165 "bootm ${loadaddr}; fi;"\
166 "else "\
167 "if fdt addr ${dtb_mem_addr}; then else "\
168 "echo retry common dtb; run common_dtb_load; fi;"\
169 "if test ${partition_mode} = normal; then "\
170 "setenv bootargs ${bootargs} ${fs_type} aml_dt=${aml_dt} "\
171 "recovery_part=${recovery_part} recovery_offset=${recovery_offset};"\
172 "setenv bootconfig ${bootconfig} "\
173 "androidboot.slot_suffix=${active_slot};"\
174 "if imgread kernel ${boot_part} ${loadaddr}; then bootm ${loadaddr}; fi;"\
175 "else "\
176 "if test ${vendor_boot_mode} = true; then "\
177 "setenv bootargs ${bootargs} ${fs_type} aml_dt=${aml_dt};"\
178 "setenv bootconfig ${bootconfig} "\
179 "androidboot.slot_suffix=${active_slot};"\
180 "if imgread kernel ${boot_part} ${loadaddr}; then "\
181 "bootm ${loadaddr}; fi;"\
182 "else "\
183 "setenv bootargs ${bootargs} ${fs_type} aml_dt=${aml_dt} "\
184 "recovery_part=${recovery_part} "\
185 "recovery_offset=${recovery_offset};"\
186 "setenv bootconfig ${bootconfig} "\
187 "androidboot.slot_suffix=${active_slot};"\
188 "if imgread kernel ${recovery_part} ${loadaddr} "\
189 "${recovery_offset}; then bootm ${loadaddr}; fi;"\
190 "fi;"\
191 "fi;"\
192 "fi;"\
193 "\0"\
194 "bcb_cmd_base="\
195 "get_avb_mode;"\
196 "get_valid_slot;"\
197 "if test ${vendor_boot_mode} = true; then "\
198 "setenv loadaddr_kernel 0x3000000;"\
199 "setenv dtb_mem_addr 0x1000000;"\
200 "fi;"\
201 "if test ${active_slot} != normal; then "\
202 "echo ab mode, read dtb from kernel;"\
203 "setenv common_dtb_load ""imgread dtb ${boot_part} ${dtb_mem_addr}"";"\
204 "fi;"\
205 "\0"\
206 "load_bmp_logo_base="\
207 "if rdext4pic ${board_logo_part} $loadaddr; then bmp display $logoLoadAddr; " \
208 "else if imgread pic logo bootup $loadaddr; then "\
209 "bmp display $bootup_offset; fi; fi;" \
210 "\0"\
211 "init_display_base="\
212 "get_rebootmode;"\
213 "echo reboot_mode:::: ${reboot_mode};"\
lizhi.hu506ddfa2024-07-10 21:35:41 +0800214 "setenv bootargs ${bootargs} connector0_type=${connector0_type}; "\
Bo Lv72d0e902023-01-02 14:27:34 +0000215 "if test ${reboot_mode} = quiescent; then "\
216 "setenv reboot_mode_android ""quiescent"";"\
217 "setenv dolby_status 0;"\
218 "setenv dolby_vision_on 0;"\
hao.qiddc9ec02024-02-23 13:34:59 +0800219 "setenv initconfig androidboot.quiescent=1 "\
220 "androidboot.bootreason=${reboot_mode};"\
Bo Lv72d0e902023-01-02 14:27:34 +0000221 "run storeargs;"\
lizhi.hua35829b2024-09-05 15:28:53 +0800222 "setenv bootup_display off;"\
Bo Lv72d0e902023-01-02 14:27:34 +0000223 "else if test ${reboot_mode} = recovery_quiescent; then "\
224 "setenv reboot_mode_android ""quiescent"";"\
225 "setenv dolby_status 0;"\
226 "setenv dolby_vision_on 0;"\
hao.qiddc9ec02024-02-23 13:34:59 +0800227 "setenv initconfig androidboot.quiescent=1 "\
228 "androidboot.bootreason=recovery,quiescent;"\
Bo Lv72d0e902023-01-02 14:27:34 +0000229 "run storeargs;"\
lizhi.hua35829b2024-09-05 15:28:53 +0800230 "setenv bootup_display off;"\
Bo Lv72d0e902023-01-02 14:27:34 +0000231 "else "\
232 "setenv reboot_mode_android ""normal"";"\
hao.qiddc9ec02024-02-23 13:34:59 +0800233 "setenv initconfig androidboot.bootreason=${reboot_mode};"\
Bo Lv72d0e902023-01-02 14:27:34 +0000234 "run storeargs;"\
lizhi.hua35829b2024-09-05 15:28:53 +0800235 "setenv bootup_display on;"\
Bo Lv72d0e902023-01-02 14:27:34 +0000236 "fi;fi;"\
237 "\0"\
238 "storage_param_base="\
239 "store param;"\
240 "setenv bootargs ${bootargs} ${mtdbootparts}; "\
241 "\0"\
242 "cmdline_keys_base="\
243 "setenv region_code US;"\
244 "if keyman init 0x1234; then "\
245 "if keyman read usid ${loadaddr} str; then fi;"\
246 "if keyman read region_code ${loadaddr} str; then fi;"\
247 "if keyman read mac ${loadaddr} str; then "\
248 "setenv bootargs ${bootargs} mac=${mac};"\
249 "setenv bootconfig ${bootconfig} androidboot.mac=${mac};"\
250 "fi;"\
251 "if keyman read deviceid ${loadaddr} str; then "\
252 "setenv bootconfig ${bootconfig} androidboot.deviceid=${deviceid};"\
253 "fi;"\
254 "fi;"\
255 "setenv bootconfig ${bootconfig} androidboot.wificountrycode=${region_code};"\
256 "setenv bootconfig ${bootconfig} androidboot.serialno=${usid};"\
257 "setenv serial ${usid}; setenv serial# ${usid};"\
258 "factory_provision init;"\
259 "\0"\
260
261#endif
262