mirror of
				https://source.denx.de/u-boot/u-boot.git
				synced 2025-10-31 08:21:36 +01:00 
			
		
		
		
	The predefined NAND headers take too much spaces in the mtk_image.c. Moving them into a new file can significantly improve the readability of both mtk_image.c and the new mtk_nand_headers.c. This is a preparation for adding more NAND headers. Reviewed-by: Simon Glass <sjg@chromium.org> Tested-by: Daniel Golle <daniel@makrotopia.org> Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
		
			
				
	
	
		
			203 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			203 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0+ */
 | |
| /*
 | |
|  * MediaTek BootROM header definitions
 | |
|  *
 | |
|  * Copyright (C) 2018 MediaTek Inc.
 | |
|  * Author: Weijie Gao <weijie.gao@mediatek.com>
 | |
|  */
 | |
| 
 | |
| #ifndef _MTK_IMAGE_H
 | |
| #define _MTK_IMAGE_H
 | |
| 
 | |
| /* Device header definitions, all fields are little-endian */
 | |
| 
 | |
| /* Header for NOR/SD/eMMC */
 | |
| union gen_boot_header {
 | |
| 	struct {
 | |
| 		char name[12];
 | |
| 		uint32_t version;
 | |
| 		uint32_t size;
 | |
| 	};
 | |
| 
 | |
| 	uint8_t pad[0x200];
 | |
| };
 | |
| 
 | |
| #define EMMC_BOOT_NAME		"EMMC_BOOT"
 | |
| #define SF_BOOT_NAME		"SF_BOOT"
 | |
| #define SDMMC_BOOT_NAME		"SDMMC_BOOT"
 | |
| 
 | |
| /* BootROM layout header */
 | |
| struct brom_layout_header {
 | |
| 	char name[8];
 | |
| 	uint32_t version;
 | |
| 	uint32_t header_size;
 | |
| 	uint32_t total_size;
 | |
| 	uint32_t magic;
 | |
| 	uint32_t type;
 | |
| 	uint32_t header_size_2;
 | |
| 	uint32_t total_size_2;
 | |
| 	uint32_t unused;
 | |
| };
 | |
| 
 | |
| #define BRLYT_NAME		"BRLYT"
 | |
| #define BRLYT_MAGIC		0x42424242
 | |
| 
 | |
| enum brlyt_img_type {
 | |
| 	BRLYT_TYPE_INVALID = 0,
 | |
| 	BRLYT_TYPE_NAND = 0x10002,
 | |
| 	BRLYT_TYPE_EMMC = 0x10005,
 | |
| 	BRLYT_TYPE_NOR = 0x10007,
 | |
| 	BRLYT_TYPE_SDMMC = 0x10008,
 | |
| 	BRLYT_TYPE_SNAND = 0x10009
 | |
| };
 | |
| 
 | |
| /* Combined device header for NOR/SD/eMMC */
 | |
| struct gen_device_header {
 | |
| 	union gen_boot_header boot;
 | |
| 
 | |
| 	union {
 | |
| 		struct brom_layout_header brlyt;
 | |
| 		uint8_t brlyt_pad[0x400];
 | |
| 	};
 | |
| };
 | |
| 
 | |
| /* BootROM header definitions */
 | |
| struct gfh_common_header {
 | |
| 	uint8_t magic[3];
 | |
| 	uint8_t version;
 | |
| 	uint16_t size;
 | |
| 	uint16_t type;
 | |
| };
 | |
| 
 | |
| #define GFH_HEADER_MAGIC	"MMM"
 | |
| 
 | |
| #define GFH_TYPE_FILE_INFO	0
 | |
| #define GFH_TYPE_BL_INFO	1
 | |
| #define GFH_TYPE_BROM_CFG	7
 | |
| #define GFH_TYPE_BL_SEC_KEY	3
 | |
| #define GFH_TYPE_ANTI_CLONE	2
 | |
| #define GFH_TYPE_BROM_SEC_CFG	8
 | |
| 
 | |
| struct gfh_file_info {
 | |
| 	struct gfh_common_header gfh;
 | |
| 	char name[12];
 | |
| 	uint32_t unused;
 | |
| 	uint16_t file_type;
 | |
| 	uint8_t flash_type;
 | |
| 	uint8_t sig_type;
 | |
| 	uint32_t load_addr;
 | |
| 	uint32_t total_size;
 | |
| 	uint32_t max_size;
 | |
| 	uint32_t hdr_size;
 | |
| 	uint32_t sig_size;
 | |
| 	uint32_t jump_offset;
 | |
| 	uint32_t processed;
 | |
| };
 | |
| 
 | |
| #define GFH_FILE_INFO_NAME	"FILE_INFO"
 | |
| 
 | |
| #define GFH_FLASH_TYPE_GEN	5
 | |
