blob: 8072065d3d179e0cd367068f45a71ffe3ed1472a [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 */
18//#define CONFIG_SYS_MAXARGS 64
19#define CONFIG_EXTRA_ENV_SETTINGS_BASE \
20 "firstboot=1\0"\
21 "upgrade_step=0\0"\
22 "jtag=disable\0"\
23 "loadaddr=0x00020000\0"\
24 "os_ident_addr=0x00500000\0"\
25 "loadaddr_rtos=0x00001000\0"\
26 "loadaddr_kernel=0x03000000\0"\
27 "fb_addr=0x00300000\0" \
28 "dolby_status=0\0" \
29 "dolby_vision_on=0\0" \
30 "dv_fw_dir_odm_ext=/odm_ext/firmware/dovi_fw.bin\0" \
31 "dv_fw_dir_vendor=/vendor/firmware/dovi_fw.bin\0" \
32 "dv_fw_dir=/oem/firmware/dovi_fw.bin\0" \
33 "lock=10101000\0"\
34 "recovery_offset=0\0"\
35 "active_slot=normal\0"\
36 "boot_part=boot\0"\
37 "vendor_boot_part=vendor_boot\0"\
38 "board_logo_part=odm_ext\0" \
39 "rollback_flag=0\0"\
40 "boot_flag=0\0"\
41 "write_boot=0\0"\
42 "Irq_check_en=0\0"\
43 "recovery_mode=false\0"\
44 "retry_recovery_times=7\0"\
45 "androidboot.dtbo_idx=0\0"\
46 "common_dtb_load=" CONFIG_DTB_LOAD "\0"\
47 "get_os_type=if store read ${os_ident_addr} ${boot_part} 0 0x1000; then "\
48 "os_ident ${os_ident_addr}; fi\0"\
49 "fatload_dev=usb\0"\
50 "fs_type=""rootfstype=ramfs""\0"\
51 "disable_ir=0\0"\
52 "upgrade_check_base="\
53 "echo recovery_status=${recovery_status};"\
54 "if itest.s \"${recovery_status}\" == \"in_progress\"; then "\
55 "run init_display;run storeargs; run recovery_from_flash;"\
56 "else fi;"\
57 "echo upgrade_step=${upgrade_step}; "\
58 "if itest ${upgrade_step} == 3; then "\
59 "run init_display;run storeargs; run update; fi;"\
60 "\0"\
61 "storeargs_base="\
62 "get_bootloaderversion;" \
63 "setenv bootargs ${initargs} otg_device=${otg_device} "\
64 "logo=${display_layer},loaded,${fb_addr} "\
65 "vout=${outputmode},${vout_init} 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} "\
70 "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};"\
74 "setenv bootconfig androidboot.selinux=${EnableSelinux} "\
75 "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 "\
120 "autoscr ${loadaddr}; fi;"\
121 "if fatload ${fatload_dev} 0 ${loadaddr} recovery.img; then "\
122 "if fatload ${fatload_dev} 0 ${dtb_mem_addr} dtb.img; then "\
123 "echo ${fatload_dev} dtb.img loaded; fi;"\
124 "setenv bootargs ${bootargs} ${fs_type};"\
125 "bootm ${loadaddr};fi;"\
126 "\0"\
127 "recovery_from_udisk_base="\
128 "setenv fatload_dev usb;"\
129 "if usb start 0; then run recovery_from_fat_dev; fi;"\
130 "\0"\
131 "recovery_from_sdcard_base="\
132 "setenv fatload_dev mmc;"\
133 "if mmcinfo; then run recovery_from_fat_dev; fi;"\
134 "\0"\
135 "recovery_from_flash_base="\
136 "echo active_slot: ${active_slot};"\
137 "setenv loadaddr ${loadaddr_kernel};"\
138 "setenv recovery_mode true;"\
139 "if test ${active_slot} = normal; then "\
140 "setenv bootargs ${bootargs} ${fs_type} aml_dt=${aml_dt} "\
141 "recovery_part=${recovery_part} recovery_offset=${recovery_offset};"\
142 "if test ${upgrade_step} = 3; then "\
143 "if ext4load mmc 1:2 ${dtb_mem_addr} /recovery/dtb.img; then "\
144 "echo cache dtb.img loaded; fi;"\
145 "if test ${vendor_boot_mode} = true; then "\
146 "if imgread kernel ${recovery_part} ${loadaddr} "\
147 "${recovery_offset}; then bootm ${loadaddr}; fi;"\
148 "else "\
149 "if ext4load mmc 1:2 ${loadaddr} /recovery/recovery.img;"\
150 "then echo cache recovery.img loaded; bootm ${loadaddr}; fi;"\
151 "fi;"\
152 "else "\
153 "if imgread dtb recovery ${dtb_mem_addr}; then "\
154 "else echo restore dtb; run common_dtb_load;"\
155 "fi;"\
156 "fi;"\
157 "if imgread kernel ${recovery_part} ${loadaddr} ${recovery_offset}; then "\
158 "bootm ${loadaddr}; fi;"\
159 "else "\
160 "if fdt addr ${dtb_mem_addr}; then else "\
161 "echo retry common dtb; run common_dtb_load; fi;"\
162 "if test ${partition_mode} = normal; then "\
163 "setenv bootargs ${bootargs} ${fs_type} aml_dt=${aml_dt} "\
164 "recovery_part=${recovery_part} recovery_offset=${recovery_offset};"\
165 "setenv bootconfig ${bootconfig} "\
166 "androidboot.slot_suffix=${active_slot};"\
167 "if imgread kernel ${boot_part} ${loadaddr}; then bootm ${loadaddr}; fi;"\
168 "else "\
169 "if test ${vendor_boot_mode} = true; then "\
170 "setenv bootargs ${bootargs} ${fs_type} aml_dt=${aml_dt};"\
171 "setenv bootconfig ${bootconfig} "\
172 "androidboot.slot_suffix=${active_slot};"\
173 "if imgread kernel ${boot_part} ${loadaddr}; then "\
174 "bootm ${loadaddr}; fi;"\
175 "else "\
176 "setenv bootargs ${bootargs} ${fs_type} aml_dt=${aml_dt} "\
177 "recovery_part=${recovery_part} "\
178 "recovery_offset=${recovery_offset};"\
179 "setenv bootconfig ${bootconfig} "\
180 "androidboot.slot_suffix=${active_slot};"\
181 "if imgread kernel ${recovery_part} ${loadaddr} "\
182 "${recovery_offset}; then bootm ${loadaddr}; fi;"\
183 "fi;"\
184 "fi;"\
185 "fi;"\
186 "\0"\
187 "bcb_cmd_base="\
188 "get_avb_mode;"\
189 "get_valid_slot;"\
190 "if test ${vendor_boot_mode} = true; then "\
191 "setenv loadaddr_kernel 0x3000000;"\
192 "setenv dtb_mem_addr 0x1000000;"\
193 "fi;"\
194 "if test ${active_slot} != normal; then "\
195 "echo ab mode, read dtb from kernel;"\
196 "setenv common_dtb_load ""imgread dtb ${boot_part} ${dtb_mem_addr}"";"\
197 "fi;"\
198 "\0"\
199 "load_bmp_logo_base="\
200 "if rdext4pic ${board_logo_part} $loadaddr; then bmp display $logoLoadAddr; " \
201 "else if imgread pic logo bootup $loadaddr; then "\
202 "bmp display $bootup_offset; fi; fi;" \
203 "\0"\
204 "init_display_base="\
205 "get_rebootmode;"\
206 "echo reboot_mode:::: ${reboot_mode};"\
207 "if test ${reboot_mode} = quiescent; then "\
208 "setenv reboot_mode_android ""quiescent"";"\
209 "setenv dolby_status 0;"\
210 "setenv dolby_vision_on 0;"\
211 "run storeargs;"\
212 "setenv bootconfig ${bootconfig} androidboot.quiescent=1;"\
213 "osd open;osd clear;"\
214 "else if test ${reboot_mode} = recovery_quiescent; then "\
215 "setenv reboot_mode_android ""quiescent"";"\
216 "setenv dolby_status 0;"\
217 "setenv dolby_vision_on 0;"\
218 "run storeargs;"\
219 "setenv bootconfig ${bootconfig} androidboot.quiescent=1;"\
220 "osd open;osd clear;"\
221 "else "\
222 "setenv reboot_mode_android ""normal"";"\
223 "run storeargs;"\
224 "hdmitx hpd;hdmitx get_preferred_mode;hdmitx get_parse_edid;"\
225 "dv process;watermark_init;osd open;osd clear;run load_bmp_logo;"\
226 "bmp scale;vout output ${outputmode};dovi set;dovi pkg;vpp hdrpkt;"\
227 "fi;fi;"\
228 "\0"\
229 "storage_param_base="\
230 "store param;"\
231 "setenv bootargs ${bootargs} ${mtdbootparts}; "\
232 "\0"\
233 "cmdline_keys_base="\
234 "setenv region_code US;"\
235 "if keyman init 0x1234; then "\
236 "if keyman read usid ${loadaddr} str; then fi;"\
237 "if keyman read region_code ${loadaddr} str; then fi;"\
238 "if keyman read mac ${loadaddr} str; then "\
239 "setenv bootargs ${bootargs} mac=${mac};"\
240 "setenv bootconfig ${bootconfig} androidboot.mac=${mac};"\
241 "fi;"\
242 "if keyman read deviceid ${loadaddr} str; then "\
243 "setenv bootconfig ${bootconfig} androidboot.deviceid=${deviceid};"\
244 "fi;"\
245 "fi;"\
246 "setenv bootconfig ${bootconfig} androidboot.wificountrycode=${region_code};"\
247 "setenv bootconfig ${bootconfig} androidboot.serialno=${usid};"\
248 "setenv serial ${usid}; setenv serial# ${usid};"\
249 "factory_provision init;"\
250 "\0"\
251
252#endif
253