// Copyright 2017-2021 Espressif Systems (Shanghai) PTE LTD // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #ifndef _SOC_HOST_STRUCT_H_ #define _SOC_HOST_STRUCT_H_ #include #ifdef __cplusplus extern "C" { #endif typedef volatile struct host_dev_s { uint32_t reserved_0; uint32_t reserved_4; uint32_t reserved_8; uint32_t reserved_c; uint32_t reserved_10; uint32_t reserved_14; uint32_t reserved_18; uint32_t reserved_1c; union { struct { uint32_t func1_mdstat : 1; uint32_t reserved1 : 31; }; uint32_t val; } func2_2; uint32_t reserved_24; uint32_t reserved_28; uint32_t reserved_2c; uint32_t reserved_30; uint32_t gpio_status0; union { struct { uint32_t sdio_int1 : 22; uint32_t reserved22 : 10; }; uint32_t val; } gpio_status1; uint32_t gpio_in0; union { struct { uint32_t sdio_in1 : 22; uint32_t reserved22 : 10; }; uint32_t val; } gpio_in1; union { struct { uint32_t token0 : 12; uint32_t rx_pf_valid : 1; uint32_t reserved13 : 3; uint32_t reg_token1 : 12; uint32_t rx_pf_eof : 4; }; uint32_t val; } slc0_token_rdata; uint32_t slc0_pf; uint32_t reserved_4c; union { struct { uint32_t tohost_bit0 : 1; uint32_t tohost_bit1 : 1; uint32_t tohost_bit2 : 1; uint32_t tohost_bit3 : 1; uint32_t tohost_bit4 : 1; uint32_t tohost_bit5 : 1; uint32_t tohost_bit6 : 1; uint32_t tohost_bit7 : 1; uint32_t token0_1to0 : 1; uint32_t token1_1to0 : 1; uint32_t token0_0to1 : 1; uint32_t token1_0to1 : 1; uint32_t rx_sof : 1; uint32_t rx_eof : 1; uint32_t rx_start : 1; uint32_t tx_start : 1; uint32_t rx_udf : 1; uint32_t tx_ovf : 1; uint32_t rx_pf_valid : 1; uint32_t ext_bit0 : 1; uint32_t ext_bit1 : 1; uint32_t ext_bit2 : 1; uint32_t ext_bit3 : 1; uint32_t rx_new_packet : 1; uint32_t rd_retry : 1; uint32_t gpio_sdio : 1; uint32_t reserved26 : 6; }; uint32_t val; } slc0_int_raw; uint32_t reserved_54; union { struct { uint32_t tohost_bit0 : 1; uint32_t tohost_bit1 : 1; uint32_t tohost_bit2 : 1; uint32_t tohost_bit3 : 1; uint32_t tohost_bit4 : 1; uint32_t tohost_bit5 : 1; uint32_t tohost_bit6 : 1; uint32_t tohost_bit7 : 1; uint32_t token0_1to0 : 1; uint32_t token1_1to0 : 1; uint32_t token0_0to1 : 1; uint32_t token1_0to1 : 1; uint32_t rx_sof : 1; uint32_t rx_eof : 1; uint32_t rx_start : 1; uint32_t tx_start : 1; uint32_t rx_udf : 1; uint32_t tx_ovf : 1; uint32_t rx_pf_valid : 1; uint32_t ext_bit0 : 1; uint32_t ext_bit1 : 1; uint32_t ext_bit2 : 1; uint32_t ext_bit3 : 1; uint32_t rx_new_packet : 1; uint32_t rd_retry : 1; uint32_t gpio_sdio : 1; uint32_t reserved26 : 6; }; uint32_t val; } slc0_int_st; uint32_t reserved_5c; union { struct { uint32_t reg_slc0_len : 20; uint32_t reg_slc0_len_check : 12; }; uint32_t val; } pkt_len; union { struct { uint32_t state0 : 8; uint32_t state1 : 8; uint32_t state2 : 8; uint32_t state3 : 8; }; uint32_t val; } state_w0; union { struct { uint32_t state4 : 8; uint32_t state5 : 8; uint32_t state6 : 8; uint32_t state7 : 8; }; uint32_t val; } state_w1; union { struct { uint32_t conf0 : 8; uint32_t conf1 : 8; uint32_t conf2 : 8; uint32_t conf3 : 8; }; uint32_t val; } conf_w0; union { struct { uint32_t conf4 : 8; uint32_t conf5 : 8; uint32_t conf6 : 8; uint32_t conf7 : 8; }; uint32_t val; } conf_w1; union { struct { uint32_t conf8 : 8; uint32_t conf9 : 8; uint32_t conf10 : 8; uint32_t conf11 : 8; }; uint32_t val; } conf_w2; union { struct { uint32_t conf12 : 8; uint32_t conf13 : 8; uint32_t conf14 : 8; uint32_t conf15 : 8; }; uint32_t val; } conf_w3; union { struct { uint32_t conf16 : 8; /*SLC timeout value*/ uint32_t conf17 : 8; /*SLC timeout enable*/ uint32_t conf18 : 8; uint32_t conf19 : 8; /*Interrupt to target CPU*/ }; uint32_t val; } conf_w4; union { struct { uint32_t conf20 : 8; uint32_t conf21 : 8; uint32_t conf22 : 8; uint32_t conf23 : 8; }; uint32_t val; } conf_w5; union { struct { uint32_t win_cmd : 16; uint32_t reserved16 : 16; }; uint32_t val; } win_cmd; union { struct { uint32_t conf24 : 8; uint32_t conf25 : 8; uint32_t conf26 : 8; uint32_t conf27 : 8; }; uint32_t val; } conf_w6; union { struct { uint32_t conf28 : 8; uint32_t conf29 : 8; uint32_t conf30 : 8; uint32_t conf31 : 8; }; uint32_t val; } conf_w7; union { struct { uint32_t reg_slc0_len0 : 20; uint32_t reg_slc0_len0_check : 12; }; uint32_t val; } pkt_len0; union { struct { uint32_t reg_slc0_len1 : 20; uint32_t reg_slc0_len1_check : 12; }; uint32_t val; } pkt_len1; union { struct { uint32_t reg_slc0_len2 : 20; uint32_t reg_slc0_len2_check : 12; }; uint32_t val; } pkt_len2; union { struct { uint32_t conf32 : 8; uint32_t conf33 : 8; uint32_t conf34 : 8; uint32_t conf35 : 8; }; uint32_t val; } conf_w8; union { struct { uint32_t conf36 : 8; uint32_t conf37 : 8; uint32_t conf38 : 8; uint32_t conf39 : 8; }; uint32_t val; } conf_w9; union { struct { uint32_t conf40 : 8; uint32_t conf41 : 8; uint32_t conf42 : 8; uint32_t conf43 : 8; }; uint32_t val; } conf_w10; union { struct { uint32_t conf44 : 8; uint32_t conf45 : 8; uint32_t conf46 : 8; uint32_t conf47 : 8; }; uint32_t val; } conf_w11; union { struct { uint32_t conf48 : 8; uint32_t conf49 : 8; uint32_t conf50 : 8; uint32_t conf51 : 8; }; uint32_t val; } conf_w12; union { struct { uint32_t conf52 : 8; uint32_t conf53 : 8; uint32_t conf54 : 8; uint32_t conf55 : 8; }; uint32_t val; } conf_w13; union { struct { uint32_t conf56 : 8; uint32_t conf57 : 8; uint32_t conf58 : 8; uint32_t conf59 : 8; }; uint32_t val; } conf_w14; union { struct { uint32_t conf60 : 8; uint32_t conf61 : 8; uint32_t conf62 : 8; uint32_t conf63 : 8; }; uint32_t val; } conf_w15; uint32_t check_sum0; uint32_t check_sum1; uint32_t reserved_c4; union { struct { uint32_t token0_wd : 12; uint32_t reserved12 : 4; uint32_t token1_wd : 12; uint32_t reserved28 : 4; }; uint32_t val; } slc0_token_wdata; uint32_t reserved_cc; union { struct { uint32_t slc0_token0_dec : 1; uint32_t slc0_token1_dec : 1; uint32_t slc0_token0_wr : 1; uint32_t slc0_token1_wr : 1; uint32_t reserved4 : 4; uint32_t slc0_len_wr : 1; uint32_t reserved9 : 23; }; uint32_t val; } token_con; union { struct { uint32_t tohost_bit0 : 1; uint32_t tohost_bit1 : 1; uint32_t tohost_bit2 : 1; uint32_t tohost_bit3 : 1; uint32_t tohost_bit4 : 1; uint32_t tohost_bit5 : 1; uint32_t tohost_bit6 : 1; uint32_t tohost_bit7 : 1; uint32_t token0_1to0 : 1; uint32_t token1_1to0 : 1; uint32_t token0_0to1 : 1; uint32_t token1_0to1 : 1; uint32_t rx_sof : 1; uint32_t rx_eof : 1; uint32_t rx_start : 1; uint32_t tx_start : 1; uint32_t rx_udf : 1; uint32_t tx_ovf : 1; uint32_t rx_pf_valid : 1; uint32_t ext_bit0 : 1; uint32_t ext_bit1 : 1; uint32_t ext_bit2 : 1; uint32_t ext_bit3 : 1; uint32_t rx_new_packet : 1; uint32_t rd_retry : 1; uint32_t gpio_sdio : 1; uint32_t reserved26 : 6; }; uint32_t val; } slc0_int_clr; uint32_t reserved_d8; union { struct { uint32_t tohost_bit0 : 1; uint32_t tohost_bit1 : 1; uint32_t tohost_bit2 : 1; uint32_t tohost_bit3 : 1; uint32_t tohost_bit4 : 1; uint32_t tohost_bit5 : 1; uint32_t tohost_bit6 : 1; uint32_t tohost_bit7 : 1; uint32_t token0_1to0 : 1; uint32_t token1_1to0 : 1; uint32_t token0_0to1 : 1; uint32_t token1_0to1 : 1; uint32_t rx_sof : 1; uint32_t rx_eof : 1; uint32_t rx_start : 1; uint32_t tx_start : 1; uint32_t rx_udf : 1; uint32_t tx_ovf : 1; uint32_t rx_pf_valid : 1; uint32_t ext_bit0 : 1; uint32_t ext_bit1 : 1; uint32_t ext_bit2 : 1; uint32_t ext_bit3 : 1; uint32_t rx_new_packet : 1; uint32_t rd_retry : 1; uint32_t gpio_sdio : 1; uint32_t reserved26 : 6; }; uint32_t val; } slc0_func1_int_ena; uint32_t reserved_e0; uint32_t reserved_e4; uint32_t reserved_e8; union { struct { uint32_t tohost_bit0 : 1; uint32_t tohost_bit1 : 1; uint32_t tohost_bit2 : 1; uint32_t tohost_bit3 : 1; uint32_t tohost_bit4 : 1; uint32_t tohost_bit5 : 1; uint32_t tohost_bit6 : 1; uint32_t tohost_bit7 : 1; uint32_t token0_1to0 : 1; uint32_t token1_1to0 : 1; uint32_t token0_0to1 : 1; uint32_t token1_0to1 : 1; uint32_t rx_sof : 1; uint32_t rx_eof : 1; uint32_t rx_start : 1; uint32_t tx_start : 1; uint32_t rx_udf : 1; uint32_t tx_ovf : 1; uint32_t rx_pf_valid : 1; uint32_t ext_bit0 : 1; uint32_t ext_bit1 : 1; uint32_t ext_bit2 : 1; uint32_t ext_bit3 : 1; uint32_t rx_new_packet : 1; uint32_t rd_retry : 1; uint32_t gpio_sdio : 1; uint32_t reserved26 : 6; }; uint32_t val; } slc0_int_ena; uint32_t reserved_f0; union { struct { uint32_t infor : 20; uint32_t reserved20 : 12; }; uint32_t val; } slc0_rx_infor; uint32_t reserved_f8; uint32_t slc0_len_wd; uint32_t apbwin_wdata; union { struct { uint32_t addr : 28; uint32_t wr : 1; uint32_t start : 1; uint32_t bus : 1; uint32_t reserved31 : 1; }; uint32_t val; } apbwin_conf; uint32_t apbwin_rdata; union { struct { uint32_t bit7_clraddr : 9; uint32_t bit6_clraddr : 9; uint32_t reserved18 : 14; }; uint32_t val; } slc0_rdclr; uint32_t reserved_110; union { struct { uint32_t tohost_bit01 : 1; uint32_t tohost_bit11 : 1; uint32_t tohost_bit21 : 1; uint32_t tohost_bit31 : 1; uint32_t tohost_bit41 : 1; uint32_t tohost_bit51 : 1; uint32_t tohost_bit61 : 1; uint32_t tohost_bit71 : 1; uint32_t token0_1to01 : 1; uint32_t token1_1to01 : 1; uint32_t token0_0to11 : 1; uint32_t token1_0to11 : 1; uint32_t rx_sof1 : 1; uint32_t rx_eof1 : 1; uint32_t rx_start1 : 1; uint32_t tx_start1 : 1; uint32_t rx_udf1 : 1; uint32_t tx_ovf1 : 1; uint32_t rx_pf_valid1 : 1; uint32_t ext_bit01 : 1; uint32_t ext_bit11 : 1; uint32_t ext_bit21 : 1; uint32_t ext_bit31 : 1; uint32_t rx_new_packet1 : 1; uint32_t rd_retry1 : 1; uint32_t gpio_sdio1 : 1; uint32_t reserved26 : 6; }; uint32_t val; } slc0_int_ena1; uint32_t reserved_118; uint32_t reserved_11c; uint32_t reserved_120; uint32_t reserved_124; uint32_t reserved_128; uint32_t reserved_12c; uint32_t reserved_130; uint32_t reserved_134; uint32_t reserved_138; uint32_t reserved_13c; uint32_t reserved_140; uint32_t reserved_144; uint32_t reserved_148; uint32_t reserved_14c; uint32_t reserved_150; uint32_t reserved_154; uint32_t reserved_158; uint32_t reserved_15c; uint32_t reserved_160; uint32_t reserved_164; uint32_t reserved_168; uint32_t reserved_16c; uint32_t reserved_170; uint32_t reserved_174; uint32_t date; uint32_t id; uint32_t reserved_180; uint32_t reserved_184; uint32_t reserved_188; uint32_t reserved_18c; uint32_t reserved_190; uint32_t reserved_194; uint32_t reserved_198; uint32_t reserved_19c; uint32_t reserved_1a0; uint32_t reserved_1a4; uint32_t reserved_1a8; uint32_t reserved_1ac; uint32_t reserved_1b0; uint32_t reserved_1b4; uint32_t reserved_1b8; uint32_t reserved_1bc; uint32_t reserved_1c0; uint32_t reserved_1c4; uint32_t reserved_1c8; uint32_t reserved_1cc; uint32_t reserved_1d0; uint32_t reserved_1d4; uint32_t reserved_1d8; uint32_t reserved_1dc; uint32_t reserved_1e0; uint32_t reserved_1e4; uint32_t reserved_1e8; uint32_t reserved_1ec; union { struct { uint32_t frc_sdio11 : 5; uint32_t frc_sdio20 : 5; uint32_t frc_neg_samp : 5; uint32_t frc_pos_samp : 5; uint32_t frc_quick_in : 5; uint32_t sdio20_int_delay : 1; uint32_t sdio_pad_pullup : 1; uint32_t hspeed_con_en : 1; uint32_t reserved28 : 4; }; uint32_t val; } conf; union { struct { uint32_t sdio20_mode : 5; uint32_t sdio_neg_samp : 5; uint32_t sdio_quick_in : 5; uint32_t reserved15 : 17; }; uint32_t val; } inf_st; } host_dev_t; extern host_dev_t HOST; #ifdef __cplusplus } #endif #endif /*_SOC_HOST_STRUCT_H_ */