| #define GFH_FLASH_TYPE_NAND	2
 | |
| 
 | |
| #define GFH_SIG_TYPE_NONE	0
 | |
| #define GFH_SIG_TYPE_SHA256	1
 | |
| 
 | |
| struct gfh_bl_info {
 | |
| 	struct gfh_common_header gfh;
 | |
| 	uint32_t attr;
 | |
| };
 | |
| 
 | |
| struct gfh_brom_cfg {
 | |
| 	struct gfh_common_header gfh;
 | |
| 	uint32_t cfg_bits;
 | |
| 	uint32_t usbdl_by_auto_detect_timeout_ms;
 | |
| 	uint8_t unused[0x45];
 | |
| 	uint8_t jump_bl_arm64;
 | |
| 	uint8_t unused2[2];
 | |
| 	uint32_t usbdl_by_kcol0_timeout_ms;
 | |
| 	uint32_t usbdl_by_flag_timeout_ms;
 | |
| 	uint32_t pad;
 | |
| };
 | |
| 
 | |
| #define GFH_BROM_CFG_USBDL_BY_AUTO_DETECT_TIMEOUT_EN	0x02
 | |
| #define GFH_BROM_CFG_USBDL_AUTO_DETECT_DIS		0x10
 | |
| #define GFH_BROM_CFG_USBDL_BY_KCOL0_TIMEOUT_EN		0x80
 | |
| #define GFH_BROM_CFG_USBDL_BY_FLAG_TIMEOUT_EN		0x100
 | |
| #define GFH_BROM_CFG_JUMP_BL_ARM64_EN			0x1000
 | |
| #define GFH_BROM_CFG_JUMP_BL_ARM64			0x64
 | |
| 
 | |
| struct gfh_bl_sec_key {
 | |
| 	struct gfh_common_header gfh;
 | |
| 	uint8_t pad[0x20c];
 | |
| };
 | |
| 
 | |
| struct gfh_anti_clone {
 | |
| 	struct gfh_common_header gfh;
 | |
| 	uint8_t ac_b2k;
 | |
| 	uint8_t ac_b2c;
 | |
| 	uint16_t pad;
 | |
| 	uint32_t ac_offset;
 | |
| 	uint32_t ac_len;
 | |
| };
 | |
| 
 | |
| struct gfh_brom_sec_cfg {
 | |
| 	struct gfh_common_header gfh;
 | |
| 	uint32_t cfg_bits;
 | |
| 	char customer_name[0x20];
 | |
| 	uint32_t pad;
 | |
| };
 | |
| 
 | |
| #define BROM_SEC_CFG_JTAG_EN	1
 | |
| #define BROM_SEC_CFG_UART_EN	2
 | |
| 
 | |
| struct gfh_header {
 | |
| 	struct gfh_file_info file_info;
 | |
| 	struct gfh_bl_info bl_info;
 | |
| 	struct gfh_brom_cfg brom_cfg;
 | |
| 	struct gfh_bl_sec_key bl_sec_key;
 | |
| 	struct gfh_anti_clone anti_clone;
 | |
| 	struct gfh_brom_sec_cfg brom_sec_cfg;
 | |
| };
 | |
| 
 | |
| /* LK image header */
 | |
| 
 | |
| union lk_hdr {
 | |
| 	struct {
 | |
| 		uint32_t magic;
 | |
| 		uint32_t size;
 | |
| 		char name[32];
 | |
| 		uint32_t loadaddr;
 | |
| 		uint32_t mode;
 | |
| 	};
 | |
| 
 | |
| 	uint8_t data[512];
 | |
| };
 | |
| 
 | |
| #define LK_PART_MAGIC		0x58881688
 | |
| 
 | |
| /* MT7621 NAND SPL image header */
 | |
| 
 | |
| #define MT7621_IH_NMLEN			12
 | |
| #define MT7621_IH_CRC_POLYNOMIAL	0x04c11db7
 | |
| 
 | |
| struct mt7621_nand_header {
 | |
| 	char ih_name[MT7621_IH_NMLEN];
 | |
| 	uint32_t nand_ac_timing;
 | |
| 	uint32_t ih_stage_offset;
 | |
| 	uint32_t ih_bootloader_offset;
 | |
| 	uint32_t nand_info_1_data;
 | |
| 	uint32_t crc;
 | |
| };
 | |
| 
 | |
| struct mt7621_stage1_header {
 | |
| 	uint32_t jump_insn[2];
 | |
| 	uint32_t ep;
 | |
| 	uint32_t stage_size;
 | |
| 	uint32_t has_stage2;
 | |
| 	uint32_t next_ep;
 | |
| 	uint32_t next_size;
 | |
| 	uint32_t next_offset;
 | |
| };
 | |
| 
 | |
| #endif /* _MTK_IMAGE_H */
 |