Registers

Summary of the core interface’s registers

NameOffsetLengthDescription
mbx.INTR_STATE0x04Interrupt State Register
mbx.INTR_ENABLE0x44Interrupt Enable Register
mbx.INTR_TEST0x84Interrupt Test Register
mbx.ALERT_TEST0xc4Alert Test Register
mbx.CONTROL0x104DOE mailbox control register visible to OpenTitan
mbx.STATUS0x144DOE mailbox status register visible to OpenTitan
mbx.ADDRESS_RANGE_REGWEN0x184Used to lock the inbound/outbound base/limit configuration registers.
mbx.ADDRESS_RANGE_VALID0x1c4Used to mark the inbound/outbound base/limit configuration registers to have a valid configuration.
mbx.INBOUND_BASE_ADDRESS0x204Base address of SRAM region, which is used to back up the inbound mailbox data.
mbx.INBOUND_LIMIT_ADDRESS0x244Inclusive end address of the inbound mailbox memory range in the private SRAM.
mbx.INBOUND_WRITE_PTR0x284Write pointer for the next inbound data write.
mbx.OUTBOUND_BASE_ADDRESS0x2c4Base address of SRAM region, which is used to buffer the outbound mailbox data.
mbx.OUTBOUND_LIMIT_ADDRESS0x304Inclusive end address of the outbound mailbox memory range in the private SRAM.
mbx.OUTBOUND_READ_PTR0x344Read pointer for the next outbound data read.
mbx.OUTBOUND_OBJECT_SIZE0x384Indicates the size of the data object to be transferred out.
mbx.DOE_INTR_MSG_ADDR0x3c4Software read-only alias of the DOE_INTR_MSG_ADDR register of the SoC interface for convenient access of the OT firmware.
mbx.DOE_INTR_MSG_DATA0x404Software read-only alias of the DOE_INTR_MSG_DATA register of the SoC interface for convenient access of the OT firmware.

INTR_STATE

Interrupt State Register

  • Offset: 0x0
  • Reset default: 0x0
  • Reset mask: 0x7

Fields

{"reg": [{"name": "mbx_ready", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "mbx_abort", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "mbx_error", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"bits": 29}], "config": {"lanes": 1, "fontsize": 10, "vspace": 110}}
BitsTypeResetNameDescription
31:3Reserved
2rw1c0x0mbx_errorThe mailbox instance generated an error.
1rw1c0x0mbx_abortAn abort request was received from the requester.
0rw1c0x0mbx_readyA new object was received in the inbound mailbox.

INTR_ENABLE

Interrupt Enable Register

  • Offset: 0x4
  • Reset default: 0x0
  • Reset mask: 0x7

Fields

{"reg": [{"name": "mbx_ready", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "mbx_abort", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "mbx_error", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 29}], "config": {"lanes": 1, "fontsize": 10, "vspace": 110}}
BitsTypeResetNameDescription
31:3Reserved
2rw0x0mbx_errorEnable interrupt when INTR_STATE.mbx_error is set.
1rw0x0mbx_abortEnable interrupt when INTR_STATE.mbx_abort is set.
0rw0x0mbx_readyEnable interrupt when INTR_STATE.mbx_ready is set.

INTR_TEST

Interrupt Test Register

  • Offset: 0x8
  • Reset default: 0x0
  • Reset mask: 0x7

Fields

{"reg": [{"name": "mbx_ready", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "mbx_abort", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "mbx_error", "bits": 1, "attr": ["wo"], "rotate": -90}, {"bits": 29}], "config": {"lanes": 1, "fontsize": 10, "vspace": 110}}
BitsTypeResetNameDescription
31:3Reserved
2wo0x0mbx_errorWrite 1 to force INTR_STATE.mbx_error to 1.
1wo0x0mbx_abortWrite 1 to force INTR_STATE.mbx_abort to 1.
0wo0x0mbx_readyWrite 1 to force INTR_STATE.mbx_ready to 1.

ALERT_TEST

Alert Test Register

  • Offset: 0xc
  • Reset default: 0x0
  • Reset mask: 0x3

Fields

