[spi_device] Add prefix to the interrupts
This commit adds mode or distinguishable prefixes to the existing
interrupts. `generic_` prefix is added to pre-existed interrupts.
`upload_` and `readbuf_` prefixes are added to the flash/passthrough
related interrupts.
Signed-off-by: Eunchan Kim <eunchan@opentitan.org>
diff --git a/hw/ip/spi_device/data/spi_device.hjson b/hw/ip/spi_device/data/spi_device.hjson
index c3c47a6..f175a59 100644
--- a/hw/ip/spi_device/data/spi_device.hjson
+++ b/hw/ip/spi_device/data/spi_device.hjson
@@ -25,28 +25,28 @@
}
]
interrupt_list: [
- { name: "rx_full"
+ { name: "generic_rx_full"
desc: "RX SRAM FIFO Full"
}
- { name: "rx_watermark"
+ { name: "generic_rx_watermark"
desc: "RX SRAM FIFO is above the level"
}
- { name: "tx_watermark"
+ { name: "generic_tx_watermark"
desc: "TX SRAM FIFO is under the level"
}
- { name: "rx_error"
+ { name: "generic_rx_error"
desc: "SDI in FwMode has error"
}
- { name: "rx_overflow"
+ { name: "generic_rx_overflow"
desc: "RX Async FIFO overflow"
}
- { name: "tx_underflow"
+ { name: "generic_tx_underflow"
desc: "TX Async FIFO underflow"
}
- { name: "cmdfifo_not_empty"
+ { name: "upload_cmdfifo_not_empty"
desc: "Upload Command FIFO is not empty"
}
- { name: "payload_not_empty"
+ { name: "upload_payload_not_empty"
desc: '''Upload paylod is not empty.
The event occurs after SPI transaction completed
diff --git a/hw/ip/spi_device/dv/tb/tb.sv b/hw/ip/spi_device/dv/tb/tb.sv
index 2760e81..027b009 100644
--- a/hw/ip/spi_device/dv/tb/tb.sv
+++ b/hw/ip/spi_device/dv/tb/tb.sv
@@ -64,14 +64,14 @@
.cio_tpm_csb_i (1'b 1 ), // TODO: Add TPM agent
- .intr_rx_full_o (intr_rxf ),
- .intr_rx_watermark_o (intr_rxlvl),
- .intr_tx_watermark_o (intr_txlvl),
- .intr_rx_error_o (intr_rxerr),
- .intr_rx_overflow_o (intr_rxoverflow),
- .intr_tx_underflow_o (intr_txunderflow),
- .intr_cmdfifo_not_empty_o (intr_cmdfifo_not_empty),
- .intr_payload_not_empty_o (intr_payload_not_empty),
+ .intr_generic_rx_full_o (intr_rxf ),
+ .intr_generic_rx_watermark_o (intr_rxlvl),
+ .intr_generic_tx_watermark_o (intr_txlvl),
+ .intr_generic_rx_error_o (intr_rxerr),
+ .intr_generic_rx_overflow_o (intr_rxoverflow),
+ .intr_generic_tx_underflow_o (intr_txunderflow),
+ .intr_upload_cmdfifo_not_empty_o (intr_cmdfifo_not_empty),
+ .intr_upload_payload_not_empty_o (intr_payload_not_empty),
.intr_readbuf_watermark_o (intr_readbuf_watermark),
.intr_readbuf_flip_o (intr_readbuf_flip),
.intr_tpm_header_not_empty_o(intr_tpm_header_not_empty),
diff --git a/hw/ip/spi_device/rtl/spi_device.sv b/hw/ip/spi_device/rtl/spi_device.sv
index eccc869..6a38e6f 100644
--- a/hw/ip/spi_device/rtl/spi_device.sv
+++ b/hw/ip/spi_device/rtl/spi_device.sv
@@ -38,16 +38,16 @@
// Interrupts
// INTR: Generic mode
- output logic intr_rx_full_o, // RX FIFO Full
- output logic intr_rx_watermark_o, // RX FIFO above level
- output logic intr_tx_watermark_o, // TX FIFO below level
- output logic intr_rx_error_o, // RX Frame error
- output logic intr_rx_overflow_o, // RX Async FIFO Overflow
- output logic intr_tx_underflow_o, // TX Async FIFO Underflow
+ output logic intr_generic_rx_full_o, // RX FIFO Full
+ output logic intr_generic_rx_watermark_o, // RX FIFO above level
+ output logic intr_generic_tx_watermark_o, // TX FIFO below level
+ output logic intr_generic_rx_error_o, // RX Frame error
+ output logic intr_generic_rx_overflow_o, // RX Async FIFO Overflow
+ output logic intr_generic_tx_underflow_o, // TX Async FIFO Underflow
// INTR: Flash mode
- output logic intr_cmdfifo_not_empty_o,
- output logic intr_payload_not_empty_o,
+ output logic intr_upload_cmdfifo_not_empty_o,
+ output logic intr_upload_payload_not_empty_o,
output logic intr_readbuf_watermark_o,
output logic intr_readbuf_flip_o,
@@ -472,79 +472,79 @@
prim_intr_hw #(.Width(1)) u_intr_rxf (
.clk_i,
.rst_ni,
- .event_intr_i (intr_sram_rxf_full ),
- .reg2hw_intr_enable_q_i (reg2hw.intr_enable.rx_full.q),
- .reg2hw_intr_test_q_i (reg2hw.intr_test.rx_full.q ),
- .reg2hw_intr_test_qe_i (reg2hw.intr_test.rx_full.qe ),
- .reg2hw_intr_state_q_i (reg2hw.intr_state.rx_full.q ),
- .hw2reg_intr_state_de_o (hw2reg.intr_state.rx_full.de),
- .hw2reg_intr_state_d_o (hw2reg.intr_state.rx_full.d ),
- .intr_o (intr_rx_full_o )
+ .event_intr_i (intr_sram_rxf_full ),
+ .reg2hw_intr_enable_q_i (reg2hw.intr_enable.generic_rx_full.q),
+ .reg2hw_intr_test_q_i (reg2hw.intr_test.generic_rx_full.q ),
+ .reg2hw_intr_test_qe_i (reg2hw.intr_test.generic_rx_full.qe ),
+ .reg2hw_intr_state_q_i (reg2hw.intr_state.generic_rx_full.q ),
+ .hw2reg_intr_state_de_o (hw2reg.intr_state.generic_rx_full.de),
+ .hw2reg_intr_state_d_o (hw2reg.intr_state.generic_rx_full.d ),
+ .intr_o (intr_generic_rx_full_o )
);
prim_intr_hw #(.Width(1)) u_intr_rxlvl (
.clk_i,
.rst_ni,
- .event_intr_i (intr_fwm_rxlvl ),
- .reg2hw_intr_enable_q_i (reg2hw.intr_enable.rx_watermark.q),
- .reg2hw_intr_test_q_i (reg2hw.intr_test.rx_watermark.q ),
- .reg2hw_intr_test_qe_i (reg2hw.intr_test.rx_watermark.qe ),
- .reg2hw_intr_state_q_i (reg2hw.intr_state.rx_watermark.q ),
- .hw2reg_intr_state_de_o (hw2reg.intr_state.rx_watermark.de),
- .hw2reg_intr_state_d_o (hw2reg.intr_state.rx_watermark.d ),
- .intr_o (intr_rx_watermark_o )
+ .event_intr_i (intr_fwm_rxlvl ),
+ .reg2hw_intr_enable_q_i (reg2hw.intr_enable.generic_rx_watermark.q),
+ .reg2hw_intr_test_q_i (reg2hw.intr_test.generic_rx_watermark.q ),
+ .reg2hw_intr_test_qe_i (reg2hw.intr_test.generic_rx_watermark.qe ),
+ .reg2hw_intr_state_q_i (reg2hw.intr_state.generic_rx_watermark.q ),
+ .hw2reg_intr_state_de_o (hw2reg.intr_state.generic_rx_watermark.de),
+ .hw2reg_intr_state_d_o (hw2reg.intr_state.generic_rx_watermark.d ),
+ .intr_o (intr_generic_rx_watermark_o )
);
prim_intr_hw #(.Width(1)) u_intr_txlvl (
.clk_i,
.rst_ni,
- .event_intr_i (intr_fwm_txlvl ),
- .reg2hw_intr_enable_q_i (reg2hw.intr_enable.tx_watermark.q),
- .reg2hw_intr_test_q_i (reg2hw.intr_test.tx_watermark.q ),
- .reg2hw_intr_test_qe_i (reg2hw.intr_test.tx_watermark.qe ),
- .reg2hw_intr_state_q_i (reg2hw.intr_state.tx_watermark.q ),
- .hw2reg_intr_state_de_o (hw2reg.intr_state.tx_watermark.de),
- .hw2reg_intr_state_d_o (hw2reg.intr_state.tx_watermark.d ),
- .intr_o (intr_tx_watermark_o )
+ .event_intr_i (intr_fwm_txlvl ),
+ .reg2hw_intr_enable_q_i (reg2hw.intr_enable.generic_tx_watermark.q),
+ .reg2hw_intr_test_q_i (reg2hw.intr_test.generic_tx_watermark.q ),
+ .reg2hw_intr_test_qe_i (reg2hw.intr_test.generic_tx_watermark.qe ),
+ .reg2hw_intr_state_q_i (reg2hw.intr_state.generic_tx_watermark.q ),
+ .hw2reg_intr_state_de_o (hw2reg.intr_state.generic_tx_watermark.de),
+ .hw2reg_intr_state_d_o (hw2reg.intr_state.generic_tx_watermark.d ),
+ .intr_o (intr_generic_tx_watermark_o )
);
prim_intr_hw #(.Width(1)) u_intr_rxerr (
.clk_i,
.rst_ni,
- .event_intr_i (intr_fwm_rxerr ),
- .reg2hw_intr_enable_q_i (reg2hw.intr_enable.rx_error.q),
- .reg2hw_intr_test_q_i (reg2hw.intr_test.rx_error.q ),
- .reg2hw_intr_test_qe_i (reg2hw.intr_test.rx_error.qe ),
- .reg2hw_intr_state_q_i (reg2hw.intr_state.rx_error.q ),
- .hw2reg_intr_state_de_o (hw2reg.intr_state.rx_error.de),
- .hw2reg_intr_state_d_o (hw2reg.intr_state.rx_error.d ),
- .intr_o (intr_rx_error_o )
+ .event_intr_i (intr_fwm_rxerr ),
+ .reg2hw_intr_enable_q_i (reg2hw.intr_enable.generic_rx_error.q),
+ .reg2hw_intr_test_q_i (reg2hw.intr_test.generic_rx_error.q ),
+ .reg2hw_intr_test_qe_i (reg2hw.intr_test.generic_rx_error.qe ),
+ .reg2hw_intr_state_q_i (reg2hw.intr_state.generic_rx_error.q ),
+ .hw2reg_intr_state_de_o (hw2reg.intr_state.generic_rx_error.de),
+ .hw2reg_intr_state_d_o (hw2reg.intr_state.generic_rx_error.d ),
+ .intr_o (intr_generic_rx_error_o )
);
prim_intr_hw #(.Width(1)) u_intr_rxoverflow (
.clk_i,
.rst_ni,
- .event_intr_i (intr_fwm_rxoverflow ),
- .reg2hw_intr_enable_q_i (reg2hw.intr_enable.rx_overflow.q),
- .reg2hw_intr_test_q_i (reg2hw.intr_test.rx_overflow.q ),
- .reg2hw_intr_test_qe_i (reg2hw.intr_test.rx_overflow.qe ),
- .reg2hw_intr_state_q_i (reg2hw.intr_state.rx_overflow.q ),
- .hw2reg_intr_state_de_o (hw2reg.intr_state.rx_overflow.de),
- .hw2reg_intr_state_d_o (hw2reg.intr_state.rx_overflow.d ),
- .intr_o (intr_rx_overflow_o )
+ .event_intr_i (intr_fwm_rxoverflow ),
+ .reg2hw_intr_enable_q_i (reg2hw.intr_enable.generic_rx_overflow.q),
+ .reg2hw_intr_test_q_i (reg2hw.intr_test.generic_rx_overflow.q ),
+ .reg2hw_intr_test_qe_i (reg2hw.intr_test.generic_rx_overflow.qe ),
+ .reg2hw_intr_state_q_i (reg2hw.intr_state.generic_rx_overflow.q ),
+ .hw2reg_intr_state_de_o (hw2reg.intr_state.generic_rx_overflow.de),
+ .hw2reg_intr_state_d_o (hw2reg.intr_state.generic_rx_overflow.d ),
+ .intr_o (intr_generic_rx_overflow_o )
);
prim_intr_hw #(.Width(1)) u_intr_txunderflow (
.clk_i,
.rst_ni,
- .event_intr_i (intr_fwm_txunderflow ),
- .reg2hw_intr_enable_q_i (reg2hw.intr_enable.tx_underflow.q),
- .reg2hw_intr_test_q_i (reg2hw.intr_test.tx_underflow.q ),
- .reg2hw_intr_test_qe_i (reg2hw.intr_test.tx_underflow.qe ),
- .reg2hw_intr_state_q_i (reg2hw.intr_state.tx_underflow.q ),
- .hw2reg_intr_state_de_o (hw2reg.intr_state.tx_underflow.de),
- .hw2reg_intr_state_d_o (hw2reg.intr_state.tx_underflow.d ),
- .intr_o (intr_tx_underflow_o )
+ .event_intr_i (intr_fwm_txunderflow ),
+ .reg2hw_intr_enable_q_i (reg2hw.intr_enable.generic_tx_underflow.q),
+ .reg2hw_intr_test_q_i (reg2hw.intr_test.generic_tx_underflow.q ),
+ .reg2hw_intr_test_qe_i (reg2hw.intr_test.generic_tx_underflow.qe ),
+ .reg2hw_intr_state_q_i (reg2hw.intr_state.generic_tx_underflow.q ),
+ .hw2reg_intr_state_de_o (hw2reg.intr_state.generic_tx_underflow.de),
+ .hw2reg_intr_state_d_o (hw2reg.intr_state.generic_tx_underflow.d ),
+ .intr_o (intr_generic_tx_underflow_o )
);
prim_edge_detector #(
@@ -564,27 +564,27 @@
prim_intr_hw #(.Width(1)) u_intr_cmdfifo_not_empty (
.clk_i,
.rst_ni,
- .event_intr_i (intr_upload_cmdfifo_not_empty ),
- .reg2hw_intr_enable_q_i (reg2hw.intr_enable.cmdfifo_not_empty.q),
- .reg2hw_intr_test_q_i (reg2hw.intr_test.cmdfifo_not_empty.q ),
- .reg2hw_intr_test_qe_i (reg2hw.intr_test.cmdfifo_not_empty.qe ),
- .reg2hw_intr_state_q_i (reg2hw.intr_state.cmdfifo_not_empty.q ),
- .hw2reg_intr_state_d_o (hw2reg.intr_state.cmdfifo_not_empty.d ),
- .hw2reg_intr_state_de_o (hw2reg.intr_state.cmdfifo_not_empty.de),
- .intr_o (intr_cmdfifo_not_empty_o )
+ .event_intr_i (intr_upload_cmdfifo_not_empty ),
+ .reg2hw_intr_enable_q_i (reg2hw.intr_enable.upload_cmdfifo_not_empty.q),
+ .reg2hw_intr_test_q_i (reg2hw.intr_test.upload_cmdfifo_not_empty.q ),
+ .reg2hw_intr_test_qe_i (reg2hw.intr_test.upload_cmdfifo_not_empty.qe ),
+ .reg2hw_intr_state_q_i (reg2hw.intr_state.upload_cmdfifo_not_empty.q ),
+ .hw2reg_intr_state_d_o (hw2reg.intr_state.upload_cmdfifo_not_empty.d ),
+ .hw2reg_intr_state_de_o (hw2reg.intr_state.upload_cmdfifo_not_empty.de),
+ .intr_o (intr_upload_cmdfifo_not_empty_o )
);
prim_intr_hw #(.Width(1)) u_intr_payload_not_empty (
.clk_i,
.rst_ni,
- .event_intr_i (intr_upload_payload_not_empty ),
- .reg2hw_intr_enable_q_i (reg2hw.intr_enable.payload_not_empty.q),
- .reg2hw_intr_test_q_i (reg2hw.intr_test.payload_not_empty.q ),
- .reg2hw_intr_test_qe_i (reg2hw.intr_test.payload_not_empty.qe ),
- .reg2hw_intr_state_q_i (reg2hw.intr_state.payload_not_empty.q ),
- .hw2reg_intr_state_d_o (hw2reg.intr_state.payload_not_empty.d ),
- .hw2reg_intr_state_de_o (hw2reg.intr_state.payload_not_empty.de),
- .intr_o (intr_payload_not_empty_o )
+ .event_intr_i (intr_upload_payload_not_empty ),
+ .reg2hw_intr_enable_q_i (reg2hw.intr_enable.upload_payload_not_empty.q),
+ .reg2hw_intr_test_q_i (reg2hw.intr_test.upload_payload_not_empty.q ),
+ .reg2hw_intr_test_qe_i (reg2hw.intr_test.upload_payload_not_empty.qe ),
+ .reg2hw_intr_state_q_i (reg2hw.intr_state.upload_payload_not_empty.q ),
+ .hw2reg_intr_state_d_o (hw2reg.intr_state.upload_payload_not_empty.d ),
+ .hw2reg_intr_state_de_o (hw2reg.intr_state.upload_payload_not_empty.de),
+ .intr_o (intr_upload_payload_not_empty_o )
);
prim_intr_hw #(.Width(1)) u_intr_readbuf_watermark (
@@ -1777,12 +1777,18 @@
`ASSERT_KNOWN(scanmodeKnown, scanmode_i, clk_i, 0)
`ASSERT_KNOWN(CioSdoEnOKnown, cio_sd_en_o)
- `ASSERT_KNOWN(IntrRxfOKnown, intr_rx_full_o )
- `ASSERT_KNOWN(IntrRxlvlOKnown, intr_rx_watermark_o)
- `ASSERT_KNOWN(IntrTxlvlOKnown, intr_tx_watermark_o)
- `ASSERT_KNOWN(IntrRxerrOKnown, intr_rx_error_o )
- `ASSERT_KNOWN(IntrRxoverflowOKnown, intr_rx_overflow_o )
- `ASSERT_KNOWN(IntrTxunderflowOKnown, intr_tx_underflow_o)
+ `ASSERT_KNOWN(IntrRxfOKnown, intr_generic_rx_full_o )
+ `ASSERT_KNOWN(IntrRxlvlOKnown, intr_generic_rx_watermark_o)
+ `ASSERT_KNOWN(IntrTxlvlOKnown, intr_generic_tx_watermark_o)
+ `ASSERT_KNOWN(IntrRxerrOKnown, intr_generic_rx_error_o )
+ `ASSERT_KNOWN(IntrRxoverflowOKnown, intr_generic_rx_overflow_o )
+ `ASSERT_KNOWN(IntrTxunderflowOKnown, intr_generic_tx_underflow_o)
+ `ASSERT_KNOWN(IntrUploadCmdfifoNotEmptyOKnown,
+ intr_upload_cmdfifo_not_empty_o)
+ `ASSERT_KNOWN(IntrUploadPayloadNotEmptyOKnown,
+ intr_upload_payload_not_empty_o)
+ `ASSERT_KNOWN(IntrReadbufWatermarkOKnown, intr_readbuf_watermark_o)
+ `ASSERT_KNOWN(IntrReadbufFlipOKnown, intr_readbuf_flip_o)
`ASSERT_KNOWN(IntrTpmHeaderNotEmptyOKnown, intr_tpm_header_not_empty_o)
`ASSERT_KNOWN(AlertKnownO_A, alert_tx_o)
diff --git a/hw/ip/spi_device/rtl/spi_device_reg_pkg.sv b/hw/ip/spi_device/rtl/spi_device_reg_pkg.sv
index 04c5435..be2fa88 100644
--- a/hw/ip/spi_device/rtl/spi_device_reg_pkg.sv
+++ b/hw/ip/spi_device/rtl/spi_device_reg_pkg.sv
@@ -22,28 +22,28 @@
typedef struct packed {
struct packed {
logic q;
- } rx_full;
+ } generic_rx_full;
struct packed {
logic q;
- } rx_watermark;
+ } generic_rx_watermark;
struct packed {
logic q;
- } tx_watermark;
+ } generic_tx_watermark;
struct packed {
logic q;
- } rx_error;
+ } generic_rx_error;
struct packed {
logic q;
- } rx_overflow;
+ } generic_rx_overflow;
struct packed {
logic q;
- } tx_underflow;
+ } generic_tx_underflow;
struct packed {
logic q;
- } cmdfifo_not_empty;
+ } upload_cmdfifo_not_empty;
struct packed {
logic q;
- } payload_not_empty;
+ } upload_payload_not_empty;
struct packed {
logic q;
} readbuf_watermark;
@@ -58,28 +58,28 @@
typedef struct packed {
struct packed {
logic q;
- } rx_full;
+ } generic_rx_full;
struct packed {
logic q;
- } rx_watermark;
+ } generic_rx_watermark;
struct packed {
logic q;
- } tx_watermark;
+ } generic_tx_watermark;
struct packed {
logic q;
- } rx_error;
+ } generic_rx_error;
struct packed {
logic q;
- } rx_overflow;
+ } generic_rx_overflow;
struct packed {
logic q;
- } tx_underflow;
+ } generic_tx_underflow;
struct packed {
logic q;
- } cmdfifo_not_empty;
+ } upload_cmdfifo_not_empty;
struct packed {
logic q;
- } payload_not_empty;
+ } upload_payload_not_empty;
struct packed {
logic q;
} readbuf_watermark;
@@ -95,35 +95,35 @@
struct packed {
logic q;
logic qe;
- } rx_full;
+ } generic_rx_full;
struct packed {
logic q;
logic qe;
- } rx_watermark;
+ } generic_rx_watermark;
struct packed {
logic q;
logic qe;
- } tx_watermark;
+ } generic_tx_watermark;
struct packed {
logic q;
logic qe;
- } rx_error;
+ } generic_rx_error;
struct packed {
logic q;
logic qe;
- } rx_overflow;
+ } generic_rx_overflow;
struct packed {
logic q;
logic qe;
- } tx_underflow;
+ } generic_tx_underflow;
struct packed {
logic q;
logic qe;
- } cmdfifo_not_empty;
+ } upload_cmdfifo_not_empty;
struct packed {
logic q;
logic qe;
- } payload_not_empty;
+ } upload_payload_not_empty;
struct packed {
logic q;
logic qe;
@@ -419,35 +419,35 @@
struct packed {
logic d;
logic de;
- } rx_full;
+ } generic_rx_full;
struct packed {
logic d;
logic de;
- } rx_watermark;
+ } generic_rx_watermark;
struct packed {
logic d;
logic de;
- } tx_watermark;
+ } generic_tx_watermark;
struct packed {
logic d;
logic de;
- } rx_error;
+ } generic_rx_error;
struct packed {
logic d;
logic de;
- } rx_overflow;
+ } generic_rx_overflow;
struct packed {
logic d;
logic de;
- } tx_underflow;
+ } generic_tx_underflow;
struct packed {
logic d;
logic de;
- } cmdfifo_not_empty;
+ } upload_cmdfifo_not_empty;
struct packed {
logic d;
logic de;
- } payload_not_empty;
+ } upload_payload_not_empty;
struct packed {
logic d;
logic de;
@@ -732,14 +732,14 @@
// Reset values for hwext registers and their fields
parameter logic [10:0] SPI_DEVICE_INTR_TEST_RESVAL = 11'h 0;
- parameter logic [0:0] SPI_DEVICE_INTR_TEST_RX_FULL_RESVAL = 1'h 0;
- parameter logic [0:0] SPI_DEVICE_INTR_TEST_RX_WATERMARK_RESVAL = 1'h 0;
- parameter logic [0:0] SPI_DEVICE_INTR_TEST_TX_WATERMARK_RESVAL = 1'h 0;
- parameter logic [0:0] SPI_DEVICE_INTR_TEST_RX_ERROR_RESVAL = 1'h 0;
- parameter logic [0:0] SPI_DEVICE_INTR_TEST_RX_OVERFLOW_RESVAL = 1'h 0;
- parameter logic [0:0] SPI_DEVICE_INTR_TEST_TX_UNDERFLOW_RESVAL = 1'h 0;
- parameter logic [0:0] SPI_DEVICE_INTR_TEST_CMDFIFO_NOT_EMPTY_RESVAL = 1'h 0;
- parameter logic [0:0] SPI_DEVICE_INTR_TEST_PAYLOAD_NOT_EMPTY_RESVAL = 1'h 0;
+ parameter logic [0:0] SPI_DEVICE_INTR_TEST_GENERIC_RX_FULL_RESVAL = 1'h 0;
+ parameter logic [0:0] SPI_DEVICE_INTR_TEST_GENERIC_RX_WATERMARK_RESVAL = 1'h 0;
+ parameter logic [0:0] SPI_DEVICE_INTR_TEST_GENERIC_TX_WATERMARK_RESVAL = 1'h 0;
+ parameter logic [0:0] SPI_DEVICE_INTR_TEST_GENERIC_RX_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] SPI_DEVICE_INTR_TEST_GENERIC_RX_OVERFLOW_RESVAL = 1'h 0;
+ parameter logic [0:0] SPI_DEVICE_INTR_TEST_GENERIC_TX_UNDERFLOW_RESVAL = 1'h 0;
+ parameter logic [0:0] SPI_DEVICE_INTR_TEST_UPLOAD_CMDFIFO_NOT_EMPTY_RESVAL = 1'h 0;
+ parameter logic [0:0] SPI_DEVICE_INTR_TEST_UPLOAD_PAYLOAD_NOT_EMPTY_RESVAL = 1'h 0;
parameter logic [0:0] SPI_DEVICE_INTR_TEST_READBUF_WATERMARK_RESVAL = 1'h 0;
parameter logic [0:0] SPI_DEVICE_INTR_TEST_READBUF_FLIP_RESVAL = 1'h 0;
parameter logic [0:0] SPI_DEVICE_INTR_TEST_TPM_HEADER_NOT_EMPTY_RESVAL = 1'h 0;
diff --git a/hw/ip/spi_device/rtl/spi_device_reg_top.sv b/hw/ip/spi_device/rtl/spi_device_reg_top.sv
index be66dea..143412f 100644
--- a/hw/ip/spi_device/rtl/spi_device_reg_top.sv
+++ b/hw/ip/spi_device/rtl/spi_device_reg_top.sv
@@ -157,22 +157,22 @@
// Format: <reg>_<field>_{wd|we|qs}
// or <reg>_{wd|we|qs} if field == 1 or 0
logic intr_state_we;
- logic intr_state_rx_full_qs;
- logic intr_state_rx_full_wd;
- logic intr_state_rx_watermark_qs;
- logic intr_state_rx_watermark_wd;
- logic intr_state_tx_watermark_qs;
- logic intr_state_tx_watermark_wd;
- logic intr_state_rx_error_qs;
- logic intr_state_rx_error_wd;
- logic intr_state_rx_overflow_qs;
- logic intr_state_rx_overflow_wd;
- logic intr_state_tx_underflow_qs;
- logic intr_state_tx_underflow_wd;
- logic intr_state_cmdfifo_not_empty_qs;
- logic intr_state_cmdfifo_not_empty_wd;
- logic intr_state_payload_not_empty_qs;
- logic intr_state_payload_not_empty_wd;
+ logic intr_state_generic_rx_full_qs;
+ logic intr_state_generic_rx_full_wd;
+ logic intr_state_generic_rx_watermark_qs;
+ logic intr_state_generic_rx_watermark_wd;
+ logic intr_state_generic_tx_watermark_qs;
+ logic intr_state_generic_tx_watermark_wd;
+ logic intr_state_generic_rx_error_qs;
+ logic intr_state_generic_rx_error_wd;
+ logic intr_state_generic_rx_overflow_qs;
+ logic intr_state_generic_rx_overflow_wd;
+ logic intr_state_generic_tx_underflow_qs;
+ logic intr_state_generic_tx_underflow_wd;
+ logic intr_state_upload_cmdfifo_not_empty_qs;
+ logic intr_state_upload_cmdfifo_not_empty_wd;
+ logic intr_state_upload_payload_not_empty_qs;
+ logic intr_state_upload_payload_not_empty_wd;
logic intr_state_readbuf_watermark_qs;
logic intr_state_readbuf_watermark_wd;
logic intr_state_readbuf_flip_qs;
@@ -180,22 +180,22 @@
logic intr_state_tpm_header_not_empty_qs;
logic intr_state_tpm_header_not_empty_wd;
logic intr_enable_we;
- logic intr_enable_rx_full_qs;
- logic intr_enable_rx_full_wd;
- logic intr_enable_rx_watermark_qs;
- logic intr_enable_rx_watermark_wd;
- logic intr_enable_tx_watermark_qs;
- logic intr_enable_tx_watermark_wd;
- logic intr_enable_rx_error_qs;
- logic intr_enable_rx_error_wd;
- logic intr_enable_rx_overflow_qs;
- logic intr_enable_rx_overflow_wd;
- logic intr_enable_tx_underflow_qs;
- logic intr_enable_tx_underflow_wd;
- logic intr_enable_cmdfifo_not_empty_qs;
- logic intr_enable_cmdfifo_not_empty_wd;
- logic intr_enable_payload_not_empty_qs;
- logic intr_enable_payload_not_empty_wd;
+ logic intr_enable_generic_rx_full_qs;
+ logic intr_enable_generic_rx_full_wd;
+ logic intr_enable_generic_rx_watermark_qs;
+ logic intr_enable_generic_rx_watermark_wd;
+ logic intr_enable_generic_tx_watermark_qs;
+ logic intr_enable_generic_tx_watermark_wd;
+ logic intr_enable_generic_rx_error_qs;
+ logic intr_enable_generic_rx_error_wd;
+ logic intr_enable_generic_rx_overflow_qs;
+ logic intr_enable_generic_rx_overflow_wd;
+ logic intr_enable_generic_tx_underflow_qs;
+ logic intr_enable_generic_tx_underflow_wd;
+ logic intr_enable_upload_cmdfifo_not_empty_qs;
+ logic intr_enable_upload_cmdfifo_not_empty_wd;
+ logic intr_enable_upload_payload_not_empty_qs;
+ logic intr_enable_upload_payload_not_empty_wd;
logic intr_enable_readbuf_watermark_qs;
logic intr_enable_readbuf_watermark_wd;
logic intr_enable_readbuf_flip_qs;
@@ -203,14 +203,14 @@
logic intr_enable_tpm_header_not_empty_qs;
logic intr_enable_tpm_header_not_empty_wd;
logic intr_test_we;
- logic intr_test_rx_full_wd;
- logic intr_test_rx_watermark_wd;
- logic intr_test_tx_watermark_wd;
- logic intr_test_rx_error_wd;
- logic intr_test_rx_overflow_wd;
- logic intr_test_tx_underflow_wd;
- logic intr_test_cmdfifo_not_empty_wd;
- logic intr_test_payload_not_empty_wd;
+ logic intr_test_generic_rx_full_wd;
+ logic intr_test_generic_rx_watermark_wd;
+ logic intr_test_generic_tx_watermark_wd;
+ logic intr_test_generic_rx_error_wd;
+ logic intr_test_generic_rx_overflow_wd;
+ logic intr_test_generic_tx_underflow_wd;
+ logic intr_test_upload_cmdfifo_not_empty_wd;
+ logic intr_test_upload_payload_not_empty_wd;
logic intr_test_readbuf_watermark_wd;
logic intr_test_readbuf_flip_wd;
logic intr_test_tpm_header_not_empty_wd;
@@ -1507,204 +1507,204 @@
// Register instances
// R[intr_state]: V(False)
- // F[rx_full]: 0:0
+ // F[generic_rx_full]: 0:0
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessW1C),
.RESVAL (1'h0)
- ) u_intr_state_rx_full (
+ ) u_intr_state_generic_rx_full (
.clk_i (clk_i),
.rst_ni (rst_ni),
// from register interface
.we (intr_state_we),
- .wd (intr_state_rx_full_wd),
+ .wd (intr_state_generic_rx_full_wd),
// from internal hardware
- .de (hw2reg.intr_state.rx_full.de),
- .d (hw2reg.intr_state.rx_full.d),
+ .de (hw2reg.intr_state.generic_rx_full.de),
+ .d (hw2reg.intr_state.generic_rx_full.d),
// to internal hardware
.qe (),
- .q (reg2hw.intr_state.rx_full.q),
+ .q (reg2hw.intr_state.generic_rx_full.q),
// to register interface (read)
- .qs (intr_state_rx_full_qs)
+ .qs (intr_state_generic_rx_full_qs)
);
- // F[rx_watermark]: 1:1
+ // F[generic_rx_watermark]: 1:1
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessW1C),
.RESVAL (1'h0)
- ) u_intr_state_rx_watermark (
+ ) u_intr_state_generic_rx_watermark (
.clk_i (clk_i),
.rst_ni (rst_ni),
// from register interface
.we (intr_state_we),
- .wd (intr_state_rx_watermark_wd),
+ .wd (intr_state_generic_rx_watermark_wd),
// from internal hardware
- .de (hw2reg.intr_state.rx_watermark.de),
- .d (hw2reg.intr_state.rx_watermark.d),
+ .de (hw2reg.intr_state.generic_rx_watermark.de),
+ .d (hw2reg.intr_state.generic_rx_watermark.d),
// to internal hardware
.qe (),
- .q (reg2hw.intr_state.rx_watermark.q),
+ .q (reg2hw.intr_state.generic_rx_watermark.q),
// to register interface (read)
- .qs (intr_state_rx_watermark_qs)
+ .qs (intr_state_generic_rx_watermark_qs)
);
- // F[tx_watermark]: 2:2
+ // F[generic_tx_watermark]: 2:2
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessW1C),
.RESVAL (1'h0)
- ) u_intr_state_tx_watermark (
+ ) u_intr_state_generic_tx_watermark (
.clk_i (clk_i),
.rst_ni (rst_ni),
// from register interface
.we (intr_state_we),
- .wd (intr_state_tx_watermark_wd),
+ .wd (intr_state_generic_tx_watermark_wd),
// from internal hardware
- .de (hw2reg.intr_state.tx_watermark.de),
- .d (hw2reg.intr_state.tx_watermark.d),
+ .de (hw2reg.intr_state.generic_tx_watermark.de),
+ .d (hw2reg.intr_state.generic_tx_watermark.d),
// to internal hardware
.qe (),
- .q (reg2hw.intr_state.tx_watermark.q),
+ .q (reg2hw.intr_state.generic_tx_watermark.q),
// to register interface (read)
- .qs (intr_state_tx_watermark_qs)
+ .qs (intr_state_generic_tx_watermark_qs)
);
- // F[rx_error]: 3:3
+ // F[generic_rx_error]: 3:3
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessW1C),
.RESVAL (1'h0)
- ) u_intr_state_rx_error (
+ ) u_intr_state_generic_rx_error (
.clk_i (clk_i),
.rst_ni (rst_ni),
// from register interface
.we (intr_state_we),
- .wd (intr_state_rx_error_wd),
+ .wd (intr_state_generic_rx_error_wd),
// from internal hardware
- .de (hw2reg.intr_state.rx_error.de),
- .d (hw2reg.intr_state.rx_error.d),
+ .de (hw2reg.intr_state.generic_rx_error.de),
+ .d (hw2reg.intr_state.generic_rx_error.d),
// to internal hardware
.qe (),
- .q (reg2hw.intr_state.rx_error.q),
+ .q (reg2hw.intr_state.generic_rx_error.q),
// to register interface (read)
- .qs (intr_state_rx_error_qs)
+ .qs (intr_state_generic_rx_error_qs)
);
- // F[rx_overflow]: 4:4
+ // F[generic_rx_overflow]: 4:4
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessW1C),
.RESVAL (1'h0)
- ) u_intr_state_rx_overflow (
+ ) u_intr_state_generic_rx_overflow (
.clk_i (clk_i),
.rst_ni (rst_ni),
// from register interface
.we (intr_state_we),
- .wd (intr_state_rx_overflow_wd),
+ .wd (intr_state_generic_rx_overflow_wd),
// from internal hardware
- .de (hw2reg.intr_state.rx_overflow.de),
- .d (hw2reg.intr_state.rx_overflow.d),
+ .de (hw2reg.intr_state.generic_rx_overflow.de),
+ .d (hw2reg.intr_state.generic_rx_overflow.d),
// to internal hardware
.qe (),
- .q (reg2hw.intr_state.rx_overflow.q),
+ .q (reg2hw.intr_state.generic_rx_overflow.q),
// to register interface (read)
- .qs (intr_state_rx_overflow_qs)
+ .qs (intr_state_generic_rx_overflow_qs)
);
- // F[tx_underflow]: 5:5
+ // F[generic_tx_underflow]: 5:5
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessW1C),
.RESVAL (1'h0)
- ) u_intr_state_tx_underflow (
+ ) u_intr_state_generic_tx_underflow (
.clk_i (clk_i),
.rst_ni (rst_ni),
// from register interface
.we (intr_state_we),
- .wd (intr_state_tx_underflow_wd),
+ .wd (intr_state_generic_tx_underflow_wd),
// from internal hardware
- .de (hw2reg.intr_state.tx_underflow.de),
- .d (hw2reg.intr_state.tx_underflow.d),
+ .de (hw2reg.intr_state.generic_tx_underflow.de),
+ .d (hw2reg.intr_state.generic_tx_underflow.d),
// to internal hardware
.qe (),
- .q (reg2hw.intr_state.tx_underflow.q),
+ .q (reg2hw.intr_state.generic_tx_underflow.q),
// to register interface (read)
- .qs (intr_state_tx_underflow_qs)
+ .qs (intr_state_generic_tx_underflow_qs)
);
- // F[cmdfifo_not_empty]: 6:6
+ // F[upload_cmdfifo_not_empty]: 6:6
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessW1C),
.RESVAL (1'h0)
- ) u_intr_state_cmdfifo_not_empty (
+ ) u_intr_state_upload_cmdfifo_not_empty (
.clk_i (clk_i),
.rst_ni (rst_ni),
// from register interface
.we (intr_state_we),
- .wd (intr_state_cmdfifo_not_empty_wd),
+ .wd (intr_state_upload_cmdfifo_not_empty_wd),
// from internal hardware
- .de (hw2reg.intr_state.cmdfifo_not_empty.de),
- .d (hw2reg.intr_state.cmdfifo_not_empty.d),
+ .de (hw2reg.intr_state.upload_cmdfifo_not_empty.de),
+ .d (hw2reg.intr_state.upload_cmdfifo_not_empty.d),
// to internal hardware
.qe (),
- .q (reg2hw.intr_state.cmdfifo_not_empty.q),
+ .q (reg2hw.intr_state.upload_cmdfifo_not_empty.q),
// to register interface (read)
- .qs (intr_state_cmdfifo_not_empty_qs)
+ .qs (intr_state_upload_cmdfifo_not_empty_qs)
);
- // F[payload_not_empty]: 7:7
+ // F[upload_payload_not_empty]: 7:7
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessW1C),
.RESVAL (1'h0)
- ) u_intr_state_payload_not_empty (
+ ) u_intr_state_upload_payload_not_empty (
.clk_i (clk_i),
.rst_ni (rst_ni),
// from register interface
.we (intr_state_we),
- .wd (intr_state_payload_not_empty_wd),
+ .wd (intr_state_upload_payload_not_empty_wd),
// from internal hardware
- .de (hw2reg.intr_state.payload_not_empty.de),
- .d (hw2reg.intr_state.payload_not_empty.d),
+ .de (hw2reg.intr_state.upload_payload_not_empty.de),
+ .d (hw2reg.intr_state.upload_payload_not_empty.d),
// to internal hardware
.qe (),
- .q (reg2hw.intr_state.payload_not_empty.q),
+ .q (reg2hw.intr_state.upload_payload_not_empty.q),
// to register interface (read)
- .qs (intr_state_payload_not_empty_qs)
+ .qs (intr_state_upload_payload_not_empty_qs)
);
// F[readbuf_watermark]: 8:8
@@ -1784,18 +1784,18 @@
// R[intr_enable]: V(False)
- // F[rx_full]: 0:0
+ // F[generic_rx_full]: 0:0
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessRW),
.RESVAL (1'h0)
- ) u_intr_enable_rx_full (
+ ) u_intr_enable_generic_rx_full (
.clk_i (clk_i),
.rst_ni (rst_ni),
// from register interface
.we (intr_enable_we),
- .wd (intr_enable_rx_full_wd),
+ .wd (intr_enable_generic_rx_full_wd),
// from internal hardware
.de (1'b0),
@@ -1803,24 +1803,24 @@
// to internal hardware
.qe (),
- .q (reg2hw.intr_enable.rx_full.q),
+ .q (reg2hw.intr_enable.generic_rx_full.q),
// to register interface (read)
- .qs (intr_enable_rx_full_qs)
+ .qs (intr_enable_generic_rx_full_qs)
);
- // F[rx_watermark]: 1:1
+ // F[generic_rx_watermark]: 1:1
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessRW),
.RESVAL (1'h0)
- ) u_intr_enable_rx_watermark (
+ ) u_intr_enable_generic_rx_watermark (
.clk_i (clk_i),
.rst_ni (rst_ni),
// from register interface
.we (intr_enable_we),
- .wd (intr_enable_rx_watermark_wd),
+ .wd (intr_enable_generic_rx_watermark_wd),
// from internal hardware
.de (1'b0),
@@ -1828,24 +1828,24 @@
// to internal hardware
.qe (),
- .q (reg2hw.intr_enable.rx_watermark.q),
+ .q (reg2hw.intr_enable.generic_rx_watermark.q),
// to register interface (read)
- .qs (intr_enable_rx_watermark_qs)
+ .qs (intr_enable_generic_rx_watermark_qs)
);
- // F[tx_watermark]: 2:2
+ // F[generic_tx_watermark]: 2:2
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessRW),
.RESVAL (1'h0)
- ) u_intr_enable_tx_watermark (
+ ) u_intr_enable_generic_tx_watermark (
.clk_i (clk_i),
.rst_ni (rst_ni),
// from register interface
.we (intr_enable_we),
- .wd (intr_enable_tx_watermark_wd),
+ .wd (intr_enable_generic_tx_watermark_wd),
// from internal hardware
.de (1'b0),
@@ -1853,24 +1853,24 @@
// to internal hardware
.qe (),
- .q (reg2hw.intr_enable.tx_watermark.q),
+ .q (reg2hw.intr_enable.generic_tx_watermark.q),
// to register interface (read)
- .qs (intr_enable_tx_watermark_qs)
+ .qs (intr_enable_generic_tx_watermark_qs)
);
- // F[rx_error]: 3:3
+ // F[generic_rx_error]: 3:3
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessRW),
.RESVAL (1'h0)
- ) u_intr_enable_rx_error (
+ ) u_intr_enable_generic_rx_error (
.clk_i (clk_i),
.rst_ni (rst_ni),
// from register interface
.we (intr_enable_we),
- .wd (intr_enable_rx_error_wd),
+ .wd (intr_enable_generic_rx_error_wd),
// from internal hardware
.de (1'b0),
@@ -1878,24 +1878,24 @@
// to internal hardware
.qe (),
- .q (reg2hw.intr_enable.rx_error.q),
+ .q (reg2hw.intr_enable.generic_rx_error.q),
// to register interface (read)
- .qs (intr_enable_rx_error_qs)
+ .qs (intr_enable_generic_rx_error_qs)
);
- // F[rx_overflow]: 4:4
+ // F[generic_rx_overflow]: 4:4
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessRW),
.RESVAL (1'h0)
- ) u_intr_enable_rx_overflow (
+ ) u_intr_enable_generic_rx_overflow (
.clk_i (clk_i),
.rst_ni (rst_ni),
// from register interface
.we (intr_enable_we),
- .wd (intr_enable_rx_overflow_wd),
+ .wd (intr_enable_generic_rx_overflow_wd),
// from internal hardware
.de (1'b0),
@@ -1903,24 +1903,24 @@
// to internal hardware
.qe (),
- .q (reg2hw.intr_enable.rx_overflow.q),
+ .q (reg2hw.intr_enable.generic_rx_overflow.q),
// to register interface (read)
- .qs (intr_enable_rx_overflow_qs)
+ .qs (intr_enable_generic_rx_overflow_qs)
);
- // F[tx_underflow]: 5:5
+ // F[generic_tx_underflow]: 5:5
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessRW),
.RESVAL (1'h0)
- ) u_intr_enable_tx_underflow (
+ ) u_intr_enable_generic_tx_underflow (
.clk_i (clk_i),
.rst_ni (rst_ni),
// from register interface
.we (intr_enable_we),
- .wd (intr_enable_tx_underflow_wd),
+ .wd (intr_enable_generic_tx_underflow_wd),
// from internal hardware
.de (1'b0),
@@ -1928,24 +1928,24 @@
// to internal hardware
.qe (),
- .q (reg2hw.intr_enable.tx_underflow.q),
+ .q (reg2hw.intr_enable.generic_tx_underflow.q),
// to register interface (read)
- .qs (intr_enable_tx_underflow_qs)
+ .qs (intr_enable_generic_tx_underflow_qs)
);
- // F[cmdfifo_not_empty]: 6:6
+ // F[upload_cmdfifo_not_empty]: 6:6
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessRW),
.RESVAL (1'h0)
- ) u_intr_enable_cmdfifo_not_empty (
+ ) u_intr_enable_upload_cmdfifo_not_empty (
.clk_i (clk_i),
.rst_ni (rst_ni),
// from register interface
.we (intr_enable_we),
- .wd (intr_enable_cmdfifo_not_empty_wd),
+ .wd (intr_enable_upload_cmdfifo_not_empty_wd),
// from internal hardware
.de (1'b0),
@@ -1953,24 +1953,24 @@
// to internal hardware
.qe (),
- .q (reg2hw.intr_enable.cmdfifo_not_empty.q),
+ .q (reg2hw.intr_enable.upload_cmdfifo_not_empty.q),
// to register interface (read)
- .qs (intr_enable_cmdfifo_not_empty_qs)
+ .qs (intr_enable_upload_cmdfifo_not_empty_qs)
);
- // F[payload_not_empty]: 7:7
+ // F[upload_payload_not_empty]: 7:7
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessRW),
.RESVAL (1'h0)
- ) u_intr_enable_payload_not_empty (
+ ) u_intr_enable_upload_payload_not_empty (
.clk_i (clk_i),
.rst_ni (rst_ni),
// from register interface
.we (intr_enable_we),
- .wd (intr_enable_payload_not_empty_wd),
+ .wd (intr_enable_upload_payload_not_empty_wd),
// from internal hardware
.de (1'b0),
@@ -1978,10 +1978,10 @@
// to internal hardware
.qe (),
- .q (reg2hw.intr_enable.payload_not_empty.q),
+ .q (reg2hw.intr_enable.upload_payload_not_empty.q),
// to register interface (read)
- .qs (intr_enable_payload_not_empty_qs)
+ .qs (intr_enable_upload_payload_not_empty_qs)
);
// F[readbuf_watermark]: 8:8
@@ -2061,115 +2061,115 @@
// R[intr_test]: V(True)
- // F[rx_full]: 0:0
+ // F[generic_rx_full]: 0:0
prim_subreg_ext #(
.DW (1)
- ) u_intr_test_rx_full (
+ ) u_intr_test_generic_rx_full (
.re (1'b0),
.we (intr_test_we),
- .wd (intr_test_rx_full_wd),
+ .wd (intr_test_generic_rx_full_wd),
.d ('0),
.qre (),
- .qe (reg2hw.intr_test.rx_full.qe),
- .q (reg2hw.intr_test.rx_full.q),
+ .qe (reg2hw.intr_test.generic_rx_full.qe),
+ .q (reg2hw.intr_test.generic_rx_full.q),
.qs ()
);
- // F[rx_watermark]: 1:1
+ // F[generic_rx_watermark]: 1:1
prim_subreg_ext #(
.DW (1)
- ) u_intr_test_rx_watermark (
+ ) u_intr_test_generic_rx_watermark (
.re (1'b0),
.we (intr_test_we),
- .wd (intr_test_rx_watermark_wd),
+ .wd (intr_test_generic_rx_watermark_wd),
.d ('0),
.qre (),
- .qe (reg2hw.intr_test.rx_watermark.qe),
- .q (reg2hw.intr_test.rx_watermark.q),
+ .qe (reg2hw.intr_test.generic_rx_watermark.qe),
+ .q (reg2hw.intr_test.generic_rx_watermark.q),
.qs ()
);
- // F[tx_watermark]: 2:2
+ // F[generic_tx_watermark]: 2:2
prim_subreg_ext #(
.DW (1)
- ) u_intr_test_tx_watermark (
+ ) u_intr_test_generic_tx_watermark (
.re (1'b0),
.we (intr_test_we),
- .wd (intr_test_tx_watermark_wd),
+ .wd (intr_test_generic_tx_watermark_wd),
.d ('0),
.qre (),
- .qe (reg2hw.intr_test.tx_watermark.qe),
- .q (reg2hw.intr_test.tx_watermark.q),
+ .qe (reg2hw.intr_test.generic_tx_watermark.qe),
+ .q (reg2hw.intr_test.generic_tx_watermark.q),
.qs ()
);
- // F[rx_error]: 3:3
+ // F[generic_rx_error]: 3:3
prim_subreg_ext #(
.DW (1)
- ) u_intr_test_rx_error (
+ ) u_intr_test_generic_rx_error (
.re (1'b0),
.we (intr_test_we),
- .wd (intr_test_rx_error_wd),
+ .wd (intr_test_generic_rx_error_wd),
.d ('0),
.qre (),
- .qe (reg2hw.intr_test.rx_error.qe),
- .q (reg2hw.intr_test.rx_error.q),
+ .qe (reg2hw.intr_test.generic_rx_error.qe),
+ .q (reg2hw.intr_test.generic_rx_error.q),
.qs ()
);
- // F[rx_overflow]: 4:4
+ // F[generic_rx_overflow]: 4:4
prim_subreg_ext #(
.DW (1)
- ) u_intr_test_rx_overflow (
+ ) u_intr_test_generic_rx_overflow (
.re (1'b0),
.we (intr_test_we),
- .wd (intr_test_rx_overflow_wd),
+ .wd (intr_test_generic_rx_overflow_wd),
.d ('0),
.qre (),
- .qe (reg2hw.intr_test.rx_overflow.qe),
- .q (reg2hw.intr_test.rx_overflow.q),
+ .qe (reg2hw.intr_test.generic_rx_overflow.qe),
+ .q (reg2hw.intr_test.generic_rx_overflow.q),
.qs ()
);
- // F[tx_underflow]: 5:5
+ // F[generic_tx_underflow]: 5:5
prim_subreg_ext #(
.DW (1)
- ) u_intr_test_tx_underflow (
+ ) u_intr_test_generic_tx_underflow (
.re (1'b0),
.we (intr_test_we),
- .wd (intr_test_tx_underflow_wd),
+ .wd (intr_test_generic_tx_underflow_wd),
.d ('0),
.qre (),
- .qe (reg2hw.intr_test.tx_underflow.qe),
- .q (reg2hw.intr_test.tx_underflow.q),
+ .qe (reg2hw.intr_test.generic_tx_underflow.qe),
+ .q (reg2hw.intr_test.generic_tx_underflow.q),
.qs ()
);
- // F[cmdfifo_not_empty]: 6:6
+ // F[upload_cmdfifo_not_empty]: 6:6
prim_subreg_ext #(
.DW (1)
- ) u_intr_test_cmdfifo_not_empty (
+ ) u_intr_test_upload_cmdfifo_not_empty (
.re (1'b0),
.we (intr_test_we),
- .wd (intr_test_cmdfifo_not_empty_wd),
+ .wd (intr_test_upload_cmdfifo_not_empty_wd),
.d ('0),
.qre (),
- .qe (reg2hw.intr_test.cmdfifo_not_empty.qe),
- .q (reg2hw.intr_test.cmdfifo_not_empty.q),
+ .qe (reg2hw.intr_test.upload_cmdfifo_not_empty.qe),
+ .q (reg2hw.intr_test.upload_cmdfifo_not_empty.q),
.qs ()
);
- // F[payload_not_empty]: 7:7
+ // F[upload_payload_not_empty]: 7:7
prim_subreg_ext #(
.DW (1)
- ) u_intr_test_payload_not_empty (
+ ) u_intr_test_upload_payload_not_empty (
.re (1'b0),
.we (intr_test_we),
- .wd (intr_test_payload_not_empty_wd),
+ .wd (intr_test_upload_payload_not_empty_wd),
.d ('0),
.qre (),
- .qe (reg2hw.intr_test.payload_not_empty.qe),
- .q (reg2hw.intr_test.payload_not_empty.q),
+ .qe (reg2hw.intr_test.upload_payload_not_empty.qe),
+ .q (reg2hw.intr_test.upload_payload_not_empty.q),
.qs ()
);
@@ -17983,21 +17983,21 @@
end
assign intr_state_we = addr_hit[0] & reg_we & !reg_error;
- assign intr_state_rx_full_wd = reg_wdata[0];
+ assign intr_state_generic_rx_full_wd = reg_wdata[0];
- assign intr_state_rx_watermark_wd = reg_wdata[1];
+ assign intr_state_generic_rx_watermark_wd = reg_wdata[1];
- assign intr_state_tx_watermark_wd = reg_wdata[2];
+ assign intr_state_generic_tx_watermark_wd = reg_wdata[2];
- assign intr_state_rx_error_wd = reg_wdata[3];
+ assign intr_state_generic_rx_error_wd = reg_wdata[3];
- assign intr_state_rx_overflow_wd = reg_wdata[4];
+ assign intr_state_generic_rx_overflow_wd = reg_wdata[4];
- assign intr_state_tx_underflow_wd = reg_wdata[5];
+ assign intr_state_generic_tx_underflow_wd = reg_wdata[5];
- assign intr_state_cmdfifo_not_empty_wd = reg_wdata[6];
+ assign intr_state_upload_cmdfifo_not_empty_wd = reg_wdata[6];
- assign intr_state_payload_not_empty_wd = reg_wdata[7];
+ assign intr_state_upload_payload_not_empty_wd = reg_wdata[7];
assign intr_state_readbuf_watermark_wd = reg_wdata[8];
@@ -18006,21 +18006,21 @@
assign intr_state_tpm_header_not_empty_wd = reg_wdata[10];
assign intr_enable_we = addr_hit[1] & reg_we & !reg_error;
- assign intr_enable_rx_full_wd = reg_wdata[0];
+ assign intr_enable_generic_rx_full_wd = reg_wdata[0];
- assign intr_enable_rx_watermark_wd = reg_wdata[1];
+ assign intr_enable_generic_rx_watermark_wd = reg_wdata[1];
- assign intr_enable_tx_watermark_wd = reg_wdata[2];
+ assign intr_enable_generic_tx_watermark_wd = reg_wdata[2];
- assign intr_enable_rx_error_wd = reg_wdata[3];
+ assign intr_enable_generic_rx_error_wd = reg_wdata[3];
- assign intr_enable_rx_overflow_wd = reg_wdata[4];
+ assign intr_enable_generic_rx_overflow_wd = reg_wdata[4];
- assign intr_enable_tx_underflow_wd = reg_wdata[5];
+ assign intr_enable_generic_tx_underflow_wd = reg_wdata[5];
- assign intr_enable_cmdfifo_not_empty_wd = reg_wdata[6];
+ assign intr_enable_upload_cmdfifo_not_empty_wd = reg_wdata[6];
- assign intr_enable_payload_not_empty_wd = reg_wdata[7];
+ assign intr_enable_upload_payload_not_empty_wd = reg_wdata[7];
assign intr_enable_readbuf_watermark_wd = reg_wdata[8];
@@ -18029,21 +18029,21 @@
assign intr_enable_tpm_header_not_empty_wd = reg_wdata[10];
assign intr_test_we = addr_hit[2] & reg_we & !reg_error;
- assign intr_test_rx_full_wd = reg_wdata[0];
+ assign intr_test_generic_rx_full_wd = reg_wdata[0];
- assign intr_test_rx_watermark_wd = reg_wdata[1];
+ assign intr_test_generic_rx_watermark_wd = reg_wdata[1];
- assign intr_test_tx_watermark_wd = reg_wdata[2];
+ assign intr_test_generic_tx_watermark_wd = reg_wdata[2];
- assign intr_test_rx_error_wd = reg_wdata[3];
+ assign intr_test_generic_rx_error_wd = reg_wdata[3];
- assign intr_test_rx_overflow_wd = reg_wdata[4];
+ assign intr_test_generic_rx_overflow_wd = reg_wdata[4];
- assign intr_test_tx_underflow_wd = reg_wdata[5];
+ assign intr_test_generic_tx_underflow_wd = reg_wdata[5];
- assign intr_test_cmdfifo_not_empty_wd = reg_wdata[6];
+ assign intr_test_upload_cmdfifo_not_empty_wd = reg_wdata[6];
- assign intr_test_payload_not_empty_wd = reg_wdata[7];
+ assign intr_test_upload_payload_not_empty_wd = reg_wdata[7];
assign intr_test_readbuf_watermark_wd = reg_wdata[8];
@@ -19320,28 +19320,28 @@
reg_rdata_next = '0;
unique case (1'b1)
addr_hit[0]: begin
- reg_rdata_next[0] = intr_state_rx_full_qs;
- reg_rdata_next[1] = intr_state_rx_watermark_qs;
- reg_rdata_next[2] = intr_state_tx_watermark_qs;
- reg_rdata_next[3] = intr_state_rx_error_qs;
- reg_rdata_next[4] = intr_state_rx_overflow_qs;
- reg_rdata_next[5] = intr_state_tx_underflow_qs;
- reg_rdata_next[6] = intr_state_cmdfifo_not_empty_qs;
- reg_rdata_next[7] = intr_state_payload_not_empty_qs;
+ reg_rdata_next[0] = intr_state_generic_rx_full_qs;
+ reg_rdata_next[1] = intr_state_generic_rx_watermark_qs;
+ reg_rdata_next[2] = intr_state_generic_tx_watermark_qs;
+ reg_rdata_next[3] = intr_state_generic_rx_error_qs;
+ reg_rdata_next[4] = intr_state_generic_rx_overflow_qs;
+ reg_rdata_next[5] = intr_state_generic_tx_underflow_qs;
+ reg_rdata_next[6] = intr_state_upload_cmdfifo_not_empty_qs;
+ reg_rdata_next[7] = intr_state_upload_payload_not_empty_qs;
reg_rdata_next[8] = intr_state_readbuf_watermark_qs;
reg_rdata_next[9] = intr_state_readbuf_flip_qs;
reg_rdata_next[10] = intr_state_tpm_header_not_empty_qs;
end
addr_hit[1]: begin
- reg_rdata_next[0] = intr_enable_rx_full_qs;
- reg_rdata_next[1] = intr_enable_rx_watermark_qs;
- reg_rdata_next[2] = intr_enable_tx_watermark_qs;
- reg_rdata_next[3] = intr_enable_rx_error_qs;
- reg_rdata_next[4] = intr_enable_rx_overflow_qs;
- reg_rdata_next[5] = intr_enable_tx_underflow_qs;
- reg_rdata_next[6] = intr_enable_cmdfifo_not_empty_qs;
- reg_rdata_next[7] = intr_enable_payload_not_empty_qs;
+ reg_rdata_next[0] = intr_enable_generic_rx_full_qs;
+ reg_rdata_next[1] = intr_enable_generic_rx_watermark_qs;
+ reg_rdata_next[2] = intr_enable_generic_tx_watermark_qs;
+ reg_rdata_next[3] = intr_enable_generic_rx_error_qs;
+ reg_rdata_next[4] = intr_enable_generic_rx_overflow_qs;
+ reg_rdata_next[5] = intr_enable_generic_tx_underflow_qs;
+ reg_rdata_next[6] = intr_enable_upload_cmdfifo_not_empty_qs;
+ reg_rdata_next[7] = intr_enable_upload_payload_not_empty_qs;
reg_rdata_next[8] = intr_enable_readbuf_watermark_qs;
reg_rdata_next[9] = intr_enable_readbuf_flip_qs;
reg_rdata_next[10] = intr_enable_tpm_header_not_empty_qs;
diff --git a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
index 75ac7f1..bba6331 100644
--- a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
+++ b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
@@ -12457,49 +12457,49 @@
module_name: gpio
}
{
- name: spi_device_rx_full
+ name: spi_device_generic_rx_full
width: 1
type: interrupt
module_name: spi_device
}
{
- name: spi_device_rx_watermark
+ name: spi_device_generic_rx_watermark
width: 1
type: interrupt
module_name: spi_device
}
{
- name: spi_device_tx_watermark
+ name: spi_device_generic_tx_watermark
width: 1
type: interrupt
module_name: spi_device
}
{
- name: spi_device_rx_error
+ name: spi_device_generic_rx_error
width: 1
type: interrupt
module_name: spi_device
}
{
- name: spi_device_rx_overflow
+ name: spi_device_generic_rx_overflow
width: 1
type: interrupt
module_name: spi_device
}
{
- name: spi_device_tx_underflow
+ name: spi_device_generic_tx_underflow
width: 1
type: interrupt
module_name: spi_device
}
{
- name: spi_device_cmdfifo_not_empty
+ name: spi_device_upload_cmdfifo_not_empty
width: 1
type: interrupt
module_name: spi_device
}
{
- name: spi_device_payload_not_empty
+ name: spi_device_upload_payload_not_empty
width: 1
type: interrupt
module_name: spi_device
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
index f46be4c..2dc76d6 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
@@ -394,14 +394,14 @@
logic intr_uart3_rx_timeout;
logic intr_uart3_rx_parity_err;
logic [31:0] intr_gpio_gpio;
- logic intr_spi_device_rx_full;
- logic intr_spi_device_rx_watermark;
- logic intr_spi_device_tx_watermark;
- logic intr_spi_device_rx_error;
- logic intr_spi_device_rx_overflow;
- logic intr_spi_device_tx_underflow;
- logic intr_spi_device_cmdfifo_not_empty;
- logic intr_spi_device_payload_not_empty;
+ logic intr_spi_device_generic_rx_full;
+ logic intr_spi_device_generic_rx_watermark;
+ logic intr_spi_device_generic_tx_watermark;
+ logic intr_spi_device_generic_rx_error;
+ logic intr_spi_device_generic_rx_overflow;
+ logic intr_spi_device_generic_tx_underflow;
+ logic intr_spi_device_upload_cmdfifo_not_empty;
+ logic intr_spi_device_upload_payload_not_empty;
logic intr_spi_device_readbuf_watermark;
logic intr_spi_device_readbuf_flip;
logic intr_spi_device_tpm_header_not_empty;
@@ -1147,17 +1147,17 @@
.cio_sd_en_o (cio_spi_device_sd_en_d2p),
// Interrupt
- .intr_rx_full_o (intr_spi_device_rx_full),
- .intr_rx_watermark_o (intr_spi_device_rx_watermark),
- .intr_tx_watermark_o (intr_spi_device_tx_watermark),
- .intr_rx_error_o (intr_spi_device_rx_error),
- .intr_rx_overflow_o (intr_spi_device_rx_overflow),
- .intr_tx_underflow_o (intr_spi_device_tx_underflow),
- .intr_cmdfifo_not_empty_o (intr_spi_device_cmdfifo_not_empty),
- .intr_payload_not_empty_o (intr_spi_device_payload_not_empty),
- .intr_readbuf_watermark_o (intr_spi_device_readbuf_watermark),
- .intr_readbuf_flip_o (intr_spi_device_readbuf_flip),
- .intr_tpm_header_not_empty_o (intr_spi_device_tpm_header_not_empty),
+ .intr_generic_rx_full_o (intr_spi_device_generic_rx_full),
+ .intr_generic_rx_watermark_o (intr_spi_device_generic_rx_watermark),
+ .intr_generic_tx_watermark_o (intr_spi_device_generic_tx_watermark),
+ .intr_generic_rx_error_o (intr_spi_device_generic_rx_error),
+ .intr_generic_rx_overflow_o (intr_spi_device_generic_rx_overflow),
+ .intr_generic_tx_underflow_o (intr_spi_device_generic_tx_underflow),
+ .intr_upload_cmdfifo_not_empty_o (intr_spi_device_upload_cmdfifo_not_empty),
+ .intr_upload_payload_not_empty_o (intr_spi_device_upload_payload_not_empty),
+ .intr_readbuf_watermark_o (intr_spi_device_readbuf_watermark),
+ .intr_readbuf_flip_o (intr_spi_device_readbuf_flip),
+ .intr_tpm_header_not_empty_o (intr_spi_device_tpm_header_not_empty),
// [5]: fatal_fault
.alert_tx_o ( alert_tx[5:5] ),
.alert_rx_i ( alert_rx[5:5] ),
@@ -2639,14 +2639,14 @@
intr_spi_device_tpm_header_not_empty, // IDs [75 +: 1]
intr_spi_device_readbuf_flip, // IDs [74 +: 1]
intr_spi_device_readbuf_watermark, // IDs [73 +: 1]
- intr_spi_device_payload_not_empty, // IDs [72 +: 1]
- intr_spi_device_cmdfifo_not_empty, // IDs [71 +: 1]
- intr_spi_device_tx_underflow, // IDs [70 +: 1]
- intr_spi_device_rx_overflow, // IDs [69 +: 1]
- intr_spi_device_rx_error, // IDs [68 +: 1]
- intr_spi_device_tx_watermark, // IDs [67 +: 1]
- intr_spi_device_rx_watermark, // IDs [66 +: 1]
- intr_spi_device_rx_full, // IDs [65 +: 1]
+ intr_spi_device_upload_payload_not_empty, // IDs [72 +: 1]
+ intr_spi_device_upload_cmdfifo_not_empty, // IDs [71 +: 1]
+ intr_spi_device_generic_tx_underflow, // IDs [70 +: 1]
+ intr_spi_device_generic_rx_overflow, // IDs [69 +: 1]
+ intr_spi_device_generic_rx_error, // IDs [68 +: 1]
+ intr_spi_device_generic_tx_watermark, // IDs [67 +: 1]
+ intr_spi_device_generic_rx_watermark, // IDs [66 +: 1]
+ intr_spi_device_generic_rx_full, // IDs [65 +: 1]
intr_gpio_gpio, // IDs [33 +: 32]
intr_uart3_rx_parity_err, // IDs [32 +: 1]
intr_uart3_rx_timeout, // IDs [31 +: 1]
diff --git a/hw/top_earlgrey/sw/autogen/top_earlgrey.c b/hw/top_earlgrey/sw/autogen/top_earlgrey.c
index a904eda..c97f436 100644
--- a/hw/top_earlgrey/sw/autogen/top_earlgrey.c
+++ b/hw/top_earlgrey/sw/autogen/top_earlgrey.c
@@ -77,14 +77,14 @@
[kTopEarlgreyPlicIrqIdGpioGpio29] = kTopEarlgreyPlicPeripheralGpio,
[kTopEarlgreyPlicIrqIdGpioGpio30] = kTopEarlgreyPlicPeripheralGpio,
[kTopEarlgreyPlicIrqIdGpioGpio31] = kTopEarlgreyPlicPeripheralGpio,
- [kTopEarlgreyPlicIrqIdSpiDeviceRxFull] = kTopEarlgreyPlicPeripheralSpiDevice,
- [kTopEarlgreyPlicIrqIdSpiDeviceRxWatermark] = kTopEarlgreyPlicPeripheralSpiDevice,
- [kTopEarlgreyPlicIrqIdSpiDeviceTxWatermark] = kTopEarlgreyPlicPeripheralSpiDevice,
- [kTopEarlgreyPlicIrqIdSpiDeviceRxError] = kTopEarlgreyPlicPeripheralSpiDevice,
- [kTopEarlgreyPlicIrqIdSpiDeviceRxOverflow] = kTopEarlgreyPlicPeripheralSpiDevice,
- [kTopEarlgreyPlicIrqIdSpiDeviceTxUnderflow] = kTopEarlgreyPlicPeripheralSpiDevice,
- [kTopEarlgreyPlicIrqIdSpiDeviceCmdfifoNotEmpty] = kTopEarlgreyPlicPeripheralSpiDevice,
- [kTopEarlgreyPlicIrqIdSpiDevicePayloadNotEmpty] = kTopEarlgreyPlicPeripheralSpiDevice,
+ [kTopEarlgreyPlicIrqIdSpiDeviceGenericRxFull] = kTopEarlgreyPlicPeripheralSpiDevice,
+ [kTopEarlgreyPlicIrqIdSpiDeviceGenericRxWatermark] = kTopEarlgreyPlicPeripheralSpiDevice,
+ [kTopEarlgreyPlicIrqIdSpiDeviceGenericTxWatermark] = kTopEarlgreyPlicPeripheralSpiDevice,
+ [kTopEarlgreyPlicIrqIdSpiDeviceGenericRxError] = kTopEarlgreyPlicPeripheralSpiDevice,
+ [kTopEarlgreyPlicIrqIdSpiDeviceGenericRxOverflow] = kTopEarlgreyPlicPeripheralSpiDevice,
+ [kTopEarlgreyPlicIrqIdSpiDeviceGenericTxUnderflow] = kTopEarlgreyPlicPeripheralSpiDevice,
+ [kTopEarlgreyPlicIrqIdSpiDeviceUploadCmdfifoNotEmpty] = kTopEarlgreyPlicPeripheralSpiDevice,
+ [kTopEarlgreyPlicIrqIdSpiDeviceUploadPayloadNotEmpty] = kTopEarlgreyPlicPeripheralSpiDevice,
[kTopEarlgreyPlicIrqIdSpiDeviceReadbufWatermark] = kTopEarlgreyPlicPeripheralSpiDevice,
[kTopEarlgreyPlicIrqIdSpiDeviceReadbufFlip] = kTopEarlgreyPlicPeripheralSpiDevice,
[kTopEarlgreyPlicIrqIdSpiDeviceTpmHeaderNotEmpty] = kTopEarlgreyPlicPeripheralSpiDevice,
diff --git a/hw/top_earlgrey/sw/autogen/top_earlgrey.h b/hw/top_earlgrey/sw/autogen/top_earlgrey.h
index a64d379..bd825c2 100644
--- a/hw/top_earlgrey/sw/autogen/top_earlgrey.h
+++ b/hw/top_earlgrey/sw/autogen/top_earlgrey.h
@@ -1079,14 +1079,14 @@
kTopEarlgreyPlicIrqIdGpioGpio29 = 62, /**< gpio_gpio 29 */
kTopEarlgreyPlicIrqIdGpioGpio30 = 63, /**< gpio_gpio 30 */
kTopEarlgreyPlicIrqIdGpioGpio31 = 64, /**< gpio_gpio 31 */
- kTopEarlgreyPlicIrqIdSpiDeviceRxFull = 65, /**< spi_device_rx_full */
- kTopEarlgreyPlicIrqIdSpiDeviceRxWatermark = 66, /**< spi_device_rx_watermark */
- kTopEarlgreyPlicIrqIdSpiDeviceTxWatermark = 67, /**< spi_device_tx_watermark */
- kTopEarlgreyPlicIrqIdSpiDeviceRxError = 68, /**< spi_device_rx_error */
- kTopEarlgreyPlicIrqIdSpiDeviceRxOverflow = 69, /**< spi_device_rx_overflow */
- kTopEarlgreyPlicIrqIdSpiDeviceTxUnderflow = 70, /**< spi_device_tx_underflow */
- kTopEarlgreyPlicIrqIdSpiDeviceCmdfifoNotEmpty = 71, /**< spi_device_cmdfifo_not_empty */
- kTopEarlgreyPlicIrqIdSpiDevicePayloadNotEmpty = 72, /**< spi_device_payload_not_empty */
+ kTopEarlgreyPlicIrqIdSpiDeviceGenericRxFull = 65, /**< spi_device_generic_rx_full */
+ kTopEarlgreyPlicIrqIdSpiDeviceGenericRxWatermark = 66, /**< spi_device_generic_rx_watermark */
+ kTopEarlgreyPlicIrqIdSpiDeviceGenericTxWatermark = 67, /**< spi_device_generic_tx_watermark */
+ kTopEarlgreyPlicIrqIdSpiDeviceGenericRxError = 68, /**< spi_device_generic_rx_error */
+ kTopEarlgreyPlicIrqIdSpiDeviceGenericRxOverflow = 69, /**< spi_device_generic_rx_overflow */
+ kTopEarlgreyPlicIrqIdSpiDeviceGenericTxUnderflow = 70, /**< spi_device_generic_tx_underflow */
+ kTopEarlgreyPlicIrqIdSpiDeviceUploadCmdfifoNotEmpty = 71, /**< spi_device_upload_cmdfifo_not_empty */
+ kTopEarlgreyPlicIrqIdSpiDeviceUploadPayloadNotEmpty = 72, /**< spi_device_upload_payload_not_empty */
kTopEarlgreyPlicIrqIdSpiDeviceReadbufWatermark = 73, /**< spi_device_readbuf_watermark */
kTopEarlgreyPlicIrqIdSpiDeviceReadbufFlip = 74, /**< spi_device_readbuf_flip */
kTopEarlgreyPlicIrqIdSpiDeviceTpmHeaderNotEmpty = 75, /**< spi_device_tpm_header_not_empty */
diff --git a/sw/device/lib/dif/autogen/dif_spi_device_autogen.c b/sw/device/lib/dif/autogen/dif_spi_device_autogen.c
index 77cb50d..ba39ae8 100644
--- a/sw/device/lib/dif/autogen/dif_spi_device_autogen.c
+++ b/sw/device/lib/dif/autogen/dif_spi_device_autogen.c
@@ -53,29 +53,29 @@
static bool spi_device_get_irq_bit_index(dif_spi_device_irq_t irq,
bitfield_bit32_index_t *index_out) {
switch (irq) {
- case kDifSpiDeviceIrqRxFull:
- *index_out = SPI_DEVICE_INTR_COMMON_RX_FULL_BIT;
+ case kDifSpiDeviceIrqGenericRxFull:
+ *index_out = SPI_DEVICE_INTR_COMMON_GENERIC_RX_FULL_BIT;
break;
- case kDifSpiDeviceIrqRxWatermark:
- *index_out = SPI_DEVICE_INTR_COMMON_RX_WATERMARK_BIT;
+ case kDifSpiDeviceIrqGenericRxWatermark:
+ *index_out = SPI_DEVICE_INTR_COMMON_GENERIC_RX_WATERMARK_BIT;
break;
- case kDifSpiDeviceIrqTxWatermark:
- *index_out = SPI_DEVICE_INTR_COMMON_TX_WATERMARK_BIT;
+ case kDifSpiDeviceIrqGenericTxWatermark:
+ *index_out = SPI_DEVICE_INTR_COMMON_GENERIC_TX_WATERMARK_BIT;
break;
- case kDifSpiDeviceIrqRxError:
- *index_out = SPI_DEVICE_INTR_COMMON_RX_ERROR_BIT;
+ case kDifSpiDeviceIrqGenericRxError:
+ *index_out = SPI_DEVICE_INTR_COMMON_GENERIC_RX_ERROR_BIT;
break;
- case kDifSpiDeviceIrqRxOverflow:
- *index_out = SPI_DEVICE_INTR_COMMON_RX_OVERFLOW_BIT;
+ case kDifSpiDeviceIrqGenericRxOverflow:
+ *index_out = SPI_DEVICE_INTR_COMMON_GENERIC_RX_OVERFLOW_BIT;
break;
- case kDifSpiDeviceIrqTxUnderflow:
- *index_out = SPI_DEVICE_INTR_COMMON_TX_UNDERFLOW_BIT;
+ case kDifSpiDeviceIrqGenericTxUnderflow:
+ *index_out = SPI_DEVICE_INTR_COMMON_GENERIC_TX_UNDERFLOW_BIT;
break;
- case kDifSpiDeviceIrqCmdfifoNotEmpty:
- *index_out = SPI_DEVICE_INTR_COMMON_CMDFIFO_NOT_EMPTY_BIT;
+ case kDifSpiDeviceIrqUploadCmdfifoNotEmpty:
+ *index_out = SPI_DEVICE_INTR_COMMON_UPLOAD_CMDFIFO_NOT_EMPTY_BIT;
break;
- case kDifSpiDeviceIrqPayloadNotEmpty:
- *index_out = SPI_DEVICE_INTR_COMMON_PAYLOAD_NOT_EMPTY_BIT;
+ case kDifSpiDeviceIrqUploadPayloadNotEmpty:
+ *index_out = SPI_DEVICE_INTR_COMMON_UPLOAD_PAYLOAD_NOT_EMPTY_BIT;
break;
case kDifSpiDeviceIrqReadbufWatermark:
*index_out = SPI_DEVICE_INTR_COMMON_READBUF_WATERMARK_BIT;
diff --git a/sw/device/lib/dif/autogen/dif_spi_device_autogen.h b/sw/device/lib/dif/autogen/dif_spi_device_autogen.h
index c3471e5..0402027 100644
--- a/sw/device/lib/dif/autogen/dif_spi_device_autogen.h
+++ b/sw/device/lib/dif/autogen/dif_spi_device_autogen.h
@@ -80,36 +80,36 @@
/**
* RX SRAM FIFO Full
*/
- kDifSpiDeviceIrqRxFull = 0,
+ kDifSpiDeviceIrqGenericRxFull = 0,
/**
* RX SRAM FIFO is above the level
*/
- kDifSpiDeviceIrqRxWatermark = 1,
+ kDifSpiDeviceIrqGenericRxWatermark = 1,
/**
* TX SRAM FIFO is under the level
*/
- kDifSpiDeviceIrqTxWatermark = 2,
+ kDifSpiDeviceIrqGenericTxWatermark = 2,
/**
* SDI in FwMode has error
*/
- kDifSpiDeviceIrqRxError = 3,
+ kDifSpiDeviceIrqGenericRxError = 3,
/**
* RX Async FIFO overflow
*/
- kDifSpiDeviceIrqRxOverflow = 4,
+ kDifSpiDeviceIrqGenericRxOverflow = 4,
/**
* TX Async FIFO underflow
*/
- kDifSpiDeviceIrqTxUnderflow = 5,
+ kDifSpiDeviceIrqGenericTxUnderflow = 5,
/**
* Upload Command FIFO is not empty
*/
- kDifSpiDeviceIrqCmdfifoNotEmpty = 6,
+ kDifSpiDeviceIrqUploadCmdfifoNotEmpty = 6,
/**
* Upload paylod is not empty. The event occurs after SPI transaction
* completed
*/
- kDifSpiDeviceIrqPayloadNotEmpty = 7,
+ kDifSpiDeviceIrqUploadPayloadNotEmpty = 7,
/**
* Read Buffer Threshold event. The host system accesses greater than or
* equal to the threshold of a buffer.
diff --git a/sw/device/lib/dif/autogen/dif_spi_device_autogen_unittest.cc b/sw/device/lib/dif/autogen/dif_spi_device_autogen_unittest.cc
index 2ac184e..d99066d 100644
--- a/sw/device/lib/dif/autogen/dif_spi_device_autogen_unittest.cc
+++ b/sw/device/lib/dif/autogen/dif_spi_device_autogen_unittest.cc
@@ -91,17 +91,17 @@
TEST_F(IrqIsPendingTest, NullArgs) {
bool is_pending;
- EXPECT_EQ(dif_spi_device_irq_is_pending(nullptr, kDifSpiDeviceIrqRxFull,
- &is_pending),
+ EXPECT_EQ(dif_spi_device_irq_is_pending(
+ nullptr, kDifSpiDeviceIrqGenericRxFull, &is_pending),
kDifBadArg);
- EXPECT_EQ(dif_spi_device_irq_is_pending(&spi_device_, kDifSpiDeviceIrqRxFull,
- nullptr),
+ EXPECT_EQ(dif_spi_device_irq_is_pending(
+ &spi_device_, kDifSpiDeviceIrqGenericRxFull, nullptr),
kDifBadArg);
- EXPECT_EQ(
- dif_spi_device_irq_is_pending(nullptr, kDifSpiDeviceIrqRxFull, nullptr),
- kDifBadArg);
+ EXPECT_EQ(dif_spi_device_irq_is_pending(
+ nullptr, kDifSpiDeviceIrqGenericRxFull, nullptr),
+ kDifBadArg);
}
TEST_F(IrqIsPendingTest, BadIrq) {
@@ -119,9 +119,9 @@
// Get the first IRQ state.
irq_state = false;
EXPECT_READ32(SPI_DEVICE_INTR_STATE_REG_OFFSET,
- {{SPI_DEVICE_INTR_STATE_RX_FULL_BIT, true}});
- EXPECT_EQ(dif_spi_device_irq_is_pending(&spi_device_, kDifSpiDeviceIrqRxFull,
- &irq_state),
+ {{SPI_DEVICE_INTR_STATE_GENERIC_RX_FULL_BIT, true}});
+ EXPECT_EQ(dif_spi_device_irq_is_pending(
+ &spi_device_, kDifSpiDeviceIrqGenericRxFull, &irq_state),
kDifOk);
EXPECT_TRUE(irq_state);
@@ -151,8 +151,9 @@
class IrqAcknowledgeTest : public SpiDeviceTest {};
TEST_F(IrqAcknowledgeTest, NullArgs) {
- EXPECT_EQ(dif_spi_device_irq_acknowledge(nullptr, kDifSpiDeviceIrqRxFull),
- kDifBadArg);
+ EXPECT_EQ(
+ dif_spi_device_irq_acknowledge(nullptr, kDifSpiDeviceIrqGenericRxFull),
+ kDifBadArg);
}
TEST_F(IrqAcknowledgeTest, BadIrq) {
@@ -164,10 +165,10 @@
TEST_F(IrqAcknowledgeTest, Success) {
// Clear the first IRQ state.
EXPECT_WRITE32(SPI_DEVICE_INTR_STATE_REG_OFFSET,
- {{SPI_DEVICE_INTR_STATE_RX_FULL_BIT, true}});
- EXPECT_EQ(
- dif_spi_device_irq_acknowledge(&spi_device_, kDifSpiDeviceIrqRxFull),
- kDifOk);
+ {{SPI_DEVICE_INTR_STATE_GENERIC_RX_FULL_BIT, true}});
+ EXPECT_EQ(dif_spi_device_irq_acknowledge(&spi_device_,
+ kDifSpiDeviceIrqGenericRxFull),
+ kDifOk);
// Clear the last IRQ state.
EXPECT_WRITE32(SPI_DEVICE_INTR_STATE_REG_OFFSET,
@@ -180,7 +181,7 @@
class IrqForceTest : public SpiDeviceTest {};
TEST_F(IrqForceTest, NullArgs) {
- EXPECT_EQ(dif_spi_device_irq_force(nullptr, kDifSpiDeviceIrqRxFull),
+ EXPECT_EQ(dif_spi_device_irq_force(nullptr, kDifSpiDeviceIrqGenericRxFull),
kDifBadArg);
}
@@ -193,9 +194,10 @@
TEST_F(IrqForceTest, Success) {
// Force first IRQ.
EXPECT_WRITE32(SPI_DEVICE_INTR_TEST_REG_OFFSET,
- {{SPI_DEVICE_INTR_TEST_RX_FULL_BIT, true}});
- EXPECT_EQ(dif_spi_device_irq_force(&spi_device_, kDifSpiDeviceIrqRxFull),
- kDifOk);
+ {{SPI_DEVICE_INTR_TEST_GENERIC_RX_FULL_BIT, true}});
+ EXPECT_EQ(
+ dif_spi_device_irq_force(&spi_device_, kDifSpiDeviceIrqGenericRxFull),
+ kDifOk);
// Force last IRQ.
EXPECT_WRITE32(SPI_DEVICE_INTR_TEST_REG_OFFSET,
@@ -210,17 +212,17 @@
TEST_F(IrqGetEnabledTest, NullArgs) {
dif_toggle_t irq_state;
- EXPECT_EQ(dif_spi_device_irq_get_enabled(nullptr, kDifSpiDeviceIrqRxFull,
- &irq_state),
+ EXPECT_EQ(dif_spi_device_irq_get_enabled(
+ nullptr, kDifSpiDeviceIrqGenericRxFull, &irq_state),
kDifBadArg);
- EXPECT_EQ(dif_spi_device_irq_get_enabled(&spi_device_, kDifSpiDeviceIrqRxFull,
- nullptr),
+ EXPECT_EQ(dif_spi_device_irq_get_enabled(
+ &spi_device_, kDifSpiDeviceIrqGenericRxFull, nullptr),
kDifBadArg);
- EXPECT_EQ(
- dif_spi_device_irq_get_enabled(nullptr, kDifSpiDeviceIrqRxFull, nullptr),
- kDifBadArg);
+ EXPECT_EQ(dif_spi_device_irq_get_enabled(
+ nullptr, kDifSpiDeviceIrqGenericRxFull, nullptr),
+ kDifBadArg);
}
TEST_F(IrqGetEnabledTest, BadIrq) {
@@ -238,9 +240,9 @@
// First IRQ is enabled.
irq_state = kDifToggleDisabled;
EXPECT_READ32(SPI_DEVICE_INTR_ENABLE_REG_OFFSET,
- {{SPI_DEVICE_INTR_ENABLE_RX_FULL_BIT, true}});
- EXPECT_EQ(dif_spi_device_irq_get_enabled(&spi_device_, kDifSpiDeviceIrqRxFull,
- &irq_state),
+ {{SPI_DEVICE_INTR_ENABLE_GENERIC_RX_FULL_BIT, true}});
+ EXPECT_EQ(dif_spi_device_irq_get_enabled(
+ &spi_device_, kDifSpiDeviceIrqGenericRxFull, &irq_state),
kDifOk);
EXPECT_EQ(irq_state, kDifToggleEnabled);
@@ -259,8 +261,8 @@
TEST_F(IrqSetEnabledTest, NullArgs) {
dif_toggle_t irq_state = kDifToggleEnabled;
- EXPECT_EQ(dif_spi_device_irq_set_enabled(nullptr, kDifSpiDeviceIrqRxFull,
- irq_state),
+ EXPECT_EQ(dif_spi_device_irq_set_enabled(
+ nullptr, kDifSpiDeviceIrqGenericRxFull, irq_state),
kDifBadArg);
}
@@ -278,9 +280,9 @@
// Enable first IRQ.
irq_state = kDifToggleEnabled;
EXPECT_MASK32(SPI_DEVICE_INTR_ENABLE_REG_OFFSET,
- {{SPI_DEVICE_INTR_ENABLE_RX_FULL_BIT, 0x1, true}});
- EXPECT_EQ(dif_spi_device_irq_set_enabled(&spi_device_, kDifSpiDeviceIrqRxFull,
- irq_state),
+ {{SPI_DEVICE_INTR_ENABLE_GENERIC_RX_FULL_BIT, 0x1, true}});
+ EXPECT_EQ(dif_spi_device_irq_set_enabled(
+ &spi_device_, kDifSpiDeviceIrqGenericRxFull, irq_state),
kDifOk);
// Disable last IRQ.
diff --git a/sw/device/tests/autogen/plic_all_irqs_test.c b/sw/device/tests/autogen/plic_all_irqs_test.c
index 31c0561..68498bb 100644
--- a/sw/device/tests/autogen/plic_all_irqs_test.c
+++ b/sw/device/tests/autogen/plic_all_irqs_test.c
@@ -562,7 +562,7 @@
case kTopEarlgreyPlicPeripheralSpiDevice: {
dif_spi_device_irq_t irq = (dif_spi_device_irq_t)(
plic_irq_id -
- (dif_rv_plic_irq_id_t)kTopEarlgreyPlicIrqIdSpiDeviceRxFull);
+ (dif_rv_plic_irq_id_t)kTopEarlgreyPlicIrqIdSpiDeviceGenericRxFull);
CHECK(irq == spi_device_irq_expected,
"Incorrect spi_device IRQ triggered: exp = %d, obs = %d",
spi_device_irq_expected, irq);
@@ -1256,7 +1256,7 @@
}
peripheral_expected = kTopEarlgreyPlicPeripheralSpiDevice;
- for (dif_spi_device_irq_t irq = kDifSpiDeviceIrqRxFull;
+ for (dif_spi_device_irq_t irq = kDifSpiDeviceIrqGenericRxFull;
irq <= kDifSpiDeviceIrqTpmHeaderNotEmpty; ++irq) {
spi_device_irq_expected = irq;
LOG_INFO("Triggering spi_device IRQ %d.", irq);
diff --git a/sw/device/tests/sim_dv/spi_tx_rx_test.c b/sw/device/tests/sim_dv/spi_tx_rx_test.c
index e9bbec6..6bcebe8 100644
--- a/sw/device/tests/sim_dv/spi_tx_rx_test.c
+++ b/sw/device/tests/sim_dv/spi_tx_rx_test.c
@@ -82,30 +82,30 @@
// Correlate the interrupt fired at PLIC with SPI DEVICE.
dif_spi_device_irq_t spi_device_irq = 0;
switch (plic_irq_id) {
- case kTopEarlgreyPlicIrqIdSpiDeviceRxFull:
- spi_device_irq = kDifSpiDeviceIrqRxFull;
+ case kTopEarlgreyPlicIrqIdSpiDeviceGenericRxFull:
+ spi_device_irq = kDifSpiDeviceIrqGenericRxFull;
CHECK(expected_irqs[spi_device_irq], "Unexpected RX full interrupt");
break;
- case kTopEarlgreyPlicIrqIdSpiDeviceRxWatermark:
- spi_device_irq = kDifSpiDeviceIrqRxWatermark;
+ case kTopEarlgreyPlicIrqIdSpiDeviceGenericRxWatermark:
+ spi_device_irq = kDifSpiDeviceIrqGenericRxWatermark;
CHECK(expected_irqs[spi_device_irq],
"Unexpected RX above level interrupt");
break;
- case kTopEarlgreyPlicIrqIdSpiDeviceTxWatermark:
- spi_device_irq = kDifSpiDeviceIrqTxWatermark;
+ case kTopEarlgreyPlicIrqIdSpiDeviceGenericTxWatermark:
+ spi_device_irq = kDifSpiDeviceIrqGenericTxWatermark;
CHECK(expected_irqs[spi_device_irq],
"Unexpected TX below level interrupt");
break;
- case kTopEarlgreyPlicIrqIdSpiDeviceRxError:
- spi_device_irq = kDifSpiDeviceIrqRxError;
+ case kTopEarlgreyPlicIrqIdSpiDeviceGenericRxError:
+ spi_device_irq = kDifSpiDeviceIrqGenericRxError;
CHECK(expected_irqs[spi_device_irq], "Unexpected RX error interrupt");
break;
- case kTopEarlgreyPlicIrqIdSpiDeviceRxOverflow:
- spi_device_irq = kDifSpiDeviceIrqRxOverflow;
+ case kTopEarlgreyPlicIrqIdSpiDeviceGenericRxOverflow:
+ spi_device_irq = kDifSpiDeviceIrqGenericRxOverflow;
CHECK(expected_irqs[spi_device_irq], "Unexpected RX overflow interrupt");
break;
- case kTopEarlgreyPlicIrqIdSpiDeviceTxUnderflow:
- spi_device_irq = kDifSpiDeviceIrqTxUnderflow;
+ case kTopEarlgreyPlicIrqIdSpiDeviceGenericTxUnderflow:
+ spi_device_irq = kDifSpiDeviceIrqGenericTxUnderflow;
CHECK(expected_irqs[spi_device_irq], "Unexpected TX underflow interrupt");
// TxUnderflow keeps firing as TX fifo is empty but TB controls host to
// keep sending data and requesting data from device, so disable this
@@ -113,7 +113,7 @@
// back to the main program, disable the interrupt here instead of in the
// main program.
CHECK_DIF_OK(dif_spi_device_irq_set_enabled(
- &spi_device, kDifSpiDeviceIrqTxUnderflow, kDifToggleDisabled));
+ &spi_device, kDifSpiDeviceIrqGenericTxUnderflow, kDifToggleDisabled));
break;
default:
LOG_ERROR("Unexpected interrupt (at PLIC): %d", plic_irq_id);
@@ -147,17 +147,17 @@
CHECK_DIF_OK(dif_spi_device_configure(spi_device, spi_device_config));
CHECK_DIF_OK(dif_spi_device_irq_set_enabled(
- spi_device, kDifSpiDeviceIrqRxFull, kDifToggleEnabled));
+ spi_device, kDifSpiDeviceIrqGenericRxFull, kDifToggleEnabled));
CHECK_DIF_OK(dif_spi_device_irq_set_enabled(
- spi_device, kDifSpiDeviceIrqRxWatermark, kDifToggleEnabled));
+ spi_device, kDifSpiDeviceIrqGenericRxWatermark, kDifToggleEnabled));
CHECK_DIF_OK(dif_spi_device_irq_set_enabled(
- spi_device, kDifSpiDeviceIrqTxWatermark, kDifToggleEnabled));
+ spi_device, kDifSpiDeviceIrqGenericTxWatermark, kDifToggleEnabled));
CHECK_DIF_OK(dif_spi_device_irq_set_enabled(
- spi_device, kDifSpiDeviceIrqRxError, kDifToggleEnabled));
+ spi_device, kDifSpiDeviceIrqGenericRxError, kDifToggleEnabled));
CHECK_DIF_OK(dif_spi_device_irq_set_enabled(
- spi_device, kDifSpiDeviceIrqRxOverflow, kDifToggleEnabled));
+ spi_device, kDifSpiDeviceIrqGenericRxOverflow, kDifToggleEnabled));
CHECK_DIF_OK(dif_spi_device_irq_set_enabled(
- spi_device, kDifSpiDeviceIrqTxUnderflow, kDifToggleEnabled));
+ spi_device, kDifSpiDeviceIrqGenericTxUnderflow, kDifToggleEnabled));
// Initialize the volatile irq variables.
for (int i = 0; i < SPI_DEVICE_NUM_IRQS; i++) {
@@ -177,53 +177,59 @@
// Set the priority of SPI DEVICE interrupts at PLIC to be >=1 (so ensure the
// target does get interrupted).
CHECK_DIF_OK(dif_rv_plic_irq_set_priority(
- plic, kTopEarlgreyPlicIrqIdSpiDeviceRxFull, kDifRvPlicMaxPriority));
+ plic, kTopEarlgreyPlicIrqIdSpiDeviceGenericRxFull,
+ kDifRvPlicMaxPriority));
CHECK_DIF_OK(dif_rv_plic_irq_set_priority(
- plic, kTopEarlgreyPlicIrqIdSpiDeviceRxWatermark, kDifRvPlicMaxPriority));
+ plic, kTopEarlgreyPlicIrqIdSpiDeviceGenericRxWatermark,
+ kDifRvPlicMaxPriority));
CHECK_DIF_OK(dif_rv_plic_irq_set_priority(
- plic, kTopEarlgreyPlicIrqIdSpiDeviceTxWatermark, kDifRvPlicMaxPriority));
+ plic, kTopEarlgreyPlicIrqIdSpiDeviceGenericTxWatermark,
+ kDifRvPlicMaxPriority));
CHECK_DIF_OK(dif_rv_plic_irq_set_priority(
- plic, kTopEarlgreyPlicIrqIdSpiDeviceRxError, kDifRvPlicMaxPriority));
+ plic, kTopEarlgreyPlicIrqIdSpiDeviceGenericRxError,
+ kDifRvPlicMaxPriority));
CHECK_DIF_OK(dif_rv_plic_irq_set_priority(
- plic, kTopEarlgreyPlicIrqIdSpiDeviceRxOverflow, kDifRvPlicMaxPriority));
+ plic, kTopEarlgreyPlicIrqIdSpiDeviceGenericRxOverflow,
+ kDifRvPlicMaxPriority));
CHECK_DIF_OK(dif_rv_plic_irq_set_priority(
- plic, kTopEarlgreyPlicIrqIdSpiDeviceTxUnderflow, kDifRvPlicMaxPriority));
+ plic, kTopEarlgreyPlicIrqIdSpiDeviceGenericTxUnderflow,
+ kDifRvPlicMaxPriority));
// Set the threshold for the Ibex to 0.
CHECK_DIF_OK(
dif_rv_plic_target_set_threshold(plic, kTopEarlgreyPlicTargetIbex0, 0x0));
CHECK_DIF_OK(dif_rv_plic_irq_set_enabled(
- plic, kTopEarlgreyPlicIrqIdSpiDeviceRxFull, kTopEarlgreyPlicTargetIbex0,
- kDifToggleEnabled));
-
- CHECK_DIF_OK(dif_rv_plic_irq_set_enabled(
- plic, kTopEarlgreyPlicIrqIdSpiDeviceRxWatermark,
+ plic, kTopEarlgreyPlicIrqIdSpiDeviceGenericRxFull,
kTopEarlgreyPlicTargetIbex0, kDifToggleEnabled));
CHECK_DIF_OK(dif_rv_plic_irq_set_enabled(
- plic, kTopEarlgreyPlicIrqIdSpiDeviceTxWatermark,
+ plic, kTopEarlgreyPlicIrqIdSpiDeviceGenericRxWatermark,
kTopEarlgreyPlicTargetIbex0, kDifToggleEnabled));
CHECK_DIF_OK(dif_rv_plic_irq_set_enabled(
- plic, kTopEarlgreyPlicIrqIdSpiDeviceRxError, kTopEarlgreyPlicTargetIbex0,
- kDifToggleEnabled));
-
- CHECK_DIF_OK(dif_rv_plic_irq_set_enabled(
- plic, kTopEarlgreyPlicIrqIdSpiDeviceRxOverflow,
+ plic, kTopEarlgreyPlicIrqIdSpiDeviceGenericTxWatermark,
kTopEarlgreyPlicTargetIbex0, kDifToggleEnabled));
CHECK_DIF_OK(dif_rv_plic_irq_set_enabled(
- plic, kTopEarlgreyPlicIrqIdSpiDeviceTxUnderflow,
+ plic, kTopEarlgreyPlicIrqIdSpiDeviceGenericRxError,
+ kTopEarlgreyPlicTargetIbex0, kDifToggleEnabled));
+
+ CHECK_DIF_OK(dif_rv_plic_irq_set_enabled(
+ plic, kTopEarlgreyPlicIrqIdSpiDeviceGenericRxOverflow,
+ kTopEarlgreyPlicTargetIbex0, kDifToggleEnabled));
+
+ CHECK_DIF_OK(dif_rv_plic_irq_set_enabled(
+ plic, kTopEarlgreyPlicIrqIdSpiDeviceGenericTxUnderflow,
kTopEarlgreyPlicTargetIbex0, kDifToggleEnabled));
}
static bool exp_irqs_fired(void) {
- return fired_irqs[kDifSpiDeviceIrqRxWatermark] &&
- fired_irqs[kDifSpiDeviceIrqTxWatermark] &&
- fired_irqs[kDifSpiDeviceIrqRxOverflow] &&
- fired_irqs[kDifSpiDeviceIrqTxUnderflow] &&
- fired_irqs[kDifSpiDeviceIrqRxFull];
+ return fired_irqs[kDifSpiDeviceIrqGenericRxWatermark] &&
+ fired_irqs[kDifSpiDeviceIrqGenericTxWatermark] &&
+ fired_irqs[kDifSpiDeviceIrqGenericRxOverflow] &&
+ fired_irqs[kDifSpiDeviceIrqGenericTxUnderflow] &&
+ fired_irqs[kDifSpiDeviceIrqGenericRxFull];
}
static bool execute_test(const dif_spi_device_t *spi_device,
@@ -244,30 +250,30 @@
CHECK_DIF_OK(dif_spi_device_set_irq_levels(
spi_device, SPI_DEVICE_DATASET_SIZE, SPI_DEVICE_DATASET_SIZE / 2));
- expected_irqs[kDifSpiDeviceIrqTxWatermark] = true;
+ expected_irqs[kDifSpiDeviceIrqGenericTxWatermark] = true;
bool read_rx_fifo_done = false;
while (!read_rx_fifo_done || !exp_irqs_fired()) {
// set rx tx level back to default value so TxBelowLevel irq won't trigger
- if (fired_irqs[kDifSpiDeviceIrqTxWatermark] &&
- expected_irqs[kDifSpiDeviceIrqTxWatermark]) {
+ if (fired_irqs[kDifSpiDeviceIrqGenericTxWatermark] &&
+ expected_irqs[kDifSpiDeviceIrqGenericTxWatermark]) {
CHECK_DIF_OK(dif_spi_device_set_irq_levels(spi_device,
SPI_DEVICE_DATASET_SIZE, 0));
- expected_irqs[kDifSpiDeviceIrqTxWatermark] = false;
- expected_irqs[kDifSpiDeviceIrqRxWatermark] = true;
+ expected_irqs[kDifSpiDeviceIrqGenericTxWatermark] = false;
+ expected_irqs[kDifSpiDeviceIrqGenericRxWatermark] = true;
LOG_INFO("SPI_DEVICE tx_below_level interrupt fired.");
}
// wait for SPI_HOST to send 128 bytes and trigger RxAboveLevel irq
- if (fired_irqs[kDifSpiDeviceIrqRxWatermark] &&
- expected_irqs[kDifSpiDeviceIrqRxWatermark]) {
- expected_irqs[kDifSpiDeviceIrqRxWatermark] = false;
+ if (fired_irqs[kDifSpiDeviceIrqGenericRxWatermark] &&
+ expected_irqs[kDifSpiDeviceIrqGenericRxWatermark]) {
+ expected_irqs[kDifSpiDeviceIrqGenericRxWatermark] = false;
LOG_INFO("SPI_DEVICE rx_above_level interrupt fired.");
}
// when 128 bytes received in RX_FIFO from SPI_HOST,
// read out and compare against the expected data
- if (fired_irqs[kDifSpiDeviceIrqRxWatermark] && !read_rx_fifo_done) {
+ if (fired_irqs[kDifSpiDeviceIrqGenericRxWatermark] && !read_rx_fifo_done) {
size_t bytes_recved = 0;
uint8_t spi_device_rx_data[SPI_DEVICE_DATASET_SIZE];
CHECK_DIF_OK(dif_spi_device_recv(spi_device, spi_device_config,
@@ -282,8 +288,8 @@
bytes_recved, SPI_DEVICE_DATASET_SIZE);
}
// expect SPI_HOST to send another 1024 bytes to fill RX SRAM FIFO
- expected_irqs[kDifSpiDeviceIrqTxUnderflow] = true;
- fired_irqs[kDifSpiDeviceIrqRxWatermark] = false;
+ expected_irqs[kDifSpiDeviceIrqGenericTxUnderflow] = true;
+ fired_irqs[kDifSpiDeviceIrqGenericRxWatermark] = false;
// Check data consistency.
LOG_INFO("Checking the received SPI_HOST RX_FIFO data for consistency.");
@@ -294,23 +300,23 @@
}
}
- if (read_rx_fifo_done && fired_irqs[kDifSpiDeviceIrqTxUnderflow]) {
- expected_irqs[kDifSpiDeviceIrqRxWatermark] = true;
- expected_irqs[kDifSpiDeviceIrqTxUnderflow] = false;
+ if (read_rx_fifo_done && fired_irqs[kDifSpiDeviceIrqGenericTxUnderflow]) {
+ expected_irqs[kDifSpiDeviceIrqGenericRxWatermark] = true;
+ expected_irqs[kDifSpiDeviceIrqGenericTxUnderflow] = false;
LOG_INFO("SPI_DEVICE Tx underflow fired.");
}
- if (read_rx_fifo_done && fired_irqs[kDifSpiDeviceIrqRxWatermark]) {
- expected_irqs[kDifSpiDeviceIrqRxWatermark] = false;
- expected_irqs[kDifSpiDeviceIrqRxFull] = true;
+ if (read_rx_fifo_done && fired_irqs[kDifSpiDeviceIrqGenericRxWatermark]) {
+ expected_irqs[kDifSpiDeviceIrqGenericRxWatermark] = false;
+ expected_irqs[kDifSpiDeviceIrqGenericRxFull] = true;
LOG_INFO("SPI_DEVICE RX Above level interrupt fired.");
}
// After RX SRAM FIFO full, expect RX async FIFO overflow irq
- if (fired_irqs[kDifSpiDeviceIrqRxFull] &&
- !fired_irqs[kDifSpiDeviceIrqRxOverflow]) {
- expected_irqs[kDifSpiDeviceIrqRxFull] = false;
- expected_irqs[kDifSpiDeviceIrqRxOverflow] = true;
+ if (fired_irqs[kDifSpiDeviceIrqGenericRxFull] &&
+ !fired_irqs[kDifSpiDeviceIrqGenericRxOverflow]) {
+ expected_irqs[kDifSpiDeviceIrqGenericRxFull] = false;
+ expected_irqs[kDifSpiDeviceIrqGenericRxOverflow] = true;
LOG_INFO("SPI_DEVICE RX_FIFO full interrupt fired.");
}