Bo Lv | 72d0e90 | 2023-01-02 14:27:34 +0000 | [diff] [blame] | 1 | /* 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 Lv | 72d0e90 | 2023-01-02 14:27:34 +0000 | [diff] [blame] | 18 | #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.jiang | 4c36ce8 | 2024-09-13 13:47:42 +0800 | [diff] [blame] | 68 | "dolby_status=${dolby_status} "\ |
xiang.wu1 | bab167c | 2024-08-13 13:22:40 +0800 | [diff] [blame] | 69 | "frac_rate_policy=${actual_frac_rate} hdmi_read_edid=${hdmi_read_edid} "\ |
Bo Lv | 72d0e90 | 2023-01-02 14:27:34 +0000 | [diff] [blame] | 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};"\ |
hao.qi | ddc9ec0 | 2024-02-23 13:34:59 +0800 | [diff] [blame] | 74 | "setenv bootconfig ${initconfig} androidboot.selinux=${EnableSelinux} "\ |
Bo Lv | 72d0e90 | 2023-01-02 14:27:34 +0000 | [diff] [blame] | 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 "\ |
Matthew Shyu | c710a12 | 2023-12-14 00:08:41 -0800 | [diff] [blame] | 120 | "if avb memory recovery ${loadaddr}; then " \ |
| 121 | "avb recovery 1;" \ |
| 122 | "autoscr ${loadaddr}; fi;"\ |
| 123 | "fi;" \ |
Bo Lv | 72d0e90 | 2023-01-02 14:27:34 +0000 | [diff] [blame] | 124 | "if fatload ${fatload_dev} 0 ${loadaddr} recovery.img; then "\ |
Matthew Shyu | c710a12 | 2023-12-14 00:08:41 -0800 | [diff] [blame] | 125 | "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 Lv | 72d0e90 | 2023-01-02 14:27:34 +0000 | [diff] [blame] | 132 | "\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 Shyu | c710a12 | 2023-12-14 00:08:41 -0800 | [diff] [blame] | 148 | "avb recovery 1;" \ |
Bo Lv | 72d0e90 | 2023-01-02 14:27:34 +0000 | [diff] [blame] | 149 | "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.hu | 506ddfa | 2024-07-10 21:35:41 +0800 | [diff] [blame] | 214 | "setenv bootargs ${bootargs} connector0_type=${connector0_type}; "\ |
Bo Lv | 72d0e90 | 2023-01-02 14:27:34 +0000 | [diff] [blame] | 215 | "if test ${reboot_mode} = quiescent; then "\ |
| 216 | "setenv reboot_mode_android ""quiescent"";"\ |
| 217 | "setenv dolby_status 0;"\ |
| 218 | "setenv dolby_vision_on 0;"\ |
hao.qi | ddc9ec0 | 2024-02-23 13:34:59 +0800 | [diff] [blame] | 219 | "setenv initconfig androidboot.quiescent=1 "\ |
| 220 | "androidboot.bootreason=${reboot_mode};"\ |
Bo Lv | 72d0e90 | 2023-01-02 14:27:34 +0000 | [diff] [blame] | 221 | "run storeargs;"\ |
lizhi.hu | a35829b | 2024-09-05 15:28:53 +0800 | [diff] [blame] | 222 | "setenv bootup_display off;"\ |
Bo Lv | 72d0e90 | 2023-01-02 14:27:34 +0000 | [diff] [blame] | 223 | "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.qi | ddc9ec0 | 2024-02-23 13:34:59 +0800 | [diff] [blame] | 227 | "setenv initconfig androidboot.quiescent=1 "\ |
| 228 | "androidboot.bootreason=recovery,quiescent;"\ |
Bo Lv | 72d0e90 | 2023-01-02 14:27:34 +0000 | [diff] [blame] | 229 | "run storeargs;"\ |
lizhi.hu | a35829b | 2024-09-05 15:28:53 +0800 | [diff] [blame] | 230 | "setenv bootup_display off;"\ |
Bo Lv | 72d0e90 | 2023-01-02 14:27:34 +0000 | [diff] [blame] | 231 | "else "\ |
| 232 | "setenv reboot_mode_android ""normal"";"\ |
hao.qi | ddc9ec0 | 2024-02-23 13:34:59 +0800 | [diff] [blame] | 233 | "setenv initconfig androidboot.bootreason=${reboot_mode};"\ |
Bo Lv | 72d0e90 | 2023-01-02 14:27:34 +0000 | [diff] [blame] | 234 | "run storeargs;"\ |
lizhi.hu | a35829b | 2024-09-05 15:28:53 +0800 | [diff] [blame] | 235 | "setenv bootup_display on;"\ |
Bo Lv | 72d0e90 | 2023-01-02 14:27:34 +0000 | [diff] [blame] | 236 | "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 | |