/* SPDX-License-Identifier: GPL-2.0 */ | |
/* | |
* Copyright (C) 2018 MediaTek Inc. | |
*/ | |
#ifndef __PRELOADER_H_ | |
#define __PRELOADER_H_ | |
enum forbidden_mode { | |
F_FACTORY_MODE = 0x0001 | |
}; | |
union lk_hdr { | |
struct { | |
u32 magic; | |
u32 size; | |
char name[32]; | |
u32 loadaddr; | |
}; | |
u8 data[512]; | |
}; | |
struct sec_limit { | |
unsigned int magic_num; | |
enum forbidden_mode forbid_mode; | |
}; | |
enum bootmode { | |
NORMAL_BOOT = 0, | |
META_BOOT = 1, | |
RECOVERY_BOOT = 2, | |
SW_REBOOT = 3, | |
FACTORY_BOOT = 4, | |
ADVMETA_BOOT = 5, | |
ATE_FACTORY_BOOT = 6, | |
ALARM_BOOT = 7, | |
KERNEL_POWER_OFF_CHARGING_BOOT = 8, | |
LOW_POWER_OFF_CHARGING_BOOT = 9, | |
FAST_BOOT = 99, | |
DOWNLOAD_BOOT = 100, | |
UNKNOWN_BOOT | |
}; | |
enum boot_reason { | |
BR_POWER_KEY = 0, | |
BR_USB, | |
BR_RTC, | |
BR_WDT, | |
BR_WDT_BY_PASS_PWK, | |
BR_TOOL_BY_PASS_PWK, | |
BR_2SEC_REBOOT, | |
BR_UNKNOWN | |
}; | |
enum meta_com_type { | |
META_UNKNOWN_COM = 0, | |
META_UART_COM, | |
META_USB_COM | |
}; | |
struct da_info_t { | |
u32 addr; | |
u32 arg1; | |
u32 arg2; | |
u32 len; | |
u32 sig_len; | |
}; | |
struct boot_argument { | |
u32 magic; | |
enum bootmode boot_mode; | |
u32 e_flag; | |
u32 log_port; | |
u32 log_baudrate; | |
u8 log_enable; | |
u8 part_num; | |
u8 reserved[2]; | |
u32 dram_rank_num; | |
u32 dram_rank_size[4]; | |
u32 boot_reason; | |
enum meta_com_type meta_com_type; | |
u32 meta_com_id; | |
u32 boot_time; | |
struct da_info_t da_info; | |
struct sec_limit sec_limit; | |
union lk_hdr *part_info; | |
u8 md_type[4]; | |
u32 ddr_reserve_enable; | |
u32 ddr_reserve_success; | |
u32 chip_ver; | |
char pl_version[8]; | |
}; | |
#define BOOT_ARGUMENT_MAGIC 0x504c504c | |
#endif /* __PRELOADER_H_ */ |