316 lines
7.3 KiB
C
316 lines
7.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (C) 2015 MediaTek Inc.
|
|
*/
|
|
#ifndef __CCCI_UTIL_LIB_MAIN_H__
|
|
#define __CCCI_UTIL_LIB_MAIN_H__
|
|
#include "mt-plat/mtk_ccci_common.h"
|
|
|
|
struct md_check_header_v3 {
|
|
/* magic number is "CHECK_HEADER"*/
|
|
unsigned char check_header[12];
|
|
/* header structure version number */
|
|
unsigned int header_verno;
|
|
/* 0x0:invalid;
|
|
* 0x1:debug version;
|
|
* 0x2:release version
|
|
*/
|
|
unsigned int product_ver;
|
|
/* 0x0:invalid;
|
|
* 0x1:2G modem;
|
|
* 0x2: 3G modem
|
|
*/
|
|
unsigned int image_type;
|
|
/* MT6573_S01 or MT6573_S02 */
|
|
unsigned char platform[16];
|
|
/* build time string */
|
|
unsigned char build_time[64];
|
|
/* project version, ex:11A_MD.W11.28 */
|
|
unsigned char build_ver[64];
|
|
|
|
/* bind to md sys id,
|
|
* MD SYS1: 1,
|
|
* MD SYS2: 2,
|
|
* MD SYS5: 5
|
|
*/
|
|
unsigned char bind_sys_id;
|
|
/* no shrink: 0, shrink: 1 */
|
|
unsigned char ext_attr;
|
|
/* for reserved */
|
|
unsigned char reserved[2];
|
|
|
|
/* md ROM/RAM image size requested by md */
|
|
unsigned int mem_size;
|
|
/* md image size, exclude head size */
|
|
unsigned int md_img_size;
|
|
/* RPC secure memory address */
|
|
unsigned int rpc_sec_mem_addr;
|
|
|
|
unsigned int dsp_img_offset;
|
|
unsigned int dsp_img_size;
|
|
unsigned char reserved2[88];
|
|
/* the size of this structure */
|
|
unsigned int size;
|
|
} __packed;
|
|
|
|
struct md_check_header_v4 {
|
|
/* magic number is "CHECK_HEADER"*/
|
|
unsigned char check_header[12];
|
|
/* header structure version number */
|
|
unsigned int header_verno;
|
|
/* 0x0:invalid;
|
|
* 0x1:debug version;
|
|
* 0x2:release version
|
|
*/
|
|
unsigned int product_ver;
|
|
/* 0x0:invalid;
|
|
* 0x1:2G modem;
|
|
* 0x2: 3G modem
|
|
*/
|
|
unsigned int image_type;
|
|
/* MT6573_S01 or MT6573_S02 */
|
|
unsigned char platform[16];
|
|
/* build time string */
|
|
unsigned char build_time[64];
|
|
/* project version, ex:11A_MD.W11.28 */
|
|
unsigned char build_ver[64];
|
|
|
|
/* bind to md sys id,
|
|
* MD SYS1: 1,
|
|
* MD SYS2: 2,
|
|
* MD SYS5: 5
|
|
*/
|
|
unsigned char bind_sys_id;
|
|
/* no shrink: 0, shrink: 1 */
|
|
unsigned char ext_attr;
|
|
/* for reserved */
|
|
unsigned char reserved[2];
|
|
|
|
/* md ROM/RAM image size requested by md */
|
|
unsigned int mem_size;
|
|
/* md image size, exclude head size */
|
|
unsigned int md_img_size;
|
|
/* RPC secure memory address */
|
|
unsigned int rpc_sec_mem_addr;
|
|
|
|
unsigned int dsp_img_offset;
|
|
unsigned int dsp_img_size;
|
|
|
|
/* total region number */
|
|
unsigned int region_num;
|
|
/* max support 8 regions */
|
|
struct _md_regin_info region_info[8];
|
|
/* max support 4 domain settings,
|
|
* each region has 4 control bits
|
|
*/
|
|
unsigned int domain_attr[4];
|
|
|
|
unsigned char reserved2[4];
|
|
/* the size of this structure */
|
|
unsigned int size;
|
|
} __packed;
|
|
|
|
struct md_check_header_v5 {
|
|
/* magic number is "CHECK_HEADER" */
|
|
unsigned char check_header[12];
|
|
/* header structure version number */
|
|
unsigned int header_verno;
|
|
/* 0x0:invalid;
|
|
* 0x1:debug version;
|
|
* 0x2:release version
|
|
*/
|
|
unsigned int product_ver;
|
|
/* 0x0:invalid;
|
|
* 0x1:2G modem;
|
|
* 0x2: 3G modem
|
|
*/
|
|
unsigned int image_type;
|
|
/* MT6573_S01 or MT6573_S02 */
|
|
unsigned char platform[16];
|
|
/* build time string */
|
|
unsigned char build_time[64];
|
|
/* project version, ex:11A_MD.W11.28 */
|
|
unsigned char build_ver[64];
|
|
|
|
/* bind to md sys id,
|
|
* MD SYS1: 1,
|
|
* MD SYS2: 2,
|
|
* MD SYS5: 5
|
|
*/
|
|
unsigned char bind_sys_id;
|
|
/* no shrink: 0, shrink: 1 */
|
|
unsigned char ext_attr;
|
|
/* for reserved */
|
|
unsigned char reserved[2];
|
|
|
|
/* md ROM/RAM image size requested by md */
|
|
unsigned int mem_size;
|
|
/* md image size, exclude head size */
|
|
unsigned int md_img_size;
|
|
/* RPC secure memory address */
|
|
unsigned int rpc_sec_mem_addr;
|
|
|
|
unsigned int dsp_img_offset;
|
|
unsigned int dsp_img_size;
|
|
|
|
/* total region number */
|
|
unsigned int region_num;
|
|
/* max support 8 regions */
|
|
struct _md_regin_info region_info[8];
|
|
/* max support 4 domain settings,
|
|
* each region has 4 control bits
|
|
*/
|
|
unsigned int domain_attr[4];
|
|
|
|
unsigned int arm7_img_offset;
|
|
unsigned int arm7_img_size;
|
|
|
|
unsigned char reserved_1[56];
|
|
|
|
/* the size of this structure */
|
|
unsigned int size;
|
|
} __packed;
|
|
|
|
struct md_check_header_struct {
|
|
/* magic number is "CHECK_HEADER"*/
|
|
unsigned char check_header[12];
|
|
/* header structure version number */
|
|
unsigned int header_verno;
|
|
/* 0x0:invalid;
|
|
* 0x1:debug version;
|
|
* 0x2:release version
|
|
*/
|
|
unsigned int product_ver;
|
|
/* 0x0:invalid;
|
|
* 0x1:2G modem;
|
|
* 0x2: 3G modem
|
|
*/
|
|
unsigned int image_type;
|
|
/* MT6573_S01 or MT6573_S02 */
|
|
unsigned char platform[16];
|
|
/* build time string */
|
|
unsigned char build_time[64];
|
|
/* project version, ex:11A_MD.W11.28 */
|
|
unsigned char build_ver[64];
|
|
|
|
/* bind to md sys id,
|
|
* MD SYS1: 1,
|
|
* MD SYS2: 2
|
|
*/
|
|
unsigned char bind_sys_id;
|
|
/* no shrink: 0, shrink: 1*/
|
|
unsigned char ext_attr;
|
|
/* for reserved */
|
|
unsigned char reserved[2];
|
|
|
|
/* md ROM/RAM image size requested by md */
|
|
unsigned int mem_size;
|
|
/* md image size, exclude head size*/
|
|
unsigned int md_img_size;
|
|
|
|
} __packed;
|
|
|
|
struct _free_padding_block {
|
|
unsigned int start_offset;
|
|
unsigned int length;
|
|
};
|
|
|
|
struct md_check_header_v6 {
|
|
/* magic number is "CHECK_HEADER"*/
|
|
unsigned char check_header[12];
|
|
/* header structure version number */
|
|
unsigned int header_verno;
|
|
/* 0x0:invalid;
|
|
* 0x1:debug version;
|
|
* 0x2:release version
|
|
*/
|
|
unsigned int product_ver;
|
|
/* 0x0:invalid;
|
|
* 0x1:2G modem;
|
|
* 0x2: 3G modem
|
|
*/
|
|
unsigned int image_type;
|
|
/* MT6573_S01 or MT6573_S02 */
|
|
unsigned char platform[16];
|
|
/* build time string */
|
|
unsigned char build_time[64];
|
|
/* project version, ex:11A_MD.W11.28 */
|
|
unsigned char build_ver[64];
|
|
|
|
/* bind to md sys id,
|
|
* MD SYS1: 1,
|
|
* MD SYS2: 2,
|
|
* MD SYS5: 5
|
|
*/
|
|
unsigned char bind_sys_id;
|
|
/* no shrink: 0, shrink: 1 */
|
|
unsigned char ext_attr;
|
|
/* for reserved */
|
|
unsigned char reserved[2];
|
|
|
|
/* md ROM/RAM image size requested by md */
|
|
unsigned int mem_size;
|
|
/* md image size, exclude head size */
|
|
unsigned int md_img_size;
|
|
/* RPC secure memory address */
|
|
unsigned int rpc_sec_mem_addr;
|
|
|
|
unsigned int dsp_img_offset;
|
|
unsigned int dsp_img_size;
|
|
|
|
/* total region number */
|
|
unsigned int region_num;
|
|
/* max support 8 regions */
|
|
struct _md_regin_info region_info[8];
|
|
/* max support 4 domain settings,
|
|
* each region has 4 control bits
|
|
*/
|
|
unsigned int domain_attr[4];
|
|
|
|
unsigned int arm7_img_offset;
|
|
unsigned int arm7_img_size;
|
|
|
|
struct _free_padding_block padding_blk[8];
|
|
|
|
unsigned int ap_md_smem_size;
|
|
unsigned int md_to_md_smem_size;
|
|
|
|
unsigned int ramdisk_offset;
|
|
unsigned int ramdisk_size;
|
|
|
|
unsigned char reserved_1[144];
|
|
|
|
/* the size of this structure */
|
|
unsigned int size;
|
|
};
|
|
|
|
extern int ccci_common_sysfs_init(void);
|
|
extern void ccci_log_init(void);
|
|
extern int mtk_ccci_args_key_val_init(void);
|
|
extern int mtk_ccci_compatible_md_chk_hdr_parsing(void);
|
|
extern int __init ccci_util_fo_init(void);
|
|
extern const char *ld_md_errno_to_str(int errno);
|
|
extern int ccci_util_broadcast_init(void);
|
|
extern int ccci_sib_init(void);
|
|
extern int ccci_util_pin_broadcast_init(void);
|
|
|
|
|
|
enum args_src {
|
|
FROM_LK_TAG = 0,
|
|
FROM_KERNEL,
|
|
};
|
|
|
|
int mtk_ccci_find_args_val(const char key[], unsigned char o_val[], unsigned int val_buf_size);
|
|
int mtk_ccci_add_new_args(const char key[], unsigned char val[], unsigned int val_size,
|
|
enum args_src src);
|
|
void mtk_ccci_dump_args_info(void);
|
|
|
|
int mtk_ccci_get_lk_load_md_info(char buf[], int size);
|
|
|
|
const char *ccci_get_md_product_str(unsigned int val);
|
|
const char *ccci_get_md_cap_str(unsigned int val);
|
|
|
|
|
|
#define MAX_MD_NUM_AT_LK (4)
|
|
|
|
#endif
|