153 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/****************************************************************************
 | 
						|
 
 | 
						|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
 | 
						|
 | 
						|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
 | 
						|
be copied by any method or incorporated into another program without
 | 
						|
the express written consent of Aerospace C.Power. This Information or any portion
 | 
						|
thereof remains the property of Aerospace C.Power. The Information contained herein
 | 
						|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
 | 
						|
liability for its use in any way and conveys no license or title under
 | 
						|
any patent or copyright and makes no representation or warranty that this
 | 
						|
Information is free from patent or copyright infringement.
 | 
						|
****************************************************************************/
 | 
						|
#ifndef _ROM_H_
 | 
						|
#define _ROM_H_
 | 
						|
 | 
						|
#include <stdint.h>
 | 
						|
 | 
						|
typedef  unsigned int UINT32;
 | 
						|
typedef  unsigned short UINT16;
 | 
						|
 | 
						|
#ifndef NULL
 | 
						|
#define NULL 0
 | 
						|
#endif
 | 
						|
 | 
						|
#define REG32(a)		(*((volatile UINT32 *)(a)))
 | 
						|
 | 
						|
#ifndef BIT
 | 
						|
#define BIT(b)  (1<<(b))
 | 
						|
#endif
 | 
						|
 | 
						|
#define DEFAULT_PLL_FRQ     25000000
 | 
						|
 | 
						|
#define ROM_HASH_IV_LEN     16
 | 
						|
#define ROM_AES_KEY_LEN     16
 | 
						|
 | 
						|
typedef struct vendor_config
 | 
						|
{
 | 
						|
    uint16_t checksum;
 | 
						|
    uint8_t program_done;
 | 
						|
    uint8_t test_en;
 | 
						|
    uint8_t bond_valid;
 | 
						|
    uint8_t sfc_cfg_valid;
 | 
						|
    uint8_t mac[6];
 | 
						|
    uint8_t gpio_sfc_clk;
 | 
						|
    uint8_t gpio_sfc_cs;
 | 
						|
    uint8_t gpio_sfc_d0;
 | 
						|
    uint8_t gpio_sfc_d1;
 | 
						|
    uint8_t gpio_sfc_d2;
 | 
						|
    uint8_t gpio_sfc_d3;
 | 
						|
    uint8_t flash_cmd_valid;
 | 
						|
    uint8_t flash_cmd_read;
 | 
						|
    uint8_t flash_cmd_enable;
 | 
						|
    uint8_t flash_cmd_reset;
 | 
						|
    uint8_t chip_id;
 | 
						|
}vendor_config;
 | 
						|
 | 
						|
typedef struct user_config
 | 
						|
{
 | 
						|
    uint16_t checksum;
 | 
						|
    uint8_t	 program_done;
 | 
						|
    uint8_t	 cfg_valid;
 | 
						|
    uint8_t	 uart_jtag0_enable;
 | 
						|
    uint8_t	 uart_jtag1_enable;
 | 
						|
    uint8_t	 jtag0_enable;
 | 
						|
    uint8_t  jtag1_enable;
 | 
						|
    uint8_t	 cpu0_efuse_rd_enable;
 | 
						|
    uint8_t	 cpu1_flash_key_rd_enable;
 | 
						|
    uint8_t  security_mode;
 | 
						|
    uint8_t  boot_mode;
 | 
						|
    uint8_t  flash_mode;
 | 
						|
    uint8_t  download_enable;
 | 
						|
    uint8_t  fastboot_enable;
 | 
						|
    uint8_t  autobaud_enable;
 | 
						|
}user_config;
 | 
						|
 | 
						|
typedef struct user_key
 | 
						|
{
 | 
						|
	uint8_t  hash_iv[ROM_HASH_IV_LEN];
 | 
						|
	uint8_t  aes_key[ROM_AES_KEY_LEN];
 | 
						|
}user_key;
 | 
						|
 | 
						|
typedef struct efuse_config
 | 
						|
{
 | 
						|
    vendor_config v_config;
 | 
						|
    user_config u_config;
 | 
						|
    user_key	u_key;
 | 
						|
}efuse_config;
 | 
						|
 | 
						|
