[spi_device,lint] Waive unused cmd_info fields in spi_passthrough.sv

These were waived for AscentLint already in spi_device.waiver (except
the filename had a typo). Move the waiver into the RTL instead, which
puts it closer to the relevant code and works for Verilator too.

Signed-off-by: Rupert Swarbrick <rswarbrick@lowrisc.org>
diff --git a/hw/ip/spi_device/lint/spi_device.waiver b/hw/ip/spi_device/lint/spi_device.waiver
index 2b98035..50e0ad6 100644
--- a/hw/ip/spi_device/lint/spi_device.waiver
+++ b/hw/ip/spi_device/lint/spi_device.waiver
@@ -122,8 +122,3 @@
 
 waive -rules {NOT_READ} -location {spi_passthrough.sv} \
       -regexp {Signal 'opcode.*}
-
-waive -rules {NOT_READ} -location {spi_passthrouth.sv} \
-      -regexp {Signal 'cmd_info.addr.*} \
-      -comment "cmd_info is valid after moving to Address state. So cmd_info_d was used"
-
diff --git a/hw/ip/spi_device/rtl/spi_passthrough.sv b/hw/ip/spi_device/rtl/spi_passthrough.sv
index bfeaf25..5a72cb5 100644
--- a/hw/ip/spi_device/rtl/spi_passthrough.sv
+++ b/hw/ip/spi_device/rtl/spi_passthrough.sv
@@ -856,6 +856,17 @@
     end
   end
 
+  // Some of the fields of cmd_info are used in the big FSM below. The addr_* fields are ignored
+  // because we pick them from cmd_info_d instead (in a different FSM state). We rely on the
+  // synthesis tool not to generate the unneeded flops but must explicitly waive lint warnings about
+  // unused fields.
+  logic unused_cmd_info_fields;
+  assign unused_cmd_info_fields = &{1'b0,
+                                    cmd_info.addr_en,
+                                    cmd_info.addr_swap_en,
+                                    cmd_info.addr_4b_affected,
+                                    cmd_info.addr_size};
+
   always_comb begin
     cmd_info_d = '0;