{"reg": [{"name": "fatal_fault", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "recov_fault", "bits": 1, "attr": ["wo"], "rotate": -90}, {"bits": 30}], "config": {"lanes": 1, "fontsize": 10, "vspace": 130}}
BitsTypeResetNameDescription
31:2Reserved
1wo0x0recov_faultWrite 1 to trigger one alert event of this kind.
0wo0x0fatal_faultWrite 1 to trigger one alert event of this kind.

CONTROL

DOE mailbox control register visible to OpenTitan

  • Offset: 0x10
  • Reset default: 0x0
  • Reset mask: 0xb

Fields

{"reg": [{"name": "abort", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "error", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 1}, {"name": "sys_async_msg", "bits": 1, "attr": ["wo"], "rotate": -90}, {"bits": 28}], "config": {"lanes": 1, "fontsize": 10, "vspace": 150}}
BitsTypeResetNameDescription
31:4Reserved
3wo0x0sys_async_msgIndicates an async message request
2Reserved
1rw0x0errorSet by firmware to signal an error, e.g. unable to provide a response to request. Set by hardware, on SYS.WDATA or SYS.RDATA performing an invalid access. Cleared by the hardware when SYS sets CONTROL.ABORT.
0rw0x0abortAlias of the DoE mailbox abort bit

STATUS

DOE mailbox status register visible to OpenTitan

  • Offset: 0x14
  • Reset default: 0x1
  • Reset mask: 0xf

Fields

{"reg": [{"name": "busy", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "sys_intr_state", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "sys_intr_enable", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "sys_async_enable", "bits": 1, "attr": ["ro"], "rotate": -90}, {"bits": 28}], "config": {"lanes": 1, "fontsize": 10, "vspace": 180}}
BitsTypeResetNameDescription
31:4Reserved
3ro0x0sys_async_enableAlias of the DoE mailbox async message support enable bit
2ro0x0sys_intr_enableAlias of the DoE mailbox interrupt enable bit
1ro0x0sys_intr_stateAlias of the DoE mailbox interrupt status bit
0ro0x1busyAlias of the DoE mailbox busy bit

ADDRESS_RANGE_REGWEN

Used to lock the inbound/outbound base/limit configuration registers.

  • Offset: 0x18
  • Reset default: 0x6
  • Reset mask: 0xf

Fields

