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
							 |