diff --git a/sw/device/lib/dif/dif_sysrst_ctrl.c b/sw/device/lib/dif/dif_sysrst_ctrl.c
index 1b90d90..69e02bc 100644
--- a/sw/device/lib/dif/dif_sysrst_ctrl.c
+++ b/sw/device/lib/dif/dif_sysrst_ctrl.c
@@ -12,6 +12,13 @@
 
 #include "sysrst_ctrl_regs.h"  // Generated.
 
+static_assert(SYSRST_CTRL_PARAM_NUM_COMBO == 4,
+              "Number of key combinations has changed. Update the "
+              "dif_sysrst_ctrl_key_combo_t enum.");
+static_assert(SYSRST_CTRL_KEY_INTR_STATUS_FLASH_WP_L_L2H_BIT == 13,
+              "Flash write-protect key interrupt bit has changed. Update the "
+              "dif_sysrst_ctrl_input_change_irq_get_causes() DIF.");
+
 dif_result_t dif_sysrst_ctrl_key_combo_detect_configure(
     const dif_sysrst_ctrl_t *sysrst_ctrl, dif_sysrst_ctrl_key_combo_t key_combo,
     dif_sysrst_ctrl_key_combo_config_t config) {
@@ -700,6 +707,54 @@
   return kDifOk;
 }
 
