refactor(spid): TPM Max cap to assign smallest FIFO size

Signed-off-by: Eunchan Kim <eunchan@opentitan.org>
diff --git a/hw/ip/spi_device/rtl/spi_tpm.sv b/hw/ip/spi_device/rtl/spi_tpm.sv
index 9dbb271..a8a6e52 100644
--- a/hw/ip/spi_device/rtl/spi_tpm.sv
+++ b/hw/ip/spi_device/rtl/spi_tpm.sv
@@ -52,13 +52,18 @@
   localparam int unsigned RdFifoNumBytes = RdDataFifoSize / NumBits,
   localparam int unsigned RdFifoOffsetW  = prim_util_pkg::vbits(RdFifoNumBytes),
 
+  // FIFO size
+  localparam int unsigned RdFifoSize = RdFifoDepth * RdFifoNumBytes,
+  localparam int unsigned WrFifoSize = WrFifoDepth * (WrFifoWidth / NumBits),
+
   // TPM_CAP related constants.
   //  - Revision: the number visible in TPM_CAP CSR. Need to update the
   //    revision when the SW interface is revised.
   localparam logic [7:0] CapTpmRevision = 8'h 00,
-  //  - Max Xfer Size: the supported xfer_size is visible to the SW via
+  //  - Max Write Size: the supported write FIFO size is visible to the SW via
   //    TPM_CAP CSR
-  localparam logic [2:0] CapMaxXferSize = 3'($clog2(WrFifoDepth))
+  localparam logic [2:0] CapMaxWrSize = 3'(unsigned'($clog2(WrFifoSize))),
+  localparam logic [2:0] CapMaxRdSize = 3'(unsigned'($clog2(RdFifoSize)))
 ) (
   input clk_in_i,
   input clk_out_i,
@@ -133,7 +138,7 @@
   assign tpm_cap_o = '{
     rev:           CapTpmRevision,
     locality:      EnLocality,
-    max_xfer_size: CapMaxXferSize
+    max_xfer_size: (CapMaxWrSize > CapMaxRdSize) ? CapMaxRdSize : CapMaxWrSize
   };
 
   localparam int unsigned TpmRegisterSize = (AccessRegSize * NumLocality)