2021-06-16 18:04:18 +08:00

593 lines
24 KiB
C

// 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_SLC_STRUCT_H_
#define _SOC_SLC_STRUCT_H_
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef volatile struct {
union {
struct {
uint32_t tx_rst : 1;
uint32_t rx_rst : 1;
uint32_t ahbm_fifo_rst : 1;
uint32_t ahbm_rst : 1;
uint32_t tx_loop_test : 1;
uint32_t rx_loop_test : 1;
uint32_t rx_auto_wrback : 1;
uint32_t rx_no_restart_clr : 1;
uint32_t rxdscr_burst_en : 1;
uint32_t rxdata_burst_en : 1;
uint32_t auto_ret : 1;
uint32_t txdscr_burst_en : 1;
uint32_t txdata_burst_en : 1;
uint32_t token_auto_clr : 1;
uint32_t token_sel : 1;
uint32_t reserved16 : 2;
uint32_t wr_retry_mask_en : 1;
uint32_t reserved19 : 13;
};
uint32_t val;
} slcconf0;
union {
struct {
uint32_t frhost_bit0 : 1;
uint32_t frhost_bit1 : 1;
uint32_t frhost_bit2 : 1;
uint32_t frhost_bit3 : 1;
uint32_t frhost_bit4 : 1;
uint32_t frhost_bit5 : 1;
uint32_t frhost_bit6 : 1;
uint32_t frhost_bit7 : 1;
uint32_t rx_start : 1;
uint32_t tx_start : 1;
uint32_t rx_udf : 1;
uint32_t tx_ovf : 1;
uint32_t token0_1to0 : 1;
uint32_t token1_1to0 : 1;
uint32_t tx_done : 1;
uint32_t tx_suc_eof : 1;
uint32_t rx_done : 1;
uint32_t rx_eof : 1;
uint32_t tohost : 1;
uint32_t tx_dscr_err : 1;
uint32_t rx_dscr_err : 1;
uint32_t tx_dscr_empty : 1;
uint32_t host_rd_ack : 1;
uint32_t wr_retry_done : 1;
uint32_t tx_err_eof : 1;
uint32_t cmd_dtc : 1;
uint32_t rx_quick_eof : 1;
uint32_t host_pop_eof_err : 1;
uint32_t reserved28 : 4;
};
uint32_t val;
} slc0_int_raw;
union {
struct {
uint32_t frhost_bit0 : 1;
uint32_t frhost_bit1 : 1;
uint32_t frhost_bit2 : 1;
uint32_t frhost_bit3 : 1;
uint32_t frhost_bit4 : 1;
uint32_t frhost_bit5 : 1;
uint32_t frhost_bit6 : 1;
uint32_t frhost_bit7 : 1;
uint32_t rx_start : 1;
uint32_t tx_start : 1;
uint32_t rx_udf : 1;
uint32_t tx_ovf : 1;
uint32_t token0_1to0 : 1;
uint32_t token1_1to0 : 1;
uint32_t tx_done : 1;
uint32_t tx_suc_eof : 1;
uint32_t rx_done : 1;
uint32_t rx_eof : 1;
uint32_t tohost : 1;
uint32_t tx_dscr_err : 1;
uint32_t rx_dscr_err : 1;
uint32_t tx_dscr_empty : 1;
uint32_t host_rd_ack : 1;
uint32_t wr_retry_done : 1;
uint32_t tx_err_eof : 1;
uint32_t cmd_dtc : 1;
uint32_t rx_quick_eof : 1;
uint32_t host_pop_eof_err : 1;
uint32_t reserved28 : 4;
};
uint32_t val;
} slc0_int_st;
union {
struct {
uint32_t frhost_bit0 : 1;
uint32_t frhost_bit1 : 1;
uint32_t frhost_bit2 : 1;
uint32_t frhost_bit3 : 1;
uint32_t frhost_bit4 : 1;
uint32_t frhost_bit5 : 1;
uint32_t frhost_bit6 : 1;
uint32_t frhost_bit7 : 1;
uint32_t rx_start : 1;
uint32_t tx_start : 1;
uint32_t rx_udf : 1;
uint32_t tx_ovf : 1;
uint32_t token0_1to0 : 1;
uint32_t token1_1to0 : 1;
uint32_t tx_done : 1;
uint32_t tx_suc_eof : 1;
uint32_t rx_done : 1;
uint32_t rx_eof : 1;
uint32_t tohost : 1;
uint32_t tx_dscr_err : 1;
uint32_t rx_dscr_err : 1;
uint32_t tx_dscr_empty : 1;
uint32_t host_rd_ack : 1;
uint32_t wr_retry_done : 1;
uint32_t tx_err_eof : 1;
uint32_t cmd_dtc : 1;
uint32_t rx_quick_eof : 1;
uint32_t host_pop_eof_err : 1;
uint32_t reserved28 : 4;
};
uint32_t val;
} slc0_int_ena;
union {
struct {
uint32_t frhost_bit0 : 1;
uint32_t frhost_bit1 : 1;
uint32_t frhost_bit2 : 1;
uint32_t frhost_bit3 : 1;
uint32_t frhost_bit4 : 1;
uint32_t frhost_bit5 : 1;
uint32_t frhost_bit6 : 1;
uint32_t frhost_bit7 : 1;
uint32_t rx_start : 1;
uint32_t tx_start : 1;
uint32_t rx_udf : 1;
uint32_t tx_ovf : 1;
uint32_t token0_1to0 : 1;
uint32_t token1_1to0 : 1;
uint32_t tx_done : 1;
uint32_t tx_suc_eof : 1;
uint32_t rx_done : 1;
uint32_t rx_eof : 1;
uint32_t tohost : 1;
uint32_t tx_dscr_err : 1;
uint32_t rx_dscr_err : 1;
uint32_t tx_dscr_empty : 1;
uint32_t host_rd_ack : 1;
uint32_t wr_retry_done : 1;
uint32_t tx_err_eof : 1;
uint32_t cmd_dtc : 1;
uint32_t rx_quick_eof : 1;
uint32_t host_pop_eof_err : 1;
uint32_t reserved28 : 4;
};
uint32_t val;
} slc0_int_clr;
uint32_t reserved_14;
uint32_t reserved_18;
uint32_t reserved_1c;
uint32_t reserved_20;
union {
struct {
uint32_t rx_full : 1;
uint32_t rx_empty : 1;
uint32_t rx_buf_len : 12;
uint32_t reserved14 : 18;
};
uint32_t val;
} rx_status;
union {
struct {
uint32_t rxfifo_wdata : 9;
uint32_t reserved9 : 7;
uint32_t rxfifo_push : 1;
uint32_t reserved17 : 15;
};
uint32_t val;
} slc0_rxfifo_push;
uint32_t reserved_2c;
union {
struct {
uint32_t tx_full : 1;
uint32_t tx_empty : 1;
uint32_t reserved2 : 30;
};
uint32_t val;
} tx_status;
union {
struct {
uint32_t txfifo_rdata : 11;
uint32_t reserved11 : 5;
uint32_t txfifo_pop : 1;
uint32_t reserved17 : 15;
};
uint32_t val;
} slc0_txfifo_pop;
uint32_t reserved_38;
union {
struct {
uint32_t addr : 20;
uint32_t reserved20 : 8;
uint32_t stop : 1;
uint32_t start : 1;
uint32_t restart : 1;
uint32_t park : 1;
};
uint32_t val;
} slc0_rx_link;
union {
struct {
uint32_t addr : 20;
uint32_t reserved20 : 8;
uint32_t stop : 1;
uint32_t start : 1;
uint32_t restart : 1;
uint32_t park : 1;
};
uint32_t val;
} slc0_tx_link;
uint32_t reserved_44;
uint32_t reserved_48;
union {
struct {
uint32_t tohost_intvec : 8;
uint32_t reserved8 : 24;
};
uint32_t val;
} slcintvec_tohost;
union {
struct {
uint32_t wdata : 12;
uint32_t wr : 1;
uint32_t inc : 1;
uint32_t inc_more : 1;
uint32_t reserved15 : 1;
uint32_t token0 : 12;
uint32_t reserved28 : 4;
};
uint32_t val;
} slc0token0;
union {
struct {
uint32_t wdata : 12;
uint32_t wr : 1;
uint32_t inc : 1;
uint32_t inc_more : 1;
uint32_t reserved15 : 1;
uint32_t token1 : 12;
uint32_t reserved28 : 4;
};
uint32_t val;
} slc0_token1;
uint32_t reserved_58;
uint32_t reserved_5c;
union {
struct {
uint32_t check_owner : 1;
uint32_t tx_check_sum_en : 1;
uint32_t rx_check_sum_en : 1;
uint32_t reg_cmd_hold_en : 1;
uint32_t len_auto_clr : 1;
uint32_t tx_stitch_en : 1;
uint32_t rx_stitch_en : 1;
uint32_t reserved7 : 12;
uint32_t host_int_level_sel : 1;
uint32_t reserved20 : 2;
uint32_t reg_clk_en : 1;
uint32_t reserved23 : 9;
};
uint32_t val;
} slcconf1;
uint32_t slc0_state0;
uint32_t slc0_state1;
uint32_t reserved_6c;
uint32_t reserved_70;
union {
struct {
uint32_t txeof_ena : 6;
uint32_t reserved6 : 2;
uint32_t fifo_map_ena : 4;
uint32_t tx_dummy_mode : 1;
uint32_t hda_map_128k : 1;
uint32_t reserved14 : 2;
uint32_t tx_push_idle_num : 16;
};
uint32_t val;
} slcbridge_conf;
uint32_t slc0_to_eof_des_addr;
uint32_t slc0_tx_eof_des_addr;
uint32_t slc0_to_eof_bfr_des_addr;
uint32_t reserved_84;
uint32_t reserved_88;
uint32_t reserved_8c;
union {
struct {
uint32_t mode : 3;
uint32_t reserved3 : 1;
uint32_t addr : 2;
uint32_t reserved6 : 26;
};
uint32_t val;
} ahb_test;
union {
struct {
uint32_t cmd_st : 3;
uint32_t reserved3 : 1;
uint32_t func_st : 4;
uint32_t sdio_wakeup : 1;
uint32_t reserved9 : 3;
uint32_t bus_st : 3;
uint32_t reserved15 : 1;
uint32_t func1_acc_state : 5;
uint32_t reserved21 : 11;
};
uint32_t val;
} sdio_st;
union {
struct {
uint32_t token_no_replace : 1;
uint32_t infor_no_replace : 1;
uint32_t rx_fill_mode : 1;
uint32_t rx_eof_mode : 1;
uint32_t rx_fill_en : 1;
uint32_t rd_retry_threshold : 11;
uint32_t reserved16 : 16;
};
uint32_t val;
} rx_dscr_conf;
uint32_t slc0_txlink_dscr;
uint32_t slc0_txlink_dscr_bf0;
uint32_t slc0_txlink_dscr_bf1;
uint32_t slc0_rxlink_dscr;
uint32_t slc0_rxlink_dscr_bf0;
uint32_t slc0_rxlink_dscr_bf1;
uint32_t reserved_b4;
uint32_t reserved_b8;
uint32_t reserved_bc;
uint32_t reserved_c0;
uint32_t reserved_c4;
uint32_t reserved_c8;
uint32_t slc0_tx_erreof_des_addr;
uint32_t reserved_d0;
union {
struct {
uint32_t token : 12;
uint32_t reserved12 : 20;
};
uint32_t val;
} token_lat;
union {
struct {
uint32_t wr_retry_threshold : 11;
uint32_t reserved11 : 21;
};
uint32_t val;
} tx_dscr_conf;
uint32_t cmd_infor0;
uint32_t cmd_infor1;
union {
struct {
uint32_t len_wdata : 20;
uint32_t len_wr : 1;
uint32_t len_inc : 1;
uint32_t len_inc_more : 1;
uint32_t rx_packet_load_en : 1;
uint32_t tx_packet_load_en : 1;
uint32_t rx_get_used_dscr : 1;
uint32_t tx_get_used_dscr : 1;
uint32_t rx_new_pkt_ind : 1;
uint32_t tx_new_pkt_ind : 1;
uint32_t reserved29 : 3;
};
uint32_t val;
} slc0_len_conf;
union {
struct {
uint32_t len : 20;
uint32_t reserved20 : 12;
};
uint32_t val;
} slc0_length;
uint32_t slc0_txpkt_h_dscr;
uint32_t slc0_txpkt_e_dscr;
uint32_t slc0_rxpkt_h_dscr;
uint32_t slc0_rxpkt_e_dscr;
uint32_t slc0_txpktu_h_dscr;
uint32_t slc0_txpktu_e_dscr;
uint32_t slc0_rxpktu_h_dscr;
uint32_t slc0_rxpktu_e_dscr;
uint32_t reserved_10c;
uint32_t reserved_110;
union {
struct {
uint32_t seq_position : 8;
uint32_t reserved8 : 24;
};
uint32_t val;
} seq_position;
union {
struct {
uint32_t rx_dscr_rec_lim : 10;
uint32_t reserved10 : 22;
};
uint32_t val;
} slc0_dscr_rec_conf;
union {
struct {
uint32_t dat0_crc_err_cnt : 8;
uint32_t dat1_crc_err_cnt : 8;
uint32_t dat2_crc_err_cnt : 8;
uint32_t dat3_crc_err_cnt : 8;
};
uint32_t val;
} sdio_crc_st0;
union {
struct {
uint32_t cmd_crc_err_cnt : 8;
uint32_t reserved8 : 23;
uint32_t err_cnt_clr : 1;
};
uint32_t val;
} sdio_crc_st1;
uint32_t slc0_eof_start_des;
uint32_t slc0_push_dscr_addr;
uint32_t slc0_done_dscr_addr;
uint32_t slc0_sub_start_des;
union {
struct {
uint32_t rx_dscr_cnt_lat : 10;
uint32_t reserved10 : 6;
uint32_t rx_get_eof_occ : 1;
uint32_t reserved17 : 15;
};
uint32_t val;
} slc0_dscr_cnt;
union {
struct {
uint32_t len_lim : 20;
uint32_t reserved20 : 12;
};
uint32_t val;
} slc0_len_lim_conf;
union {
struct {
uint32_t frhost_bit01 : 1;
uint32_t frhost_bit11 : 1;
uint32_t frhost_bit21 : 1;
uint32_t frhost_bit31 : 1;
uint32_t frhost_bit41 : 1;
uint32_t frhost_bit51 : 1;
uint32_t frhost_bit61 : 1;
uint32_t frhost_bit71 : 1;
uint32_t rx_start1 : 1;
uint32_t tx_start1 : 1;
uint32_t rx_udf1 : 1;
uint32_t tx_ovf1 : 1;
uint32_t token0_1to01 : 1;
uint32_t token1_1to01 : 1;
uint32_t tx_done1 : 1;
uint32_t tx_suc_eof1 : 1;
uint32_t rx_done1 : 1;
uint32_t rx_eof1 : 1;
uint32_t tohost1 : 1;
uint32_t tx_dscr_err1 : 1;
uint32_t rx_dscr_err1 : 1;
uint32_t tx_dscr_empty1 : 1;
uint32_t host_rd_ack1 : 1;
uint32_t wr_retry_done1 : 1;
uint32_t tx_err_eof1 : 1;
uint32_t cmd_dtc1 : 1;
uint32_t rx_quick_eof1 : 1;
uint32_t host_pop_eof_err1 : 1;
uint32_t reserved28 : 4;
};
uint32_t val;
} slc0_int_st1;
union {
struct {
uint32_t frhost_bit01 : 1;
uint32_t frhost_bit11 : 1;
uint32_t frhost_bit21 : 1;
uint32_t frhost_bit31 : 1;
uint32_t frhost_bit41 : 1;
uint32_t frhost_bit51 : 1;
uint32_t frhost_bit61 : 1;
uint32_t frhost_bit71 : 1;
uint32_t rx_start1 : 1;
uint32_t tx_start1 : 1;
uint32_t rx_udf1 : 1;
uint32_t tx_ovf1 : 1;
uint32_t token0_1to01 : 1;
uint32_t token1_1to01 : 1;
uint32_t tx_done1 : 1;
uint32_t tx_suc_eof1 : 1;
uint32_t rx_done1 : 1;
uint32_t rx_eof1 : 1;
uint32_t tohost1 : 1;
uint32_t tx_dscr_err1 : 1;
uint32_t rx_dscr_err1 : 1;
uint32_t tx_dscr_empty1 : 1;
uint32_t host_rd_ack1 : 1;
uint32_t wr_retry_done1 : 1;
uint32_t tx_err_eof1 : 1;
uint32_t cmd_dtc1 : 1;
uint32_t rx_quick_eof1 : 1;
uint32_t host_pop_eof_err1 : 1;
uint32_t reserved28 : 4;
};
uint32_t val;
} slc0_int_ena1;
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 reserved_178;
uint32_t reserved_17c;
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;
uint32_t reserved_1f0;
uint32_t reserved_1f4;
uint32_t date;
uint32_t id;
} slc_dev_t;
extern slc_dev_t SLC;
#ifdef __cplusplus
}
#endif
#endif /*_SOC_SLC_STRUCT_H_ */