+dif_result_t dif_sysrst_ctrl_key_combo_irq_get_causes(
+    const dif_sysrst_ctrl_t *sysrst_ctrl, uint32_t *causes) {
+  if (sysrst_ctrl == NULL || causes == NULL) {
+    return kDifBadArg;
+  }
+
+  *causes = mmio_region_read32(sysrst_ctrl->base_addr,
+                               SYSRST_CTRL_COMBO_INTR_STATUS_REG_OFFSET);
+
+  return kDifOk;
+}
+
+dif_result_t dif_sysrst_ctrl_key_combo_irq_clear_causes(
+    const dif_sysrst_ctrl_t *sysrst_ctrl, uint32_t causes) {
+  if (sysrst_ctrl == NULL || causes >= (1U << SYSRST_CTRL_PARAM_NUM_COMBO)) {
+    return kDifBadArg;
+  }
+
+  mmio_region_write32(sysrst_ctrl->base_addr,
+                      SYSRST_CTRL_COMBO_INTR_STATUS_REG_OFFSET, causes);
+
+  return kDifOk;
+}
+
+dif_result_t dif_sysrst_ctrl_input_change_irq_get_causes(
+    const dif_sysrst_ctrl_t *sysrst_ctrl, uint32_t *causes) {
+  if (sysrst_ctrl == NULL || causes == NULL) {
+    return kDifBadArg;
+  }
+
+  *causes = mmio_region_read32(sysrst_ctrl->base_addr,
+                               SYSRST_CTRL_KEY_INTR_STATUS_REG_OFFSET);
+
+  return kDifOk;
+}
+
+dif_result_t dif_sysrst_ctrl_input_change_irq_clear_causes(
+    const dif_sysrst_ctrl_t *sysrst_ctrl, uint32_t causes) {
+  if (sysrst_ctrl == NULL ||
+      causes >= (1U << (SYSRST_CTRL_KEY_INTR_STATUS_FLASH_WP_L_L2H_BIT + 1))) {
+    return kDifBadArg;
+  }
+
+  mmio_region_write32(sysrst_ctrl->base_addr,
+                      SYSRST_CTRL_KEY_INTR_STATUS_REG_OFFSET, causes);
+  return kDifOk;
+}
+
 dif_result_t dif_sysrst_ctrl_ulp_wakeup_get_status(
     const dif_sysrst_ctrl_t *sysrst_ctrl, bool *wakeup_detected) {
   if (sysrst_ctrl == NULL || wakeup_detected == NULL) {
diff --git a/sw/device/lib/dif/dif_sysrst_ctrl_unittest.cc b/sw/device/lib/dif/dif_sysrst_ctrl_unittest.cc
index 7d815fe..0385408 100644
--- a/sw/device/lib/dif/dif_sysrst_ctrl_unittest.cc
+++ b/sw/device/lib/dif/dif_sysrst_ctrl_unittest.cc
@@ -691,6 +691,78 @@
   EXPECT_EQ(is_enabled, kDifToggleEnabled);
 }
 
+class KeyComboIrqGetCausesTest : public SysrstCtrlTest {};
+
+TEST_F(KeyComboIrqGetCausesTest, NullArgs) {
+  uint32_t causes;
+  EXPECT_DIF_BADARG(dif_sysrst_ctrl_key_combo_irq_get_causes(nullptr, &causes));
+  EXPECT_DIF_BADARG(
+      dif_sysrst_ctrl_key_combo_irq_get_causes(&sysrst_ctrl_, nullptr));
+  EXPECT_DIF_BADARG(dif_sysrst_ctrl_key_combo_irq_get_causes(nullptr, nullptr));
+}
+
+TEST_F(KeyComboIrqGetCausesTest, Success) {
+  uint32_t causes;
+  EXPECT_READ32(SYSRST_CTRL_COMBO_INTR_STATUS_REG_OFFSET, 0xf);
+  EXPECT_DIF_OK(
+      dif_sysrst_ctrl_key_combo_irq_get_causes(&sysrst_ctrl_, &causes));
+  EXPECT_EQ(causes, 0xf);
+}
+
+class KeyComboIrqClearCausesTest : public SysrstCtrlTest {};
+
+TEST_F(KeyComboIrqClearCausesTest, NullArgs) {
+  EXPECT_DIF_BADARG(dif_sysrst_ctrl_key_combo_irq_clear_causes(nullptr, 0xf));
+}
+
+TEST_F(KeyComboIrqClearCausesTest, BadCauses) {
+  EXPECT_DIF_BADARG(
+      dif_sysrst_ctrl_key_combo_irq_clear_causes(&sysrst_ctrl_, 0x1f));
+}
+
+TEST_F(KeyComboIrqClearCausesTest, Success) {
+  EXPECT_WRITE32(SYSRST_CTRL_COMBO_INTR_STATUS_REG_OFFSET, 0xf);
+  EXPECT_DIF_OK(dif_sysrst_ctrl_key_combo_irq_clear_causes(&sysrst_ctrl_, 0xf));
+}
+
+class InputChangeIrqGetCausesTest : public SysrstCtrlTest {};
+
+TEST_F(InputChangeIrqGetCausesTest, NullArgs) {
+  uint32_t causes;
+  EXPECT_DIF_BADARG(
+      dif_sysrst_ctrl_input_change_irq_get_causes(nullptr, &causes));
+  EXPECT_DIF_BADARG(
+      dif_sysrst_ctrl_input_change_irq_get_causes(&sysrst_ctrl_, nullptr));
+  EXPECT_DIF_BADARG(
+      dif_sysrst_ctrl_input_change_irq_get_causes(nullptr, nullptr));
+}
+
+TEST_F(InputChangeIrqGetCausesTest, Success) {
+  uint32_t causes;
+  EXPECT_READ32(SYSRST_CTRL_KEY_INTR_STATUS_REG_OFFSET, 0x3f);
+  EXPECT_DIF_OK(
+      dif_sysrst_ctrl_input_change_irq_get_causes(&sysrst_ctrl_, &causes));
+  EXPECT_EQ(causes, 0x3f);
+}
+
+class InputChangeIrqClearCausesTest : public SysrstCtrlTest {};
+
+TEST_F(InputChangeIrqClearCausesTest, NullArgs) {
+  EXPECT_DIF_BADARG(
+      dif_sysrst_ctrl_input_change_irq_clear_causes(nullptr, 0xf));
+}
+
+TEST_F(InputChangeIrqClearCausesTest, BadCauses) {
+  EXPECT_DIF_BADARG(
+      dif_sysrst_ctrl_input_change_irq_clear_causes(&sysrst_ctrl_, 0x4000));
+}
+
+TEST_F(InputChangeIrqClearCausesTest, Success) {
+  EXPECT_WRITE32(SYSRST_CTRL_KEY_INTR_STATUS_REG_OFFSET, 0xff);
+  EXPECT_DIF_OK(
+      dif_sysrst_ctrl_input_change_irq_clear_causes(&sysrst_ctrl_, 0xff));
+}
+
 class UlpWakeupGetStatusTest : public SysrstCtrlTest {};
 
 TEST_F(UlpWakeupGetStatusTest, NullArgs) {
