// SPDX-License-Identifier: (GPL-2.0+ OR MIT) /* * Copyright (c) 2019 Amlogic, Inc. All rights reserved. */ /* * uboot text based env * more details: https://u-boot.readthedocs.io/en/latest/usage/environment.html * or: v2023 doc/usage/environment.rst */ #ifdef CONFIG_NOVERBOSE_BUILD silent=1 #else silent=0 #endif silent_build=0 firstboot=1 lock=10101000 upgrade_step=0 loadaddr=0x1080000 dtb_mem_addr=0x01000000 os_ident_addr=0x00500000 loadaddr_rtos=0x00080000 loadaddr_kernel=0x03000000 decaddr_kernel=0x01800000 fb_addr=0x00300000 dolby_status=0 dolby_vision_on=0 dv_fw_dir_odm_ext=/odm_ext/firmware/dovi_fw.bin dv_fw_dir_vendor=/vendor/firmware/dovi_fw.bin dv_fw_dir=/oem/firmware/dovi_fw.bin dv_fw_addr=0xa00000 otg_device=1 fdt_high=0x20000000 EnableSelinux=enforcing recovery_offset=0 osd_reverse=0 video_reverse=0 active_slot=normal vendor_boot_part=vendor_boot board_logo_part=odm_ext rollback_flag=0 boot_flag=0 write_boot=0 recovery_mode=false retry_recovery_times=7 androidboot.dtbo_idx=0 fatload_dev=usb disable_ir=0 default_governor=performance sdcburncfg=aml_sdc_burn.ini recovery_part=recovery ddr_size=0 fs_type=rootfstype=ramfs fastboot_step=0 usb_status=detach cpuid_env=0 factorytest=0 console_off=1 keymatch=false rc_level=3 bootperf=0 arb_reboot_flag=0 cec_fun=0x2f logic_addr=0x4 cec_ac_wakeup=1 phy_addr=0x0000 jpg_logo=false #ifdef CONFIG_NOVERBOSE_BUILD loglevel=2 page_trace=off #else #ifdef CONFIG_KNL_LOG_LEVEL loglevel=CONFIG_KNL_LOG_LEVEL #else loglevel=7 #endif//ifdef CONFIG_KNL_LOG_LEVEL page_trace=on #endif #ifdef CONFIG_ENABLE_AML_GPIO_UPGRADE upgrade_key_base= if gpio input CONFIG_AML_GPIO_UPGRADE_KEY; then echo detect upgrade key; if test ${upgrade_key_flag} = 0; then echo enter recovery; setenv upgrade_key_flag 1; saveenv; setenv dolby_status 0; run init_display; run storeargs; run recovery_from_flash; else if test ${upgrade_key_flag} = 1; then echo enter update; setenv upgrade_key_flag 2; saveenv; run update; else echo enter fastboot; setenv upgrade_key_flag 0; saveenv; fastboot 0; fi;fi; fi; #else upgrade_key_base= echo base env no upgrade key; #endif //#ifdef CONFIG_ENABLE_AML_GPIO_UPGRADE #ifdef CONFIG_DTB_BIND_KERNEL //load dtb from kernel, such as boot partition common_dtb_load=imgread dtb ${boot_part} ${dtb_mem_addr} #else common_dtb_load=imgread dtb _aml_dtb ${dtb_mem_addr} #endif//#ifdef CONFIG_DTB_BIND_KERNEL //load dtb from kernel, such as boot partition #ifdef CONFIG_YOCTO check_factory_reset=if test -n ${factory-reset}; then if test ${factory-reset} != 0; then defenv_reserve factory-reset model_name panel_type ${factory-reset_extra_preserved_envs}; saveenv; fi; fi; check_reboot_mode= get_rebootmode; if test "${reboot_mode}" = "quiescent"; then setenv quiescent_bootup "${reboot_mode}"; elif test "${reboot_mode}" = "recovery_quiescent"; then setenv quiescent_bootup "${reboot_mode}"; run update; elif test "${reboot_mode}" = "rtc_quiescent"; then setenv quiescent_bootup "quiescent"; else setenv quiescent_bootup ""; fi; saveenv; #else check_reboot_mode=echo "check_reboot_mode" #endif check_console_onoff= if test ${console_status} = off; then \ setenv console_off 1; else setenv console_off 0; fi; get_os_type=if store read ${os_ident_addr} ${boot_part} 0 0x1000; then os_ident ${os_ident_addr}; fi upgrade_check= echo recovery_status=${recovery_status}; if itest.s "${recovery_status}" == "in_progress"; then run init_display; run storeargs; run recovery_from_flash; else fi; echo upgrade_step=${upgrade_step}; if itest ${upgrade_step} == 3; then run storeargs; run update; fi; initargs=init=/init ramoops.pstore_en=1 ramoops.record_size=0x8000 ramoops.console_size=0x4000 loop.max_part=4 resumewait storeargs=get_bootloaderversion; run init_bootreason; echo reboot_mode : ${reboot_mode}; if test ${reboot_mode} = factory_reboot; then setenv EnableSelinux permissive; fi; if test ${reboot_mode} = bist_reboot; then setenv EnableSelinux permissive; fi; setenv bootargs ${initargs} loglevel=${loglevel} console=ttyS0,${baudrate} no_console_suspend earlycon=aml_uart,${uart_base} scramble_reg=${scramble_reg} page_trace=${page_trace} otg_device=${otg_device} disable_ir=${disable_ir} cpufreq.default_governor=${default_governor} logo=${display_layer},loaded,${fb_addr} vout=${outputmode},${vout_init} connector0_type=${connector0_type} hdmitx=${colorattribute},scan_info:${scan_info} display_bpp=${display_bpp} dolby_vision_on=${dolby_vision_on} hdr_policy=${hdr_policy} hdr_priority=${hdr_priority} config_csc_en=${config_csc_en} hdr_force_mode=${hdr_force_mode} dolby_status=${dolby_status} frac_rate_policy=${actual_frac_rate} osd_reverse=${osd_reverse} video_reverse=${video_reverse}; setenv bootargs ${bootargs} ${emmc_quirks} kvm-arm.mode=none init_on_alloc=0; storeargs+= setenv bootconfig ${initconfig} androidboot.selinux=${EnableSelinux}; setenv bootconfig ${bootconfig} androidboot.bootloader=${bootloader_version} androidboot.hardware=amlogic; setenv bootconfig ${bootconfig} androidboot.firstboot=${firstboot} androidboot.ddr_size=${ddr_size}; setenv bootconfig ${bootconfig} androidboot.console.status=${console_off}; setenv bootconfig ${bootconfig} androidboot.rc_level=${rc_level}; setenv bootconfig ${bootconfig} androidboot.bootperf=${bootperf}; setenv bootconfig ${bootconfig} androidboot.arb_reboot_flag=${arb_reboot_flag}; #ifdef CONFIG_ENABLE_CC_CONFIG setenv bootconfig ${bootconfig} androidboot.cc.status=${usb_status}; #endif setenv bootconfig ${bootconfig} androidboot.production_mode=${production_mode}; setenv bootconfig ${bootconfig} androidboot.chipid=${cpuid_env}; if test "x${model_name}" != "x"; then setenv bootconfig ${bootconfig} androidboot.model_name=${model_name}; fi; if test ${cc_enable} != 1; then else setenv bootconfig ${bootconfig} androidboot.cc_enable=${cc_enable}; fi; run cmdline_keys; switch_bootmode= get_rebootmode; if test ${reboot_mode} = factory_reset; then run recovery_from_flash; elif test ${reboot_mode} = update; then run update; elif test ${reboot_mode} = quiescent; then setenv bootargs "${bootargs} androidboot.quiescent=1"; elif test ${reboot_mode} = rtc_quiescent; then setenv bootargs "${bootargs} androidboot.quiescent=1"; elif test ${reboot_mode} = recovery_quiescent; then setenv bootargs "${bootargs} androidboot.quiescent=1"; run recovery_from_flash; elif test ${reboot_mode} = cold_boot; then :; elif test ${reboot_mode} = fastboot; then fastboot 0; elif test ${reboot_mode} = factory_reboot; then bcb factory; elif test ${reboot_mode} = bist_reboot; then bcb bist; fi; enter_fastboot= fastboot 0; storeboot= run get_os_type; run storage_param; if test ${os_type} = rtos; then setenv loadaddr ${loadaddr_rtos}; store read ${loadaddr} ${boot_part} 0 0x400000; bootm ${loadaddr}; else if test ${os_type} = kernel; then get_avb_mode; if fdt addr ${dtb_mem_addr}; then else echo retry common dtb; run common_dtb_load; fi; setenv bootconfig ${bootconfig} androidboot.force_normal_boot=1; if test ${active_slot} != normal; then setenv bootconfig ${bootconfig} androidboot.slot_suffix=${active_slot}; fi; setenv bootconfig ${bootconfig} androidboot.rollback=${rollback_flag}; setenv loadaddr ${loadaddr_kernel}; if imgread kernel ${boot_part} ${loadaddr}; then bootm ${loadaddr}; fi; else echo wrong OS format ${os_type}; fi;fi; echo try upgrade as booting failure; check_ab; run update; update= /*first usb burning, second sdc_burn, third ext-sd autoscr/recovery, last udisk autoscr/recovery*/\ run usb_burning; run recovery_from_sdcard; run recovery_from_udisk; run recovery_from_flash; recovery_from_fat_dev= setenv loadaddr ${loadaddr_kernel}; if fatload ${fatload_dev} 0 ${loadaddr} aml_autoscript; then autoscr ${loadaddr}; fi; if fatload ${fatload_dev} 0 ${loadaddr} recovery.img; then if fatload ${fatload_dev} 0 ${dtb_mem_addr} dtb.img; then echo ${fatload_dev} dtb.img loaded; fi; setenv bootargs ${bootargs} ${fs_type}; bootm ${loadaddr}; fi; recovery_from_udisk= setenv fatload_dev usb; if usb start 0; then run recovery_from_fat_dev; fi; recovery_from_sdcard= setenv fatload_dev mmc; if mmcinfo; then run recovery_from_fat_dev; fi; recovery_from_flash= echo active_slot: ${active_slot}; setenv loadaddr ${loadaddr_kernel}; setenv recovery_mode true; if test ${active_slot} = normal; then setenv bootargs ${bootargs} ${fs_type} aml_dt=${aml_dt} recovery_part=${recovery_part} recovery_offset=${recovery_offset}; avb recovery 1; if test ${upgrade_step} = 3; then if ext4load mmc 1:2 ${dtb_mem_addr} /recovery/dtb.img; then echo cache dtb.img loaded; fi; if test ${vendor_boot_mode} = true; then if imgread kernel ${recovery_part} ${loadaddr} ${recovery_offset}; then bootm ${loadaddr}; fi; else if ext4load mmc 1:2 ${loadaddr} /recovery/recovery.img; then echo cache recovery.img loaded; bootm ${loadaddr}; fi; fi; else if imgread dtb recovery ${dtb_mem_addr}; then else echo restore dtb; run common_dtb_load; fi; fi; if imgread kernel ${recovery_part} ${loadaddr} ${recovery_offset}; then bootm ${loadaddr}; fi; else if fdt addr ${dtb_mem_addr}; then else echo retry common dtb; run common_dtb_load; fi; if test ${vendor_boot_mode} = true; then setenv bootargs ${bootargs} ${fs_type} aml_dt=${aml_dt}; setenv bootconfig ${bootconfig} androidboot.slot_suffix=${active_slot}; if imgread kernel ${boot_part} ${loadaddr}; then bootm ${loadaddr}; fi; fi; fi; bcb_cmd= get_avb_mode; get_valid_slot; if test ${active_slot} != "normal"; then echo ab mode, read dtb from kernel; setenv common_dtb_load imgread dtb ${boot_part} ${dtb_mem_addr}; fi; logo_read= if rdext4pic ${board_logo_part} $loadaddr ${logo_file_name}; then setenv ext4pic_load_success 1; else setenv ext4pic_load_success 0; imgread pic logo bootup $loadaddr; fi; if test ${jpg_logo} = true; then jpeg info $logoLoadAddr; else bmp info $logoLoadAddr; fi; load_bmp_logo= if test ${ext4pic_load_success} = 1; then bmp display $logoLoadAddr; else bmp display $bootup_offset; fi; load_jpg_logo= if test ${ext4pic_load_success} = 1; then jpeg display $logoLoadAddr $ext4LogoSz; else jpeg display $bootup_offset $bootup_size; fi; init_display= get_rebootmode; run check_reboot_mode; if test ${reboot_mode} = quiescent; then setenv reboot_mode_android "quiescent"; setenv dolby_status 0; setenv dolby_vision_on 0; setenv initconfig "androidboot.quiescent=1 androidboot.bootreason=${reboot_mode}"; run storeargs; osd open; osd clear; elif test ${reboot_mode} = rtc_quiescent; then setenv reboot_mode_android "quiescent"; setenv dolby_status 0; setenv dolby_vision_on 0; setenv initconfig "androidboot.quiescent=1 androidboot.bootreason=${reboot_mode}"; run storeargs; osd open; osd clear; elif test ${reboot_mode} = recovery_quiescent; then setenv reboot_mode_android "quiescent"; setenv dolby_status 0; setenv dolby_vision_on 0; setenv initconfig "androidboot.quiescent=1 androidboot.bootreason=recovery,quiescent"; run storeargs; osd open; osd clear; else setenv reboot_mode_android "normal"; setenv initconfig "androidboot.bootreason=${reboot_mode}"; hdmitx hpd; hdmitx get_parse_edid; #ifdef CONFIG_AML_DOLBY dovi process; #endif watermark_init; logo_display; run logo_read; osd open; osd clear; if test "${jpg_logo}" = "true"; then run load_jpg_logo; else run load_bmp_logo; fi; bmp scale; vout output ${outputmode}; #ifdef CONFIG_AML_DOLBY dovi set;dovi pkg; #endif vpp hdrpkt; run storeargs; fi; upgrade_display_prepare= echo prepare display for upgrade ott; setenv display_on_smp 0; setenv fb_for_4k2k 0; setenv jpg_logo false; setenv display_layer osd0; setenv display_bpp 16; setenv display_color_index 16; upgrade_display_init= echo prepare display for upgrade ott; echo hdmitx hpd;hdmitx get_parse_edid;hdmitx hpd;hdmitx get_parse_edid; echo osd open;osd open; echo osd clear;osd clear; echo vout output ${outputmode};vout output ${outputmode}; storage_param= setenv bootargs ${bootargs} ${emmc_quirks}; cmdline_keys= setenv region_code US; if keyman init 0x1234; then if keyman read usid ${loadaddr} str; then setenv bootconfig ${bootconfig} androidboot.serialno=${usid}; setenv serial ${usid}; setenv serial# ${usid}; else setenv bootconfig ${bootconfig} androidboot.serialno=${product}${cpu_id}; setenv serial ${product}${cpu_id}; setenv serial# ${product}${cpu_id}; fi; if keyman read region_code ${loadaddr} str; then fi; if keyman read mac ${loadaddr} str; then setenv bootargs ${bootargs} mac=${mac}; setenv bootconfig ${bootconfig} androidboot.mac=${mac}; fi; if keyman read odmsn ${loadaddr} str; then setenv bootargs ${bootargs} odmsn=${odmsn}; setenv bootconfig ${bootconfig} androidboot.odmsn=${odmsn}; fi; if keyman read deviceid ${loadaddr} str; then setenv bootconfig ${bootconfig} androidboot.deviceid=${deviceid}; fi; fi; setenv bootconfig ${bootconfig} androidboot.wificountrycode=${region_code}; factory_provision init; check_aocpu= if test ${reboot_mode} = aocpu_watchdog; then systemsuspend; fi; init_bootreason= get_rebootmode; echo reboot_mode : ${reboot_mode}; if test ${reboot_mode} = quiescent; then setenv reboot_mode_android "quiescent"; setenv initconfig "androidboot.quiescent=1 androidboot.bootreason=${reboot_mode}"; elif test ${reboot_mode} = rtc_quiescent; then setenv reboot_mode_android "quiescent"; setenv initconfig "androidboot.quiescent=1 androidboot.bootreason=${reboot_mode}"; elif test ${reboot_mode} = recovery_quiescent; then setenv reboot_mode_android "quiescent"; setenv initconfig "androidboot.quiescent=1 androidboot.bootreason=recovery,quiescent"; else setenv reboot_mode_android "normal"; setenv initconfig "androidboot.bootreason=${reboot_mode}"; fi;