You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
2.8 KiB
111 lines
2.8 KiB
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* (C) Copyright 2019 Rockchip Electronics Co., Ltd
|
|
*/
|
|
|
|
#ifndef _SPL_RKFW_H_
|
|
#define _SPL_RKFW_H_
|
|
|
|
#include <spl.h>
|
|
|
|
#define LOADER_HARD_STR "LOADER"
|
|
#ifdef CONFIG_SPL_ATF
|
|
#define TBOOT_HEAD_TAG 0x58334c42 /* 'B', 'L', '3', 'X' */
|
|
#else
|
|
#define TBOOT_HEAD_TAG "TOS "
|
|
#endif
|
|
|
|
#define BL30_IMAGE_NAME "bl30.bin" /* SCP Firmware BL3-0 */
|
|
#define BL31_IMAGE_NAME "bl31.bin" /* EL3 Runtime Firmware BL31 */
|
|
#define BL32_IMAGE_NAME "bl32.bin" /* Secure Payload BL32 (Trusted OS) */
|
|
|
|
#define UUID_SCP_FIRMWARE_BL30 0x30334c42 /* "BL30" */
|
|
#define UUID_EL3_RUNTIME_FIRMWARE_BL31 0x31334c42 /* "BL31" */
|
|
#define UUID_SECURE_PAYLOAD_BL32 0x32334c42 /* "BL32" */
|
|
|
|
/* Signature size, unit is byte */
|
|
#define SIGNATURE_SIZE 256
|
|
#define MAX_BL_CODE_NUM 6
|
|
#define LOADER_MAGIC_SIZE 8
|
|
#define LOADER_HASH_SIZE 32
|
|
|
|
/* Special value used to verify platform parameters from BL2 to BL3-1 */
|
|
#define RK_BL31_PLAT_PARAM_VAL 0x0f1e2d3c4b5a6978ULL
|
|
|
|
#ifdef CONFIG_MTD_NAND_CORE
|
|
#define RKFW_RETRY_SECTOR_SIZE 256
|
|
#define RKFW_RETRY_SECTOR_TIMES 32
|
|
#else
|
|
#define RKFW_RETRY_SECTOR_SIZE 1024
|
|
#define RKFW_RETRY_SECTOR_TIMES 8
|
|
#endif
|
|
|
|
struct s_fip_name_id {
|
|
const char *name;
|
|
const u32 id;
|
|
};
|
|
|
|
typedef struct tag_tboot_header_2k {
|
|
u32 tag;
|
|
u32 version;
|
|
u32 flags;
|
|
u32 size;
|
|
u32 reserved1[4];
|
|
u32 rsa_n[64];
|
|
u32 rsa_e[64];
|
|
u32 rsa_c[64];
|
|
u32 reserved2[312];
|
|
} tboot_header_2k, *ptboot_header_2k;
|
|
|
|
typedef struct tag_tboot_header {
|
|
u32 tag;
|
|
u32 version;
|
|
u32 flags;
|
|
u32 size;
|
|
u32 reserved[4];
|
|
u32 rsa_n[64];
|
|
u32 rsa_e[64];
|
|
u32 rsa_c[64];
|
|
} tboot_header, *ptboot_header;
|
|
|
|
typedef struct tag_boot_component {
|
|
u32 component_id;
|
|
u32 storage_addr;
|
|
u32 image_size;
|
|
u32 reserved;
|
|
} boot_component, *pboot_component;
|
|
|
|
typedef struct tag_component_data {
|
|
u32 hash_data[8];
|
|
u32 load_addr;
|
|
u32 reserved[3];
|
|
} component_data, *pcomponent_data;
|
|
|
|
typedef struct tag_tboot_entry {
|
|
boot_component component;
|
|
component_data compdata;
|
|
} tboot_entry, *ptboot_entry;
|
|
|
|
typedef struct tag_second_loader_hdr {
|
|
unsigned char magic[LOADER_MAGIC_SIZE];
|
|
unsigned int version;
|
|
unsigned int reserved0;
|
|
unsigned int loader_load_addr; /* physical load addr ,default is 0x60000000 */
|
|
unsigned int loader_load_size; /* size in bytes */
|
|
unsigned int crc32; /* crc32 */
|
|
unsigned int hash_len; /* 20 or 32 , 0 is no hash */
|
|
unsigned char hash[LOADER_HASH_SIZE]; /* sha */
|
|
unsigned int js_hash; /* js hsah */
|
|
unsigned char reserved[1024-32-32-4];
|
|
unsigned int sign_tag; /* 0x4E474953, 'N' 'G' 'I' 'S' */
|
|
unsigned int sign_len; /* 256 */
|
|
unsigned char rsa_hash[256];
|
|
unsigned char reserved2[2048-1024-256-8];
|
|
} second_loader_hdr; /* Size:2K */
|
|
|
|
/**
|
|
* spl_load_rkfw_image - Load rockchip image(trust and U-Boot) and jump to bl31.
|
|
*/
|
|
int spl_load_rkfw_image(struct spl_image_info *spl_image,
|
|
struct spl_load_info *info);
|
|
#endif
|
|
|