addrmap STM32SDMMC {

/* Some conversion errors detected, this might mean that the peripheral's registers structure in this file is incomplete.
 * Please refer to logs and comments in the file for more information.
 * 
 * Field "Wait for response bits (WAITRESP)" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
 * Field "CPSM waits for interrupt request (WAITINT)" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
 * Field "CPSM waits for end of data transfer from DPSM (WAITPEND)" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
 * Field "Command path state machine (CPSM) enable bit (CPSMEN)" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
 */

addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="Power";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = rw;
            } SDMMC_state_control_bits_PWRCTRL[1:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Voltage_switch_sequence_start_VSWITCH[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Voltage_switch_procedure_enable_VSWITCHEN[3:3];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Data_and_command_direction_signals_polarity_selection_DIRPOL[4:4];
    } Power @ 0x0;
    reg {
        name="Clock";
        regwidth=0x20;
            field {
                sw = rw;
            } Clock_divide_factor_CLKDIV[0:0];
    } Clock @ 0x4;
    reg {
        name="Arg";
        regwidth=0x20;
            field {
                sw = rw;
            } Command_argument_CMDARG[31:0];
    } Arg @ 0x8;
    external reg {
        name="Cmd";
        regwidth=0x20;
            field {
                sw = rw;
            } Command_index_CMDINDEX[5:0];
            /* Conversion error: Field "Wait for response bits (WAITRESP)" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
            field {
                sw = rw;
            } Wait_for_response_bits_WAITRESP[1:0];
            */
            /* Conversion error: Field "CPSM waits for interrupt request (WAITINT)" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CPSM_waits_for_interrupt_request_WAITINT[0:0];
            */
            /* Conversion error: Field "CPSM waits for end of data transfer from DPSM (WAITPEND)" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CPSM_waits_for_end_of_data_transfer_from_DPSM_WAITPEND[0:0];
            */
            /* Conversion error: Field "Command path state machine (CPSM) enable bit (CPSMEN)" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
            field {
                desc = "This field uses access mode that cannot be resolved at compile-time. This field has the following custom Renode callbacks: Write.";
                sw = rw;
                onwrite = wuser;
                onread = ruser;
            } Command_path_state_machine_CPSM_enable_bit_CPSMEN[0:0];
            */
    } Cmd @ 0xc;
    reg {
        name="RespCmd";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = rw;
            } Response_command_index_RESPCMD[5:0];
    } RespCmd @ 0x10;
    reg {
        name="Resp1";
        regwidth=0x20;
            field {
                sw = r;
            } Card_status_CARDSTATUS1[31:0];
    } Resp1 @ 0x14;
    reg {
        name="Resp2";
        regwidth=0x20;
            field {
                sw = r;
            } Card_status_CARDSTATUS2[31:0];
    } Resp2 @ 0x18;
    reg {
        name="Resp3";
        regwidth=0x20;
            field {
                sw = r;
            } Card_status_CARDSTATUS3[31:0];
    } Resp3 @ 0x1c;
    reg {
        name="Resp4";
        regwidth=0x20;
            field {
                sw = r;
            } Card_status_CARDSTATUS4[31:0];
    } Resp4 @ 0x20;
    reg {
        name="DataTimer";
        regwidth=0x20;
            field {
                sw = rw;
            } Data_and_R1b_busy_timeout_period_DATATIME[31:0];
    } DataTimer @ 0x24;
    reg {
        name="DataLength";
        regwidth=0x20;
            field {
                sw = rw;
            } Data_length_value_DATALENGTH[24:0];
    } DataLength @ 0x28;
    reg {
        name="DataCtrl";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Data_transfer_enable_bit_DTEN[0:0];
            field {
                sw = rw;
            } Data_transfer_direction_selection_DTDIR[1:1];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
            } Data_block_size_DBLOCKSIZE[7:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Read_Wait_start_RWSTART[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Read_Wait_stop_RWSTOP[9:9];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Read_Wait_mode_RWMOD[10:10];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SD_I_O_interrupt_enable_functions_SDIOEN[11:11];
    } DataCtrl @ 0x2c;
    reg {
        name="DataCount";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Data_count_value_DATACOUNT[24:0];
    } DataCount @ 0x30;
    reg {
        name="IntStatus";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } Command_response_received_CRC_check_failed_CCRCFAIL[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } Data_block_sent_received_CRC_check_failed_DCRCFAIL[1:1];
            field {
                sw = r;
            } Command_response_timeout_CTIMEOUT[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Data_timeout_DTIMEOUT[3:3];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Transmit_FIFO_underrun_error_TXUNDERR[4:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Received_FIFO_overrun_error_RXOVERR[5:5];
            field {
                sw = r;
            } Command_response_received_CRC_check_passed_or_no_CRC_CMDREND[6:6];
            field {
                sw = r;
            } Command_sent_no_response_required_CMDSENT[7:7];
            field {
                sw = r;
            } Data_transfer_ended_correctly_DATAEND[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Data_transfer_Hold_DHOLD[9:9];
            field {
                sw = r;
            } Data_block_sent_received_DBCKEND[10:10];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } Command_transfer_in_progress_CMDACT[11:11];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Data_transmit_in_progress_TXACT[12:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Data_receive_in_progress_RXACT[13:13];
            field {
                sw = r;
            } Transmit_FIFO_half_empty__at_least_8_words_can_be_written_into_the_FIFO_TXFIFOHE[14:14];
            field {
                sw = r;
            } Receive_FIFO_half_full__there_are_at_least_8_words_in_the_FIFO_RXFIFOHF[15:15];
            field {
                sw = r;
                reset=1'b1;
            } Transmit_FIFO_full_TXFIFOF[16:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Receive_FIFO_full_RXFIFOF[17:17];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Transmit_FIFO_empty_TXFIFOE[18:18];
            field {
                sw = r;
                reset=1'b1;
            } Receive_FIFO_empty_RXFIFOE[19:19];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Data_available_in_transmit_FIFO_TXDAVL[20:20];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Data_available_in_receive_FIFO_RXDAVL[21:21];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SDIO_interrupt_received_SDIOT[22:22];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Boot_acknowledgment_received_boot_acknowledgment_check_fail_ACKFAIL[23:23];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Boot_acknowledgment_timeout_ACKTIMEOUT[24:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Voltage_switch_critical_timing_section_completion_VSWEND[25:25];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SDMMC_CK_stopped_in_Voltage_switch_procedure_CKSTOP[26:26];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } IDMA_transfer_error_IDMATE[27:27];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } IDMA_buffer_transfer_complete_IDMABTC[28:28];
    } IntStatus @ 0x34;
    external reg {
        name="IntClear";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = rw;
            } CCRFAIL_flag_clear_bit_CCRFAILC[0:0];
            field {
                sw = rw;
            } DCRCFAIL_flag_clear_bit_DCRCFAILC[1:1];
            field {
                desc = "This field uses access mode that cannot be resolved at compile-time. This field has the following custom Renode callbacks: Write.";
                sw = rw;
                onwrite = wuser;
                onread = ruser;
            } CTIMEOUT_flag_clear_bit_CTIMEOUTC[2:2];
            field {
                sw = rw;
            } DTIMEOUT_flag_clear_bit_DTIMEOUTC[3:3];
            field {
                sw = rw;
            } TXUNDERR_flag_clear_bit_TXUNDERRC[4:4];
            field {
                sw = rw;
            } RXOVERR_flag_clear_bit_RXOVERRC[5:5];
            field {
                desc = "This field uses access mode that cannot be resolved at compile-time. This field has the following custom Renode callbacks: Write.";
                sw = rw;
                onwrite = wuser;
                onread = ruser;
            } CMDREND_flag_clear_bit_CMDRENDC[6:6];
            field {
                desc = "This field uses access mode that cannot be resolved at compile-time. This field has the following custom Renode callbacks: Write.";
                sw = rw;
                onwrite = wuser;
                onread = ruser;
            } CMDSENT_flag_clear_bit_CMDSENTC[7:7];
            field {
                desc = "This field uses access mode that cannot be resolved at compile-time. This field has the following custom Renode callbacks: Write.";
                sw = rw;
                onwrite = wuser;
                onread = ruser;
            } DATAEND_flag_clear_bit_DATAENDC[8:8];
            field {
                sw = rw;
            } DHOLD_flag_clear_bit_DHOLDC[9:9];
            field {
                desc = "This field uses access mode that cannot be resolved at compile-time. This field has the following custom Renode callbacks: Write.";
                sw = rw;
                onwrite = wuser;
                onread = ruser;
            } DBCKEN_flag_clear_bit_DBCKEND[10:10];
            field {
                sw = rw;
            } DABORT_flag_clear_bit_DABORTC[11:11];
            field {
                sw = rw;
            } BUSYD0END_flag_clear_bit_BUSYD0ENDC[21:21];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SDIOIT_flag_clear_bit_SDIOITC[22:22];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ACKFAIL_flag_clear_bit_ACKFAILC[23:23];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ACKTIMEOUT_flag_clear_bit_ACKTIMEOUTC[24:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } VSWEND_flag_clear_bit_VSWENDC[25:25];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CKSTOP_flag_clear_bit_CKSTOPC[26:26];
            field {
                sw = rw;
            } IDMATE_flag_clear_bit_IDMATEC[27:27];
            field {
                sw = rw;
            } IDMABTC_flag_clear_bit_IDMABTCC[28:28];
    } IntClear @ 0x38;
    reg {
        name="IntMask";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Command_response_received_CRC_check_failed_interrupt_enable_CCRCFAILIE[0:0];
            field {
                sw = rw;
            } Data_block_sent_received_CRC_check_failed_interrupt_enable_DCRCFAILIE[1:1];
            field {
                sw = rw;
            } Command_response_timeout_interrupt_enable_CTIMEOUTIE[2:2];
            field {
                sw = rw;
            } Data_timeout_interrupt_enable_DTIMEOUTIE[3:3];
            field {
                sw = rw;
            } Transmit_FIFO_underrun_error_interrupt_enable_TXUNDERRIE[4:4];
            field {
                sw = rw;
            } Received_FIFO_overrun_error_interrupt_enable_RXOVERRIE[5:5];
            field {
                sw = rw;
            } Command_response_received_CRC_check_passed_or_no_CRC_interrupt_enable_CMDRENDIE[6:6];
            field {
                sw = rw;
            } Command_sent_no_response_required_interrupt_enable_CMDSENTIE[7:7];
            field {
                sw = rw;
            } Data_transfer_ended_correctly_interrupt_enable_DATAENDIE[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Data_transfer_Hold_interrupt_enable_DHOLDIE[9:9];
            field {
                sw = rw;
            } Data_block_sent_received_interrupt_enable_DBCKENDIE[10:10];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Command_transfer_in_progress_interrupt_enable_CMDACTIE[11:11];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Data_transmit_in_progress_interrupt_enable_TXACTIE[12:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Data_receive_in_progress_interrupt_enable_RXACTIE[13:13];
            field {
                sw = rw;
            } Transmit_FIFO_half_empty__at_least_8_words_can_be_written_into_the_FIFO_interrupt_enable_TXFIFOHEIE[14:14];
            field {
                sw = rw;
            } Receive_FIFO_half_full__there_are_at_least_8_words_in_the_FIFO_interrupt_enable_RXFIFOHFIE[15:15];
            field {
                sw = rw;
            } Transmit_FIFO_full_interrupt_enable_TXFIFOFIE[16:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Receive_FIFO_full_interrupt_enable_RXFIFOFIE[17:17];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Transmit_FIFO_empty_interrupt_enable_TXFIFOEIE[18:18];
            field {
                sw = rw;
            } Receive_FIFO_empty_interrupt_enable_RXFIFOEIE[19:19];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Data_available_in_transmit_FIFO_interrupt_enable_TXDAVLIE[20:20];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Data_available_in_receive_FIFO_interrupt_enable_RXDAVLIE[21:21];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SDIO_interrupt_received_interrupt_enable_SDIOITIE[22:22];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Boot_acknowledgment_received_boot_acknowledgment_check_fail_interrupt_enable_ACKFAILIE[23:23];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Boot_acknowledgment_timeout_interrupt_enable_ACKTIMEOUTIE[24:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Voltage_switch_critical_timing_section_completion_interrupt_enable_VSWENDIE[25:25];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SDMMC_CK_stopped_in_Voltage_switch_procedure_interrupt_enable_CKSTOPIE[26:26];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } IDMA_transfer_error_interrupt_enable_IDMABTCIE[28:28];
    } IntMask @ 0x3c;
    reg {
        name="Fifo";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } Receive_and_transmit_FIFO_data_FIFODATA[31:0];
    } Fifo @ 0x80;
} Registers_addrmap;


};