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 */ |
| 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 | |