[spi_device] Mailbox Addr CSR

This commit adds Mailbox enable configuration and mailbox base address
into the SPI_DEVICE CSR space.

The details of the mailbox feature will be in the SPI_DEVICE HWIP
Technical Specification.

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 a791e1f..68ff937 100644
--- a/hw/ip/spi_device/data/spi_device.hjson
+++ b/hw/ip/spi_device/data/spi_device.hjson
@@ -214,6 +214,16 @@
             the SPI line 0 following the SPI command as the address field.
             '''
         }
+        { bits: "24"
+          name: "mailbox_en"
+          desc: '''Mailbox enable.
+
+            If 1, in the flash and passthrough mode, the IP checks the incoming
+            address and return from the internal Mailbox buffer if the address
+            falls into the MAILBOX range
+            (MAILBOX_ADDR:MAILBOX_ADDR+MAILBOX_SIZE)}.
+            '''
+        } // f: mailbox_en
       ]
     },
     { name: "FIFO_LEVEL",
@@ -475,6 +485,21 @@
         } // f: threshold
       ]
     } // R: READ_THRESHOLD
+    { name: "MAILBOX_ADDR"
+      desc: '''Mailbox Base address register.
+
+        The mailbox size is fixed. In this version of IP, the size is 1kB.
+        Lower 10 bits of the Mailbox address is tied to 0.
+        '''
+      swaccess: "rw"
+      hwaccess: "hro"
+      fields: [
+        { bits: "31:0"
+          name: "addr"
+          desc: "Mailbox Address. Lower 10 bits are ignored"
+        } // f: addr
+      ]
+    } // R: MAILBOX_ADDR
     { name: "UPLOAD_STATUS"
       desc: '''Upload module status register.
         '''
diff --git a/hw/ip/spi_device/rtl/spi_device.sv b/hw/ip/spi_device/rtl/spi_device.sv
index 1017ac8..1e0b73b 100644
--- a/hw/ip/spi_device/rtl/spi_device.sv
+++ b/hw/ip/spi_device/rtl/spi_device.sv
@@ -222,6 +222,9 @@
   // Mailbox in Passthrough needs to take SPI if readcmd hits mailbox address
   logic mailbox_assumed, passthrough_assumed_by_internal;
 
+  logic cfg_mailbox_en;
+  logic [31:0] mailbox_addr;
+
   // Threshold value of a buffer in bytes
   logic [BufferAw:0] readbuf_threshold;
 
@@ -540,6 +543,12 @@
 
   assign readbuf_threshold = reg2hw.read_threshold.q[BufferAw:0];
 
+  localparam int unsigned MailboxAw = $clog2(SramMailboxDepth*SramDw/8);
+  assign cfg_mailbox_en = reg2hw.cfg.mailbox_en.q;
+  assign mailbox_addr   = { reg2hw.mailbox_addr.q[31:MailboxAw],
+                            {MailboxAw{1'b0}}
+                          };
+
   // Passthrough config: value shall be stable while SPI transaction is active
   //assign cmd_filter = reg2hw.cmd_filter.q;
   always_comb begin
@@ -1078,8 +1087,8 @@
 
     .addr_4b_en_i (cfg_addr_4b_en),
 
-    .mailbox_en_i      (1'b 0),
-    .mailbox_addr_i    ('0), // 32
+    .mailbox_en_i      (cfg_mailbox_en ),
+    .mailbox_addr_i    (mailbox_addr   ),
     .mailbox_assumed_o (mailbox_assumed),
 
     .readbuf_address_o (readbuf_addr_sck),
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 69ac54f..c0be998 100644
--- a/hw/ip/spi_device/rtl/spi_device_reg_pkg.sv
+++ b/hw/ip/spi_device/rtl/spi_device_reg_pkg.sv
@@ -140,6 +140,9 @@
     struct packed {
       logic        q;
     } addr_4b_en;
+    struct packed {
+      logic        q;
+    } mailbox_en;
   } spi_device_reg2hw_cfg_reg_t;
 
   typedef struct packed {
@@ -206,6 +209,10 @@
   } spi_device_reg2hw_read_threshold_reg_t;
 
   typedef struct packed {
+    logic [31:0] q;
+  } spi_device_reg2hw_mailbox_addr_reg_t;
+
+  typedef struct packed {
     logic [7:0]  q;
     logic        re;
   } spi_device_reg2hw_upload_cmdfifo_reg_t;
@@ -510,20 +517,21 @@
 
   // Register -> HW type
   typedef struct packed {
-    spi_device_reg2hw_intr_state_reg_t intr_state; // [1426:1420]
-    spi_device_reg2hw_intr_enable_reg_t intr_enable; // [1419:1413]
-    spi_device_reg2hw_intr_test_reg_t intr_test; // [1412:1399]
-    spi_device_reg2hw_alert_test_reg_t alert_test; // [1398:1397]
-    spi_device_reg2hw_control_reg_t control; // [1396:1391]
-    spi_device_reg2hw_cfg_reg_t cfg; // [1390:1378]
-    spi_device_reg2hw_fifo_level_reg_t fifo_level; // [1377:1346]
-    spi_device_reg2hw_rxf_ptr_reg_t rxf_ptr; // [1345:1330]
-    spi_device_reg2hw_txf_ptr_reg_t txf_ptr; // [1329:1314]
-    spi_device_reg2hw_rxf_addr_reg_t rxf_addr; // [1313:1282]
-    spi_device_reg2hw_txf_addr_reg_t txf_addr; // [1281:1250]
-    spi_device_reg2hw_flash_status_reg_t flash_status; // [1249:1224]
-    spi_device_reg2hw_jedec_id_reg_t jedec_id; // [1223:1200]
-    spi_device_reg2hw_read_threshold_reg_t read_threshold; // [1199:1190]
+    spi_device_reg2hw_intr_state_reg_t intr_state; // [1459:1453]
+    spi_device_reg2hw_intr_enable_reg_t intr_enable; // [1452:1446]
+    spi_device_reg2hw_intr_test_reg_t intr_test; // [1445:1432]
+    spi_device_reg2hw_alert_test_reg_t alert_test; // [1431:1430]
+    spi_device_reg2hw_control_reg_t control; // [1429:1424]
+    spi_device_reg2hw_cfg_reg_t cfg; // [1423:1410]
+    spi_device_reg2hw_fifo_level_reg_t fifo_level; // [1409:1378]
+    spi_device_reg2hw_rxf_ptr_reg_t rxf_ptr; // [1377:1362]
+    spi_device_reg2hw_txf_ptr_reg_t txf_ptr; // [1361:1346]
+    spi_device_reg2hw_rxf_addr_reg_t rxf_addr; // [1345:1314]
+    spi_device_reg2hw_txf_addr_reg_t txf_addr; // [1313:1282]
+    spi_device_reg2hw_flash_status_reg_t flash_status; // [1281:1256]
+    spi_device_reg2hw_jedec_id_reg_t jedec_id; // [1255:1232]
+    spi_device_reg2hw_read_threshold_reg_t read_threshold; // [1231:1222]
+    spi_device_reg2hw_mailbox_addr_reg_t mailbox_addr; // [1221:1190]
     spi_device_reg2hw_upload_cmdfifo_reg_t upload_cmdfifo; // [1189:1181]
     spi_device_reg2hw_upload_addrfifo_reg_t upload_addrfifo; // [1180:1148]
     spi_device_reg2hw_cmd_filter_mreg_t [255:0] cmd_filter; // [1147:892]
@@ -580,43 +588,44 @@
   parameter logic [BlockAw-1:0] SPI_DEVICE_FLASH_STATUS_OFFSET = 13'h 38;
   parameter logic [BlockAw-1:0] SPI_DEVICE_JEDEC_ID_OFFSET = 13'h 3c;
   parameter logic [BlockAw-1:0] SPI_DEVICE_READ_THRESHOLD_OFFSET = 13'h 40;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_UPLOAD_STATUS_OFFSET = 13'h 44;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_UPLOAD_CMDFIFO_OFFSET = 13'h 48;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_UPLOAD_ADDRFIFO_OFFSET = 13'h 4c;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_FILTER_0_OFFSET = 13'h 50;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_FILTER_1_OFFSET = 13'h 54;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_FILTER_2_OFFSET = 13'h 58;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_FILTER_3_OFFSET = 13'h 5c;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_FILTER_4_OFFSET = 13'h 60;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_FILTER_5_OFFSET = 13'h 64;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_FILTER_6_OFFSET = 13'h 68;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_FILTER_7_OFFSET = 13'h 6c;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_ADDR_SWAP_MASK_OFFSET = 13'h 70;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_ADDR_SWAP_DATA_OFFSET = 13'h 74;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_0_OFFSET = 13'h 78;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_1_OFFSET = 13'h 7c;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_2_OFFSET = 13'h 80;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_3_OFFSET = 13'h 84;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_4_OFFSET = 13'h 88;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_5_OFFSET = 13'h 8c;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_6_OFFSET = 13'h 90;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_7_OFFSET = 13'h 94;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_8_OFFSET = 13'h 98;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_9_OFFSET = 13'h 9c;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_10_OFFSET = 13'h a0;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_11_OFFSET = 13'h a4;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_12_OFFSET = 13'h a8;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_13_OFFSET = 13'h ac;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_14_OFFSET = 13'h b0;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_15_OFFSET = 13'h b4;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_16_OFFSET = 13'h b8;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_17_OFFSET = 13'h bc;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_18_OFFSET = 13'h c0;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_19_OFFSET = 13'h c4;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_20_OFFSET = 13'h c8;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_21_OFFSET = 13'h cc;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_22_OFFSET = 13'h d0;
-  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_23_OFFSET = 13'h d4;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_MAILBOX_ADDR_OFFSET = 13'h 44;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_UPLOAD_STATUS_OFFSET = 13'h 48;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_UPLOAD_CMDFIFO_OFFSET = 13'h 4c;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_UPLOAD_ADDRFIFO_OFFSET = 13'h 50;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_FILTER_0_OFFSET = 13'h 54;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_FILTER_1_OFFSET = 13'h 58;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_FILTER_2_OFFSET = 13'h 5c;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_FILTER_3_OFFSET = 13'h 60;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_FILTER_4_OFFSET = 13'h 64;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_FILTER_5_OFFSET = 13'h 68;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_FILTER_6_OFFSET = 13'h 6c;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_FILTER_7_OFFSET = 13'h 70;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_ADDR_SWAP_MASK_OFFSET = 13'h 74;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_ADDR_SWAP_DATA_OFFSET = 13'h 78;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_0_OFFSET = 13'h 7c;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_1_OFFSET = 13'h 80;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_2_OFFSET = 13'h 84;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_3_OFFSET = 13'h 88;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_4_OFFSET = 13'h 8c;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_5_OFFSET = 13'h 90;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_6_OFFSET = 13'h 94;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_7_OFFSET = 13'h 98;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_8_OFFSET = 13'h 9c;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_9_OFFSET = 13'h a0;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_10_OFFSET = 13'h a4;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_11_OFFSET = 13'h a8;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_12_OFFSET = 13'h ac;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_13_OFFSET = 13'h b0;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_14_OFFSET = 13'h b4;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_15_OFFSET = 13'h b8;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_16_OFFSET = 13'h bc;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_17_OFFSET = 13'h c0;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_18_OFFSET = 13'h c4;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_19_OFFSET = 13'h c8;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_20_OFFSET = 13'h cc;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_21_OFFSET = 13'h d0;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_22_OFFSET = 13'h d4;
+  parameter logic [BlockAw-1:0] SPI_DEVICE_CMD_INFO_23_OFFSET = 13'h d8;
   parameter logic [BlockAw-1:0] SPI_DEVICE_TPM_CAP_OFFSET = 13'h 800;
   parameter logic [BlockAw-1:0] SPI_DEVICE_TPM_CFG_OFFSET = 13'h 804;
   parameter logic [BlockAw-1:0] SPI_DEVICE_TPM_STATUS_OFFSET = 13'h 808;
@@ -681,6 +690,7 @@
     SPI_DEVICE_FLASH_STATUS,
     SPI_DEVICE_JEDEC_ID,
     SPI_DEVICE_READ_THRESHOLD,
+    SPI_DEVICE_MAILBOX_ADDR,
     SPI_DEVICE_UPLOAD_STATUS,
     SPI_DEVICE_UPLOAD_CMDFIFO,
     SPI_DEVICE_UPLOAD_ADDRFIFO,
@@ -736,13 +746,13 @@
   } spi_device_id_e;
 
   // Register width information to check illegal writes
-  parameter logic [3:0] SPI_DEVICE_PERMIT [69] = '{
+  parameter logic [3:0] SPI_DEVICE_PERMIT [70] = '{
     4'b 0001, // index[ 0] SPI_DEVICE_INTR_STATE
     4'b 0001, // index[ 1] SPI_DEVICE_INTR_ENABLE
     4'b 0001, // index[ 2] SPI_DEVICE_INTR_TEST
     4'b 0001, // index[ 3] SPI_DEVICE_ALERT_TEST
     4'b 1111, // index[ 4] SPI_DEVICE_CONTROL
-    4'b 0111, // index[ 5] SPI_DEVICE_CFG
+    4'b 1111, // index[ 5] SPI_DEVICE_CFG
     4'b 1111, // index[ 6] SPI_DEVICE_FIFO_LEVEL
     4'b 0111, // index[ 7] SPI_DEVICE_ASYNC_FIFO_LEVEL
     4'b 0001, // index[ 8] SPI_DEVICE_STATUS
@@ -754,58 +764,59 @@
     4'b 0111, // index[14] SPI_DEVICE_FLASH_STATUS
     4'b 0111, // index[15] SPI_DEVICE_JEDEC_ID
     4'b 0011, // index[16] SPI_DEVICE_READ_THRESHOLD
-    4'b 1111, // index[17] SPI_DEVICE_UPLOAD_STATUS
-    4'b 0001, // index[18] SPI_DEVICE_UPLOAD_CMDFIFO
-    4'b 1111, // index[19] SPI_DEVICE_UPLOAD_ADDRFIFO
-    4'b 1111, // index[20] SPI_DEVICE_CMD_FILTER_0
-    4'b 1111, // index[21] SPI_DEVICE_CMD_FILTER_1
-    4'b 1111, // index[22] SPI_DEVICE_CMD_FILTER_2
-    4'b 1111, // index[23] SPI_DEVICE_CMD_FILTER_3
-    4'b 1111, // index[24] SPI_DEVICE_CMD_FILTER_4
-    4'b 1111, // index[25] SPI_DEVICE_CMD_FILTER_5
-    4'b 1111, // index[26] SPI_DEVICE_CMD_FILTER_6
-    4'b 1111, // index[27] SPI_DEVICE_CMD_FILTER_7
-    4'b 1111, // index[28] SPI_DEVICE_ADDR_SWAP_MASK
-    4'b 1111, // index[29] SPI_DEVICE_ADDR_SWAP_DATA
-    4'b 1111, // index[30] SPI_DEVICE_CMD_INFO_0
-    4'b 1111, // index[31] SPI_DEVICE_CMD_INFO_1
-    4'b 1111, // index[32] SPI_DEVICE_CMD_INFO_2
-    4'b 1111, // index[33] SPI_DEVICE_CMD_INFO_3
-    4'b 1111, // index[34] SPI_DEVICE_CMD_INFO_4
-    4'b 1111, // index[35] SPI_DEVICE_CMD_INFO_5
-    4'b 1111, // index[36] SPI_DEVICE_CMD_INFO_6
-    4'b 1111, // index[37] SPI_DEVICE_CMD_INFO_7
-    4'b 1111, // index[38] SPI_DEVICE_CMD_INFO_8
-    4'b 1111, // index[39] SPI_DEVICE_CMD_INFO_9
-    4'b 1111, // index[40] SPI_DEVICE_CMD_INFO_10
-    4'b 1111, // index[41] SPI_DEVICE_CMD_INFO_11
-    4'b 1111, // index[42] SPI_DEVICE_CMD_INFO_12
-    4'b 1111, // index[43] SPI_DEVICE_CMD_INFO_13
-    4'b 1111, // index[44] SPI_DEVICE_CMD_INFO_14
-    4'b 1111, // index[45] SPI_DEVICE_CMD_INFO_15
-    4'b 1111, // index[46] SPI_DEVICE_CMD_INFO_16
-    4'b 1111, // index[47] SPI_DEVICE_CMD_INFO_17
-    4'b 1111, // index[48] SPI_DEVICE_CMD_INFO_18
-    4'b 1111, // index[49] SPI_DEVICE_CMD_INFO_19
-    4'b 1111, // index[50] SPI_DEVICE_CMD_INFO_20
-    4'b 1111, // index[51] SPI_DEVICE_CMD_INFO_21
-    4'b 1111, // index[52] SPI_DEVICE_CMD_INFO_22
-    4'b 1111, // index[53] SPI_DEVICE_CMD_INFO_23
-    4'b 0111, // index[54] SPI_DEVICE_TPM_CAP
-    4'b 0001, // index[55] SPI_DEVICE_TPM_CFG
-    4'b 0011, // index[56] SPI_DEVICE_TPM_STATUS
-    4'b 1111, // index[57] SPI_DEVICE_TPM_ACCESS_0
-    4'b 0001, // index[58] SPI_DEVICE_TPM_ACCESS_1
-    4'b 1111, // index[59] SPI_DEVICE_TPM_STS
-    4'b 1111, // index[60] SPI_DEVICE_TPM_INTF_CAPABILITY
-    4'b 1111, // index[61] SPI_DEVICE_TPM_INT_ENABLE
-    4'b 0001, // index[62] SPI_DEVICE_TPM_INT_VECTOR
-    4'b 1111, // index[63] SPI_DEVICE_TPM_INT_STATUS
-    4'b 1111, // index[64] SPI_DEVICE_TPM_DID_VID
-    4'b 0001, // index[65] SPI_DEVICE_TPM_RID
-    4'b 1111, // index[66] SPI_DEVICE_TPM_CMD_ADDR
-    4'b 0001, // index[67] SPI_DEVICE_TPM_READ_FIFO
-    4'b 0001  // index[68] SPI_DEVICE_TPM_WRITE_FIFO
+    4'b 1111, // index[17] SPI_DEVICE_MAILBOX_ADDR
+    4'b 1111, // index[18] SPI_DEVICE_UPLOAD_STATUS
+    4'b 0001, // index[19] SPI_DEVICE_UPLOAD_CMDFIFO
+    4'b 1111, // index[20] SPI_DEVICE_UPLOAD_ADDRFIFO
+    4'b 1111, // index[21] SPI_DEVICE_CMD_FILTER_0
+    4'b 1111, // index[22] SPI_DEVICE_CMD_FILTER_1
+    4'b 1111, // index[23] SPI_DEVICE_CMD_FILTER_2
+    4'b 1111, // index[24] SPI_DEVICE_CMD_FILTER_3
+    4'b 1111, // index[25] SPI_DEVICE_CMD_FILTER_4
+    4'b 1111, // index[26] SPI_DEVICE_CMD_FILTER_5
+    4'b 1111, // index[27] SPI_DEVICE_CMD_FILTER_6
+    4'b 1111, // index[28] SPI_DEVICE_CMD_FILTER_7
+    4'b 1111, // index[29] SPI_DEVICE_ADDR_SWAP_MASK
+    4'b 1111, // index[30] SPI_DEVICE_ADDR_SWAP_DATA
+    4'b 1111, // index[31] SPI_DEVICE_CMD_INFO_0
+    4'b 1111, // index[32] SPI_DEVICE_CMD_INFO_1
+    4'b 1111, // index[33] SPI_DEVICE_CMD_INFO_2
+    4'b 1111, // index[34] SPI_DEVICE_CMD_INFO_3
+    4'b 1111, // index[35] SPI_DEVICE_CMD_INFO_4
+    4'b 1111, // index[36] SPI_DEVICE_CMD_INFO_5
+    4'b 1111, // index[37] SPI_DEVICE_CMD_INFO_6
+    4'b 1111, // index[38] SPI_DEVICE_CMD_INFO_7
+    4'b 1111, // index[39] SPI_DEVICE_CMD_INFO_8
+    4'b 1111, // index[40] SPI_DEVICE_CMD_INFO_9
+    4'b 1111, // index[41] SPI_DEVICE_CMD_INFO_10
+    4'b 1111, // index[42] SPI_DEVICE_CMD_INFO_11
+    4'b 1111, // index[43] SPI_DEVICE_CMD_INFO_12
+    4'b 1111, // index[44] SPI_DEVICE_CMD_INFO_13
+    4'b 1111, // index[45] SPI_DEVICE_CMD_INFO_14
+    4'b 1111, // index[46] SPI_DEVICE_CMD_INFO_15
+    4'b 1111, // index[47] SPI_DEVICE_CMD_INFO_16
+    4'b 1111, // index[48] SPI_DEVICE_CMD_INFO_17
+    4'b 1111, // index[49] SPI_DEVICE_CMD_INFO_18
+    4'b 1111, // index[50] SPI_DEVICE_CMD_INFO_19
+    4'b 1111, // index[51] SPI_DEVICE_CMD_INFO_20
+    4'b 1111, // index[52] SPI_DEVICE_CMD_INFO_21
+    4'b 1111, // index[53] SPI_DEVICE_CMD_INFO_22
+    4'b 1111, // index[54] SPI_DEVICE_CMD_INFO_23
+    4'b 0111, // index[55] SPI_DEVICE_TPM_CAP
+    4'b 0001, // index[56] SPI_DEVICE_TPM_CFG
+    4'b 0011, // index[57] SPI_DEVICE_TPM_STATUS
+    4'b 1111, // index[58] SPI_DEVICE_TPM_ACCESS_0
+    4'b 0001, // index[59] SPI_DEVICE_TPM_ACCESS_1
+    4'b 1111, // index[60] SPI_DEVICE_TPM_STS
+    4'b 1111, // index[61] SPI_DEVICE_TPM_INTF_CAPABILITY
+    4'b 1111, // index[62] SPI_DEVICE_TPM_INT_ENABLE
+    4'b 0001, // index[63] SPI_DEVICE_TPM_INT_VECTOR
+    4'b 1111, // index[64] SPI_DEVICE_TPM_INT_STATUS
+    4'b 1111, // index[65] SPI_DEVICE_TPM_DID_VID
+    4'b 0001, // index[66] SPI_DEVICE_TPM_RID
+    4'b 1111, // index[67] SPI_DEVICE_TPM_CMD_ADDR
+    4'b 0001, // index[68] SPI_DEVICE_TPM_READ_FIFO
+    4'b 0001  // index[69] SPI_DEVICE_TPM_WRITE_FIFO
   };
 
 endpackage
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 c16bf51..890cfbf 100644
--- a/hw/ip/spi_device/rtl/spi_device_reg_top.sv
+++ b/hw/ip/spi_device/rtl/spi_device_reg_top.sv
@@ -220,6 +220,8 @@
   logic [7:0] cfg_timer_v_wd;
   logic cfg_addr_4b_en_qs;
   logic cfg_addr_4b_en_wd;
+  logic cfg_mailbox_en_qs;
+  logic cfg_mailbox_en_wd;
   logic fifo_level_we;
   logic [15:0] fifo_level_rxlvl_qs;
   logic [15:0] fifo_level_rxlvl_wd;
@@ -269,6 +271,9 @@
   logic read_threshold_we;
   logic [9:0] read_threshold_qs;
   logic [9:0] read_threshold_wd;
+  logic mailbox_addr_we;
+  logic [31:0] mailbox_addr_qs;
+  logic [31:0] mailbox_addr_wd;
   logic [4:0] upload_status_cmdfifo_depth_qs;
   logic upload_status_cmdfifo_notempty_qs;
   logic [4:0] upload_status_addrfifo_depth_qs;
@@ -2165,6 +2170,31 @@
     .qs     (cfg_addr_4b_en_qs)
   );
 
+  //   F[mailbox_en]: 24:24
+  prim_subreg #(
+    .DW      (1),
+    .SwAccess(prim_subreg_pkg::SwAccessRW),
+    .RESVAL  (1'h0)
+  ) u_cfg_mailbox_en (
+    .clk_i   (clk_i),
+    .rst_ni  (rst_ni),
+
+    // from register interface
+    .we     (cfg_we),
+    .wd     (cfg_mailbox_en_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.cfg.mailbox_en.q),
+
+    // to register interface (read)
+    .qs     (cfg_mailbox_en_qs)
+  );
+
 
   // R[fifo_level]: V(False)
   //   F[rxlvl]: 15:0
@@ -2665,6 +2695,32 @@
   );
 
 
+  // R[mailbox_addr]: V(False)
+  prim_subreg #(
+    .DW      (32),
+    .SwAccess(prim_subreg_pkg::SwAccessRW),
+    .RESVAL  (32'h0)
+  ) u_mailbox_addr (
+    .clk_i   (clk_i),
+    .rst_ni  (rst_ni),
+
+    // from register interface
+    .we     (mailbox_addr_we),
+    .wd     (mailbox_addr_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.mailbox_addr.q),
+
+    // to register interface (read)
+    .qs     (mailbox_addr_qs)
+  );
+
+
   // R[upload_status]: V(False)
   //   F[cmdfifo_depth]: 4:0
   prim_subreg #(
@@ -16675,7 +16731,7 @@
 
 
 
-  logic [68:0] addr_hit;
+  logic [69:0] addr_hit;
   always_comb begin
     addr_hit = '0;
     addr_hit[ 0] = (reg_addr == SPI_DEVICE_INTR_STATE_OFFSET);
@@ -16695,58 +16751,59 @@
     addr_hit[14] = (reg_addr == SPI_DEVICE_FLASH_STATUS_OFFSET);
     addr_hit[15] = (reg_addr == SPI_DEVICE_JEDEC_ID_OFFSET);
     addr_hit[16] = (reg_addr == SPI_DEVICE_READ_THRESHOLD_OFFSET);
-    addr_hit[17] = (reg_addr == SPI_DEVICE_UPLOAD_STATUS_OFFSET);
-    addr_hit[18] = (reg_addr == SPI_DEVICE_UPLOAD_CMDFIFO_OFFSET);
-    addr_hit[19] = (reg_addr == SPI_DEVICE_UPLOAD_ADDRFIFO_OFFSET);
-    addr_hit[20] = (reg_addr == SPI_DEVICE_CMD_FILTER_0_OFFSET);
-    addr_hit[21] = (reg_addr == SPI_DEVICE_CMD_FILTER_1_OFFSET);
-    addr_hit[22] = (reg_addr == SPI_DEVICE_CMD_FILTER_2_OFFSET);
-    addr_hit[23] = (reg_addr == SPI_DEVICE_CMD_FILTER_3_OFFSET);
-    addr_hit[24] = (reg_addr == SPI_DEVICE_CMD_FILTER_4_OFFSET);
-    addr_hit[25] = (reg_addr == SPI_DEVICE_CMD_FILTER_5_OFFSET);
-    addr_hit[26] = (reg_addr == SPI_DEVICE_CMD_FILTER_6_OFFSET);
-    addr_hit[27] = (reg_addr == SPI_DEVICE_CMD_FILTER_7_OFFSET);
-    addr_hit[28] = (reg_addr == SPI_DEVICE_ADDR_SWAP_MASK_OFFSET);
-    addr_hit[29] = (reg_addr == SPI_DEVICE_ADDR_SWAP_DATA_OFFSET);
-    addr_hit[30] = (reg_addr == SPI_DEVICE_CMD_INFO_0_OFFSET);
-    addr_hit[31] = (reg_addr == SPI_DEVICE_CMD_INFO_1_OFFSET);
-    addr_hit[32] = (reg_addr == SPI_DEVICE_CMD_INFO_2_OFFSET);
-    addr_hit[33] = (reg_addr == SPI_DEVICE_CMD_INFO_3_OFFSET);
-    addr_hit[34] = (reg_addr == SPI_DEVICE_CMD_INFO_4_OFFSET);
-    addr_hit[35] = (reg_addr == SPI_DEVICE_CMD_INFO_5_OFFSET);
-    addr_hit[36] = (reg_addr == SPI_DEVICE_CMD_INFO_6_OFFSET);
-    addr_hit[37] = (reg_addr == SPI_DEVICE_CMD_INFO_7_OFFSET);
-    addr_hit[38] = (reg_addr == SPI_DEVICE_CMD_INFO_8_OFFSET);
-    addr_hit[39] = (reg_addr == SPI_DEVICE_CMD_INFO_9_OFFSET);
-    addr_hit[40] = (reg_addr == SPI_DEVICE_CMD_INFO_10_OFFSET);
-    addr_hit[41] = (reg_addr == SPI_DEVICE_CMD_INFO_11_OFFSET);
-    addr_hit[42] = (reg_addr == SPI_DEVICE_CMD_INFO_12_OFFSET);
-    addr_hit[43] = (reg_addr == SPI_DEVICE_CMD_INFO_13_OFFSET);
-    addr_hit[44] = (reg_addr == SPI_DEVICE_CMD_INFO_14_OFFSET);
-    addr_hit[45] = (reg_addr == SPI_DEVICE_CMD_INFO_15_OFFSET);
-    addr_hit[46] = (reg_addr == SPI_DEVICE_CMD_INFO_16_OFFSET);
-    addr_hit[47] = (reg_addr == SPI_DEVICE_CMD_INFO_17_OFFSET);
-    addr_hit[48] = (reg_addr == SPI_DEVICE_CMD_INFO_18_OFFSET);
-    addr_hit[49] = (reg_addr == SPI_DEVICE_CMD_INFO_19_OFFSET);
-    addr_hit[50] = (reg_addr == SPI_DEVICE_CMD_INFO_20_OFFSET);
-    addr_hit[51] = (reg_addr == SPI_DEVICE_CMD_INFO_21_OFFSET);
-    addr_hit[52] = (reg_addr == SPI_DEVICE_CMD_INFO_22_OFFSET);
-    addr_hit[53] = (reg_addr == SPI_DEVICE_CMD_INFO_23_OFFSET);
-    addr_hit[54] = (reg_addr == SPI_DEVICE_TPM_CAP_OFFSET);
-    addr_hit[55] = (reg_addr == SPI_DEVICE_TPM_CFG_OFFSET);
-    addr_hit[56] = (reg_addr == SPI_DEVICE_TPM_STATUS_OFFSET);
-    addr_hit[57] = (reg_addr == SPI_DEVICE_TPM_ACCESS_0_OFFSET);
-    addr_hit[58] = (reg_addr == SPI_DEVICE_TPM_ACCESS_1_OFFSET);
-    addr_hit[59] = (reg_addr == SPI_DEVICE_TPM_STS_OFFSET);
-    addr_hit[60] = (reg_addr == SPI_DEVICE_TPM_INTF_CAPABILITY_OFFSET);
-    addr_hit[61] = (reg_addr == SPI_DEVICE_TPM_INT_ENABLE_OFFSET);
-    addr_hit[62] = (reg_addr == SPI_DEVICE_TPM_INT_VECTOR_OFFSET);
-    addr_hit[63] = (reg_addr == SPI_DEVICE_TPM_INT_STATUS_OFFSET);
-    addr_hit[64] = (reg_addr == SPI_DEVICE_TPM_DID_VID_OFFSET);
-    addr_hit[65] = (reg_addr == SPI_DEVICE_TPM_RID_OFFSET);
-    addr_hit[66] = (reg_addr == SPI_DEVICE_TPM_CMD_ADDR_OFFSET);
-    addr_hit[67] = (reg_addr == SPI_DEVICE_TPM_READ_FIFO_OFFSET);
-    addr_hit[68] = (reg_addr == SPI_DEVICE_TPM_WRITE_FIFO_OFFSET);
+    addr_hit[17] = (reg_addr == SPI_DEVICE_MAILBOX_ADDR_OFFSET);
+    addr_hit[18] = (reg_addr == SPI_DEVICE_UPLOAD_STATUS_OFFSET);
+    addr_hit[19] = (reg_addr == SPI_DEVICE_UPLOAD_CMDFIFO_OFFSET);
+    addr_hit[20] = (reg_addr == SPI_DEVICE_UPLOAD_ADDRFIFO_OFFSET);
+    addr_hit[21] = (reg_addr == SPI_DEVICE_CMD_FILTER_0_OFFSET);
+    addr_hit[22] = (reg_addr == SPI_DEVICE_CMD_FILTER_1_OFFSET);
+    addr_hit[23] = (reg_addr == SPI_DEVICE_CMD_FILTER_2_OFFSET);
+    addr_hit[24] = (reg_addr == SPI_DEVICE_CMD_FILTER_3_OFFSET);
+    addr_hit[25] = (reg_addr == SPI_DEVICE_CMD_FILTER_4_OFFSET);
+    addr_hit[26] = (reg_addr == SPI_DEVICE_CMD_FILTER_5_OFFSET);
+    addr_hit[27] = (reg_addr == SPI_DEVICE_CMD_FILTER_6_OFFSET);
+    addr_hit[28] = (reg_addr == SPI_DEVICE_CMD_FILTER_7_OFFSET);
+    addr_hit[29] = (reg_addr == SPI_DEVICE_ADDR_SWAP_MASK_OFFSET);
+    addr_hit[30] = (reg_addr == SPI_DEVICE_ADDR_SWAP_DATA_OFFSET);
+    addr_hit[31] = (reg_addr == SPI_DEVICE_CMD_INFO_0_OFFSET);
+    addr_hit[32] = (reg_addr == SPI_DEVICE_CMD_INFO_1_OFFSET);
+    addr_hit[33] = (reg_addr == SPI_DEVICE_CMD_INFO_2_OFFSET);
+    addr_hit[34] = (reg_addr == SPI_DEVICE_CMD_INFO_3_OFFSET);
+    addr_hit[35] = (reg_addr == SPI_DEVICE_CMD_INFO_4_OFFSET);
+    addr_hit[36] = (reg_addr == SPI_DEVICE_CMD_INFO_5_OFFSET);
+    addr_hit[37] = (reg_addr == SPI_DEVICE_CMD_INFO_6_OFFSET);
+    addr_hit[38] = (reg_addr == SPI_DEVICE_CMD_INFO_7_OFFSET);
+    addr_hit[39] = (reg_addr == SPI_DEVICE_CMD_INFO_8_OFFSET);
+    addr_hit[40] = (reg_addr == SPI_DEVICE_CMD_INFO_9_OFFSET);
+    addr_hit[41] = (reg_addr == SPI_DEVICE_CMD_INFO_10_OFFSET);
+    addr_hit[42] = (reg_addr == SPI_DEVICE_CMD_INFO_11_OFFSET);
+    addr_hit[43] = (reg_addr == SPI_DEVICE_CMD_INFO_12_OFFSET);
+    addr_hit[44] = (reg_addr == SPI_DEVICE_CMD_INFO_13_OFFSET);
+    addr_hit[45] = (reg_addr == SPI_DEVICE_CMD_INFO_14_OFFSET);
+    addr_hit[46] = (reg_addr == SPI_DEVICE_CMD_INFO_15_OFFSET);
+    addr_hit[47] = (reg_addr == SPI_DEVICE_CMD_INFO_16_OFFSET);
+    addr_hit[48] = (reg_addr == SPI_DEVICE_CMD_INFO_17_OFFSET);
+    addr_hit[49] = (reg_addr == SPI_DEVICE_CMD_INFO_18_OFFSET);
+    addr_hit[50] = (reg_addr == SPI_DEVICE_CMD_INFO_19_OFFSET);
+    addr_hit[51] = (reg_addr == SPI_DEVICE_CMD_INFO_20_OFFSET);
+    addr_hit[52] = (reg_addr == SPI_DEVICE_CMD_INFO_21_OFFSET);
+    addr_hit[53] = (reg_addr == SPI_DEVICE_CMD_INFO_22_OFFSET);
+    addr_hit[54] = (reg_addr == SPI_DEVICE_CMD_INFO_23_OFFSET);
+    addr_hit[55] = (reg_addr == SPI_DEVICE_TPM_CAP_OFFSET);
+    addr_hit[56] = (reg_addr == SPI_DEVICE_TPM_CFG_OFFSET);
+    addr_hit[57] = (reg_addr == SPI_DEVICE_TPM_STATUS_OFFSET);
+    addr_hit[58] = (reg_addr == SPI_DEVICE_TPM_ACCESS_0_OFFSET);
+    addr_hit[59] = (reg_addr == SPI_DEVICE_TPM_ACCESS_1_OFFSET);
+    addr_hit[60] = (reg_addr == SPI_DEVICE_TPM_STS_OFFSET);
+    addr_hit[61] = (reg_addr == SPI_DEVICE_TPM_INTF_CAPABILITY_OFFSET);
+    addr_hit[62] = (reg_addr == SPI_DEVICE_TPM_INT_ENABLE_OFFSET);
+    addr_hit[63] = (reg_addr == SPI_DEVICE_TPM_INT_VECTOR_OFFSET);
+    addr_hit[64] = (reg_addr == SPI_DEVICE_TPM_INT_STATUS_OFFSET);
+    addr_hit[65] = (reg_addr == SPI_DEVICE_TPM_DID_VID_OFFSET);
+    addr_hit[66] = (reg_addr == SPI_DEVICE_TPM_RID_OFFSET);
+    addr_hit[67] = (reg_addr == SPI_DEVICE_TPM_CMD_ADDR_OFFSET);
+    addr_hit[68] = (reg_addr == SPI_DEVICE_TPM_READ_FIFO_OFFSET);
+    addr_hit[69] = (reg_addr == SPI_DEVICE_TPM_WRITE_FIFO_OFFSET);
   end
 
   assign addrmiss = (reg_re || reg_we) ? ~|addr_hit : 1'b0 ;
@@ -16822,7 +16879,8 @@
                (addr_hit[65] & (|(SPI_DEVICE_PERMIT[65] & ~reg_be))) |
                (addr_hit[66] & (|(SPI_DEVICE_PERMIT[66] & ~reg_be))) |
                (addr_hit[67] & (|(SPI_DEVICE_PERMIT[67] & ~reg_be))) |
-               (addr_hit[68] & (|(SPI_DEVICE_PERMIT[68] & ~reg_be)))));
+               (addr_hit[68] & (|(SPI_DEVICE_PERMIT[68] & ~reg_be))) |
+               (addr_hit[69] & (|(SPI_DEVICE_PERMIT[69] & ~reg_be)))));
   end
   assign intr_state_we = addr_hit[0] & reg_we & !reg_error;
 
@@ -16896,6 +16954,8 @@
   assign cfg_timer_v_wd = reg_wdata[15:8];
 
   assign cfg_addr_4b_en_wd = reg_wdata[16];
+
+  assign cfg_mailbox_en_wd = reg_wdata[24];
   assign fifo_level_we = addr_hit[6] & reg_we & !reg_error;
 
   assign fifo_level_rxlvl_wd = reg_wdata[15:0];
@@ -16934,9 +16994,12 @@
   assign read_threshold_we = addr_hit[16] & reg_we & !reg_error;
 
   assign read_threshold_wd = reg_wdata[9:0];
-  assign upload_cmdfifo_re = addr_hit[18] & reg_re & !reg_error;
-  assign upload_addrfifo_re = addr_hit[19] & reg_re & !reg_error;
-  assign cmd_filter_0_we = addr_hit[20] & reg_we & !reg_error;
+  assign mailbox_addr_we = addr_hit[17] & reg_we & !reg_error;
+
+  assign mailbox_addr_wd = reg_wdata[31:0];
+  assign upload_cmdfifo_re = addr_hit[19] & reg_re & !reg_error;
+  assign upload_addrfifo_re = addr_hit[20] & reg_re & !reg_error;
+  assign cmd_filter_0_we = addr_hit[21] & reg_we & !reg_error;
 
   assign cmd_filter_0_filter_0_wd = reg_wdata[0];
 
@@ -17001,7 +17064,7 @@
   assign cmd_filter_0_filter_30_wd = reg_wdata[30];
 
   assign cmd_filter_0_filter_31_wd = reg_wdata[31];
-  assign cmd_filter_1_we = addr_hit[21] & reg_we & !reg_error;
+  assign cmd_filter_1_we = addr_hit[22] & reg_we & !reg_error;
 
   assign cmd_filter_1_filter_32_wd = reg_wdata[0];
 
@@ -17066,7 +17129,7 @@
   assign cmd_filter_1_filter_62_wd = reg_wdata[30];
 
   assign cmd_filter_1_filter_63_wd = reg_wdata[31];
-  assign cmd_filter_2_we = addr_hit[22] & reg_we & !reg_error;
+  assign cmd_filter_2_we = addr_hit[23] & reg_we & !reg_error;
 
   assign cmd_filter_2_filter_64_wd = reg_wdata[0];
 
@@ -17131,7 +17194,7 @@
   assign cmd_filter_2_filter_94_wd = reg_wdata[30];
 
   assign cmd_filter_2_filter_95_wd = reg_wdata[31];
-  assign cmd_filter_3_we = addr_hit[23] & reg_we & !reg_error;
+  assign cmd_filter_3_we = addr_hit[24] & reg_we & !reg_error;
 
   assign cmd_filter_3_filter_96_wd = reg_wdata[0];
 
@@ -17196,7 +17259,7 @@
   assign cmd_filter_3_filter_126_wd = reg_wdata[30];
 
   assign cmd_filter_3_filter_127_wd = reg_wdata[31];
-  assign cmd_filter_4_we = addr_hit[24] & reg_we & !reg_error;
+  assign cmd_filter_4_we = addr_hit[25] & reg_we & !reg_error;
 
   assign cmd_filter_4_filter_128_wd = reg_wdata[0];
 
@@ -17261,7 +17324,7 @@
   assign cmd_filter_4_filter_158_wd = reg_wdata[30];
 
   assign cmd_filter_4_filter_159_wd = reg_wdata[31];
-  assign cmd_filter_5_we = addr_hit[25] & reg_we & !reg_error;
+  assign cmd_filter_5_we = addr_hit[26] & reg_we & !reg_error;
 
   assign cmd_filter_5_filter_160_wd = reg_wdata[0];
 
@@ -17326,7 +17389,7 @@
   assign cmd_filter_5_filter_190_wd = reg_wdata[30];
 
   assign cmd_filter_5_filter_191_wd = reg_wdata[31];
-  assign cmd_filter_6_we = addr_hit[26] & reg_we & !reg_error;
+  assign cmd_filter_6_we = addr_hit[27] & reg_we & !reg_error;
 
   assign cmd_filter_6_filter_192_wd = reg_wdata[0];
 
@@ -17391,7 +17454,7 @@
   assign cmd_filter_6_filter_222_wd = reg_wdata[30];
 
   assign cmd_filter_6_filter_223_wd = reg_wdata[31];
-  assign cmd_filter_7_we = addr_hit[27] & reg_we & !reg_error;
+  assign cmd_filter_7_we = addr_hit[28] & reg_we & !reg_error;
 
   assign cmd_filter_7_filter_224_wd = reg_wdata[0];
 
@@ -17456,13 +17519,13 @@
   assign cmd_filter_7_filter_254_wd = reg_wdata[30];
 
   assign cmd_filter_7_filter_255_wd = reg_wdata[31];
-  assign addr_swap_mask_we = addr_hit[28] & reg_we & !reg_error;
+  assign addr_swap_mask_we = addr_hit[29] & reg_we & !reg_error;
 
   assign addr_swap_mask_wd = reg_wdata[31:0];
-  assign addr_swap_data_we = addr_hit[29] & reg_we & !reg_error;
+  assign addr_swap_data_we = addr_hit[30] & reg_we & !reg_error;
 
   assign addr_swap_data_wd = reg_wdata[31:0];
-  assign cmd_info_0_we = addr_hit[30] & reg_we & !reg_error;
+  assign cmd_info_0_we = addr_hit[31] & reg_we & !reg_error;
 
   assign cmd_info_0_opcode_0_wd = reg_wdata[7:0];
 
@@ -17485,7 +17548,7 @@
   assign cmd_info_0_upload_0_wd = reg_wdata[24];
 
   assign cmd_info_0_busy_0_wd = reg_wdata[25];
-  assign cmd_info_1_we = addr_hit[31] & reg_we & !reg_error;
+  assign cmd_info_1_we = addr_hit[32] & reg_we & !reg_error;
 
   assign cmd_info_1_opcode_1_wd = reg_wdata[7:0];
 
@@ -17508,7 +17571,7 @@
   assign cmd_info_1_upload_1_wd = reg_wdata[24];
 
   assign cmd_info_1_busy_1_wd = reg_wdata[25];
-  assign cmd_info_2_we = addr_hit[32] & reg_we & !reg_error;
+  assign cmd_info_2_we = addr_hit[33] & reg_we & !reg_error;
 
   assign cmd_info_2_opcode_2_wd = reg_wdata[7:0];
 
@@ -17531,7 +17594,7 @@
   assign cmd_info_2_upload_2_wd = reg_wdata[24];
 
   assign cmd_info_2_busy_2_wd = reg_wdata[25];
-  assign cmd_info_3_we = addr_hit[33] & reg_we & !reg_error;
+  assign cmd_info_3_we = addr_hit[34] & reg_we & !reg_error;
 
   assign cmd_info_3_opcode_3_wd = reg_wdata[7:0];
 
@@ -17554,7 +17617,7 @@
   assign cmd_info_3_upload_3_wd = reg_wdata[24];
 
   assign cmd_info_3_busy_3_wd = reg_wdata[25];
-  assign cmd_info_4_we = addr_hit[34] & reg_we & !reg_error;
+  assign cmd_info_4_we = addr_hit[35] & reg_we & !reg_error;
 
   assign cmd_info_4_opcode_4_wd = reg_wdata[7:0];
 
@@ -17577,7 +17640,7 @@
   assign cmd_info_4_upload_4_wd = reg_wdata[24];
 
   assign cmd_info_4_busy_4_wd = reg_wdata[25];
-  assign cmd_info_5_we = addr_hit[35] & reg_we & !reg_error;
+  assign cmd_info_5_we = addr_hit[36] & reg_we & !reg_error;
 
   assign cmd_info_5_opcode_5_wd = reg_wdata[7:0];
 
@@ -17600,7 +17663,7 @@
   assign cmd_info_5_upload_5_wd = reg_wdata[24];
 
   assign cmd_info_5_busy_5_wd = reg_wdata[25];
-  assign cmd_info_6_we = addr_hit[36] & reg_we & !reg_error;
+  assign cmd_info_6_we = addr_hit[37] & reg_we & !reg_error;
 
   assign cmd_info_6_opcode_6_wd = reg_wdata[7:0];
 
@@ -17623,7 +17686,7 @@
   assign cmd_info_6_upload_6_wd = reg_wdata[24];
 
   assign cmd_info_6_busy_6_wd = reg_wdata[25];
-  assign cmd_info_7_we = addr_hit[37] & reg_we & !reg_error;
+  assign cmd_info_7_we = addr_hit[38] & reg_we & !reg_error;
 
   assign cmd_info_7_opcode_7_wd = reg_wdata[7:0];
 
@@ -17646,7 +17709,7 @@
   assign cmd_info_7_upload_7_wd = reg_wdata[24];
 
   assign cmd_info_7_busy_7_wd = reg_wdata[25];
-  assign cmd_info_8_we = addr_hit[38] & reg_we & !reg_error;
+  assign cmd_info_8_we = addr_hit[39] & reg_we & !reg_error;
 
   assign cmd_info_8_opcode_8_wd = reg_wdata[7:0];
 
@@ -17669,7 +17732,7 @@
   assign cmd_info_8_upload_8_wd = reg_wdata[24];
 
   assign cmd_info_8_busy_8_wd = reg_wdata[25];
-  assign cmd_info_9_we = addr_hit[39] & reg_we & !reg_error;
+  assign cmd_info_9_we = addr_hit[40] & reg_we & !reg_error;
 
   assign cmd_info_9_opcode_9_wd = reg_wdata[7:0];
 
@@ -17692,7 +17755,7 @@
   assign cmd_info_9_upload_9_wd = reg_wdata[24];
 
   assign cmd_info_9_busy_9_wd = reg_wdata[25];
-  assign cmd_info_10_we = addr_hit[40] & reg_we & !reg_error;
+  assign cmd_info_10_we = addr_hit[41] & reg_we & !reg_error;
 
   assign cmd_info_10_opcode_10_wd = reg_wdata[7:0];
 
@@ -17715,7 +17778,7 @@
   assign cmd_info_10_upload_10_wd = reg_wdata[24];
 
   assign cmd_info_10_busy_10_wd = reg_wdata[25];
-  assign cmd_info_11_we = addr_hit[41] & reg_we & !reg_error;
+  assign cmd_info_11_we = addr_hit[42] & reg_we & !reg_error;
 
   assign cmd_info_11_opcode_11_wd = reg_wdata[7:0];
 
@@ -17738,7 +17801,7 @@
   assign cmd_info_11_upload_11_wd = reg_wdata[24];
 
   assign cmd_info_11_busy_11_wd = reg_wdata[25];
-  assign cmd_info_12_we = addr_hit[42] & reg_we & !reg_error;
+  assign cmd_info_12_we = addr_hit[43] & reg_we & !reg_error;
 
   assign cmd_info_12_opcode_12_wd = reg_wdata[7:0];
 
@@ -17761,7 +17824,7 @@
   assign cmd_info_12_upload_12_wd = reg_wdata[24];
 
   assign cmd_info_12_busy_12_wd = reg_wdata[25];
-  assign cmd_info_13_we = addr_hit[43] & reg_we & !reg_error;
+  assign cmd_info_13_we = addr_hit[44] & reg_we & !reg_error;
 
   assign cmd_info_13_opcode_13_wd = reg_wdata[7:0];
 
@@ -17784,7 +17847,7 @@
   assign cmd_info_13_upload_13_wd = reg_wdata[24];
 
   assign cmd_info_13_busy_13_wd = reg_wdata[25];
-  assign cmd_info_14_we = addr_hit[44] & reg_we & !reg_error;
+  assign cmd_info_14_we = addr_hit[45] & reg_we & !reg_error;
 
   assign cmd_info_14_opcode_14_wd = reg_wdata[7:0];
 
@@ -17807,7 +17870,7 @@
   assign cmd_info_14_upload_14_wd = reg_wdata[24];
 
   assign cmd_info_14_busy_14_wd = reg_wdata[25];
-  assign cmd_info_15_we = addr_hit[45] & reg_we & !reg_error;
+  assign cmd_info_15_we = addr_hit[46] & reg_we & !reg_error;
 
   assign cmd_info_15_opcode_15_wd = reg_wdata[7:0];
 
@@ -17830,7 +17893,7 @@
   assign cmd_info_15_upload_15_wd = reg_wdata[24];
 
   assign cmd_info_15_busy_15_wd = reg_wdata[25];
-  assign cmd_info_16_we = addr_hit[46] & reg_we & !reg_error;
+  assign cmd_info_16_we = addr_hit[47] & reg_we & !reg_error;
 
   assign cmd_info_16_opcode_16_wd = reg_wdata[7:0];
 
@@ -17853,7 +17916,7 @@
   assign cmd_info_16_upload_16_wd = reg_wdata[24];
 
   assign cmd_info_16_busy_16_wd = reg_wdata[25];
-  assign cmd_info_17_we = addr_hit[47] & reg_we & !reg_error;
+  assign cmd_info_17_we = addr_hit[48] & reg_we & !reg_error;
 
   assign cmd_info_17_opcode_17_wd = reg_wdata[7:0];
 
@@ -17876,7 +17939,7 @@
   assign cmd_info_17_upload_17_wd = reg_wdata[24];
 
   assign cmd_info_17_busy_17_wd = reg_wdata[25];
-  assign cmd_info_18_we = addr_hit[48] & reg_we & !reg_error;
+  assign cmd_info_18_we = addr_hit[49] & reg_we & !reg_error;
 
   assign cmd_info_18_opcode_18_wd = reg_wdata[7:0];
 
@@ -17899,7 +17962,7 @@
   assign cmd_info_18_upload_18_wd = reg_wdata[24];
 
   assign cmd_info_18_busy_18_wd = reg_wdata[25];
-  assign cmd_info_19_we = addr_hit[49] & reg_we & !reg_error;
+  assign cmd_info_19_we = addr_hit[50] & reg_we & !reg_error;
 
   assign cmd_info_19_opcode_19_wd = reg_wdata[7:0];
 
@@ -17922,7 +17985,7 @@
   assign cmd_info_19_upload_19_wd = reg_wdata[24];
 
   assign cmd_info_19_busy_19_wd = reg_wdata[25];
-  assign cmd_info_20_we = addr_hit[50] & reg_we & !reg_error;
+  assign cmd_info_20_we = addr_hit[51] & reg_we & !reg_error;
 
   assign cmd_info_20_opcode_20_wd = reg_wdata[7:0];
 
@@ -17945,7 +18008,7 @@
   assign cmd_info_20_upload_20_wd = reg_wdata[24];
 
   assign cmd_info_20_busy_20_wd = reg_wdata[25];
-  assign cmd_info_21_we = addr_hit[51] & reg_we & !reg_error;
+  assign cmd_info_21_we = addr_hit[52] & reg_we & !reg_error;
 
   assign cmd_info_21_opcode_21_wd = reg_wdata[7:0];
 
@@ -17968,7 +18031,7 @@
   assign cmd_info_21_upload_21_wd = reg_wdata[24];
 
   assign cmd_info_21_busy_21_wd = reg_wdata[25];
-  assign cmd_info_22_we = addr_hit[52] & reg_we & !reg_error;
+  assign cmd_info_22_we = addr_hit[53] & reg_we & !reg_error;
 
   assign cmd_info_22_opcode_22_wd = reg_wdata[7:0];
 
@@ -17991,7 +18054,7 @@
   assign cmd_info_22_upload_22_wd = reg_wdata[24];
 
   assign cmd_info_22_busy_22_wd = reg_wdata[25];
-  assign cmd_info_23_we = addr_hit[53] & reg_we & !reg_error;
+  assign cmd_info_23_we = addr_hit[54] & reg_we & !reg_error;
 
   assign cmd_info_23_opcode_23_wd = reg_wdata[7:0];
 
@@ -18014,7 +18077,7 @@
   assign cmd_info_23_upload_23_wd = reg_wdata[24];
 
   assign cmd_info_23_busy_23_wd = reg_wdata[25];
-  assign tpm_cfg_we = addr_hit[55] & reg_we & !reg_error;
+  assign tpm_cfg_we = addr_hit[56] & reg_we & !reg_error;
 
   assign tpm_cfg_en_wd = reg_wdata[0];
 
@@ -18025,7 +18088,7 @@
   assign tpm_cfg_tpm_reg_chk_dis_wd = reg_wdata[3];
 
   assign tpm_cfg_invalid_locality_wd = reg_wdata[4];
-  assign tpm_access_0_we = addr_hit[57] & reg_we & !reg_error;
+  assign tpm_access_0_we = addr_hit[58] & reg_we & !reg_error;
 
   assign tpm_access_0_access_0_wd = reg_wdata[7:0];
 
@@ -18034,37 +18097,37 @@
   assign tpm_access_0_access_2_wd = reg_wdata[23:16];
 
   assign tpm_access_0_access_3_wd = reg_wdata[31:24];
-  assign tpm_access_1_we = addr_hit[58] & reg_we & !reg_error;
+  assign tpm_access_1_we = addr_hit[59] & reg_we & !reg_error;
 
   assign tpm_access_1_wd = reg_wdata[7:0];
-  assign tpm_sts_we = addr_hit[59] & reg_we & !reg_error;
+  assign tpm_sts_we = addr_hit[60] & reg_we & !reg_error;
 
   assign tpm_sts_wd = reg_wdata[31:0];
-  assign tpm_intf_capability_we = addr_hit[60] & reg_we & !reg_error;
+  assign tpm_intf_capability_we = addr_hit[61] & reg_we & !reg_error;
 
   assign tpm_intf_capability_wd = reg_wdata[31:0];
-  assign tpm_int_enable_we = addr_hit[61] & reg_we & !reg_error;
+  assign tpm_int_enable_we = addr_hit[62] & reg_we & !reg_error;
 
   assign tpm_int_enable_wd = reg_wdata[31:0];
-  assign tpm_int_vector_we = addr_hit[62] & reg_we & !reg_error;
+  assign tpm_int_vector_we = addr_hit[63] & reg_we & !reg_error;
 
   assign tpm_int_vector_wd = reg_wdata[7:0];
-  assign tpm_int_status_we = addr_hit[63] & reg_we & !reg_error;
+  assign tpm_int_status_we = addr_hit[64] & reg_we & !reg_error;
 
   assign tpm_int_status_wd = reg_wdata[31:0];
-  assign tpm_did_vid_we = addr_hit[64] & reg_we & !reg_error;
+  assign tpm_did_vid_we = addr_hit[65] & reg_we & !reg_error;
 
   assign tpm_did_vid_vid_wd = reg_wdata[15:0];
 
   assign tpm_did_vid_did_wd = reg_wdata[31:16];
-  assign tpm_rid_we = addr_hit[65] & reg_we & !reg_error;
+  assign tpm_rid_we = addr_hit[66] & reg_we & !reg_error;
 
   assign tpm_rid_wd = reg_wdata[7:0];
-  assign tpm_cmd_addr_re = addr_hit[66] & reg_re & !reg_error;
-  assign tpm_read_fifo_we = addr_hit[67] & reg_we & !reg_error;
+  assign tpm_cmd_addr_re = addr_hit[67] & reg_re & !reg_error;
+  assign tpm_read_fifo_we = addr_hit[68] & reg_we & !reg_error;
 
   assign tpm_read_fifo_wd = reg_wdata[7:0];
-  assign tpm_write_fifo_re = addr_hit[68] & reg_re & !reg_error;
+  assign tpm_write_fifo_re = addr_hit[69] & reg_re & !reg_error;
 
   // Read data return
   always_comb begin
@@ -18119,6 +18182,7 @@
         reg_rdata_next[3] = cfg_rx_order_qs;
         reg_rdata_next[15:8] = cfg_timer_v_qs;
         reg_rdata_next[16] = cfg_addr_4b_en_qs;
+        reg_rdata_next[24] = cfg_mailbox_en_qs;
       end
 
       addr_hit[6]: begin
@@ -18179,6 +18243,10 @@
       end
 
       addr_hit[17]: begin
+        reg_rdata_next[31:0] = mailbox_addr_qs;
+      end
+
+      addr_hit[18]: begin
         reg_rdata_next[4:0] = upload_status_cmdfifo_depth_qs;
         reg_rdata_next[7] = upload_status_cmdfifo_notempty_qs;
         reg_rdata_next[12:8] = upload_status_addrfifo_depth_qs;
@@ -18186,15 +18254,15 @@
         reg_rdata_next[24:16] = upload_status_payload_depth_qs;
       end
 
-      addr_hit[18]: begin
+      addr_hit[19]: begin
         reg_rdata_next[7:0] = upload_cmdfifo_qs;
       end
 
-      addr_hit[19]: begin
+      addr_hit[20]: begin
         reg_rdata_next[31:0] = upload_addrfifo_qs;
       end
 
-      addr_hit[20]: begin
+      addr_hit[21]: begin
         reg_rdata_next[0] = cmd_filter_0_filter_0_qs;
         reg_rdata_next[1] = cmd_filter_0_filter_1_qs;
         reg_rdata_next[2] = cmd_filter_0_filter_2_qs;
@@ -18229,7 +18297,7 @@
         reg_rdata_next[31] = cmd_filter_0_filter_31_qs;
       end
 
-      addr_hit[21]: begin
+      addr_hit[22]: begin
         reg_rdata_next[0] = cmd_filter_1_filter_32_qs;
         reg_rdata_next[1] = cmd_filter_1_filter_33_qs;
         reg_rdata_next[2] = cmd_filter_1_filter_34_qs;
@@ -18264,7 +18332,7 @@
         reg_rdata_next[31] = cmd_filter_1_filter_63_qs;
       end
 
-      addr_hit[22]: begin
+      addr_hit[23]: begin
         reg_rdata_next[0] = cmd_filter_2_filter_64_qs;
         reg_rdata_next[1] = cmd_filter_2_filter_65_qs;
         reg_rdata_next[2] = cmd_filter_2_filter_66_qs;
@@ -18299,7 +18367,7 @@
         reg_rdata_next[31] = cmd_filter_2_filter_95_qs;
       end
 
-      addr_hit[23]: begin
+      addr_hit[24]: begin
         reg_rdata_next[0] = cmd_filter_3_filter_96_qs;
         reg_rdata_next[1] = cmd_filter_3_filter_97_qs;
         reg_rdata_next[2] = cmd_filter_3_filter_98_qs;
@@ -18334,7 +18402,7 @@
         reg_rdata_next[31] = cmd_filter_3_filter_127_qs;
       end
 
-      addr_hit[24]: begin
+      addr_hit[25]: begin
         reg_rdata_next[0] = cmd_filter_4_filter_128_qs;
         reg_rdata_next[1] = cmd_filter_4_filter_129_qs;
         reg_rdata_next[2] = cmd_filter_4_filter_130_qs;
@@ -18369,7 +18437,7 @@
         reg_rdata_next[31] = cmd_filter_4_filter_159_qs;
       end
 
-      addr_hit[25]: begin
+      addr_hit[26]: begin
         reg_rdata_next[0] = cmd_filter_5_filter_160_qs;
         reg_rdata_next[1] = cmd_filter_5_filter_161_qs;
         reg_rdata_next[2] = cmd_filter_5_filter_162_qs;
@@ -18404,7 +18472,7 @@
         reg_rdata_next[31] = cmd_filter_5_filter_191_qs;
       end
 
-      addr_hit[26]: begin
+      addr_hit[27]: begin
         reg_rdata_next[0] = cmd_filter_6_filter_192_qs;
         reg_rdata_next[1] = cmd_filter_6_filter_193_qs;
         reg_rdata_next[2] = cmd_filter_6_filter_194_qs;
@@ -18439,7 +18507,7 @@
         reg_rdata_next[31] = cmd_filter_6_filter_223_qs;
       end
 
-      addr_hit[27]: begin
+      addr_hit[28]: begin
         reg_rdata_next[0] = cmd_filter_7_filter_224_qs;
         reg_rdata_next[1] = cmd_filter_7_filter_225_qs;
         reg_rdata_next[2] = cmd_filter_7_filter_226_qs;
@@ -18474,15 +18542,15 @@
         reg_rdata_next[31] = cmd_filter_7_filter_255_qs;
       end
 
-      addr_hit[28]: begin
+      addr_hit[29]: begin
         reg_rdata_next[31:0] = addr_swap_mask_qs;
       end
 
-      addr_hit[29]: begin
+      addr_hit[30]: begin
         reg_rdata_next[31:0] = addr_swap_data_qs;
       end
 
-      addr_hit[30]: begin
+      addr_hit[31]: begin
         reg_rdata_next[7:0] = cmd_info_0_opcode_0_qs;
         reg_rdata_next[8] = cmd_info_0_addr_en_0_qs;
         reg_rdata_next[9] = cmd_info_0_addr_swap_en_0_qs;
@@ -18496,7 +18564,7 @@
         reg_rdata_next[25] = cmd_info_0_busy_0_qs;
       end
 
-      addr_hit[31]: begin
+      addr_hit[32]: begin
         reg_rdata_next[7:0] = cmd_info_1_opcode_1_qs;
         reg_rdata_next[8] = cmd_info_1_addr_en_1_qs;
         reg_rdata_next[9] = cmd_info_1_addr_swap_en_1_qs;
@@ -18510,7 +18578,7 @@
         reg_rdata_next[25] = cmd_info_1_busy_1_qs;
       end
 
-      addr_hit[32]: begin
+      addr_hit[33]: begin
         reg_rdata_next[7:0] = cmd_info_2_opcode_2_qs;
         reg_rdata_next[8] = cmd_info_2_addr_en_2_qs;
         reg_rdata_next[9] = cmd_info_2_addr_swap_en_2_qs;
@@ -18524,7 +18592,7 @@
         reg_rdata_next[25] = cmd_info_2_busy_2_qs;
       end
 
-      addr_hit[33]: begin
+      addr_hit[34]: begin
         reg_rdata_next[7:0] = cmd_info_3_opcode_3_qs;
         reg_rdata_next[8] = cmd_info_3_addr_en_3_qs;
         reg_rdata_next[9] = cmd_info_3_addr_swap_en_3_qs;
@@ -18538,7 +18606,7 @@
         reg_rdata_next[25] = cmd_info_3_busy_3_qs;
       end
 
-      addr_hit[34]: begin
+      addr_hit[35]: begin
         reg_rdata_next[7:0] = cmd_info_4_opcode_4_qs;
         reg_rdata_next[8] = cmd_info_4_addr_en_4_qs;
         reg_rdata_next[9] = cmd_info_4_addr_swap_en_4_qs;
@@ -18552,7 +18620,7 @@
         reg_rdata_next[25] = cmd_info_4_busy_4_qs;
       end
 
-      addr_hit[35]: begin
+      addr_hit[36]: begin
         reg_rdata_next[7:0] = cmd_info_5_opcode_5_qs;
         reg_rdata_next[8] = cmd_info_5_addr_en_5_qs;
         reg_rdata_next[9] = cmd_info_5_addr_swap_en_5_qs;
@@ -18566,7 +18634,7 @@
         reg_rdata_next[25] = cmd_info_5_busy_5_qs;
       end
 
-      addr_hit[36]: begin
+      addr_hit[37]: begin
         reg_rdata_next[7:0] = cmd_info_6_opcode_6_qs;
         reg_rdata_next[8] = cmd_info_6_addr_en_6_qs;
         reg_rdata_next[9] = cmd_info_6_addr_swap_en_6_qs;
@@ -18580,7 +18648,7 @@
         reg_rdata_next[25] = cmd_info_6_busy_6_qs;
       end
 
-      addr_hit[37]: begin
+      addr_hit[38]: begin
         reg_rdata_next[7:0] = cmd_info_7_opcode_7_qs;
         reg_rdata_next[8] = cmd_info_7_addr_en_7_qs;
         reg_rdata_next[9] = cmd_info_7_addr_swap_en_7_qs;
@@ -18594,7 +18662,7 @@
         reg_rdata_next[25] = cmd_info_7_busy_7_qs;
       end
 
-      addr_hit[38]: begin
+      addr_hit[39]: begin
         reg_rdata_next[7:0] = cmd_info_8_opcode_8_qs;
         reg_rdata_next[8] = cmd_info_8_addr_en_8_qs;
         reg_rdata_next[9] = cmd_info_8_addr_swap_en_8_qs;
@@ -18608,7 +18676,7 @@
         reg_rdata_next[25] = cmd_info_8_busy_8_qs;
       end
 
-      addr_hit[39]: begin
+      addr_hit[40]: begin
         reg_rdata_next[7:0] = cmd_info_9_opcode_9_qs;
         reg_rdata_next[8] = cmd_info_9_addr_en_9_qs;
         reg_rdata_next[9] = cmd_info_9_addr_swap_en_9_qs;
@@ -18622,7 +18690,7 @@
         reg_rdata_next[25] = cmd_info_9_busy_9_qs;
       end
 
-      addr_hit[40]: begin
+      addr_hit[41]: begin
         reg_rdata_next[7:0] = cmd_info_10_opcode_10_qs;
         reg_rdata_next[8] = cmd_info_10_addr_en_10_qs;
         reg_rdata_next[9] = cmd_info_10_addr_swap_en_10_qs;
@@ -18636,7 +18704,7 @@
         reg_rdata_next[25] = cmd_info_10_busy_10_qs;
       end
 
-      addr_hit[41]: begin
+      addr_hit[42]: begin
         reg_rdata_next[7:0] = cmd_info_11_opcode_11_qs;
         reg_rdata_next[8] = cmd_info_11_addr_en_11_qs;
         reg_rdata_next[9] = cmd_info_11_addr_swap_en_11_qs;
@@ -18650,7 +18718,7 @@
         reg_rdata_next[25] = cmd_info_11_busy_11_qs;
       end
 
-      addr_hit[42]: begin
+      addr_hit[43]: begin
         reg_rdata_next[7:0] = cmd_info_12_opcode_12_qs;
         reg_rdata_next[8] = cmd_info_12_addr_en_12_qs;
         reg_rdata_next[9] = cmd_info_12_addr_swap_en_12_qs;
@@ -18664,7 +18732,7 @@
         reg_rdata_next[25] = cmd_info_12_busy_12_qs;
       end
 
-      addr_hit[43]: begin
+      addr_hit[44]: begin
         reg_rdata_next[7:0] = cmd_info_13_opcode_13_qs;
         reg_rdata_next[8] = cmd_info_13_addr_en_13_qs;
         reg_rdata_next[9] = cmd_info_13_addr_swap_en_13_qs;
@@ -18678,7 +18746,7 @@
         reg_rdata_next[25] = cmd_info_13_busy_13_qs;
       end
 
-      addr_hit[44]: begin
+      addr_hit[45]: begin
         reg_rdata_next[7:0] = cmd_info_14_opcode_14_qs;
         reg_rdata_next[8] = cmd_info_14_addr_en_14_qs;
         reg_rdata_next[9] = cmd_info_14_addr_swap_en_14_qs;
@@ -18692,7 +18760,7 @@
         reg_rdata_next[25] = cmd_info_14_busy_14_qs;
       end
 
-      addr_hit[45]: begin
+      addr_hit[46]: begin
         reg_rdata_next[7:0] = cmd_info_15_opcode_15_qs;
         reg_rdata_next[8] = cmd_info_15_addr_en_15_qs;
         reg_rdata_next[9] = cmd_info_15_addr_swap_en_15_qs;
@@ -18706,7 +18774,7 @@
         reg_rdata_next[25] = cmd_info_15_busy_15_qs;
       end
 
-      addr_hit[46]: begin
+      addr_hit[47]: begin
         reg_rdata_next[7:0] = cmd_info_16_opcode_16_qs;
         reg_rdata_next[8] = cmd_info_16_addr_en_16_qs;
         reg_rdata_next[9] = cmd_info_16_addr_swap_en_16_qs;
@@ -18720,7 +18788,7 @@
         reg_rdata_next[25] = cmd_info_16_busy_16_qs;
       end
 
-      addr_hit[47]: begin
+      addr_hit[48]: begin
         reg_rdata_next[7:0] = cmd_info_17_opcode_17_qs;
         reg_rdata_next[8] = cmd_info_17_addr_en_17_qs;
         reg_rdata_next[9] = cmd_info_17_addr_swap_en_17_qs;
@@ -18734,7 +18802,7 @@
         reg_rdata_next[25] = cmd_info_17_busy_17_qs;
       end
 
-      addr_hit[48]: begin
+      addr_hit[49]: begin
         reg_rdata_next[7:0] = cmd_info_18_opcode_18_qs;
         reg_rdata_next[8] = cmd_info_18_addr_en_18_qs;
         reg_rdata_next[9] = cmd_info_18_addr_swap_en_18_qs;
@@ -18748,7 +18816,7 @@
         reg_rdata_next[25] = cmd_info_18_busy_18_qs;
       end
 
-      addr_hit[49]: begin
+      addr_hit[50]: begin
         reg_rdata_next[7:0] = cmd_info_19_opcode_19_qs;
         reg_rdata_next[8] = cmd_info_19_addr_en_19_qs;
         reg_rdata_next[9] = cmd_info_19_addr_swap_en_19_qs;
@@ -18762,7 +18830,7 @@
         reg_rdata_next[25] = cmd_info_19_busy_19_qs;
       end
 
-      addr_hit[50]: begin
+      addr_hit[51]: begin
         reg_rdata_next[7:0] = cmd_info_20_opcode_20_qs;
         reg_rdata_next[8] = cmd_info_20_addr_en_20_qs;
         reg_rdata_next[9] = cmd_info_20_addr_swap_en_20_qs;
@@ -18776,7 +18844,7 @@
         reg_rdata_next[25] = cmd_info_20_busy_20_qs;
       end
 
-      addr_hit[51]: begin
+      addr_hit[52]: begin
         reg_rdata_next[7:0] = cmd_info_21_opcode_21_qs;
         reg_rdata_next[8] = cmd_info_21_addr_en_21_qs;
         reg_rdata_next[9] = cmd_info_21_addr_swap_en_21_qs;
@@ -18790,7 +18858,7 @@
         reg_rdata_next[25] = cmd_info_21_busy_21_qs;
       end
 
-      addr_hit[52]: begin
+      addr_hit[53]: begin
         reg_rdata_next[7:0] = cmd_info_22_opcode_22_qs;
         reg_rdata_next[8] = cmd_info_22_addr_en_22_qs;
         reg_rdata_next[9] = cmd_info_22_addr_swap_en_22_qs;
@@ -18804,7 +18872,7 @@
         reg_rdata_next[25] = cmd_info_22_busy_22_qs;
       end
 
-      addr_hit[53]: begin
+      addr_hit[54]: begin
         reg_rdata_next[7:0] = cmd_info_23_opcode_23_qs;
         reg_rdata_next[8] = cmd_info_23_addr_en_23_qs;
         reg_rdata_next[9] = cmd_info_23_addr_swap_en_23_qs;
@@ -18818,13 +18886,13 @@
         reg_rdata_next[25] = cmd_info_23_busy_23_qs;
       end
 
-      addr_hit[54]: begin
+      addr_hit[55]: begin
         reg_rdata_next[7:0] = tpm_cap_rev_qs;
         reg_rdata_next[8] = tpm_cap_locality_qs;
         reg_rdata_next[18:16] = tpm_cap_max_xfer_size_qs;
       end
 
-      addr_hit[55]: begin
+      addr_hit[56]: begin
         reg_rdata_next[0] = tpm_cfg_en_qs;
         reg_rdata_next[1] = tpm_cfg_tpm_mode_qs;
         reg_rdata_next[2] = tpm_cfg_hw_reg_dis_qs;
@@ -18832,63 +18900,63 @@
         reg_rdata_next[4] = tpm_cfg_invalid_locality_qs;
       end
 
-      addr_hit[56]: begin
+      addr_hit[57]: begin
         reg_rdata_next[0] = tpm_status_cmdaddr_notempty_qs;
         reg_rdata_next[1] = tpm_status_rdfifo_notempty_qs;
         reg_rdata_next[6:4] = tpm_status_rdfifo_depth_qs;
         reg_rdata_next[10:8] = tpm_status_wrfifo_depth_qs;
       end
 
-      addr_hit[57]: begin
+      addr_hit[58]: begin
         reg_rdata_next[7:0] = tpm_access_0_access_0_qs;
         reg_rdata_next[15:8] = tpm_access_0_access_1_qs;
         reg_rdata_next[23:16] = tpm_access_0_access_2_qs;
         reg_rdata_next[31:24] = tpm_access_0_access_3_qs;
       end
 
-      addr_hit[58]: begin
+      addr_hit[59]: begin
         reg_rdata_next[7:0] = tpm_access_1_qs;
       end
 
-      addr_hit[59]: begin
+      addr_hit[60]: begin
         reg_rdata_next[31:0] = tpm_sts_qs;
       end
 
-      addr_hit[60]: begin
+      addr_hit[61]: begin
         reg_rdata_next[31:0] = tpm_intf_capability_qs;
       end
 
-      addr_hit[61]: begin
+      addr_hit[62]: begin
         reg_rdata_next[31:0] = tpm_int_enable_qs;
       end
 
-      addr_hit[62]: begin
+      addr_hit[63]: begin
         reg_rdata_next[7:0] = tpm_int_vector_qs;
       end
 
-      addr_hit[63]: begin
+      addr_hit[64]: begin
         reg_rdata_next[31:0] = tpm_int_status_qs;
       end
 
-      addr_hit[64]: begin
+      addr_hit[65]: begin
         reg_rdata_next[15:0] = tpm_did_vid_vid_qs;
         reg_rdata_next[31:16] = tpm_did_vid_did_qs;
       end
 
-      addr_hit[65]: begin
+      addr_hit[66]: begin
         reg_rdata_next[7:0] = tpm_rid_qs;
       end
 
-      addr_hit[66]: begin
+      addr_hit[67]: begin
         reg_rdata_next[23:0] = tpm_cmd_addr_addr_qs;
         reg_rdata_next[31:24] = tpm_cmd_addr_cmd_qs;
       end
 
-      addr_hit[67]: begin
+      addr_hit[68]: begin
         reg_rdata_next[7:0] = '0;
       end
 
-      addr_hit[68]: begin
+      addr_hit[69]: begin
         reg_rdata_next[7:0] = tpm_write_fifo_qs;
       end