1 /*
2  * SPDX-FileCopyrightText: 2019-2021 Espressif Systems (Shanghai) CO LTD
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #pragma once
8 
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
13 /**
14  * @brief Type of eFuse blocks ESP32S2
15  */
16 typedef enum {
17     EFUSE_BLK0                 = 0,   /**< Number of eFuse BLOCK0. REPEAT_DATA */
18 
19     EFUSE_BLK1                 = 1,   /**< Number of eFuse BLOCK1. MAC_SPI_8M_SYS */
20 
21     EFUSE_BLK2                 = 2,   /**< Number of eFuse BLOCK2. SYS_DATA_PART1 */
22     EFUSE_BLK_SYS_DATA_PART1   = 2,   /**< Number of eFuse BLOCK2. SYS_DATA_PART1 */
23 
24     EFUSE_BLK3                 = 3,   /**< Number of eFuse BLOCK3. USER_DATA*/
25     EFUSE_BLK_USER_DATA        = 3,   /**< Number of eFuse BLOCK3. USER_DATA*/
26 
27     EFUSE_BLK4                 = 4,   /**< Number of eFuse BLOCK4. KEY0 */
28     EFUSE_BLK_KEY0             = 4,   /**< Number of eFuse BLOCK4. KEY0 */
29 
30     EFUSE_BLK5                 = 5,   /**< Number of eFuse BLOCK5. KEY1 */
31     EFUSE_BLK_KEY1             = 5,   /**< Number of eFuse BLOCK5. KEY1 */
32 
33     EFUSE_BLK6                 = 6,   /**< Number of eFuse BLOCK6. KEY2 */
34     EFUSE_BLK_KEY2             = 6,   /**< Number of eFuse BLOCK6. KEY2 */
35 
36     EFUSE_BLK7                 = 7,   /**< Number of eFuse BLOCK7. KEY3 */
37     EFUSE_BLK_KEY3             = 7,   /**< Number of eFuse BLOCK7. KEY3 */
38 
39     EFUSE_BLK8                 = 8,   /**< Number of eFuse BLOCK8. KEY4 */
40     EFUSE_BLK_KEY4             = 8,   /**< Number of eFuse BLOCK8. KEY4 */
41 
42     EFUSE_BLK9                 = 9,   /**< Number of eFuse BLOCK9. KEY5 */
43     EFUSE_BLK_KEY5             = 9,   /**< Number of eFuse BLOCK9. KEY5 */
44     EFUSE_BLK_KEY_MAX          = 10,
45 
46     EFUSE_BLK10                = 10,  /**< Number of eFuse BLOCK10. SYS_DATA_PART2 */
47     EFUSE_BLK_SYS_DATA_PART2   = 10,  /**< Number of eFuse BLOCK10. SYS_DATA_PART2 */
48 
49     EFUSE_BLK_MAX
50 } esp_efuse_block_t;
51 
52 /**
53  * @brief Type of coding scheme
54  */
55 typedef enum {
56     EFUSE_CODING_SCHEME_NONE    = 0,    /**< None */
57     EFUSE_CODING_SCHEME_RS      = 3,    /**< Reed-Solomon coding */
58 } esp_efuse_coding_scheme_t;
59 
60 /**
61  * @brief Type of key purpose
62  */
63 typedef enum {
64     ESP_EFUSE_KEY_PURPOSE_USER = 0,                         /**< User purposes (software-only use) */
65     ESP_EFUSE_KEY_PURPOSE_RESERVED = 1,                     /**< Reserved */
66     ESP_EFUSE_KEY_PURPOSE_XTS_AES_256_KEY_1 = 2,            /**< XTS_AES_256_KEY_1 (flash/PSRAM encryption) */
67     ESP_EFUSE_KEY_PURPOSE_XTS_AES_256_KEY_2 = 3,            /**< XTS_AES_256_KEY_2 (flash/PSRAM encryption) */
68     ESP_EFUSE_KEY_PURPOSE_XTS_AES_128_KEY = 4,              /**< XTS_AES_128_KEY (flash/PSRAM encryption) */
69     ESP_EFUSE_KEY_PURPOSE_HMAC_DOWN_ALL = 5,                /**< HMAC Downstream mode */
70     ESP_EFUSE_KEY_PURPOSE_HMAC_DOWN_JTAG = 6,               /**< JTAG soft enable key (uses HMAC Downstream mode) */
71     ESP_EFUSE_KEY_PURPOSE_HMAC_DOWN_DIGITAL_SIGNATURE = 7,  /**< Digital Signature peripheral key (uses HMAC Downstream mode) */
72     ESP_EFUSE_KEY_PURPOSE_HMAC_UP = 8,                      /**< HMAC Upstream mode */
73     ESP_EFUSE_KEY_PURPOSE_SECURE_BOOT_DIGEST0 = 9,          /**< SECURE_BOOT_DIGEST0 (Secure Boot key digest) */
74     ESP_EFUSE_KEY_PURPOSE_SECURE_BOOT_DIGEST1 = 10,         /**< SECURE_BOOT_DIGEST1 (Secure Boot key digest) */
75     ESP_EFUSE_KEY_PURPOSE_SECURE_BOOT_DIGEST2 = 11,         /**< SECURE_BOOT_DIGEST2 (Secure Boot key digest) */
76     ESP_EFUSE_KEY_PURPOSE_MAX,                              /**< MAX PURPOSE */
77 } esp_efuse_purpose_t;
78 
79 #ifdef __cplusplus
80 }
81 #endif
82