/** * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ #pragma once #include #ifdef __cplusplus extern "C" { #endif /** Group: ICM AXI VERID FILEDS REG */ /** Type of verid_fileds register * NA */ typedef union { struct { /** reg_verid : RO; bitpos: [31:0]; default: 875574314; * NA */ uint32_t reg_verid:32; }; uint32_t val; } icm_verid_fileds_reg_t; /** Group: ICM AXI HW CFG REG REG */ /** Type of hw_cfg_reg register * NA */ typedef union { struct { /** reg_axi_hwcfg_qos_support : RO; bitpos: [0]; default: 1; * NA */ uint32_t reg_axi_hwcfg_qos_support:1; /** reg_axi_hwcfg_apb3_support : RO; bitpos: [1]; default: 0; * NA */ uint32_t reg_axi_hwcfg_apb3_support:1; /** reg_axi_hwcfg_axi4_support : RO; bitpos: [2]; default: 0; * NA */ uint32_t reg_axi_hwcfg_axi4_support:1; /** reg_axi_hwcfg_lock_en : RO; bitpos: [3]; default: 0; * NA */ uint32_t reg_axi_hwcfg_lock_en:1; /** reg_axi_hwcfg_trust_zone_en : RO; bitpos: [4]; default: 1; * NA */ uint32_t reg_axi_hwcfg_trust_zone_en:1; /** reg_axi_hwcfg_decoder_type : RO; bitpos: [5]; default: 0; * NA */ uint32_t reg_axi_hwcfg_decoder_type:1; /** reg_axi_hwcfg_remap_en : RO; bitpos: [6]; default: 1; * NA */ uint32_t reg_axi_hwcfg_remap_en:1; /** reg_axi_hwcfg_bi_dir_cmd_en : RO; bitpos: [7]; default: 0; * NA */ uint32_t reg_axi_hwcfg_bi_dir_cmd_en:1; /** reg_axi_hwcfg_low_power_inf_en : RO; bitpos: [8]; default: 1; * NA */ uint32_t reg_axi_hwcfg_low_power_inf_en:1; uint32_t reserved_9:3; /** reg_axi_hwcfg_axi_num_masters : RO; bitpos: [16:12]; default: 13; * NA */ uint32_t reg_axi_hwcfg_axi_num_masters:5; uint32_t reserved_17:3; /** reg_axi_hwcfg_axi_num_slaves : RO; bitpos: [24:20]; default: 7; * NA */ uint32_t reg_axi_hwcfg_axi_num_slaves:5; uint32_t reserved_25:7; }; uint32_t val; } icm_hw_cfg_reg_reg_t; /** Group: ICM AXI CMD REG */ /** Type of cmd register * NA */ typedef union { struct { /** reg_axi_cmd : R/W; bitpos: [2:0]; default: 0; * NA */ uint32_t reg_axi_cmd:3; uint32_t reserved_3:4; /** reg_rd_wr_chan : R/W; bitpos: [7]; default: 0; * NA */ uint32_t reg_rd_wr_chan:1; /** reg_axi_master_port : R/W; bitpos: [11:8]; default: 0; * NA */ uint32_t reg_axi_master_port:4; uint32_t reserved_12:16; /** reg_axi_err_bit : RO; bitpos: [28]; default: 0; * NA */ uint32_t reg_axi_err_bit:1; /** reg_axi_soft_reset_bit : R/W; bitpos: [29]; default: 0; * NA */ uint32_t reg_axi_soft_reset_bit:1; /** reg_axi_rd_wr_cmd : R/W; bitpos: [30]; default: 0; * NA */ uint32_t reg_axi_rd_wr_cmd:1; /** reg_axi_cmd_en : R/W; bitpos: [31]; default: 0; * NA */ uint32_t reg_axi_cmd_en:1; }; uint32_t val; } icm_cmd_reg_t; /** Group: ICM AXI DATA REG */ /** Type of data register * NA */ typedef union { struct { /** reg_data : R/W; bitpos: [31:0]; default: 0; * NA */ uint32_t reg_data:32; }; uint32_t val; } icm_data_reg_t; typedef struct { volatile icm_verid_fileds_reg_t verid_fileds; volatile icm_hw_cfg_reg_reg_t hw_cfg_reg; volatile icm_cmd_reg_t cmd; volatile icm_data_reg_t data; } icm_dev_t; #ifndef __cplusplus _Static_assert(sizeof(icm_dev_t) == 0x10, "Invalid size of icm_dev_t structure"); #endif #ifdef __cplusplus } #endif