SmartAudio/lichee/brandy/u-boot-2014.07/include/private_toc.h

183 lines
6.0 KiB
C
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* (C) Copyright 2007-2013
* Allwinner Technology Co., Ltd. <www.allwinnertech.com>
* Jerry Wang <wangflord@allwinnertech.com>
*
* See file CREDITS for list of people who contributed to this
* project.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*/
#ifndef __toc_v2_h
#define __toc_v2_h
#include "spare_head.h"
#define TOC0_MAGIC "TOC0.GLH"
#define TOC_MAIN_INFO_MAGIC 0x89119800
#define BOOT0_EXTEND_MSG_MAGIC "BT0E.GLH"
#define BOOT0_EXTEND_MSG_MAIN_INFO_MAGIC 0x89119820
#define SECURE_SWITCH_OTHER 0
#define SECURE_SWITCH_NORMAL 1
#define SECURE_NON_SECUREOS 2
/*增加安全启动下toc0的头部数据结构 */
typedef struct {
u8 name[8]; /*字符串,可以更改,没有作限制
*/
u32 magic; /*必须是0x89119800
*/
u32 check_sum; /*整个数据的校验和参考现在boot0做法
*/
u32 serial_num; /*序列号,可以更改,没有限制
*/
u32 status; /*可以更改,没有限制
*/
u32 items_nr; /*总的项目个数对TOC0来说必须是2
*/
u32 length; /*TOC0的长度
*/
u8 platform[4]; /*toc_platform[0]标示启动介质 */
/*0nand1卡02卡23spinor */
u32 reserved[2]; /*保留位
*/
u32 end; /*表示头部结构体结束必须是0x3b45494d
*/
}
toc0_private_head_t;
//增加安全启动下toc1的头部数据结构
typedef struct sbrom_toc1_head_info
{
char name[16] ; //user can modify
u32 magic ; //must equal TOC_U32_MAGIC
u32 add_sum ;
u32 serial_num ; //user can modify
u32 status ; //user can modify,such as TOC_MAIN_INFO_STATUS_ENCRYP_NOT_USED
u32 items_nr; //total entry number
u32 valid_len;
u32 version_main; //only one byte
u32 version_sub; //two bytes
simple_gpio_cfg board_id_simple_gpio[2];
u32 reserved[2]; //reserved for future
u32 end;
}
sbrom_toc1_head_info_t;
typedef struct sbrom_toc1_item_info
{
char name[64]; //such as ITEM_NAME_SBROMSW_CERTIF
u32 data_offset;
u32 data_len;
u32 encrypt; //0: no aes //1: aes
u32 type; //0: normal file, dont care 1: key certif 2: sign certif 3: bin file
u32 run_addr; //if it is a bin file, then run on this address; if not, it should be 0
u32 index; //if it is a bin file, this value shows the index to run; if not
//if it is a certif file, it should equal to the bin file index
//that they are in the same group
//it should be 0 when it anyother data type
u32 reserved[69]; //reserved for future;
u32 end;
}sbrom_toc1_item_info_t;
typedef struct sbrom_toc0_config
{
unsigned char config_vsn[4];
unsigned int dram_para[32]; // dram参数
int uart_port; // UART控制器编号
normal_gpio_cfg uart_ctrl[2]; // UART控制器GPIO
int enable_jtag; // JTAG使能
normal_gpio_cfg jtag_gpio[5]; // JTAG控制器GPIO
normal_gpio_cfg storage_gpio[50]; // 存储设备 GPIO信息
// 0-23放nand24-31存放卡032-39放卡2
// 40-49存放spi
char storage_data[384]; // 0-159,存储nand信息160-255,存放卡信息
unsigned int secure_dram_mbytes; //
unsigned int drm_start_mbytes; //
unsigned int drm_size_mbytes; //
unsigned int boot_cpu; //
special_gpio_cfg a15_power_gpio; //the gpio config is to a15 extern power enable gpio
unsigned int next_exe_pa;
unsigned int secure_without_OS; //secure boot without semelis
unsigned char debug_mode; //1:turn on printf; 0 :turn off printf
unsigned char power_mode; /* 0:axp , 1: dummy pmu */
unsigned char reserver[2];
unsigned int card_work_mode;
unsigned int res[2]; // 总共1024字节
}
sbrom_toc0_config_t;
#define RSA_BIT (2048)
#define PK_MAX_LEN_BIT (RSA_BIT*2)
#define PK_MAX_LEN_BYTE (PK_MAX_LEN_BIT >> 3)
typedef struct SBROM_TOC0_KEY_ITEM_info {
unsigned int vendor_id;
unsigned int KEY0_PK_mod_len;
unsigned int KEY0_PK_e_len;
unsigned int KEY1_PK_mod_len;
unsigned int KEY1_PK_e_len;
unsigned int sign_len;
unsigned char KEY0_PK[PK_MAX_LEN_BYTE];
unsigned char KEY1_PK[PK_MAX_LEN_BYTE];
unsigned char reserve[32];
unsigned char sign[256];
} SBROM_TOC0_KEY_ITEM_info_t;
typedef struct SBROM_TOC0_ITEM_info {
u32 name;
u32 data_offset;
u32 data_len;
u32 status;
u32 type;
u32 run_addr;
u32 reserved_1;
u32 end;
} SBROM_TOC0_ITEM_info_t;
#define ITEM_PARAMETER_NAME "parameter"
#define ITEM_OPTEE_NAME "optee"
#define ITEM_SCP_NAME "scp"
#define ITEM_MONITOR_NAME "monitor"
#define ITEM_UBOOT_NAME "u-boot"
#define ITEM_LOGO_NAME "logo"
#define ITEM_TONE_NAME "tone"
#define ITEM_DTB_NAME "dtb"
#define ITEM_SOCCFG_NAME "soc-cfg"
#define ITEM_BDCFG_NAME "board-cfg"
#define ITEM_ESM_IMG_NAME "esm-img"
#define ITEM_SHUTDOWNCHARGE_LOGO_NAME "shutdowncharge"
#define ITEM_ANDROIDCHARGE_LOGO_NAME "androidcharge"
#define ITEM_EMMC_FW_NAME "emmc-fw"
#define ITEM_NAME_SBROMSW_KEY 0x010303
typedef struct boot0_extend_msg
{
__u32 magic;
__u32 valid_len;
__u32 add_sum;
__u32 dtb_index;
}boot0_extend_msg_t;
#endif // ifndef __toc_h
/* end of toc.h */