mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 00:32:04 +02:00
tools: MediaTek: add MTK boot header generation to mkimage
This patch adds support for MTK boot image generation. Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> Signed-off-by: Ryder Lee <ryder.lee@mediatek.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
199
tools/mtk_image.h
Normal file
199
tools/mtk_image.h
Normal file
@@ -0,0 +1,199 @@
|
||||
/* 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 */
|
||||
|
||||
/* Header for NOR/SD/eMMC */
|
||||
union gen_boot_header {
|
||||
struct {
|
||||
char name[12];
|
||||
__le32 version;
|
||||
__le32 size;
|
||||
};
|
||||
|
||||
uint8_t pad[0x200];
|
||||
};
|
||||
|
||||
#define EMMC_BOOT_NAME "EMMC_BOOT"
|
||||
#define SF_BOOT_NAME "SF_BOOT"
|
||||
#define SDMMC_BOOT_NAME "SDMMC_BOOT"
|
||||
|
||||
/* Header for NAND */
|
||||
union nand_boot_header {
|
||||
struct {
|
||||
char name[12];
|
||||
char version[4];
|
||||
char id[8];
|
||||
__le16 ioif;
|
||||
__le16 pagesize;
|
||||
__le16 addrcycles;
|
||||
__le16 oobsize;
|
||||
__le16 pages_of_block;
|
||||
__le16 numblocks;
|
||||
__le16 writesize_shift;
|
||||
__le16 erasesize_shift;
|
||||
uint8_t dummy[60];
|
||||
uint8_t ecc_parity[28];
|
||||
};
|
||||
|
||||
uint8_t data[0x80];
|
||||
};
|
||||
|
||||
#define NAND_BOOT_NAME "BOOTLOADER!"
|
||||
#define NAND_BOOT_VERSION "V006"
|
||||
#define NAND_BOOT_ID "NFIINFO"
|
||||
|
||||
/* BootROM layout header */
|
||||
struct brom_layout_header {
|
||||
char name[8];
|
||||
__le32 version;
|
||||
__le32 header_size;
|
||||
__le32 total_size;
|
||||
__le32 magic;
|
||||
__le32 type;
|
||||
__le32 header_size_2;
|
||||
__le32 total_size_2;
|
||||
__le32 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;
|
||||
__le16 size;
|
||||
__le16 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];
|
||||
__le32 unused;
|
||||
__le16 file_type;
|
||||
uint8_t flash_type;
|
||||
uint8_t sig_type;
|
||||
__le32 load_addr;
|
||||
__le32 total_size;
|
||||
__le32 max_size;
|
||||
__le32 hdr_size;
|
||||
__le32 sig_size;
|
||||
__le32 jump_offset;
|
||||
__le32 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;
|
||||
__le32 attr;
|
||||
};
|
||||
|
||||
struct gfh_brom_cfg {
|
||||
struct gfh_common_header gfh;
|
||||
__le32 cfg_bits;
|
||||
__le32 usbdl_by_auto_detect_timeout_ms;
|
||||
uint8_t unused[0x48];
|
||||
__le32 usbdl_by_kcol0_timeout_ms;
|
||||
__le32 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
|
||||
|
||||
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;
|
||||
__le32 ac_offset;
|
||||
__le32 ac_len;
|
||||
};
|
||||
|
||||
struct gfh_brom_sec_cfg {
|
||||
struct gfh_common_header gfh;
|
||||
__le32 cfg_bits;
|
||||
char customer_name[0x20];
|
||||
__le32 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 {
|
||||
__le32 magic;
|
||||
__le32 size;
|
||||
char name[32];
|
||||
__le32 loadaddr;
|
||||
__le32 mode;
|
||||
};
|
||||
|
||||
uint8_t data[512];
|
||||
};
|
||||
|
||||
#define LK_PART_MAGIC 0x58881688
|
||||
|
||||
#endif /* _MTK_IMAGE_H */
|
Reference in New Issue
Block a user