[dif/alert_handler] fixed CauseTest.Ack and corresponding DIF match RTL

RTL now uses a multireg for all alert cause bits.

Signed-off-by: Timothy Trippel <ttrippel@google.com>
diff --git a/sw/device/lib/dif/dif_alert_handler.c b/sw/device/lib/dif/dif_alert_handler.c
index e7d644a..4e488f5 100644
--- a/sw/device/lib/dif/dif_alert_handler.c
+++ b/sw/device/lib/dif/dif_alert_handler.c
@@ -696,6 +696,8 @@
       ALERT_HANDLER_ALERT_CAUSE_0_REG_OFFSET + alert * sizeof(uint32_t);
   uint32_t cause_reg =
       mmio_region_read32(handler->params.base_addr, cause_reg_offset);
+  // NOTE: assuming all cause registers across all alerts use the same bit index
+  // for the cause bit
   *is_cause =
       bitfield_bit32_read(cause_reg, ALERT_HANDLER_ALERT_CAUSE_0_A_0_BIT);
 
@@ -708,9 +710,13 @@
     return kDifAlertHandlerBadArg;
   }
 
-  uint32_t reg = bitfield_bit32_write(0, alert, true);
-  mmio_region_write32(handler->params.base_addr,
-                      ALERT_HANDLER_ALERT_CAUSE_0_REG_OFFSET, reg);
+  ptrdiff_t cause_reg_offset =
+      ALERT_HANDLER_ALERT_CAUSE_0_REG_OFFSET + alert * sizeof(uint32_t);
+  // NOTE: assuming all cause registers across all alerts use the same bit index
+  // for the cause bit
+  uint32_t cause_reg =
+      bitfield_bit32_write(0, ALERT_HANDLER_ALERT_CAUSE_0_A_0_BIT, true);
+  mmio_region_write32(handler->params.base_addr, cause_reg_offset, cause_reg);
 
   return kDifAlertHandlerOk;
 }
diff --git a/sw/device/lib/dif/dif_alert_handler_unittest.cc b/sw/device/lib/dif/dif_alert_handler_unittest.cc
index 5452585..ff3498c 100644
--- a/sw/device/lib/dif/dif_alert_handler_unittest.cc
+++ b/sw/device/lib/dif/dif_alert_handler_unittest.cc
@@ -778,7 +778,13 @@
 }
 
 TEST_F(CauseTest, Ack) {
-  EXPECT_WRITE32(ALERT_HANDLER_ALERT_CAUSE_0_REG_OFFSET, {{11, true}});
+  EXPECT_WRITE32(ALERT_HANDLER_ALERT_CAUSE_0_REG_OFFSET,
+                 {{ALERT_HANDLER_ALERT_CAUSE_0_A_0_BIT, true}});
+  EXPECT_EQ(dif_alert_handler_alert_acknowledge(&handler_, 0),
+            kDifAlertHandlerOk);
+
+  EXPECT_WRITE32(ALERT_HANDLER_ALERT_CAUSE_11_REG_OFFSET,
+                 {{ALERT_HANDLER_ALERT_CAUSE_11_A_11_BIT, true}});
   EXPECT_EQ(dif_alert_handler_alert_acknowledge(&handler_, 11),
             kDifAlertHandlerOk);
 }