1 /*
2 **********************************************************************************************************************
3 *
4 *                                  the Embedded Secure Bootloader System
5 *
6 *
7 *                              Copyright(C), 2006-2014, Allwinnertech Co., Ltd.
8 *                                           All Rights Reserved
9 *
10 * File    :
11 *
12 * By      :
13 *
14 * Version : V2.00
15 *
16 * Date    :
17 *
18 * Descript:
19 **********************************************************************************************************************
20 */
21 
22 #ifndef __SUNXI_SID_H__
23 #define __SUNXI_SID_H__
24 
25 typedef enum efuse_err
26 {
27     EFUSE_ERR_ARG = -1,
28     EFUSE_ERR_KEY_NAME_WRONG = -2,
29     EFUSE_ERR_KEY_SIZE_TOO_BIG = -3,
30     EFUSE_ERR_PRIVATE = -4,
31     EFUSE_ERR_ALREADY_BURNED = -5,
32     EFUSE_ERR_READ_FORBID = -6,
33     EFUSE_ERR_BURN_TIMING = -7,
34     EFUSE_ERR_NO_ACCESS = -8,
35     EFUSE_ERR_INVALID_ROTPK = -9,
36 }efuse_err_e;
37 
38 /* internal struct */
39 typedef struct efuse_key_map_new{
40     #define SUNXI_KEY_NAME_LEN  64
41     char name[SUNXI_KEY_NAME_LEN];  /* key_name */
42     int offset; /* key_addr offset */
43     int size;    /* unit: bit */
44     int rd_fbd_offset;  /* key can read or not */
45     int burned_flg_offset;  /* key has burned or not */
46     int sw_rule;
47 }efuse_key_map_new_t;
48 
49 
50 int hal_efuse_write(char *key_name, unsigned char *key_data, size_t key_bit_len);
51 int hal_efuse_read(char *key_name, unsigned char *key_data, size_t key_bit_len);
52 int hal_efuse_set_security_mode(void);
53 int hal_efuse_get_security_mode(void);
54 int hal_efuse_get_chipid(unsigned char *buffer);
55 int hal_efuse_get_thermal_cdata(unsigned char *buffer);
56 
57 #endif    /*  #ifndef __EFUSE_H__  */
58