/* --------------------- APB --------------------------- */
 | 
						|
typedef enum {
 | 
						|
    APB_UART0		= BIT(0),
 | 
						|
    APB_GPIO		= BIT(1),
 | 
						|
    APB_GPTMR		= BIT(2),
 | 
						|
    APB_GMTX        = BIT(2),
 | 
						|
    APB_PIN         = BIT(6),
 | 
						|
    APB_WDG0        = BIT(13),
 | 
						|
    APB_UART_MEM    = BIT(16),
 | 
						|
}APB_MODULE;
 | 
						|
 | 
						|
 | 
						|
typedef enum {
 | 
						|
    SEC_EMC        = BIT(0),
 | 
						|
}SEC_GLB_MODULE;
 | 
						|
 | 
						|
typedef enum {
 | 
						|
    PMU_EFUSE   = BIT(29),
 | 
						|
}PMU_MODULE;
 | 
						|
 | 
						|
typedef enum {
 | 
						|
    BOND_BOOT_MODE = BIT(0),
 | 
						|
    BOND_BOOT_PMU = BIT(1),
 | 
						|
    BOND_FAST_BOOT = BIT(4),
 | 
						|
}BOND_OPT_MODULE;
 | 
						|
 | 
						|
typedef enum {
 | 
						|
     AHB_ICACHE     = BIT(3),
 | 
						|
     AHB_DCACHE     = BIT(4),
 | 
						|
}AHB_GLB_MODULE;
 | 
						|
 | 
						|
/* For serial flash controller (SFC) */
 | 
						|
#define SFC_BUFFER_SIZE	    256
 | 
						|
#define SFC_BUFFER_ADDR	    0x61001000
 | 
						|
#define REG_SFC_BASE 		0x61000100
 | 
						|
#define REG_SFC_CMD0		(0x04 + REG_SFC_BASE)
 | 
						|
#define REG_SFC_CMD1		(0x08 + REG_SFC_BASE)
 | 
						|
#define REG_SFC_CFG1		(0x40 + REG_SFC_BASE)
 | 
						|
#define REG_SFC_RDATA		(0x4C + REG_SFC_BASE)
 | 
						|
#define REG_SFC_WDATA	    (0x50 + REG_SFC_BASE)
 | 
						|
#define REG_SFC_DBG		    (0x54 + REG_SFC_BASE)
 | 
						|
#define REG_SFC_SWM_CFG0	(0x80 + REG_SFC_BASE)
 | 
						|
#define REG_SFC_SWM_CFG1	(0x84 + REG_SFC_BASE)
 | 
						|
#define REG_SFC_SWM_CFG2	(0x88 + REG_SFC_BASE)
 | 
						|
#define REG_SFC_CACHE_CFG0	(0x8C + REG_SFC_BASE)
 | 
						|
#define REG_SFC_CACHE_CFG1	(0x90 + REG_SFC_BASE)
 | 
						|
#define REG_SFC_WIM_CFG0	(0x94 + REG_SFC_BASE)
 | 
						|
#define REG_SFC_WIM_CFG1	(0x98 + REG_SFC_BASE)
 | 
						|
#define REG_SFC_RSM_CFG0	(0x9C + REG_SFC_BASE)
 | 
						|
#define REG_SFC_RSM_CFG1	(0xA0 + REG_SFC_BASE)
 | 
						|
#define REG_SFC_SUS_CFG0	(0xA4 + REG_SFC_BASE)
 | 
						|
#define REG_SFC_SUS_CFG1	(0xA8 + REG_SFC_BASE)
 | 
						|
 | 
						|
 | 
						|
typedef struct
 | 
						|
{
 | 
						|
       UINT16 dTpye;
 | 
						|
       UINT16 iTpye;
 | 
						|
       UINT32 sOff;
 | 
						|
       UINT32 iLen;
 | 
						|
}flTb;
 | 
						|
 | 
						|
#endif
 |