1 /***************************************************************************//**
2 * \file cyip_cryptolite.h
3 *
4 * \brief
5 * CRYPTOLITE IP definitions
6 *
7 ********************************************************************************
8 * \copyright
9 * (c) (2016-2024), Cypress Semiconductor Corporation (an Infineon company) or
10 * an affiliate of Cypress Semiconductor Corporation.
11 *
12 * SPDX-License-Identifier: Apache-2.0
13 *
14 * Licensed under the Apache License, Version 2.0 (the "License");
15 * you may not use this file except in compliance with the License.
16 * You may obtain a copy of the License at
17 *
18 *     http://www.apache.org/licenses/LICENSE-2.0
19 *
20 * Unless required by applicable law or agreed to in writing, software
21 * distributed under the License is distributed on an "AS IS" BASIS,
22 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23 * See the License for the specific language governing permissions and
24 * limitations under the License.
25 *******************************************************************************/
26 
27 #ifndef _CYIP_CRYPTOLITE_H_
28 #define _CYIP_CRYPTOLITE_H_
29 
30 #include "cyip_headers.h"
31 
32 /*******************************************************************************
33 *                                  CRYPTOLITE
34 *******************************************************************************/
35 
36 #define CRYPTOLITE_SECTION_SIZE                 0x00010000UL
37 
38 /**
39   * \brief N/A (CRYPTOLITE)
40   */
41 typedef struct {
42    __IM uint32_t CTL;                           /*!< 0x00000000 Control */
43    __IM uint32_t STATUS;                        /*!< 0x00000004 Status */
44    __IM uint32_t RESERVED[2];
45   __IOM uint32_t ECC_CTL;                       /*!< 0x00000010 ECC control */
46    __IM uint32_t RESERVED1[11];
47   __IOM uint32_t AES_DESCR;                     /*!< 0x00000040 AES descriptor pointer */
48    __IM uint32_t RESERVED2[15];
49   __IOM uint32_t VU_DESCR;                      /*!< 0x00000080 VU descriptor pointer */
50    __IM uint32_t RESERVED3[15];
51   __IOM uint32_t SHA_DESCR;                     /*!< 0x000000C0 SHA descriptor pointer */
52    __IM uint32_t RESERVED4[11];
53   __IOM uint32_t INTR_ERROR;                    /*!< 0x000000F0 Error interrupt */
54   __IOM uint32_t INTR_ERROR_SET;                /*!< 0x000000F4 Error interrupt set */
55   __IOM uint32_t INTR_ERROR_MASK;               /*!< 0x000000F8 Error interrupt mask */
56    __IM uint32_t INTR_ERROR_MASKED;             /*!< 0x000000FC Error interrupt masked */
57   __IOM uint32_t TRNG_CTL0;                     /*!< 0x00000100 TRNG control 0 */
58   __IOM uint32_t TRNG_CTL1;                     /*!< 0x00000104 TRNG control 1 */
59    __IM uint32_t RESERVED5;
60    __IM uint32_t TRNG_STATUS;                   /*!< 0x0000010C TRNG status */
61    __IM uint32_t TRNG_RESULT;                   /*!< 0x00000110 TRNG result */
62    __IM uint32_t RESERVED6[3];
63   __IOM uint32_t TRNG_GARO_CTL;                 /*!< 0x00000120 TRNG GARO control */
64   __IOM uint32_t TRNG_FIRO_CTL;                 /*!< 0x00000124 TRNG FIRO control */
65    __IM uint32_t RESERVED7[6];
66   __IOM uint32_t TRNG_MON_CTL;                  /*!< 0x00000140 TRNG monitor control */
67    __IM uint32_t RESERVED8[3];
68   __IOM uint32_t TRNG_MON_RC_CTL;               /*!< 0x00000150 TRNG monitor RC control */
69    __IM uint32_t RESERVED9;
70    __IM uint32_t TRNG_MON_RC_STATUS0;           /*!< 0x00000158 TRNG monitor RC status 0 */
71    __IM uint32_t TRNG_MON_RC_STATUS1;           /*!< 0x0000015C TRNG monitor RC status 1 */
72   __IOM uint32_t TRNG_MON_AP_CTL;               /*!< 0x00000160 TRNG monitor AP control */
73    __IM uint32_t RESERVED10;
74    __IM uint32_t TRNG_MON_AP_STATUS0;           /*!< 0x00000168 TRNG monitor AP status 0 */
75    __IM uint32_t TRNG_MON_AP_STATUS1;           /*!< 0x0000016C TRNG monitor AP status 1 */
76    __IM uint32_t RESERVED11[32];
77   __IOM uint32_t INTR_TRNG;                     /*!< 0x000001F0 TRNG interrupt */
78   __IOM uint32_t INTR_TRNG_SET;                 /*!< 0x000001F4 TRNG Interrupt set */
79   __IOM uint32_t INTR_TRNG_MASK;                /*!< 0x000001F8 TRNG Interrupt mask */
80    __IM uint32_t INTR_TRNG_MASKED;              /*!< 0x000001FC TRNG Interrupt masked */
81 } CRYPTOLITE_Type;                              /*!< Size = 512 (0x200) */
82 
83 
84 /* CRYPTOLITE.CTL */
85 #define CRYPTOLITE_CTL_P_Pos                    0UL
86 #define CRYPTOLITE_CTL_P_Msk                    0x1UL
87 #define CRYPTOLITE_CTL_NS_Pos                   1UL
88 #define CRYPTOLITE_CTL_NS_Msk                   0x2UL
89 #define CRYPTOLITE_CTL_PC_Pos                   4UL
90 #define CRYPTOLITE_CTL_PC_Msk                   0xF0UL
91 #define CRYPTOLITE_CTL_MS_Pos                   8UL
92 #define CRYPTOLITE_CTL_MS_Msk                   0xF00UL
93 /* CRYPTOLITE.STATUS */
94 #define CRYPTOLITE_STATUS_BUSY_Pos              0UL
95 #define CRYPTOLITE_STATUS_BUSY_Msk              0x1UL
96 /* CRYPTOLITE.ECC_CTL */
97 #define CRYPTOLITE_ECC_CTL_CHECK_EN_Pos         3UL
98 #define CRYPTOLITE_ECC_CTL_CHECK_EN_Msk         0x8UL
99 /* CRYPTOLITE.AES_DESCR */
100 #define CRYPTOLITE_AES_DESCR_PTR_Pos            2UL
101 #define CRYPTOLITE_AES_DESCR_PTR_Msk            0xFFFFFFFCUL
102 /* CRYPTOLITE.VU_DESCR */
103 #define CRYPTOLITE_VU_DESCR_PTR_Pos             2UL
104 #define CRYPTOLITE_VU_DESCR_PTR_Msk             0xFFFFFFFCUL
105 /* CRYPTOLITE.SHA_DESCR */
106 #define CRYPTOLITE_SHA_DESCR_PTR_Pos            2UL
107 #define CRYPTOLITE_SHA_DESCR_PTR_Msk            0xFFFFFFFCUL
108 /* CRYPTOLITE.INTR_ERROR */
109 #define CRYPTOLITE_INTR_ERROR_BUS_ERROR_Pos     0UL
110 #define CRYPTOLITE_INTR_ERROR_BUS_ERROR_Msk     0x1UL
111 /* CRYPTOLITE.INTR_ERROR_SET */
112 #define CRYPTOLITE_INTR_ERROR_SET_BUS_ERROR_Pos 0UL
113 #define CRYPTOLITE_INTR_ERROR_SET_BUS_ERROR_Msk 0x1UL
114 /* CRYPTOLITE.INTR_ERROR_MASK */
115 #define CRYPTOLITE_INTR_ERROR_MASK_BUS_ERROR_Pos 0UL
116 #define CRYPTOLITE_INTR_ERROR_MASK_BUS_ERROR_Msk 0x1UL
117 /* CRYPTOLITE.INTR_ERROR_MASKED */
118 #define CRYPTOLITE_INTR_ERROR_MASKED_BUS_ERROR_Pos 0UL
119 #define CRYPTOLITE_INTR_ERROR_MASKED_BUS_ERROR_Msk 0x1UL
120 /* CRYPTOLITE.TRNG_CTL0 */
121 #define CRYPTOLITE_TRNG_CTL0_SAMPLE_CLOCK_DIV_Pos 0UL
122 #define CRYPTOLITE_TRNG_CTL0_SAMPLE_CLOCK_DIV_Msk 0xFFUL
123 #define CRYPTOLITE_TRNG_CTL0_RED_CLOCK_DIV_Pos  8UL
124 #define CRYPTOLITE_TRNG_CTL0_RED_CLOCK_DIV_Msk  0xFF00UL
125 #define CRYPTOLITE_TRNG_CTL0_INIT_DELAY_Pos     16UL
126 #define CRYPTOLITE_TRNG_CTL0_INIT_DELAY_Msk     0xFF0000UL
127 #define CRYPTOLITE_TRNG_CTL0_VON_NEUMANN_CORR_Pos 24UL
128 #define CRYPTOLITE_TRNG_CTL0_VON_NEUMANN_CORR_Msk 0x1000000UL
129 #define CRYPTOLITE_TRNG_CTL0_FEEDBACK_EN_Pos    25UL
130 #define CRYPTOLITE_TRNG_CTL0_FEEDBACK_EN_Msk    0x2000000UL
131 #define CRYPTOLITE_TRNG_CTL0_STOP_ON_AP_DETECT_Pos 28UL
132 #define CRYPTOLITE_TRNG_CTL0_STOP_ON_AP_DETECT_Msk 0x10000000UL
133 #define CRYPTOLITE_TRNG_CTL0_STOP_ON_RC_DETECT_Pos 29UL
134 #define CRYPTOLITE_TRNG_CTL0_STOP_ON_RC_DETECT_Msk 0x20000000UL
135 /* CRYPTOLITE.TRNG_CTL1 */
136 #define CRYPTOLITE_TRNG_CTL1_RO11_EN_Pos        0UL
137 #define CRYPTOLITE_TRNG_CTL1_RO11_EN_Msk        0x1UL
138 #define CRYPTOLITE_TRNG_CTL1_RO15_EN_Pos        1UL
139 #define CRYPTOLITE_TRNG_CTL1_RO15_EN_Msk        0x2UL
140 #define CRYPTOLITE_TRNG_CTL1_GARO15_EN_Pos      2UL
141 #define CRYPTOLITE_TRNG_CTL1_GARO15_EN_Msk      0x4UL
142 #define CRYPTOLITE_TRNG_CTL1_GARO31_EN_Pos      3UL
143 #define CRYPTOLITE_TRNG_CTL1_GARO31_EN_Msk      0x8UL
144 #define CRYPTOLITE_TRNG_CTL1_FIRO15_EN_Pos      4UL
145 #define CRYPTOLITE_TRNG_CTL1_FIRO15_EN_Msk      0x10UL
146 #define CRYPTOLITE_TRNG_CTL1_FIRO31_EN_Pos      5UL
147 #define CRYPTOLITE_TRNG_CTL1_FIRO31_EN_Msk      0x20UL
148 /* CRYPTOLITE.TRNG_STATUS */
149 #define CRYPTOLITE_TRNG_STATUS_INITIALIZED_Pos  0UL
150 #define CRYPTOLITE_TRNG_STATUS_INITIALIZED_Msk  0x1UL
151 /* CRYPTOLITE.TRNG_RESULT */
152 #define CRYPTOLITE_TRNG_RESULT_DATA_Pos         0UL
153 #define CRYPTOLITE_TRNG_RESULT_DATA_Msk         0xFFFFFFFFUL
154 /* CRYPTOLITE.TRNG_GARO_CTL */
155 #define CRYPTOLITE_TRNG_GARO_CTL_POLYNOMIAL_Pos 0UL
156 #define CRYPTOLITE_TRNG_GARO_CTL_POLYNOMIAL_Msk 0x7FFFFFFFUL
157 /* CRYPTOLITE.TRNG_FIRO_CTL */
158 #define CRYPTOLITE_TRNG_FIRO_CTL_POLYNOMIAL_Pos 0UL
159 #define CRYPTOLITE_TRNG_FIRO_CTL_POLYNOMIAL_Msk 0x7FFFFFFFUL
160 /* CRYPTOLITE.TRNG_MON_CTL */
161 #define CRYPTOLITE_TRNG_MON_CTL_BITSTREAM_SEL_Pos 0UL
162 #define CRYPTOLITE_TRNG_MON_CTL_BITSTREAM_SEL_Msk 0x3UL
163 #define CRYPTOLITE_TRNG_MON_CTL_AP_Pos          8UL
164 #define CRYPTOLITE_TRNG_MON_CTL_AP_Msk          0x100UL
165 #define CRYPTOLITE_TRNG_MON_CTL_RC_Pos          9UL
166 #define CRYPTOLITE_TRNG_MON_CTL_RC_Msk          0x200UL
167 /* CRYPTOLITE.TRNG_MON_RC_CTL */
168 #define CRYPTOLITE_TRNG_MON_RC_CTL_CUTOFF_COUNT8_Pos 0UL
169 #define CRYPTOLITE_TRNG_MON_RC_CTL_CUTOFF_COUNT8_Msk 0xFFUL
170 /* CRYPTOLITE.TRNG_MON_RC_STATUS0 */
171 #define CRYPTOLITE_TRNG_MON_RC_STATUS0_BIT_Pos  0UL
172 #define CRYPTOLITE_TRNG_MON_RC_STATUS0_BIT_Msk  0x1UL
173 /* CRYPTOLITE.TRNG_MON_RC_STATUS1 */
174 #define CRYPTOLITE_TRNG_MON_RC_STATUS1_REP_COUNT_Pos 0UL
175 #define CRYPTOLITE_TRNG_MON_RC_STATUS1_REP_COUNT_Msk 0xFFUL
176 /* CRYPTOLITE.TRNG_MON_AP_CTL */
177 #define CRYPTOLITE_TRNG_MON_AP_CTL_CUTOFF_COUNT16_Pos 0UL
178 #define CRYPTOLITE_TRNG_MON_AP_CTL_CUTOFF_COUNT16_Msk 0xFFFFUL
179 #define CRYPTOLITE_TRNG_MON_AP_CTL_WINDOW_SIZE_Pos 16UL
180 #define CRYPTOLITE_TRNG_MON_AP_CTL_WINDOW_SIZE_Msk 0xFFFF0000UL
181 /* CRYPTOLITE.TRNG_MON_AP_STATUS0 */
182 #define CRYPTOLITE_TRNG_MON_AP_STATUS0_BIT_Pos  0UL
183 #define CRYPTOLITE_TRNG_MON_AP_STATUS0_BIT_Msk  0x1UL
184 /* CRYPTOLITE.TRNG_MON_AP_STATUS1 */
185 #define CRYPTOLITE_TRNG_MON_AP_STATUS1_OCC_COUNT_Pos 0UL
186 #define CRYPTOLITE_TRNG_MON_AP_STATUS1_OCC_COUNT_Msk 0xFFFFUL
187 #define CRYPTOLITE_TRNG_MON_AP_STATUS1_WINDOW_INDEX_Pos 16UL
188 #define CRYPTOLITE_TRNG_MON_AP_STATUS1_WINDOW_INDEX_Msk 0xFFFF0000UL
189 /* CRYPTOLITE.INTR_TRNG */
190 #define CRYPTOLITE_INTR_TRNG_INITIALIZED_Pos    0UL
191 #define CRYPTOLITE_INTR_TRNG_INITIALIZED_Msk    0x1UL
192 #define CRYPTOLITE_INTR_TRNG_DATA_AVAILABLE_Pos 1UL
193 #define CRYPTOLITE_INTR_TRNG_DATA_AVAILABLE_Msk 0x2UL
194 #define CRYPTOLITE_INTR_TRNG_AP_DETECT_Pos      2UL
195 #define CRYPTOLITE_INTR_TRNG_AP_DETECT_Msk      0x4UL
196 #define CRYPTOLITE_INTR_TRNG_RC_DETECT_Pos      3UL
197 #define CRYPTOLITE_INTR_TRNG_RC_DETECT_Msk      0x8UL
198 /* CRYPTOLITE.INTR_TRNG_SET */
199 #define CRYPTOLITE_INTR_TRNG_SET_INITIALIZED_Pos 0UL
200 #define CRYPTOLITE_INTR_TRNG_SET_INITIALIZED_Msk 0x1UL
201 #define CRYPTOLITE_INTR_TRNG_SET_DATA_AVAILABLE_Pos 1UL
202 #define CRYPTOLITE_INTR_TRNG_SET_DATA_AVAILABLE_Msk 0x2UL
203 #define CRYPTOLITE_INTR_TRNG_SET_AP_DETECT_Pos  2UL
204 #define CRYPTOLITE_INTR_TRNG_SET_AP_DETECT_Msk  0x4UL
205 #define CRYPTOLITE_INTR_TRNG_SET_RC_DETECT_Pos  3UL
206 #define CRYPTOLITE_INTR_TRNG_SET_RC_DETECT_Msk  0x8UL
207 /* CRYPTOLITE.INTR_TRNG_MASK */
208 #define CRYPTOLITE_INTR_TRNG_MASK_INITIALIZED_Pos 0UL
209 #define CRYPTOLITE_INTR_TRNG_MASK_INITIALIZED_Msk 0x1UL
210 #define CRYPTOLITE_INTR_TRNG_MASK_DATA_AVAILABLE_Pos 1UL
211 #define CRYPTOLITE_INTR_TRNG_MASK_DATA_AVAILABLE_Msk 0x2UL
212 #define CRYPTOLITE_INTR_TRNG_MASK_AP_DETECT_Pos 2UL
213 #define CRYPTOLITE_INTR_TRNG_MASK_AP_DETECT_Msk 0x4UL
214 #define CRYPTOLITE_INTR_TRNG_MASK_RC_DETECT_Pos 3UL
215 #define CRYPTOLITE_INTR_TRNG_MASK_RC_DETECT_Msk 0x8UL
216 /* CRYPTOLITE.INTR_TRNG_MASKED */
217 #define CRYPTOLITE_INTR_TRNG_MASKED_INITIALIZED_Pos 0UL
218 #define CRYPTOLITE_INTR_TRNG_MASKED_INITIALIZED_Msk 0x1UL
219 #define CRYPTOLITE_INTR_TRNG_MASKED_DATA_AVAILABLE_Pos 1UL
220 #define CRYPTOLITE_INTR_TRNG_MASKED_DATA_AVAILABLE_Msk 0x2UL
221 #define CRYPTOLITE_INTR_TRNG_MASKED_AP_DETECT_Pos 2UL
222 #define CRYPTOLITE_INTR_TRNG_MASKED_AP_DETECT_Msk 0x4UL
223 #define CRYPTOLITE_INTR_TRNG_MASKED_RC_DETECT_Pos 3UL
224 #define CRYPTOLITE_INTR_TRNG_MASKED_RC_DETECT_Msk 0x8UL
225 
226 
227 #endif /* _CYIP_CRYPTOLITE_H_ */
228 
229 
230 /* [] END OF FILE */
231