addrmap NPCX_SMBus {

/* 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.
 * 
 * Register "FIFOControlAndStatus" overlaps another register at the same offset (0x10) and will be skipped, as it is illegal in SystemRDL.
 * Register "TxFIFOControl" overlaps another register at the same offset (0x12) and will be skipped, as it is illegal in SystemRDL.
 * Register "FrameTimeout" overlaps another register at the same offset (0x13) and will be skipped, as it is illegal in SystemRDL.
 * Register "BusTimeout2" overlaps another register at the same offset (0x14) and will be skipped, as it is illegal in SystemRDL.
 * Register "PECData" overlaps another register at the same offset (0x16) and will be skipped, as it is illegal in SystemRDL.
 * Register "TxFIFOStatus" overlaps another register at the same offset (0x1a) and will be skipped, as it is illegal in SystemRDL.
 * Register "RxFIFOStatus" overlaps another register at the same offset (0x1c) and will be skipped, as it is illegal in SystemRDL.
 * Register "RxFIFOControl" overlaps another register at the same offset (0x1e) and will be skipped, as it is illegal in SystemRDL.
 */

addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="SerialData";
        regwidth=0x8;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } SMB_DAT_SMBus_Data[7:0];
    } SerialData @ 0x0;
    reg {
        name="Status";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x8;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = rw;
            } XMIT_Transmit_Mode[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } MASTER_Master_Mode[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } NMATCH_New_Match[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } STASTR_Stall_After_Start[3:3];
            field {
                sw = rw;
                onwrite = woclr;
            } NEGACK_Negative_Acknowledge[4:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BER_Bus_Error[5:5];
            field {
                sw = rw;
            } SDAST_SDA_Status[6:6];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SLVSTP_Slave_Stop[7:7];
    } Status @ 0x2;
    reg {
        name="ControlStatus";
        regwidth=0x8;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } BUSY_Module_Busy[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BB_Bus_Ready[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MATCH_Address_Match[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GCMATCH_Global_Call_Match[3:3];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TSDA_Test_SDA_Line[4:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TGSCL_Toggle_SCL_Line[5:5];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MATCHAF_Match_Address_Field[6:6];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ARPMATCH_ARP_Address_Match[7:7];
    } ControlStatus @ 0x4;
    reg {
        name="Control1";
        desc = "This register has the following custom Renode callbacks: Change";
        regwidth=0x8;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
                onwrite = woclr;
            } START[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
                onwrite = woclr;
            } STOP[1:1];
            field {
                sw = rw;
            } INTEN_Interrupt_Enable[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } EOBINTE_End_of_Busy_Interrupt_Enable[3:3];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ACK_Acknowledge[4:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GCMEN_Global_Call_Match_Enable[5:5];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } NMINTE_New_Match_Interrupt_Enable[6:6];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } STASTRE_Stall_After_Start_Enable[7:7];
    } Control1 @ 0x6;
    reg {
        name="OwnAddress1";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } OwnAddress1 @ 0x8;
    reg {
        name="Control2";
        regwidth=0x8;
            field {
                sw = rw;
            } ENABLE[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SCLFRQ6_0_SCL_Frequency_bits_6_through_0[7:1];
    } Control2 @ 0xa;
    reg {
        name="OwnAddress2";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } OwnAddress2 @ 0xc;
    reg {
        name="Control3";
        regwidth=0x8;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SCLFRQ8_7_SCL_Frequency_bits_8_and_7[1:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ARPMEN_ARP_Match_Enable[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SLP_START_Start_Detect_in_Sleep_Enable[3:3];
            field {
                sw = rw;
            } _400K_MODE_400_kHz_Master_Enable[4:4];
            field {
                sw = rw;
            } BNK_SEL_Bank_Select[5:5];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = rw;
            } SDA_LVL_SDA_Level[6:6];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = rw;
            } SCL_LVL_SCL_Level[7:7];
    } Control3 @ 0xe;
    reg {
        name="BusTimeout";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } BusTimeout @ 0xf;
    reg {
        name="OwnAddress3";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } OwnAddress3 @ 0x10;
    /* Conversion error: Register "FIFOControlAndStatus" overlaps another register at the same offset (0x10) and will be skipped, as it is illegal in SystemRDL.
    reg {
        name="FIFOControlAndStatus";
        desc = "This register has the following custom Renode callbacks: Change";
        regwidth=0x8;

    } FIFOControlAndStatus @ 0x10;
    */
    reg {
        name="OwnAddress7";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } OwnAddress7 @ 0x11;
    reg {
        name="OwnAddress4";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } OwnAddress4 @ 0x12;
    /* Conversion error: Register "TxFIFOControl" overlaps another register at the same offset (0x12) and will be skipped, as it is illegal in SystemRDL.
    reg {
        name="TxFIFOControl";
        regwidth=0x8;

    } TxFIFOControl @ 0x12;
    */
    reg {
        name="OwnAddress8";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } OwnAddress8 @ 0x13;
    /* Conversion error: Register "FrameTimeout" overlaps another register at the same offset (0x13) and will be skipped, as it is illegal in SystemRDL.
    reg {
        name="FrameTimeout";
        regwidth=0x8;

    } FrameTimeout @ 0x13;
    */
    reg {
        name="OwnAddress5";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } OwnAddress5 @ 0x14;
    /* Conversion error: Register "BusTimeout2" overlaps another register at the same offset (0x14) and will be skipped, as it is illegal in SystemRDL.
    reg {
        name="BusTimeout2";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;

    } BusTimeout2 @ 0x14;
    */
    reg {
        name="OwnAddress6";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } OwnAddress6 @ 0x16;
    /* Conversion error: Register "PECData" overlaps another register at the same offset (0x16) and will be skipped, as it is illegal in SystemRDL.
    reg {
        name="PECData";
        regwidth=0x8;

    } PECData @ 0x16;
    */
    reg {
        name="ControlStatus2";
        regwidth=0x8;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MATCHA1F_Match_Address_1_Field[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MATCHA2F_Match_Address_2_Field[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MATCHA3F_Match_Address_3_Field[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MATCHA4F_Match_Address_4_Field[3:3];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MATCHA5F_Match_Address_5_Field[4:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MATCHA6F_Match_Address_6_Field[5:5];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MATCHA7F_Match_Address_7_Field[6:6];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } INTSTS_Interrupt_Status[7:7];
    } ControlStatus2 @ 0x18;
    reg {
        name="ControlStatus3";
        regwidth=0x8;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MATCHA8F_Match_Address_8_Field[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } EO_BUSY_End_of_Busy[7:7];
    } ControlStatus3 @ 0x19;
    reg {
        name="Control4";
        regwidth=0x8;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GLDT_SDA_Hold_Time[5:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } LVL_WE_Level_Control_Write_Enable[7:7];
    } Control4 @ 0x1a;
    /* Conversion error: Register "TxFIFOStatus" overlaps another register at the same offset (0x1a) and will be skipped, as it is illegal in SystemRDL.
    reg {
        name="TxFIFOStatus";
        regwidth=0x8;

    } TxFIFOStatus @ 0x1a;
    */
    reg {
        name="SCLLowTime";
        regwidth=0x8;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SCLLT7_0_SCL_Low_Time[7:0];
    } SCLLowTime @ 0x1c;
    /* Conversion error: Register "RxFIFOStatus" overlaps another register at the same offset (0x1c) and will be skipped, as it is illegal in SystemRDL.
    reg {
        name="RxFIFOStatus";
        desc = "This register has the following custom Renode callbacks: Change";
        regwidth=0x8;

    } RxFIFOStatus @ 0x1c;
    */
    reg {
        name="FIFOControl";
        regwidth=0x8;
            field {
                sw = rw;
            } FIFO_EN_Enable_FIFO_Mode[4:4];
    } FIFOControl @ 0x1d;
    reg {
        name="SCLHighTime";
        regwidth=0x8;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SCLHT7_0_SCL_High_Time[7:0];
    } SCLHighTime @ 0x1e;
    /* Conversion error: Register "RxFIFOControl" overlaps another register at the same offset (0x1e) and will be skipped, as it is illegal in SystemRDL.
    reg {
        name="RxFIFOControl";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x8;

    } RxFIFOControl @ 0x1e;
    */
} Registers_addrmap;


};