{"reg": [{"name": "regwen", "bits": 4, "attr": ["rw0c"], "rotate": 0}, {"bits": 28}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:4Reserved
3:0rw0c0x6regwenOnce cleared the mailbox inbound/outbound base/limit registers will be locked until the next reset. Default Value = kMultiBitBool4True -> Unlocked at reset.

ADDRESS_RANGE_VALID

Used to mark the inbound/outbound base/limit configuration registers to have a valid configuration.

  • Offset: 0x1c
  • Reset default: 0x0
  • Reset mask: 0x1

Fields

{"reg": [{"name": "range_valid", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 130}}
BitsTypeResetNameDescription
31:1Reserved
0rw0x0range_validOnce set the mailbox inbound/outbound base/limit registers are valid.

INBOUND_BASE_ADDRESS

Base address of SRAM region, which is used to back up the inbound mailbox data. This address is 4-byte aligned, the lower 2 bits are ignored.

Fields

{"reg": [{"bits": 2}, {"name": "base_address", "bits": 30, "attr": ["rw"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:2rw0x0base_addressBase address of SRAM region, which is used to back up the inbound mailbox data.
1:0Reserved

INBOUND_LIMIT_ADDRESS

Inclusive end address of the inbound mailbox memory range in the private SRAM. This address is 4-byte aligned and it specifies the start address of the final valid DWORD location. The lower 2 bits are ignored.

Fields

{"reg": [{"bits": 2}, {"name": "limit", "bits": 30, "attr": ["rw"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:2rw0x0limitLimit Address to mark the end of the inbound mailbox memory range in the private SRAM.
1:0Reserved

INBOUND_WRITE_PTR

Write pointer for the next inbound data write. This pointer is 4-byte aligned, the lower 2 bits are always zero.

  • Offset: 0x28
  • Reset default: 0x0
  • Reset mask: 0xfffffffc

Fields

{"reg": [{"bits": 2}, {"name": "inbound_read_ptr", "bits": 30, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:2ro0x0inbound_read_ptrWrite pointer for the next inbound data write.
1:0Reserved

OUTBOUND_BASE_ADDRESS

Base address of SRAM region, which is used to buffer the outbound mailbox data. This address is 4-byte aligned, the lower 2 bits are ignored.

Fields

{"reg": [{"bits": 2}, {"name": "base_address", "bits": 30, "attr": ["rw"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:2rw0x0base_addressBase address of SRAM region, which is used to buffer the outbound mailbox data.
1:0Reserved

OUTBOUND_LIMIT_ADDRESS

Inclusive end address of the outbound mailbox memory range in the private SRAM. This address is 4-byte aligned and it specifies the start address of the final valid DWORD location. The lower 2 bits are ignored.

Fields

{"reg": [{"bits": 2}, {"name": "limit", "bits": 30, "attr": ["rw"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:2rw0x0limitLimit Address to mark the end of the outbound mailbox memory range in the private SRAM.
1:0Reserved

OUTBOUND_READ_PTR

Read pointer for the next outbound data read. This pointer is 4-byte aligned, the lower 2 bits are always zero.

  • Offset: 0x34
  • Reset default: 0x0
  • Reset mask: 0xfffffffc

Fields

{"reg": [{"bits": 2}, {"name": "outbound_write_ptr", "bits": 30, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:2ro0x0outbound_write_ptrRead pointer for the next outbound data read.
1:0Reserved

OUTBOUND_OBJECT_SIZE

Indicates the size of the data object to be transferred out. Note that this size specifies the number of 4-byte words (DWORD). Maximum size supported by any OT DOE instance is 1K DWORDS.

  • Offset: 0x38
  • Reset default: 0x0
  • Reset mask: 0x7ff

Fields

{"reg": [{"name": "cnt", "bits": 11, "attr": ["rw"], "rotate": 0}, {"bits": 21}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:11Reserved
10:0rw0x0cntIndicates the size of the data object to be transferred out in 4-byte words.

DOE_INTR_MSG_ADDR

Software read-only alias of the DOE_INTR_MSG_ADDR register of the SoC interface for convenient access of the OT firmware. Defined only for FW-to-FW mailboxes.

  • Offset: 0x3c
  • Reset default: 0x0
  • Reset mask: 0xffffffff

Fields

{"reg": [{"name": "doe_intr_msg_addr", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0doe_intr_msg_addrUtilized by the mailbox responder to send an interrupt message to the requester via a write to the configured address.

DOE_INTR_MSG_DATA

Software read-only alias of the DOE_INTR_MSG_DATA register of the SoC interface for convenient access of the OT firmware. Defined only for FW-to-FW mailboxes.

  • Offset: 0x40
  • Reset default: 0x0
  • Reset mask: 0xffffffff

Fields

{"reg": [{"name": "doe_intr_msg_data", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0doe_intr_msg_dataInterrupt message data to be sent to the address configured in the DOE_INTR_MSG_ADDR register.

Summary of the soc interface’s registers

NameOffsetLengthDescription
mbx.SOC_CONTROL0x84DOE mailbox control register.
mbx.SOC_STATUS0xc4DOE mailbox status register
mbx.WDATA0x104DOE mailbox write data register.
mbx.RDATA0x144DOE mailbox read data register
mbx.SOC_DOE_INTR_MSG_ADDR0x184Utilized by the mailbox responder to send an interrupt message to the requester via a write to the configured address.
mbx.SOC_DOE_INTR_MSG_DATA0x1c4Interrupt message data to be sent to the address configured in the DOE_INTR_MSG_ADDR register.

SOC_CONTROL

DOE mailbox control register.

  • Offset: 0x8
  • Reset default: 0x0
  • Reset mask: 0x8000000b

Fields

{"reg": [{"name": "abort", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "doe_intr_en", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 1}, {"name": "doe_async_msg_en", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 27}, {"name": "go", "bits": 1, "attr": ["wo"], "rotate": -90}], "config": {"lanes": 1, "fontsize": 10, "vspace": 180}}
BitsTypeResetNameDescription
31wo0x0goA write of 1 to this bit indicates to the DOE instance that it can start consuming the data object transferred through the DOE Write Data Mailbox register.
30:4Reserved
3rw0x0doe_async_msg_enIf DOE Async Message Support is Set, this bit, when Set, enables the use of the DOE Async Message mechanism. When this bit is set, it allows the DOE instance to raise the SOC_STATUS.doe_async_msg_status, indicating an asnchronous message request.
2Reserved
1rw0x0doe_intr_enIf DOE interrupt support is set, when this bit is set and MSI/MSI-X is enabled in MSI capability registers, the DOE instance must issue an MSI/MSI-X interrupt.
0wo0x0abortA write of 1 to this bit causes all data object transfer operations associated with this DOE instance to be aborted.

SOC_STATUS

DOE mailbox status register

  • Offset: 0xc
  • Reset default: 0x1
  • Reset mask: 0x8000000f

Fields

{"reg": [{"name": "busy", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "doe_intr_status", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "error", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "doe_async_msg_status", "bits": 1, "attr": ["ro"], "rotate": -90}, {"bits": 27}, {"name": "ready", "bits": 1, "attr": ["ro"], "rotate": -90}], "config": {"lanes": 1, "fontsize": 10, "vspace": 220}}
BitsTypeResetName
31ro0x0ready
30:4Reserved
3ro0x0doe_async_msg_status
2ro0x0error
1rw1c0x0doe_intr_status
0ro0x1busy

SOC_STATUS . ready

When Set, this bit indicates the DOE instance has a data object available to be read by SoC firmware/software. The transition of this bit from Clear to Set is an interrupt triggering event.

SOC_STATUS . doe_async_msg_status

This bit, when Set, indicates the DOE instance has one or more asynchronous messages to transfer. The transition of this bit from Clear to Set is an interrupt triggering event.This bit is set when an interrupt event occurs.

SOC_STATUS . error

When Set, this bit indicates that there has been an internal error associated with data object received, or that a data object has been received for which the DOE instance is unable to provide a response. The transition of this bit from Clear to Set is an interrupt triggering event.

SOC_STATUS . doe_intr_status

This bit is set when an interrupt event occurs.

SOC_STATUS . busy

When Set, this bit indicates the DOE instance is temporarily unable to receive a new data object through the DOE Write Data Mailbox register.

WDATA

DOE mailbox write data register. The DOE instance receives data objects via writes to this register. A successful write adds one DWORD to the data object being assembled in the DOE instance. A write of 1 to the DOE Go bit in the DOE Control Register marks the completion of the data transfer, i.e, final DWORD for the object has been written.

  • Word Aligned Offset Range: 0x10to0x10
  • Size (words): 1
  • Access: wo
  • Byte writes are not supported.

RDATA

DOE mailbox read data register If the Data Object Ready bit is Set, a read of this register returns the current DW of the data object. A write of any value to this register indicates a successful read of the current DWORD. The next read to this register shall return to the next DW from the data object being read

  • Word Aligned Offset Range: 0x14to0x14
  • Size (words): 1
  • Access: rw
  • Byte writes are not supported.

SOC_DOE_INTR_MSG_ADDR

Utilized by the mailbox responder to send an interrupt message to the requester via a write to the configured address. Defined only for FW-to-FW mailboxes.

  • Offset: 0x18
  • Reset default: 0x0
  • Reset mask: 0xffffffff

Fields

{"reg": [{"name": "doe_intr_msg_addr", "bits": 32, "attr": ["rw"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0rw0x0doe_intr_msg_addrUtilized by the mailbox responder to send an interrupt message to the requester via a write to the configured address.

SOC_DOE_INTR_MSG_DATA

Interrupt message data to be sent to the address configured in the DOE_INTR_MSG_ADDR register. Defined only for FW-to-FW mailboxes.

  • Offset: 0x1c
  • Reset default: 0x0
  • Reset mask: 0xffffffff

Fields

{"reg": [{"name": "doe_intr_msg_data", "bits": 32, "attr": ["rw"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0rw0x0doe_intr_msg_dataInterrupt message data to be sent to the address configured in the DOE_INTR_MSG_ADDR register.