1 /* 2 * Copyright (c) 2021-2023, The TrustedFirmware-M Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 * 6 */ 7 8 #ifndef CC3XX_REG_DEFS_H 9 #define CC3XX_REG_DEFS_H 10 11 #include <stdint.h> 12 13 #ifdef __cplusplus 14 extern "C" { 15 #endif 16 17 #ifndef __IM 18 #define __IM volatile const /*! Defines 'read only' structure member permissions */ 19 #endif /* __IM */ 20 21 #ifndef __OM 22 #define __OM volatile /*! Defines 'write only' structure member permissions */ 23 #endif /* __OM */ 24 25 #ifndef __IOM 26 #define __IOM volatile /*! Defines 'read / write' structure member permissions */ 27 #endif /* __IOM */ 28 29 #ifndef __PACKED_STRUCT 30 #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) 31 #endif /* __PACKED_STRUCT */ 32 33 #ifndef __PACKED_UNION 34 #define __PACKED_UNION union __attribute__((packed, aligned(1))) 35 #endif /* __PACKED_UNION */ 36 37 #ifndef __ALIGNED 38 #define __ALIGNED(x) __attribute__((aligned(x))) 39 #endif /* __ALIGNED */ 40 41 __PACKED_STRUCT __ALIGNED(4) _cc3xx_reg_map_t { 42 /* PKA block */ 43 __PACKED_STRUCT { 44 __IOM uint32_t memory_map[32]; 45 /*!< Offset: 0x0 (RW) */ 46 __IOM uint32_t opcode; 47 /*!< Offset: 0x80 (RW) */ 48 __IOM uint32_t n_np_t0_t1_addr; 49 /*!< Offset: 0x84 (RW) */ 50 __IM uint32_t pka_status; 51 /*!< Offset: 0x88 (RO) */ 52 __OM uint32_t pka_sw_reset; 53 /*!< Offset: 0x8C (WO) */ 54 __IOM uint32_t pka_l[8]; 55 /*!< Offset: 0x90 (RW) */ 56 __IM uint32_t pka_pipe_rdy; 57 /*!< Offset: 0xB0 (RO) */ 58 __IM uint32_t pka_done; 59 /*!< Offset: 0xB4 (RO) */ 60 __IOM uint32_t pka_mon_select; 61 /*!< Offset: 0xB8 (RW) */ 62 __IOM uint32_t pka_mongo_sel; 63 /*!< Offset: 0xBC (RW) */ 64 __IOM uint32_t pka_ram_enc; 65 /*!< Offset: 0xC0 (RW) */ 66 __IM uint32_t pka_version; 67 /*!< Offset: 0xC4 (RO) */ 68 uint8_t _reserved_1[8]; 69 /*!< Offset: 0xC8-0xCC Reserved */ 70 __IM uint32_t pka_mon_read; 71 /*!< Offset: 0xD0 (RO) */ 72 __OM uint32_t pka_sram_addr; 73 /*!< Offset: 0xD4 (WO) */ 74 __OM uint32_t pka_sram_wdata; 75 /*!< Offset: 0xD8 (WO) */ 76 __IOM uint32_t pka_sram_rdata; 77 /*!< Offset: 0xDC (RW) */ 78 __OM uint32_t pka_sram_wr_clr; 79 /*!< Offset: 0xE0 (WO) */ 80 __OM uint32_t pka_sram_raddr; 81 /*!< Offset: 0xE4 (WO) */ 82 uint8_t _reserved_2[8]; 83 /*!< Offset: 0xE8-0xEC Reserved */ 84 __OM uint32_t pka_word_access; 85 /*!< Offset: 0xF0 (WO) */ 86 uint8_t _reserved_3[4]; 87 /*!< Offset: 0xF4 Reserved */ 88 __OM uint32_t pka_buff_addr; 89 /*!< Offset: 0xF8 (WO) */ 90 uint8_t _reserved_4[4]; 91 /*!< Offset: 0xFC Reserved */ 92 } pka; 93 94 /* RNG block */ 95 __PACKED_STRUCT { 96 __IOM uint32_t rng_imr; 97 /*!< Offset: 0x100 (RW) */ 98 __IM uint32_t rng_isr; 99 /*!< Offset: 0x104 (RO) */ 100 __OM uint32_t rng_icr; 101 /*!< Offset: 0x108 (WO) */ 102 __IOM uint32_t trng_config; 103 /*!< Offset: 0x10C (RW) */ 104 __IM uint32_t trng_valid; 105 /*!< Offset: 0x110 (RO) */ 106 __IM uint32_t ehr_data[6]; 107 /*!< Offset: 0x114 (RO) */ 108 __IOM uint32_t rnd_source_enable; 109 /*!< Offset: 0x12C (RW) */ 110 __IOM uint32_t sample_cnt1; 111 /*!< Offset: 0x130 (RW) */ 112 __IOM uint32_t autocorr_statistic; 113 /*!< Offset: 0x134 (RW) */ 114 __IOM uint32_t trng_debug_control; 115 /*!< Offset: 0x138 (RW) */ 116 uint8_t _reserved_0[4]; 117 /*!< Offset: 0x13C Reserved */ 118 __IOM uint32_t rng_sw_reset; 119 /*!< Offset: 0x140 (RW) */ 120 uint8_t _reserved_1[112]; 121 /*!< Offset: 0x144-0x1B0 Reserved */ 122 __IM uint32_t rng_debug_en_input; 123 /*!< Offset: 0x1B4 (RO) */ 124 __IM uint32_t rng_busy; 125 /*!< Offset: 0x1B8 (RO) */ 126 __OM uint32_t rst_bits_counter; 127 /*!< Offset: 0x1BC (WO) */ 128 __IM uint32_t rng_version; 129 /*!< Offset: 0x1C0 (RO) */ 130 __OM uint32_t rng_clk_enable; 131 /*!< Offset: 0x1C4 (WO) */ 132 __IOM uint32_t rng_dma_enable; 133 /*!< Offset: 0x1C8 (RW) */ 134 __IOM uint32_t rng_dma_src_mask; 135 /*!< Offset: 0x1CC (RW) */ 136 __IOM uint32_t rng_dma_sram_addr; 137 /*!< Offset: 0x1D0 (RW) */ 138 __IOM uint32_t rng_dma_samples_num; 139 /*!< Offset: 0x1D4 (RW) */ 140 __IOM uint32_t rng_watchdog_val; 141 /*!< Offset: 0x1D8 (RW) */ 142 __IM uint32_t rng_dma_status; 143 /*!< Offset: 0x1DC (RO) */ 144 uint8_t _reserved_2[416]; 145 /*!< Offset: 0x1E0-0x380 Reserved */ 146 } rng; 147 148 /* ChaCha block */ 149 __PACKED_STRUCT { 150 __IOM uint32_t chacha_control_reg; 151 /*!< offset: 0x380 (RW) */ 152 __IM uint32_t chacha_version; 153 /*!< offset: 0x384 (RO) */ 154 __OM uint32_t chacha_key[8]; 155 /*!< offset: 0x388 (WO) */ 156 __IOM uint32_t chacha_iv[2]; 157 /*!< offset: 0x3a8 (RW) */ 158 __IM uint32_t chacha_busy; 159 /*!< offset: 0x3b0 (RO) */ 160 __IM uint32_t chacha_hw_flags; 161 /*!< offset: 0x3b4 (RO) */ 162 __IOM uint32_t chacha_block_cnt_lsb; 163 /*!< offset: 0x3b8 (RW) */ 164 __IOM uint32_t chacha_block_cnt_msb; 165 /*!< offset: 0x3bc (RW) */ 166 __OM uint32_t chacha_sw_reset; 167 /*!< offset: 0x3c0 (WO) */ 168 __IM uint32_t chacha_for_poly_key[8]; 169 /*!< offset: 0x3c4 (RO) */ 170 __IOM uint32_t chacha_byte_word_order_cntl_reg; 171 /*!< Offset: 0x3E4 (RW) */ 172 __IM uint32_t chacha_debug_reg; 173 /*!< offset: 0x3E8 (RO) */ 174 uint8_t _reserved_0[20]; 175 /*!< Offset: 0x3EC-0x3FC Reserved */ 176 } chacha; 177 178 /* AES block */ 179 __PACKED_STRUCT { 180 __OM uint32_t aes_key_0[8]; 181 /*!< Offset: 0x400 (WO) */ 182 __OM uint32_t aes_key_1[8]; 183 /*!< Offset: 0x420 (WO) */ 184 __IOM uint32_t aes_iv_0[4]; 185 /*!< Offset: 0x440 (RW) */ 186 __IOM uint32_t aes_iv_1[4]; 187 /*!< Offset: 0x450 (RW) */ 188 __IOM uint32_t aes_ctr_0[4]; 189 /*!< Offset: 0x460 (RW) */ 190 __IM uint32_t aes_busy; 191 /*!< Offset: 0x470 (RO) */ 192 uint8_t _reserved_0[4]; 193 /*!< Offset: 0x474 Reserved */ 194 __OM uint32_t aes_sk; 195 /*!< Offset: 0x478 (WO) */ 196 __OM uint32_t aes_cmac_init; 197 /*!< Offset: 0x47C (WO) */ 198 uint8_t _reserved_1[52]; 199 /*!< Offset: 0x480-0x4B0 Reserved */ 200 __OM uint32_t aes_sk1; 201 /*!< Offset: 0x4B4 (WO) */ 202 uint8_t _reserved_2[4]; 203 /*!< Offset: 0x4B8 Reserved */ 204 __IOM uint32_t aes_remaining_bytes; 205 /*!< Offset: 0x4BC (RW) */ 206 __IOM uint32_t aes_control; 207 /*!< Offset: 0x4C0 (RW) */ 208 uint8_t _reserved_3[4]; 209 /*!< Offset: 0x4C4 Reserved */ 210 __IM uint32_t aes_hw_flags; 211 /*!< Offset: 0x4C8 (RO) */ 212 uint8_t _reserved_4[12]; 213 /*!< Offset: 0x4CC-0x4D4 Reserved */ 214 __PACKED_UNION { 215 __IOM uint32_t aes_rbg_seed; 216 /*!< Offset: 0x4D8 (RW) */ 217 __IOM uint32_t aes_ctr_no_increment; 218 /*!< Offset: 0x4D8 (RW) */ 219 }; 220 uint8_t _reserved_5[20]; 221 /*!< Offset: 0x4DC-0x4EC Reserved */ 222 __IOM uint32_t aes_dfa_is_on; 223 /*!< Offset: 0x4F0 (RW) */ 224 uint8_t _reserved_6[4]; 225 /*!< Offset: 0x4F4 Reserved */ 226 __IM uint32_t aes_dfa_err_status; 227 /*!< Offset: 0x4F8 (RO) */ 228 __IM uint32_t aes_rbg_seeding_rdy; 229 /*!< Offset: 0x4FC (RO) */ 230 uint8_t _reserved_7[36]; 231 /*!< Offset: 0x500-0x520 Reserved */ 232 __OM uint32_t aes_cmac_size0_kick; 233 /*!< Offset: 0x524 (WO) */ 234 uint8_t _reserved_8[28]; 235 /*!< Offset: 0x528-0x540 Reserved */ 236 __IOM uint32_t aes_dummy_rounds_enable; 237 /*!< Offset: 0x544 (RW) */ 238 uint8_t _reserved_9[248]; 239 /*!< Offset: 0x548-0x63C Reserved */ 240 } aes; 241 242 /* Hash block */ 243 __PACKED_STRUCT { 244 __IOM uint32_t hash_h[9]; 245 /*!< Offset: 0x640 (RW) */ 246 uint8_t _reserved_0[32]; 247 /*!< Offset: 0x664-0x680 Reserved */ 248 __OM uint32_t auto_hw_padding; 249 /*!< Offset: 0x684 (WO) */ 250 __IOM uint32_t hash_xor_din; 251 /*!< Offset: 0x688 (RW) */ 252 uint8_t _reserved_1[8]; 253 /*!< Offset: 0x68C-0x690 Reserved */ 254 __OM uint32_t load_init_state; 255 /*!< Offset: 0x694 (WO) */ 256 uint8_t _reserved_2[12]; 257 /*!< Offset: 0x698-0x6A0 Reserved */ 258 __OM uint32_t hash_sel_aes_mac; 259 /*!< Offset: 0x6A4 (WO) */ 260 uint8_t _reserved_3[264]; 261 /*!< Offset: 0x6A8-0x6FC Reserved */ 262 __IM uint32_t hash_version; 263 /*!< Offset: 0x7B0 (RO) */ 264 uint8_t _reserved_4[12]; 265 /*!< Offset: 0x7B4-0x7BC Reserved */ 266 __IOM uint32_t hash_control; 267 /*!< Offset: 0x7C0 (RW) */ 268 __IOM uint32_t hash_pad_en; 269 /*!< Offset: 0x7C4 (RW) */ 270 __IOM uint32_t hash_pad_cfg; 271 /*!< Offset: 0x7C8 (RW) */ 272 __IOM uint32_t hash_cur_len[2]; 273 /*!< Offset: 0x7CC (RW) */ 274 uint8_t _reserved_5[8]; 275 /*!< Offset: 0x7D0-0x7D8 Reserved */ 276 __IM uint32_t hash_param; 277 /*!< Offset: 0x7DC (RO) */ 278 uint8_t _reserved_6[4]; 279 /*!< Offset: 0x7E0 Reserved */ 280 __OM uint32_t hash_aes_sw_reset; 281 /*!< Offset: 0x7E4 (WO) */ 282 __IOM uint32_t hash_endianess; 283 /*!< Offset: 0x7E8 (RW) */ 284 uint8_t _reserved_7[36]; 285 /*!< Offset: 0x7E4-0x80C Reserved */ 286 } hash; 287 288 /* Misc Block */ 289 __PACKED_STRUCT { 290 __IOM uint32_t aes_clk_enable; 291 /*!< Offset: 0x810 (RW) */ 292 uint8_t _reserved_0[4]; 293 /*!< Offset: 0x814 Reserved */ 294 __IOM uint32_t hash_clk_enable; 295 /*!< Offset: 0x818 (RW) */ 296 __IOM uint32_t pka_clk_enable; 297 /*!< Offset: 0x81C (RW) */ 298 __IOM uint32_t dma_clk_enable; 299 /*!< Offset: 0x820 (RW) */ 300 __IM uint32_t clk_status; 301 /*!< Offset: 0x824 (RO) */ 302 uint8_t _reserved_1[48]; 303 /*!< Offset: 0x828-0x854 Reserved */ 304 __OM uint32_t chacha_clk_enable; 305 /*!< Offset: 0x858 (WO) */ 306 uint8_t _reserved_2[164]; 307 /*!< Offset: 0x85C-0x8FC Reserved */ 308 } misc; 309 310 /* CC_CTL Block */ 311 __PACKED_STRUCT { 312 __OM uint32_t crypto_ctl; 313 /*!< Offset: 0x900 (WO) */ 314 uint8_t _reserved_0[12]; 315 /*!< Offset: 0x904-0x90C Reserved */ 316 __IM uint32_t crypto_busy; 317 /*!< Offset: 0x910 (RO) */ 318 uint8_t _reserved_1[8]; 319 /*!< Offset: 0x914-0x918 Reserved */ 320 __IM uint32_t hash_busy; 321 /*!< Offset: 0x91C (RO) */ 322 uint8_t _reserved_2[16]; 323 /*!< Offset: 0x920-0x92C Reserved */ 324 __IOM uint32_t context_id; 325 /*!< Offset: 0x930 (RW) */ 326 uint8_t _reserved_3[44]; 327 /*!< Offset: 0x85C-0x8FC Reserved */ 328 } cc_ctl; 329 330 /* GHash block */ 331 __PACKED_STRUCT { 332 __OM uint32_t ghash_subkey_0[4]; 333 /*!< Offset: 0x960 (WO) */ 334 __IOM uint32_t ghash_iv_0[4]; 335 /*!< Offset: 0x970 (RW) */ 336 __IM uint32_t ghash_busy; 337 /*!< Offset: 0x980 (RO) */ 338 __OM uint32_t ghash_init; 339 /*!< Offset: 0x984 (WO) */ 340 uint8_t _reserved_0[120]; 341 /*!< Offset: 0x988-0x9FC Reserved */ 342 } ghash; 343 344 /* Host_RGF block */ 345 __PACKED_STRUCT { 346 __IM uint32_t host_rgf_irr; 347 /*!< Offset: 0xA00 (RO) */ 348 __IOM uint32_t host_rgf_imr; 349 /*!< Offset: 0xA04 (RW) */ 350 __OM uint32_t host_rgf_icr; 351 /*!< Offset: 0xA08 (WO) */ 352 __IOM uint32_t host_rgf_endian; 353 /*!< Offset: 0xA0C (RW) */ 354 uint8_t _reserved_0[20]; 355 /*!< Offset: 0xA10-0xA20 Reserved */ 356 __IM uint32_t host_rgf_signature; 357 /*!< Offset: 0xA24 (RO) */ 358 __IM uint32_t host_boot; 359 /*!< Offset: 0xA28 (RO) */ 360 uint8_t _reserved_1[12]; 361 /*!< Offset: 0xA2C-0xA34 Reserved */ 362 __IOM uint32_t host_cryptokey_sel; 363 /*!< Offset: 0xA38 (RW) */ 364 uint8_t _reserved_2[60]; 365 /*!< Offset: 0xA3C-0xA78 Reserved */ 366 __IOM uint32_t host_core_clk_gating_enable; 367 /*!< Offset: 0xA78 (RW) */ 368 __IM uint32_t host_cc_is_idle; 369 /*!< Offset: 0xA7C (RO) */ 370 __IOM uint32_t host_powerdown; 371 /*!< Offset: 0xA80 (RW) */ 372 __IM uint32_t host_remove_ghash_engine; 373 /*!< Offset: 0xA84 (RO) */ 374 __IM uint32_t host_remove_chacha_engine; 375 /*!< Offset: 0xA88 (RO) */ 376 __IOM uint32_t host_sf_dynamic_cntl; 377 /*!< Offset: 0xA8C (RW) */ 378 __IM uint32_t host_sf_ready; 379 /*!< Offset: 0xA90 (RO) */ 380 uint8_t _reserved_3[108]; 381 /*!< Offset: 0xA94-0xAFC Reserved */ 382 } host_rgf; 383 384 /* AHB block */ 385 __PACKED_STRUCT { 386 __IOM uint32_t ahbm_singles; 387 /*!< Offset: 0xB00 (RW) */ 388 __IOM uint32_t ahbm_hprot; 389 /*!< Offset: 0xB04 (RW) */ 390 __IOM uint32_t ahbm_hmastlock; 391 /*!< Offset: 0xB08 (RW) */ 392 __IOM uint32_t ahbm_hnonsec; 393 /*!< Offset: 0xB0C (RW) */ 394 uint8_t _reserved_0[240]; 395 /*!< Offset: 0xB10-0xBF4 Reserved */ 396 } ahb; 397 398 /* DIN block */ 399 __PACKED_STRUCT { 400 __OM uint32_t din_buffer; 401 /*!< Offset: 0xC00 (WO) */ 402 uint8_t _reserved_0[28]; 403 /*!< Offset: 0xC04-0xC1C Reserved */ 404 __IM uint32_t din_mem_dma_busy; 405 /*!< Offset: 0xC20 (RO) */ 406 uint8_t _reserved_1[4]; 407 /*!< Offset: 0xC24 Reserved */ 408 __OM uint32_t src_lli_word0; 409 /*!< Offset: 0xC28 (WO) */ 410 __OM uint32_t src_lli_word1; 411 /*!< Offset: 0xC2C (WO) */ 412 __IOM uint32_t sram_src_addr; 413 /*!< Offset: 0xC30 (RW) */ 414 __IOM uint32_t din_sram_bytes_len; 415 /*!< Offset: 0xC34 (RW) */ 416 __IM uint32_t din_sram_dma_busy; 417 /*!< Offset: 0xC38 (RO) */ 418 uint8_t _reserved_2[12]; 419 /*!< Offset: 0xC3C-0xC44 Reserved */ 420 __OM uint32_t din_cpu_data_size; 421 /*!< Offset: 0xC48 (WO) */ 422 uint8_t _reserved_3[4]; 423 /*!< Offset: 0xC4C Reserved */ 424 __IM uint32_t fifo_in_empty; 425 /*!< Offset: 0xC50 (RO) */ 426 uint8_t _reserved_4[4]; 427 /*!< Offset: 0xC54 Reserved */ 428 __OM uint32_t din_fifo_rst_pntr; 429 /*!< Offset: 0xC58 (WO) */ 430 uint8_t _reserved_5[164]; 431 /*!< Offset: 0xC5C-0xCFC Reserved */ 432 } din; 433 434 /* DOUT block */ 435 __PACKED_STRUCT { 436 __IM uint32_t dout_buffer; 437 /*!< Offset: 0xD00 (RO) */ 438 uint8_t _reserved_0[28]; 439 /*!< Offset: 0xD04-0xD1C Reserved */ 440 __IM uint32_t dout_mem_dma_busy; 441 /*!< Offset: 0xD20 (RO) */ 442 uint8_t _reserved_1[4]; 443 /*!< Offset: 0xD24 Reserved */ 444 __OM uint32_t dst_lli_word0; 445 /*!< Offset: 0xD28 (WO) */ 446 __IOM uint32_t dst_lli_word1; 447 /*!< Offset: 0xD2C (RW) */ 448 __IOM uint32_t sram_dest_addr; 449 /*!< Offset: 0xD30 (RW) */ 450 __IOM uint32_t dout_sram_bytes_len; 451 /*!< Offset: 0xD34 (RW) */ 452 __IM uint32_t dout_sram_dma_busy; 453 /*!< Offset: 0xD38 (RO) */ 454 uint8_t _reserved_2[8]; 455 /*!< Offset: 0xD3C-0xD40 Reserved */ 456 __OM uint32_t read_align_last; 457 /*!< Offset: 0xD44 (WO) */ 458 uint8_t _reserved_3[8]; 459 /*!< Offset: 0xD48-0xD4C Reserved */ 460 __IM uint32_t dout_fifo_empty; 461 /*!< Offset: 0xD50 (RO) */ 462 uint8_t _reserved_4[428]; 463 /*!< Offset: 0xD54-0xEFC Reserved */ 464 } dout; 465 466 /* Host_SRAM block */ 467 __PACKED_STRUCT { 468 __IOM uint32_t sram_data; 469 /*!< Offset: 0x0F00 (RW) */ 470 __OM uint32_t sram_addr; 471 /*!< Offset: 0x0F04 (WO) */ 472 __IM uint32_t sram_data_ready; 473 /*!< Offset: 0x0F08 (RO) */ 474 uint8_t _reserved_0[196]; 475 /*!< Offset: 0xF08-0xFCC Reserved */ 476 } host_sram; 477 478 /* ID_Registers block */ 479 __PACKED_STRUCT { 480 __IM uint32_t peripheral_id_4; 481 /*!< Offset: 0xFD0 (RO) */ 482 __IM uint32_t pidreserved0; 483 /*!< Offset: 0xFD4 (RO) */ 484 __IM uint32_t pidreserved1; 485 /*!< Offset: 0xFD8 (RO) */ 486 __IM uint32_t pidreserved2; 487 /*!< Offset: 0xFDC (RO) */ 488 __IM uint32_t peripheral_id_0; 489 /*!< Offset: 0xFE0 (RO) */ 490 __IM uint32_t peripheral_id_1; 491 /*!< Offset: 0xFE4 (RO) */ 492 __IM uint32_t peripheral_id_2; 493 /*!< Offset: 0xFE8 (RO) */ 494 __IM uint32_t peripheral_id_3; 495 /*!< Offset: 0xFEC (RO) */ 496 __IM uint32_t component_id_0; 497 /*!< Offset: 0xFF0 (RO) */ 498 __IM uint32_t component_id_1; 499 /*!< Offset: 0xFF4 (RO) */ 500 uint8_t _reserved_0[3592]; 501 /*!< Offset: 0xFF8-0x1DFC Reserved */ 502 } id; 503 504 /* AO block */ 505 __PACKED_STRUCT { 506 __IOM uint32_t host_dcu_en[4]; 507 /*!< Offset: 0x1E00 (RW) */ 508 __IOM uint32_t host_dcu_lock[4]; 509 /*!< Offset: 0x1E10 (RW) */ 510 __IM uint32_t ao_icv_dcu_restriction_mask[4]; 511 /*!< Offset: 0x1E20 (RO) */ 512 __IM uint32_t ao_cc_sec_debug_reset; 513 /*!< Offset: 0x1E30 (RO) */ 514 __IOM uint32_t host_ao_lock_bits; 515 /*!< Offset: 0x1E34 (RW) */ 516 __IOM uint32_t ao_apb_filtering; 517 /*!< Offset: 0x1E38 (RW) */ 518 __IM uint32_t ao_cc_gppc; 519 /*!< Offset: 0x1E3C (RO) */ 520 __OM uint32_t host_rgf_cc_sw_rst; 521 /*!< Offset: 0x1E40 (WO) */ 522 __IM uint32_t dcu_debug_bits[4]; 523 /*!< Offset: 0x1E44 (RO) */ 524 __IM uint32_t ao_permanent_disable_mask[4]; 525 /*!< Offset: 0x1E54 (RO) */ 526 uint8_t _reserved_0[160]; 527 /*!< Offset: 0x1E58-0x1EFC Reserved */ 528 } ao; 529 530 /* NVM block */ 531 __PACKED_STRUCT { 532 __IM uint32_t aib_fuse_prog_completed; 533 /*!< Offset: 0x1F04 (RO) */ 534 __IM uint32_t nvm_debug_status; 535 /*!< Offset: 0x1F08 (RO) */ 536 __IM uint32_t lcs_is_valid; 537 /*!< Offset: 0x1F0C (RO) */ 538 __IM uint32_t nvm_is_idle; 539 /*!< Offset: 0x1F10 (RO) */ 540 __IM uint32_t lcs_reg; 541 /*!< Offset: 0x1F14 (RO) */ 542 __OM uint32_t host_shadow_kdr_reg; 543 /*!< Offset: 0x1F18 (WO) */ 544 __OM uint32_t host_shadow_kcp_reg; 545 /*!< Offset: 0x1F1C (WO) */ 546 __OM uint32_t host_shadow_kce_reg; 547 /*!< Offset: 0x1F20 (WO) */ 548 __OM uint32_t host_shadow_kpicv_reg; 549 /*!< Offset: 0x1F24 (WO) */ 550 __OM uint32_t host_shadow_kceicv_reg; 551 /*!< Offset: 0x1F28 (WO) */ 552 __IM uint32_t otp_addr_width_def; 553 /*!< Offset: 0x1F2C (RO) */ 554 __IM uint32_t gp_param; 555 /*!< Offset: 0x1F30 (RO) */ 556 uint8_t _reserved_0[204]; 557 /*!< Offset: 0x1F34-0x1FFC Reserved */ 558 } nvm; 559 560 __PACKED_STRUCT { 561 __IOM uint32_t huk[8]; 562 __IOM uint32_t icv_provisioning_key[4]; 563 __IOM uint32_t icv_code_encryption_key[4]; 564 __IOM uint32_t icv_programmed_flags[1]; 565 __PACKED_UNION { 566 __IOM uint32_t rot_public_key[8]; 567 __PACKED_STRUCT { 568 __IOM uint32_t icv_rot_public_key[4]; 569 __IOM uint32_t oem_rot_public_key[4]; 570 }; 571 }; 572 __IOM uint32_t oem_provisioning_secret[4]; 573 __IOM uint32_t oem_code_encryption_key[4]; 574 __IOM uint32_t oem_programmed_flags[1]; 575 __PACKED_UNION { 576 __IOM uint32_t nv_counter[5]; 577 __PACKED_STRUCT { 578 __IOM uint32_t icv_nv_counter[2]; 579 __IOM uint32_t oem_nv_counter[3]; 580 }; 581 }; 582 __IOM uint32_t general_purpose_configuration_flags[1]; 583 __IOM uint32_t dcu_debug_lock_mask[4]; 584 __IOM uint32_t general_purpose_code_data[]; 585 } otp; 586 }; 587 588 #ifdef __cplusplus 589 } 590 #endif 591 592 #endif /* CC3XX_REG_DEFS_H */ 593