[sysrst_ctrl] Add input path for flash_wp_l

Signed-off-by: Michael Schaffner <msf@opentitan.org>
diff --git a/hw/ip/sysrst_ctrl/data/sysrst_ctrl.hjson b/hw/ip/sysrst_ctrl/data/sysrst_ctrl.hjson
index 30dfa55..680f2b9 100644
--- a/hw/ip/sysrst_ctrl/data/sysrst_ctrl.hjson
+++ b/hw/ip/sysrst_ctrl/data/sysrst_ctrl.hjson
@@ -53,6 +53,7 @@
   ],
   available_inout_list: [
     { name: "ec_rst_l", desc: "ec_rst_l as an inout to/from the open drain IO" }
+    { name: "flash_wp_l", desc: "flash_wp_l as an inout to/from the open drain IO" }
   ],
   available_input_list: [
     { name: "ac_present", desc: "A/C power is present" }
@@ -64,7 +65,6 @@
   ],
   available_output_list: [
     { name: "bat_disable", desc: "Battery is disconnected" }
-    { name: "flash_wp_l", desc: "flash_wp_l as an output to the open drain IO" }
     { name: "key0_out", desc: "Passthrough from key0_in, can be configured to invert" }
     { name: "key1_out", desc: "Passthrough from key1_in, can be configured to invert" }
     { name: "key2_out", desc: "Passthrough from key2_in, can be configured to invert" }
@@ -483,40 +483,45 @@
               "excl:CsrAllTests:CsrExclCheck"],
       fields: [
         { bits:   "0",
-          name:   "ac_present",
-          desc:   "raw ac_present value; before the invert logic",
-          resval: "0",
-        }
-        { bits:   "1",
-          name:   "ec_rst_l",
-          desc:   "raw ec_rst_l value; before the invert logic",
-          resval: "0",
-        }
-        { bits:   "2",
           name:   "pwrb_in",
           desc:   "raw pwrb_in value; before the invert logic",
           resval: "0",
         }
-        { bits:   "3",
+        { bits:   "1",
           name:   "key0_in",
           desc:   "raw key0_in value; before the invert logic",
           resval: "0",
         }
-        { bits:   "4",
+        { bits:   "2",
           name:   "key1_in",
           desc:   "raw key1_in value; before the invert logic",
           resval: "0",
         }
-        { bits:   "5",
+        { bits:   "3",
           name:   "key2_in",
           desc:   "raw key2_in value; before the invert logic",
           resval: "0",
         }
-        { bits:   "6",
+        { bits:   "4",
           name:   "lid_open",
           desc:   "raw lid_open value; before the invert logic",
           resval: "0",
         }
+        { bits:   "5",
+          name:   "ac_present",
+          desc:   "raw ac_present value; before the invert logic",
+          resval: "0",
+        }
+        { bits:   "6",
+          name:   "ec_rst_l",
+          desc:   "raw ec_rst_l value; before the invert logic",
+          resval: "0",
+        }
+        { bits:   "7",
+          name:   "flash_wp_l",
+          desc:   "raw flash_wp_l value; before the invert logic",
+          resval: "0",
+        }
       ]
     }
     { name: "KEY_INTR_CTL",
@@ -557,6 +562,11 @@
           desc:   "0: disable, 1: enable",
           resval: "0",
         }
+        { bits:   "6",
+          name:   "flash_wp_l_H2L",
+          desc:   "0: disable, 1: enable",
+          resval: "0",
+        }
         { bits:   "8",
           name:   "pwrb_in_L2H",
           desc:   "0: disable, 1: enable",
@@ -587,6 +597,11 @@
           desc:   "0: disable, 1: enable",
           resval: "0",
         }
+        { bits:   "14",
+          name:   "flash_wp_l_L2H",
+          desc:   "0: disable, 1: enable",
+          resval: "0",
+        }
       ]
     }
     { name: "KEY_INTR_DEBOUNCE_CTL",
@@ -845,35 +860,45 @@
           resval: "0",
         }
         { bits:   "6",
-          name:   "pwrb_L2H",
+          name:   "flash_wp_l_H2L",
           desc:   "0: case not detected;1: case detected",
           resval: "0",
         }
         { bits:   "7",
-          name:   "key0_in_L2H",
+          name:   "pwrb_L2H",
           desc:   "0: case not detected;1: case detected",
           resval: "0",
         }
         { bits:   "8",
-          name:   "key1_in_L2H",
+          name:   "key0_in_L2H",
           desc:   "0: case not detected;1: case detected",
           resval: "0",
         }
         { bits:   "9",
-          name:   "key2_in_L2H",
+          name:   "key1_in_L2H",
           desc:   "0: case not detected;1: case detected",
           resval: "0",
         }
         { bits:   "10",
-          name:   "ac_present_L2H",
+          name:   "key2_in_L2H",
           desc:   "0: case not detected;1: case detected",
           resval: "0",
         }
         { bits:   "11",
+          name:   "ac_present_L2H",
+          desc:   "0: case not detected;1: case detected",
+          resval: "0",
+        }
+        { bits:   "12",
           name:   "ec_rst_l_L2H",
           desc:   "0: case not detected;1: case detected",
           resval: "0",
         }
+        { bits:   "13",
+          name:   "flash_wp_l_L2H",
+          desc:   "0: case not detected;1: case detected",
+          resval: "0",
+        }
       ]
     }
   ],
diff --git a/hw/ip/sysrst_ctrl/dv/env/sysrst_ctrl_if.sv b/hw/ip/sysrst_ctrl/dv/env/sysrst_ctrl_if.sv
index 6aa967d..fc075f0 100644
--- a/hw/ip/sysrst_ctrl/dv/env/sysrst_ctrl_if.sv
+++ b/hw/ip/sysrst_ctrl/dv/env/sysrst_ctrl_if.sv
@@ -13,6 +13,7 @@
   logic pwrb_in;
   logic ac_present;
   logic ec_rst_l_in;
+  logic flash_wp_l_in;
   logic lid_open;
   logic bat_disable;
   logic flash_wp_l;
@@ -36,6 +37,7 @@
     pwrb_in <= 0;
     lid_open <= 0;
     ec_rst_l_in <= 1;
+    flash_wp_l_in <= 1;
     z3_wakeup_in <= 0;
     bat_disable_in <= 0;
   endfunction
@@ -43,14 +45,15 @@
   task automatic randomize_input();
     // VCS doesn't support randomizing logic variable
     // so declare bit variable, randomize it and assigned it to logic
-    bit pwrb, key0, key1, key2, ec_rst_l;
-    `DV_CHECK_FATAL(std::randomize(pwrb, key0, key1, key2, ec_rst_l), ,
+    bit pwrb, key0, key1, key2, ec_rst_l, flash_wp_l;
+    `DV_CHECK_FATAL(std::randomize(pwrb, key0, key1, key2, ec_rst_l, flash_wp_l), ,
        "sysrst_ctrl_if")
     pwrb_in = pwrb;
     key0_in = key0;
     key1_in = key1;
     key2_in = key2;
     ec_rst_l_in = ec_rst_l;
+    flash_wp_l_in = flash_wp_l;
   endtask
 
 endinterface : sysrst_ctrl_if
diff --git a/hw/ip/sysrst_ctrl/dv/tb.sv b/hw/ip/sysrst_ctrl/dv/tb.sv
index e3a0c5d..edad44d 100644
--- a/hw/ip/sysrst_ctrl/dv/tb.sv
+++ b/hw/ip/sysrst_ctrl/dv/tb.sv
@@ -53,6 +53,7 @@
     .alert_tx_o       (alert_tx),
     .cio_ac_present_i (sysrst_ctrl_if.ac_present),
     .cio_ec_rst_l_i   (sysrst_ctrl_if.ec_rst_l_in),
+    .cio_flash_wp_l_i (sysrst_ctrl_if.flash_wp_l_in),
     .cio_key0_in_i    (sysrst_ctrl_if.key0_in),
     .cio_key1_in_i    (sysrst_ctrl_if.key1_in),
     .cio_key2_in_i    (sysrst_ctrl_if.key2_in),
diff --git a/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl.sv b/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl.sv
index ef16492..d2761e6 100644
--- a/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl.sv
+++ b/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl.sv
@@ -37,6 +37,7 @@
   input cio_key2_in_i,  // TBD button in tablet; row input from keyboard matrix in a laptop
   input cio_pwrb_in_i,  // Power button in both tablet and laptop
   input cio_lid_open_i,  // lid is open from GMR
+  input cio_flash_wp_l_i, // read back of the flash_wp_l output pad
   output logic cio_bat_disable_o,  // Battery is disconnected
   output logic cio_flash_wp_l_o,//Flash write protect is asserted by sysrst_ctrl
   output logic cio_ec_rst_l_o,  // EC reset is asserted by sysrst_ctrl
@@ -100,25 +101,34 @@
   ///////////////////////////////////////
 
   // Optionally invert some of the input signals
-  logic pwrb_int, key0_int, key1_int, key2_int, ac_present_int, lid_open_int, ec_rst_l_int;
+  logic pwrb_int, key0_int, key1_int, key2_int, ac_present_int, lid_open_int;
+  logic ec_rst_l_int, flash_wp_l_int;
   assign pwrb_int       = reg2hw.key_invert_ctl.pwrb_in.q ^ cio_pwrb_in_i;
   assign key0_int       = reg2hw.key_invert_ctl.key0_in.q ^ cio_key0_in_i;
   assign key1_int       = reg2hw.key_invert_ctl.key1_in.q ^ cio_key1_in_i;
   assign key2_int       = reg2hw.key_invert_ctl.key2_in.q ^ cio_key2_in_i;
   assign ac_present_int = reg2hw.key_invert_ctl.ac_present.q ^ cio_ac_present_i;
   assign lid_open_int   = reg2hw.key_invert_ctl.lid_open.q ^ cio_lid_open_i;
-  // Uninverted input
+  // Uninverted inputs
   assign ec_rst_l_int   = cio_ec_rst_l_i;
+  assign flash_wp_l_int = cio_flash_wp_l_i;
 
   // Synchronize input signals to AON clock
   logic aon_pwrb_int, aon_key0_int, aon_key1_int, aon_key2_int;
-  logic aon_ac_present_int, aon_lid_open_int, aon_ec_rst_l_int;
+  logic aon_ac_present_int, aon_lid_open_int, aon_ec_rst_l_int, aon_flash_wp_l_int;
   prim_flop_2sync #(
-    .Width(7)
+    .Width(8)
   ) u_prim_flop_2sync_input (
     .clk_i(clk_aon_i),
     .rst_ni(rst_aon_ni),
-    .d_i({pwrb_int, key0_int, key1_int, key2_int, ac_present_int, lid_open_int, ec_rst_l_int}),
+    .d_i({pwrb_int,
+          key0_int,
+          key1_int,
+          key2_int,
+          ac_present_int,
+          lid_open_int,
+          ec_rst_l_int,
+          flash_wp_l_int}),
     .q_o({
       aon_pwrb_int,
       aon_key0_int,
@@ -126,7 +136,8 @@
       aon_key2_int,
       aon_ac_present_int,
       aon_lid_open_int,
-      aon_ec_rst_l_int
+      aon_ec_rst_l_int,
+      aon_flash_wp_l_int
     })
   );
 
@@ -200,6 +211,7 @@
     .key2_int_i(aon_key2_int),
     .ac_present_int_i(aon_ac_present_int),
     .ec_rst_l_int_i(aon_ec_rst_l_int),
+    .flash_wp_l_int_i(aon_flash_wp_l_int),
     // CSRs synced to AON clock
     .key_intr_ctl_i(reg2hw.key_intr_ctl),
     .key_intr_debounce_ctl_i(reg2hw.key_intr_debounce_ctl),
@@ -257,6 +269,7 @@
     .cio_key2_in_i,
     .cio_ac_present_i,
     .cio_ec_rst_l_i,
+    .cio_flash_wp_l_i,
     .cio_lid_open_i,
     // Signals from autoblock (not synced to AON clock)
     .pwrb_out_hw_i(pwrb_out_hw),
diff --git a/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl_keyintr.sv b/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl_keyintr.sv
index e1d9e6d..caf2d76 100644
--- a/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl_keyintr.sv
+++ b/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl_keyintr.sv
@@ -17,6 +17,7 @@
   input                                                 key2_int_i,
   input                                                 ac_present_int_i,
   input                                                 ec_rst_l_int_i,
+  input                                                 flash_wp_l_int_i,
   // CSRs synced to AON clock
   input  sysrst_ctrl_reg2hw_key_intr_ctl_reg_t          key_intr_ctl_i,
   input  sysrst_ctrl_reg2hw_key_intr_debounce_ctl_reg_t key_intr_debounce_ctl_i,
@@ -25,10 +26,16 @@
   output                                                sysrst_ctrl_key_intr_o
 );
 
-  localparam int NumKeyIntr = 6;
+  localparam int NumKeyIntr = 7;
   logic [NumKeyIntr-1:0] triggers, l2h_en, h2l_en;
   assign triggers = {
-    pwrb_int_i, key0_int_i, key1_int_i, key2_int_i, ac_present_int_i, ec_rst_l_int_i
+    pwrb_int_i,
+    key0_int_i,
+    key1_int_i,
+    key2_int_i,
+    ac_present_int_i,
+    ec_rst_l_int_i,
+    flash_wp_l_int_i
   };
   assign l2h_en = {
     key_intr_ctl_i.pwrb_in_l2h.q,
@@ -36,7 +43,8 @@
     key_intr_ctl_i.key1_in_l2h.q,
     key_intr_ctl_i.key2_in_l2h.q,
     key_intr_ctl_i.ac_present_l2h.q,
-    key_intr_ctl_i.ec_rst_l_l2h.q
+    key_intr_ctl_i.ec_rst_l_l2h.q,
+    key_intr_ctl_i.flash_wp_l_l2h.q
   };
   assign h2l_en = {
     key_intr_ctl_i.pwrb_in_h2l.q,
@@ -44,7 +52,8 @@
     key_intr_ctl_i.key1_in_h2l.q,
     key_intr_ctl_i.key2_in_h2l.q,
     key_intr_ctl_i.ac_present_h2l.q,
-    key_intr_ctl_i.ec_rst_l_h2l.q
+    key_intr_ctl_i.ec_rst_l_h2l.q,
+    key_intr_ctl_i.flash_wp_l_h2l.q
   };
 
   logic [NumKeyIntr-1:0] l2h_met_pulse, h2l_met_pulse;
@@ -94,14 +103,16 @@
           key_intr_status_o.key1_in_l2h.de,
           key_intr_status_o.key2_in_l2h.de,
           key_intr_status_o.ac_present_l2h.de,
-          key_intr_status_o.ec_rst_l_l2h.de} = l2h_met_pulse;
+          key_intr_status_o.ec_rst_l_l2h.de,
+          key_intr_status_o.flash_wp_l_l2h.de} = l2h_met_pulse;
 
   assign {key_intr_status_o.pwrb_h2l.de,
           key_intr_status_o.key0_in_h2l.de,
           key_intr_status_o.key1_in_h2l.de,
           key_intr_status_o.key2_in_h2l.de,
           key_intr_status_o.ac_present_h2l.de,
-          key_intr_status_o.ec_rst_l_h2l.de} = h2l_met_pulse;
+          key_intr_status_o.ec_rst_l_h2l.de,
+          key_intr_status_o.flash_wp_l_h2l.de} = h2l_met_pulse;
 
   // Send out aggregated interrupt pulse
   assign sysrst_ctrl_key_intr_o = |l2h_met_pulse || |h2l_met_pulse;
@@ -119,5 +130,7 @@
   assign key_intr_status_o.ac_present_l2h.d = 1'b1;
   assign key_intr_status_o.ec_rst_l_h2l.d = 1'b1;
   assign key_intr_status_o.ec_rst_l_l2h.d = 1'b1;
+  assign key_intr_status_o.flash_wp_l_h2l.d = 1'b1;
+  assign key_intr_status_o.flash_wp_l_l2h.d = 1'b1;
 
 endmodule
diff --git a/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl_pin.sv b/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl_pin.sv
index ccf7c4e..ce6b6f3 100644
--- a/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl_pin.sv
+++ b/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl_pin.sv
@@ -17,6 +17,7 @@
   input cio_key2_in_i,
   input cio_ac_present_i,
   input cio_ec_rst_l_i,
+  input cio_flash_wp_l_i,
   input cio_lid_open_i,
   // Signals from autoblock (not synced to AON clock)
   input pwrb_out_hw_i,
@@ -49,37 +50,40 @@
   // Synchronize between GPIO and cfg(24MHz)
   // Use the raw input values here (not the inverted pass through values)
   prim_flop_2sync #(
-    .Width(7)
+    .Width(8)
   ) u_cfg_ac_present_i_pin (
     .clk_i,
     .rst_ni,
     .d_i({
-      cio_ac_present_i,
-      cio_ec_rst_l_i,
       cio_pwrb_in_i,
       cio_key0_in_i,
       cio_key1_in_i,
       cio_key2_in_i,
-      cio_lid_open_i
+      cio_lid_open_i,
+      cio_ac_present_i,
+      cio_ec_rst_l_i,
+      cio_flash_wp_l_i
     }),
     .q_o({
-      pin_in_value_o.ac_present.d,
-      pin_in_value_o.ec_rst_l.d,
       pin_in_value_o.pwrb_in.d,
       pin_in_value_o.key0_in.d,
       pin_in_value_o.key1_in.d,
       pin_in_value_o.key2_in.d,
-      pin_in_value_o.lid_open.d
+      pin_in_value_o.lid_open.d,
+      pin_in_value_o.ac_present.d,
+      pin_in_value_o.ec_rst_l.d,
+      pin_in_value_o.flash_wp_l.d
     })
   );
 
-  assign pin_in_value_o.ac_present.de = 1'b1;
-  assign pin_in_value_o.ec_rst_l.de   = 1'b1;
   assign pin_in_value_o.pwrb_in.de    = 1'b1;
   assign pin_in_value_o.key0_in.de    = 1'b1;
   assign pin_in_value_o.key1_in.de    = 1'b1;
   assign pin_in_value_o.key2_in.de    = 1'b1;
   assign pin_in_value_o.lid_open.de   = 1'b1;
+  assign pin_in_value_o.ac_present.de = 1'b1;
+  assign pin_in_value_o.ec_rst_l.de   = 1'b1;
+  assign pin_in_value_o.flash_wp_l.de = 1'b1;
 
   // Pin override logic.
   localparam int NumSignals = 8;
diff --git a/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl_reg_pkg.sv b/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl_reg_pkg.sv
index 710b3bb..2b21fc2 100644
--- a/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl_reg_pkg.sv
+++ b/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl_reg_pkg.sv
@@ -226,6 +226,9 @@
     } ec_rst_l_h2l;
     struct packed {
       logic        q;
+    } flash_wp_l_h2l;
+    struct packed {
+      logic        q;
     } pwrb_in_l2h;
     struct packed {
       logic        q;
@@ -242,6 +245,9 @@
     struct packed {
       logic        q;
     } ec_rst_l_l2h;
+    struct packed {
+      logic        q;
+    } flash_wp_l_l2h;
   } sysrst_ctrl_reg2hw_key_intr_ctl_reg_t;
 
   typedef struct packed {
@@ -334,14 +340,6 @@
     struct packed {
       logic        d;
       logic        de;
-    } ac_present;
-    struct packed {
-      logic        d;
-      logic        de;
-    } ec_rst_l;
-    struct packed {
-      logic        d;
-      logic        de;
     } pwrb_in;
     struct packed {
       logic        d;
@@ -359,6 +357,18 @@
       logic        d;
       logic        de;
     } lid_open;
+    struct packed {
+      logic        d;
+      logic        de;
+    } ac_present;
+    struct packed {
+      logic        d;
+      logic        de;
+    } ec_rst_l;
+    struct packed {
+      logic        d;
+      logic        de;
+    } flash_wp_l;
   } sysrst_ctrl_hw2reg_pin_in_value_reg_t;
 
   typedef struct packed {
@@ -408,6 +418,10 @@
     struct packed {
       logic        d;
       logic        de;
+    } flash_wp_l_h2l;
+    struct packed {
+      logic        d;
+      logic        de;
     } pwrb_l2h;
     struct packed {
       logic        d;
@@ -429,25 +443,29 @@
       logic        d;
       logic        de;
     } ec_rst_l_l2h;
+    struct packed {
+      logic        d;
+      logic        de;
+    } flash_wp_l_l2h;
   } sysrst_ctrl_hw2reg_key_intr_status_reg_t;
 
   // Register -> HW type
   typedef struct packed {
-    sysrst_ctrl_reg2hw_intr_state_reg_t intr_state; // [330:330]
-    sysrst_ctrl_reg2hw_intr_enable_reg_t intr_enable; // [329:329]
-    sysrst_ctrl_reg2hw_intr_test_reg_t intr_test; // [328:327]
-    sysrst_ctrl_reg2hw_alert_test_reg_t alert_test; // [326:325]
-    sysrst_ctrl_reg2hw_ec_rst_ctl_reg_t ec_rst_ctl; // [324:309]
-    sysrst_ctrl_reg2hw_ulp_ac_debounce_ctl_reg_t ulp_ac_debounce_ctl; // [308:293]
-    sysrst_ctrl_reg2hw_ulp_lid_debounce_ctl_reg_t ulp_lid_debounce_ctl; // [292:277]
-    sysrst_ctrl_reg2hw_ulp_pwrb_debounce_ctl_reg_t ulp_pwrb_debounce_ctl; // [276:261]
-    sysrst_ctrl_reg2hw_ulp_ctl_reg_t ulp_ctl; // [260:260]
-    sysrst_ctrl_reg2hw_wkup_status_reg_t wkup_status; // [259:259]
-    sysrst_ctrl_reg2hw_key_invert_ctl_reg_t key_invert_ctl; // [258:247]
-    sysrst_ctrl_reg2hw_pin_allowed_ctl_reg_t pin_allowed_ctl; // [246:231]
-    sysrst_ctrl_reg2hw_pin_out_ctl_reg_t pin_out_ctl; // [230:223]
-    sysrst_ctrl_reg2hw_pin_out_value_reg_t pin_out_value; // [222:215]
-    sysrst_ctrl_reg2hw_key_intr_ctl_reg_t key_intr_ctl; // [214:203]
+    sysrst_ctrl_reg2hw_intr_state_reg_t intr_state; // [332:332]
+    sysrst_ctrl_reg2hw_intr_enable_reg_t intr_enable; // [331:331]
+    sysrst_ctrl_reg2hw_intr_test_reg_t intr_test; // [330:329]
+    sysrst_ctrl_reg2hw_alert_test_reg_t alert_test; // [328:327]
+    sysrst_ctrl_reg2hw_ec_rst_ctl_reg_t ec_rst_ctl; // [326:311]
+    sysrst_ctrl_reg2hw_ulp_ac_debounce_ctl_reg_t ulp_ac_debounce_ctl; // [310:295]
+    sysrst_ctrl_reg2hw_ulp_lid_debounce_ctl_reg_t ulp_lid_debounce_ctl; // [294:279]
+    sysrst_ctrl_reg2hw_ulp_pwrb_debounce_ctl_reg_t ulp_pwrb_debounce_ctl; // [278:263]
+    sysrst_ctrl_reg2hw_ulp_ctl_reg_t ulp_ctl; // [262:262]
+    sysrst_ctrl_reg2hw_wkup_status_reg_t wkup_status; // [261:261]
+    sysrst_ctrl_reg2hw_key_invert_ctl_reg_t key_invert_ctl; // [260:249]
+    sysrst_ctrl_reg2hw_pin_allowed_ctl_reg_t pin_allowed_ctl; // [248:233]
+    sysrst_ctrl_reg2hw_pin_out_ctl_reg_t pin_out_ctl; // [232:225]
+    sysrst_ctrl_reg2hw_pin_out_value_reg_t pin_out_value; // [224:217]
+    sysrst_ctrl_reg2hw_key_intr_ctl_reg_t key_intr_ctl; // [216:203]
     sysrst_ctrl_reg2hw_key_intr_debounce_ctl_reg_t key_intr_debounce_ctl; // [202:187]
     sysrst_ctrl_reg2hw_auto_block_debounce_ctl_reg_t auto_block_debounce_ctl; // [186:170]
     sysrst_ctrl_reg2hw_auto_block_out_ctl_reg_t auto_block_out_ctl; // [169:164]
@@ -458,12 +476,12 @@
 
   // HW -> register type
   typedef struct packed {
-    sysrst_ctrl_hw2reg_intr_state_reg_t intr_state; // [51:50]
-    sysrst_ctrl_hw2reg_ulp_status_reg_t ulp_status; // [49:48]
-    sysrst_ctrl_hw2reg_wkup_status_reg_t wkup_status; // [47:46]
-    sysrst_ctrl_hw2reg_pin_in_value_reg_t pin_in_value; // [45:32]
-    sysrst_ctrl_hw2reg_combo_intr_status_reg_t combo_intr_status; // [31:24]
-    sysrst_ctrl_hw2reg_key_intr_status_reg_t key_intr_status; // [23:0]
+    sysrst_ctrl_hw2reg_intr_state_reg_t intr_state; // [57:56]
+    sysrst_ctrl_hw2reg_ulp_status_reg_t ulp_status; // [55:54]
+    sysrst_ctrl_hw2reg_wkup_status_reg_t wkup_status; // [53:52]
+    sysrst_ctrl_hw2reg_pin_in_value_reg_t pin_in_value; // [51:36]
+    sysrst_ctrl_hw2reg_combo_intr_status_reg_t combo_intr_status; // [35:28]
+    sysrst_ctrl_hw2reg_key_intr_status_reg_t key_intr_status; // [27:0]
   } sysrst_ctrl_hw2reg_t;
 
   // Register offsets
diff --git a/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl_reg_top.sv b/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl_reg_top.sv
index 6288cdd..d33f006 100644
--- a/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl_reg_top.sv
+++ b/hw/ip/sysrst_ctrl/rtl/sysrst_ctrl_reg_top.sv
@@ -168,15 +168,16 @@
   logic pin_out_value_we;
   logic [7:0] pin_out_value_qs;
   logic pin_out_value_busy;
-  logic pin_in_value_ac_present_qs;
-  logic pin_in_value_ec_rst_l_qs;
   logic pin_in_value_pwrb_in_qs;
   logic pin_in_value_key0_in_qs;
   logic pin_in_value_key1_in_qs;
   logic pin_in_value_key2_in_qs;
   logic pin_in_value_lid_open_qs;
+  logic pin_in_value_ac_present_qs;
+  logic pin_in_value_ec_rst_l_qs;
+  logic pin_in_value_flash_wp_l_qs;
   logic key_intr_ctl_we;
-  logic [13:0] key_intr_ctl_qs;
+  logic [14:0] key_intr_ctl_qs;
   logic key_intr_ctl_busy;
   logic key_intr_debounce_ctl_we;
   logic [15:0] key_intr_debounce_ctl_qs;
@@ -227,7 +228,7 @@
   logic [3:0] combo_intr_status_qs;
   logic combo_intr_status_busy;
   logic key_intr_status_we;
-  logic [11:0] key_intr_status_qs;
+  logic [13:0] key_intr_status_qs;
   logic key_intr_status_busy;
   // Define register CDC handling.
   // CDC handling is done on a per-reg instead of per-field boundary.
@@ -720,14 +721,16 @@
   logic  aon_key_intr_ctl_key2_in_h2l_qs_int;
   logic  aon_key_intr_ctl_ac_present_h2l_qs_int;
   logic  aon_key_intr_ctl_ec_rst_l_h2l_qs_int;
+  logic  aon_key_intr_ctl_flash_wp_l_h2l_qs_int;
   logic  aon_key_intr_ctl_pwrb_in_l2h_qs_int;
   logic  aon_key_intr_ctl_key0_in_l2h_qs_int;
   logic  aon_key_intr_ctl_key1_in_l2h_qs_int;
   logic  aon_key_intr_ctl_key2_in_l2h_qs_int;
   logic  aon_key_intr_ctl_ac_present_l2h_qs_int;
   logic  aon_key_intr_ctl_ec_rst_l_l2h_qs_int;
-  logic [13:0] aon_key_intr_ctl_d;
-  logic [13:0] aon_key_intr_ctl_wdata;
+  logic  aon_key_intr_ctl_flash_wp_l_l2h_qs_int;
+  logic [14:0] aon_key_intr_ctl_d;
+  logic [14:0] aon_key_intr_ctl_wdata;
   logic aon_key_intr_ctl_we;
   logic unused_aon_key_intr_ctl_wdata;
   logic aon_key_intr_ctl_regwen;
@@ -740,18 +743,20 @@
     aon_key_intr_ctl_d[3] = aon_key_intr_ctl_key2_in_h2l_qs_int;
     aon_key_intr_ctl_d[4] = aon_key_intr_ctl_ac_present_h2l_qs_int;
     aon_key_intr_ctl_d[5] = aon_key_intr_ctl_ec_rst_l_h2l_qs_int;
+    aon_key_intr_ctl_d[6] = aon_key_intr_ctl_flash_wp_l_h2l_qs_int;
     aon_key_intr_ctl_d[8] = aon_key_intr_ctl_pwrb_in_l2h_qs_int;
     aon_key_intr_ctl_d[9] = aon_key_intr_ctl_key0_in_l2h_qs_int;
     aon_key_intr_ctl_d[10] = aon_key_intr_ctl_key1_in_l2h_qs_int;
     aon_key_intr_ctl_d[11] = aon_key_intr_ctl_key2_in_l2h_qs_int;
     aon_key_intr_ctl_d[12] = aon_key_intr_ctl_ac_present_l2h_qs_int;
     aon_key_intr_ctl_d[13] = aon_key_intr_ctl_ec_rst_l_l2h_qs_int;
+    aon_key_intr_ctl_d[14] = aon_key_intr_ctl_flash_wp_l_l2h_qs_int;
   end
 
   prim_reg_cdc #(
-    .DataWidth(14),
-    .ResetVal(14'h0),
-    .BitMask(14'h3f3f)
+    .DataWidth(15),
+    .ResetVal(15'h0),
+    .BitMask(15'h7f7f)
   ) u_key_intr_ctl_cdc (
     .clk_src_i    (clk_i),
     .rst_src_ni   (rst_ni),
@@ -761,7 +766,7 @@
     .src_regwen_i (regwen_qs),
     .src_we_i     (key_intr_ctl_we),
     .src_re_i     ('0),
-    .src_wd_i     (reg_wdata[13:0]),
+    .src_wd_i     (reg_wdata[14:0]),
     .src_busy_o   (key_intr_ctl_busy),
     .src_qs_o     (key_intr_ctl_qs), // for software read back
     .dst_d_i      (aon_key_intr_ctl_d),
@@ -1444,14 +1449,16 @@
   logic  aon_key_intr_status_key2_in_h2l_qs_int;
   logic  aon_key_intr_status_ac_present_h2l_qs_int;
   logic  aon_key_intr_status_ec_rst_l_h2l_qs_int;
+  logic  aon_key_intr_status_flash_wp_l_h2l_qs_int;
   logic  aon_key_intr_status_pwrb_l2h_qs_int;
   logic  aon_key_intr_status_key0_in_l2h_qs_int;
   logic  aon_key_intr_status_key1_in_l2h_qs_int;
   logic  aon_key_intr_status_key2_in_l2h_qs_int;
   logic  aon_key_intr_status_ac_present_l2h_qs_int;
   logic  aon_key_intr_status_ec_rst_l_l2h_qs_int;
-  logic [11:0] aon_key_intr_status_d;
-  logic [11:0] aon_key_intr_status_wdata;
+  logic  aon_key_intr_status_flash_wp_l_l2h_qs_int;
+  logic [13:0] aon_key_intr_status_d;
+  logic [13:0] aon_key_intr_status_wdata;
   logic aon_key_intr_status_we;
   logic unused_aon_key_intr_status_wdata;
 
@@ -1463,18 +1470,20 @@
     aon_key_intr_status_d[3] = aon_key_intr_status_key2_in_h2l_qs_int;
     aon_key_intr_status_d[4] = aon_key_intr_status_ac_present_h2l_qs_int;
     aon_key_intr_status_d[5] = aon_key_intr_status_ec_rst_l_h2l_qs_int;
-    aon_key_intr_status_d[6] = aon_key_intr_status_pwrb_l2h_qs_int;
-    aon_key_intr_status_d[7] = aon_key_intr_status_key0_in_l2h_qs_int;
-    aon_key_intr_status_d[8] = aon_key_intr_status_key1_in_l2h_qs_int;
-    aon_key_intr_status_d[9] = aon_key_intr_status_key2_in_l2h_qs_int;
-    aon_key_intr_status_d[10] = aon_key_intr_status_ac_present_l2h_qs_int;
-    aon_key_intr_status_d[11] = aon_key_intr_status_ec_rst_l_l2h_qs_int;
+    aon_key_intr_status_d[6] = aon_key_intr_status_flash_wp_l_h2l_qs_int;
+    aon_key_intr_status_d[7] = aon_key_intr_status_pwrb_l2h_qs_int;
+    aon_key_intr_status_d[8] = aon_key_intr_status_key0_in_l2h_qs_int;
+    aon_key_intr_status_d[9] = aon_key_intr_status_key1_in_l2h_qs_int;
+    aon_key_intr_status_d[10] = aon_key_intr_status_key2_in_l2h_qs_int;
+    aon_key_intr_status_d[11] = aon_key_intr_status_ac_present_l2h_qs_int;
+    aon_key_intr_status_d[12] = aon_key_intr_status_ec_rst_l_l2h_qs_int;
+    aon_key_intr_status_d[13] = aon_key_intr_status_flash_wp_l_l2h_qs_int;
   end
 
   prim_reg_cdc #(
-    .DataWidth(12),
-    .ResetVal(12'h0),
-    .BitMask(12'hfff)
+    .DataWidth(14),
+    .ResetVal(14'h0),
+    .BitMask(14'h3fff)
   ) u_key_intr_status_cdc (
     .clk_src_i    (clk_i),
     .rst_src_ni   (rst_ni),
@@ -1484,7 +1493,7 @@
     .src_regwen_i ('0),
     .src_we_i     (key_intr_status_we),
     .src_re_i     ('0),
-    .src_wd_i     (reg_wdata[11:0]),
+    .src_wd_i     (reg_wdata[13:0]),
     .src_busy_o   (key_intr_status_busy),
     .src_qs_o     (key_intr_status_qs), // for software read back
     .dst_d_i      (aon_key_intr_status_d),
@@ -2896,57 +2905,7 @@
 
 
   // R[pin_in_value]: V(False)
-  //   F[ac_present]: 0:0
-  prim_subreg #(
-    .DW      (1),
-    .SwAccess(prim_subreg_pkg::SwAccessRO),
-    .RESVAL  (1'h0)
-  ) u_pin_in_value_ac_present (
-    .clk_i   (clk_i),
-    .rst_ni  (rst_ni),
-
-    // from register interface
-    .we     (1'b0),
-    .wd     ('0),
-
-    // from internal hardware
-    .de     (hw2reg.pin_in_value.ac_present.de),
-    .d      (hw2reg.pin_in_value.ac_present.d),
-
-    // to internal hardware
-    .qe     (),
-    .q      (),
-
-    // to register interface (read)
-    .qs     (pin_in_value_ac_present_qs)
-  );
-
-  //   F[ec_rst_l]: 1:1
-  prim_subreg #(
-    .DW      (1),
-    .SwAccess(prim_subreg_pkg::SwAccessRO),
-    .RESVAL  (1'h0)
-  ) u_pin_in_value_ec_rst_l (
-    .clk_i   (clk_i),
-    .rst_ni  (rst_ni),
-
-    // from register interface
-    .we     (1'b0),
-    .wd     ('0),
-
-    // from internal hardware
-    .de     (hw2reg.pin_in_value.ec_rst_l.de),
-    .d      (hw2reg.pin_in_value.ec_rst_l.d),
-
-    // to internal hardware
-    .qe     (),
-    .q      (),
-
-    // to register interface (read)
-    .qs     (pin_in_value_ec_rst_l_qs)
-  );
-
-  //   F[pwrb_in]: 2:2
+  //   F[pwrb_in]: 0:0
   prim_subreg #(
     .DW      (1),
     .SwAccess(prim_subreg_pkg::SwAccessRO),
@@ -2971,7 +2930,7 @@
     .qs     (pin_in_value_pwrb_in_qs)
   );
 
-  //   F[key0_in]: 3:3
+  //   F[key0_in]: 1:1
   prim_subreg #(
     .DW      (1),
     .SwAccess(prim_subreg_pkg::SwAccessRO),
@@ -2996,7 +2955,7 @@
     .qs     (pin_in_value_key0_in_qs)
   );
 
-  //   F[key1_in]: 4:4
+  //   F[key1_in]: 2:2
   prim_subreg #(
     .DW      (1),
     .SwAccess(prim_subreg_pkg::SwAccessRO),
@@ -3021,7 +2980,7 @@
     .qs     (pin_in_value_key1_in_qs)
   );
 
-  //   F[key2_in]: 5:5
+  //   F[key2_in]: 3:3
   prim_subreg #(
     .DW      (1),
     .SwAccess(prim_subreg_pkg::SwAccessRO),
@@ -3046,7 +3005,7 @@
     .qs     (pin_in_value_key2_in_qs)
   );
 
-  //   F[lid_open]: 6:6
+  //   F[lid_open]: 4:4
   prim_subreg #(
     .DW      (1),
     .SwAccess(prim_subreg_pkg::SwAccessRO),
@@ -3071,6 +3030,81 @@
     .qs     (pin_in_value_lid_open_qs)
   );
 
+  //   F[ac_present]: 5:5
+  prim_subreg #(
+    .DW      (1),
+    .SwAccess(prim_subreg_pkg::SwAccessRO),
+    .RESVAL  (1'h0)
+  ) u_pin_in_value_ac_present (
+    .clk_i   (clk_i),
+    .rst_ni  (rst_ni),
+
+    // from register interface
+    .we     (1'b0),
+    .wd     ('0),
+
+    // from internal hardware
+    .de     (hw2reg.pin_in_value.ac_present.de),
+    .d      (hw2reg.pin_in_value.ac_present.d),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (pin_in_value_ac_present_qs)
+  );
+
+  //   F[ec_rst_l]: 6:6
+  prim_subreg #(
+    .DW      (1),
+    .SwAccess(prim_subreg_pkg::SwAccessRO),
+    .RESVAL  (1'h0)
+  ) u_pin_in_value_ec_rst_l (
+    .clk_i   (clk_i),
+    .rst_ni  (rst_ni),
+
+    // from register interface
+    .we     (1'b0),
+    .wd     ('0),
+
+    // from internal hardware
+    .de     (hw2reg.pin_in_value.ec_rst_l.de),
+    .d      (hw2reg.pin_in_value.ec_rst_l.d),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (pin_in_value_ec_rst_l_qs)
+  );
+
+  //   F[flash_wp_l]: 7:7
+  prim_subreg #(
+    .DW      (1),
+    .SwAccess(prim_subreg_pkg::SwAccessRO),
+    .RESVAL  (1'h0)
+  ) u_pin_in_value_flash_wp_l (
+    .clk_i   (clk_i),
+    .rst_ni  (rst_ni),
+
+    // from register interface
+    .we     (1'b0),
+    .wd     ('0),
+
+    // from internal hardware
+    .de     (hw2reg.pin_in_value.flash_wp_l.de),
+    .d      (hw2reg.pin_in_value.flash_wp_l.d),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (pin_in_value_flash_wp_l_qs)
+  );
+
 
   // R[key_intr_ctl]: V(False)
   //   F[pwrb_in_h2l]: 0:0
@@ -3223,6 +3257,31 @@
     .qs     (aon_key_intr_ctl_ec_rst_l_h2l_qs_int)
   );
 
+  //   F[flash_wp_l_h2l]: 6:6
+  prim_subreg #(
+    .DW      (1),
+    .SwAccess(prim_subreg_pkg::SwAccessRW),
+    .RESVAL  (1'h0)
+  ) u_key_intr_ctl_flash_wp_l_h2l (
+    .clk_i   (clk_aon_i),
+    .rst_ni  (rst_aon_ni),
+
+    // from register interface
+    .we     (aon_key_intr_ctl_we & aon_key_intr_ctl_regwen),
+    .wd     (aon_key_intr_ctl_wdata[6]),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.key_intr_ctl.flash_wp_l_h2l.q),
+
+    // to register interface (read)
+    .qs     (aon_key_intr_ctl_flash_wp_l_h2l_qs_int)
+  );
+
   //   F[pwrb_in_l2h]: 8:8
   prim_subreg #(
     .DW      (1),
@@ -3373,6 +3432,31 @@
     .qs     (aon_key_intr_ctl_ec_rst_l_l2h_qs_int)
   );
 
+  //   F[flash_wp_l_l2h]: 14:14
+  prim_subreg #(
+    .DW      (1),
+    .SwAccess(prim_subreg_pkg::SwAccessRW),
+    .RESVAL  (1'h0)
+  ) u_key_intr_ctl_flash_wp_l_l2h (
+    .clk_i   (clk_aon_i),
+    .rst_ni  (rst_aon_ni),
+
+    // from register interface
+    .we     (aon_key_intr_ctl_we & aon_key_intr_ctl_regwen),
+    .wd     (aon_key_intr_ctl_wdata[14]),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.key_intr_ctl.flash_wp_l_l2h.q),
+
+    // to register interface (read)
+    .qs     (aon_key_intr_ctl_flash_wp_l_l2h_qs_int)
+  );
+
 
   // R[key_intr_debounce_ctl]: V(False)
   prim_subreg #(
@@ -4889,7 +4973,32 @@
     .qs     (aon_key_intr_status_ec_rst_l_h2l_qs_int)
   );
 
-  //   F[pwrb_l2h]: 6:6
+  //   F[flash_wp_l_h2l]: 6:6
+  prim_subreg #(
+    .DW      (1),
+    .SwAccess(prim_subreg_pkg::SwAccessW1C),
+    .RESVAL  (1'h0)
+  ) u_key_intr_status_flash_wp_l_h2l (
+    .clk_i   (clk_aon_i),
+    .rst_ni  (rst_aon_ni),
+
+    // from register interface
+    .we     (aon_key_intr_status_we),
+    .wd     (aon_key_intr_status_wdata[6]),
+
+    // from internal hardware
+    .de     (hw2reg.key_intr_status.flash_wp_l_h2l.de),
+    .d      (hw2reg.key_intr_status.flash_wp_l_h2l.d),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (aon_key_intr_status_flash_wp_l_h2l_qs_int)
+  );
+
+  //   F[pwrb_l2h]: 7:7
   prim_subreg #(
     .DW      (1),
     .SwAccess(prim_subreg_pkg::SwAccessW1C),
@@ -4900,7 +5009,7 @@
 
     // from register interface
     .we     (aon_key_intr_status_we),
-    .wd     (aon_key_intr_status_wdata[6]),
+    .wd     (aon_key_intr_status_wdata[7]),
 
     // from internal hardware
     .de     (hw2reg.key_intr_status.pwrb_l2h.de),
@@ -4914,7 +5023,7 @@
     .qs     (aon_key_intr_status_pwrb_l2h_qs_int)
   );
 
-  //   F[key0_in_l2h]: 7:7
+  //   F[key0_in_l2h]: 8:8
   prim_subreg #(
     .DW      (1),
     .SwAccess(prim_subreg_pkg::SwAccessW1C),
@@ -4925,7 +5034,7 @@
 
     // from register interface
     .we     (aon_key_intr_status_we),
-    .wd     (aon_key_intr_status_wdata[7]),
+    .wd     (aon_key_intr_status_wdata[8]),
 
     // from internal hardware
     .de     (hw2reg.key_intr_status.key0_in_l2h.de),
@@ -4939,7 +5048,7 @@
     .qs     (aon_key_intr_status_key0_in_l2h_qs_int)
   );
 
-  //   F[key1_in_l2h]: 8:8
+  //   F[key1_in_l2h]: 9:9
   prim_subreg #(
     .DW      (1),
     .SwAccess(prim_subreg_pkg::SwAccessW1C),
@@ -4950,7 +5059,7 @@
 
     // from register interface
     .we     (aon_key_intr_status_we),
-    .wd     (aon_key_intr_status_wdata[8]),
+    .wd     (aon_key_intr_status_wdata[9]),
 
     // from internal hardware
     .de     (hw2reg.key_intr_status.key1_in_l2h.de),
@@ -4964,7 +5073,7 @@
     .qs     (aon_key_intr_status_key1_in_l2h_qs_int)
   );
 
-  //   F[key2_in_l2h]: 9:9
+  //   F[key2_in_l2h]: 10:10
   prim_subreg #(
     .DW      (1),
     .SwAccess(prim_subreg_pkg::SwAccessW1C),
@@ -4975,7 +5084,7 @@
 
     // from register interface
     .we     (aon_key_intr_status_we),
-    .wd     (aon_key_intr_status_wdata[9]),
+    .wd     (aon_key_intr_status_wdata[10]),
 
     // from internal hardware
     .de     (hw2reg.key_intr_status.key2_in_l2h.de),
@@ -4989,7 +5098,7 @@
     .qs     (aon_key_intr_status_key2_in_l2h_qs_int)
   );
 
-  //   F[ac_present_l2h]: 10:10
+  //   F[ac_present_l2h]: 11:11
   prim_subreg #(
     .DW      (1),
     .SwAccess(prim_subreg_pkg::SwAccessW1C),
@@ -5000,7 +5109,7 @@
 
     // from register interface
     .we     (aon_key_intr_status_we),
-    .wd     (aon_key_intr_status_wdata[10]),
+    .wd     (aon_key_intr_status_wdata[11]),
 
     // from internal hardware
     .de     (hw2reg.key_intr_status.ac_present_l2h.de),
@@ -5014,7 +5123,7 @@
     .qs     (aon_key_intr_status_ac_present_l2h_qs_int)
   );
 
-  //   F[ec_rst_l_l2h]: 11:11
+  //   F[ec_rst_l_l2h]: 12:12
   prim_subreg #(
     .DW      (1),
     .SwAccess(prim_subreg_pkg::SwAccessW1C),
@@ -5025,7 +5134,7 @@
 
     // from register interface
     .we     (aon_key_intr_status_we),
-    .wd     (aon_key_intr_status_wdata[11]),
+    .wd     (aon_key_intr_status_wdata[12]),
 
     // from internal hardware
     .de     (hw2reg.key_intr_status.ec_rst_l_l2h.de),
@@ -5039,6 +5148,31 @@
     .qs     (aon_key_intr_status_ec_rst_l_l2h_qs_int)
   );
 
+  //   F[flash_wp_l_l2h]: 13:13
+  prim_subreg #(
+    .DW      (1),
+    .SwAccess(prim_subreg_pkg::SwAccessW1C),
+    .RESVAL  (1'h0)
+  ) u_key_intr_status_flash_wp_l_l2h (
+    .clk_i   (clk_aon_i),
+    .rst_ni  (rst_aon_ni),
+
+    // from register interface
+    .we     (aon_key_intr_status_we),
+    .wd     (aon_key_intr_status_wdata[13]),
+
+    // from internal hardware
+    .de     (hw2reg.key_intr_status.flash_wp_l_l2h.de),
+    .d      (hw2reg.key_intr_status.flash_wp_l_l2h.d),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (aon_key_intr_status_flash_wp_l_l2h_qs_int)
+  );
+
 
 
   logic [34:0] addr_hit;
@@ -5212,6 +5346,8 @@
 
 
 
+
+
   assign key_intr_debounce_ctl_we = addr_hit[18] & reg_we & !reg_error;
 
   assign auto_block_debounce_ctl_we = addr_hit[19] & reg_we & !reg_error;
@@ -5295,6 +5431,8 @@
 
 
 
+
+
   // Read data return
   always_comb begin
     reg_rdata_next = '0;
@@ -5353,13 +5491,14 @@
         reg_rdata_next = DW'(pin_out_value_qs);
       end
       addr_hit[16]: begin
-        reg_rdata_next[0] = pin_in_value_ac_present_qs;
-        reg_rdata_next[1] = pin_in_value_ec_rst_l_qs;
-        reg_rdata_next[2] = pin_in_value_pwrb_in_qs;
-        reg_rdata_next[3] = pin_in_value_key0_in_qs;
-        reg_rdata_next[4] = pin_in_value_key1_in_qs;
-        reg_rdata_next[5] = pin_in_value_key2_in_qs;
-        reg_rdata_next[6] = pin_in_value_lid_open_qs;
+        reg_rdata_next[0] = pin_in_value_pwrb_in_qs;
+        reg_rdata_next[1] = pin_in_value_key0_in_qs;
+        reg_rdata_next[2] = pin_in_value_key1_in_qs;
+        reg_rdata_next[3] = pin_in_value_key2_in_qs;
+        reg_rdata_next[4] = pin_in_value_lid_open_qs;
+        reg_rdata_next[5] = pin_in_value_ac_present_qs;
+        reg_rdata_next[6] = pin_in_value_ec_rst_l_qs;
+        reg_rdata_next[7] = pin_in_value_flash_wp_l_qs;
       end
 
       addr_hit[17]: begin
diff --git a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
index acb6167..d137577 100644
--- a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
+++ b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
@@ -11232,6 +11232,17 @@
         glob_idx: 11
       }
       {
+        name: sysrst_ctrl_aon_flash_wp_l
+        width: 1
+        type: inout
+        idx: -1
+        pad: IOR9
+        attr: BidirOd
+        connection: direct
+        desc: ""
+        glob_idx: 12
+      }
+      {
         name: spi_device_sck
         width: 1
         type: input
@@ -11240,7 +11251,7 @@
         attr: InputStd
         connection: direct
         desc: ""
-        glob_idx: 12
+        glob_idx: 13
       }
       {
         name: spi_device_csb
@@ -11251,7 +11262,7 @@
         attr: InputStd
         connection: direct
         desc: ""
-        glob_idx: 13
+        glob_idx: 14
       }
       {
         name: uart0_rx
@@ -11427,7 +11438,7 @@
         attr: BidirStd
         connection: direct
         desc: ""
-        glob_idx: 14
+        glob_idx: 15
       }
       {
         name: spi_host0_csb
@@ -11438,7 +11449,7 @@
         attr: BidirStd
         connection: direct
         desc: ""
-        glob_idx: 15
+        glob_idx: 16
       }
       {
         name: usbdev_se0
@@ -11449,7 +11460,7 @@
         attr: BidirTol
         connection: manual
         desc: ""
-        glob_idx: 16
+        glob_idx: 17
       }
       {
         name: usbdev_dp_pullup
@@ -11460,7 +11471,7 @@
         attr: BidirTol
         connection: manual
         desc: ""
-        glob_idx: 17
+        glob_idx: 18
       }
       {
         name: usbdev_dn_pullup
@@ -11471,7 +11482,7 @@
         attr: BidirTol
         connection: manual
         desc: ""
-        glob_idx: 18
+        glob_idx: 19
       }
       {
         name: usbdev_tx_mode_se
@@ -11482,7 +11493,7 @@
         attr: BidirTol
         connection: manual
         desc: ""
-        glob_idx: 19
+        glob_idx: 20
       }
       {
         name: usbdev_suspend
@@ -11493,7 +11504,7 @@
         attr: BidirTol
         connection: manual
         desc: ""
-        glob_idx: 20
+        glob_idx: 21
       }
       {
         name: usbdev_rx_enable
@@ -11504,7 +11515,7 @@
         attr: BidirTol
         connection: manual
         desc: ""
-        glob_idx: 21
+        glob_idx: 22
       }
       {
         name: uart0_tx
@@ -11815,17 +11826,6 @@
         glob_idx: 69
       }
       {
-        name: sysrst_ctrl_aon_flash_wp_l
-        width: 1
-        type: output
-        idx: -1
-        pad: IOR9
-        attr: BidirOd
-        connection: direct
-        desc: ""
-        glob_idx: 22
-      }
-      {
         name: sysrst_ctrl_aon_key0_out
         width: 1
         type: output
@@ -11885,9 +11885,9 @@
     {
       dedicated:
       {
-        inouts: 12
+        inouts: 13
         inputs: 2
-        outputs: 9
+        outputs: 8
         pads: 23
       }
       muxed:
@@ -12143,13 +12143,13 @@
             name: tck
             pad: SPI_DEV_CLK
             desc: JTAG tck signal, overlaid on SPI_DEV.
-            idx: 59
+            idx: 60
           }
           {
             name: tms
             pad: SPI_DEV_CS_L
             desc: JTAG tms signal, overlaid on SPI_DEV.
-            idx: 60
+            idx: 61
           }
           {
             name: trst_n
@@ -12325,13 +12325,13 @@
             name: tck
             pad: SPI_DEV_CLK
             desc: JTAG tck signal, overlaid on SPI_DEV.
-            idx: 59
+            idx: 60
           }
           {
             name: tms
             pad: SPI_DEV_CS_L
             desc: JTAG tms signal, overlaid on SPI_DEV.
-            idx: 60
+            idx: 61
           }
           {
             name: trst_n
diff --git a/hw/top_earlgrey/ip/pinmux/doc/autogen/pinout_asic.md b/hw/top_earlgrey/ip/pinmux/doc/autogen/pinout_asic.md
index 28ece7b..03fe2e6 100644
--- a/hw/top_earlgrey/ip/pinmux/doc/autogen/pinout_asic.md
+++ b/hw/top_earlgrey/ip/pinmux/doc/autogen/pinout_asic.md
@@ -141,6 +141,7 @@
 |       <p style="font-size:smaller">spi_host1_sd[2]</p>        |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       | <p style="font-size:smaller">kTopEarlgreyPinmuxOutselSpiHost1Sd2 / kTopEarlgreyPinmuxPeripheralInSpiHost1Sd2</p> |       <p style="font-size:smaller"></p>        |
 |       <p style="font-size:smaller">spi_host1_sd[3]</p>        |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       | <p style="font-size:smaller">kTopEarlgreyPinmuxOutselSpiHost1Sd3 / kTopEarlgreyPinmuxPeripheralInSpiHost1Sd3</p> |       <p style="font-size:smaller"></p>        |
 |   <p style="font-size:smaller">sysrst_ctrl_aon_ec_rst_l</p>   |    <p style="font-size:smaller">direct</p>    |     <p style="font-size:smaller">IOR8</p>      |                                      <p style="font-size:smaller">- / -</p>                                      |       <p style="font-size:smaller"></p>        |
+|  <p style="font-size:smaller">sysrst_ctrl_aon_flash_wp_l</p>  |    <p style="font-size:smaller">direct</p>    |     <p style="font-size:smaller">IOR9</p>      |                                      <p style="font-size:smaller">- / -</p>                                      |       <p style="font-size:smaller"></p>        |
 |        <p style="font-size:smaller">spi_device_sck</p>        |    <p style="font-size:smaller">direct</p>    |  <p style="font-size:smaller">SPI_DEV_CLK</p>  |                                      <p style="font-size:smaller">- / -</p>                                      |       <p style="font-size:smaller"></p>        |
 |        <p style="font-size:smaller">spi_device_csb</p>        |    <p style="font-size:smaller">direct</p>    | <p style="font-size:smaller">SPI_DEV_CS_L</p>  |                                      <p style="font-size:smaller">- / -</p>                                      |       <p style="font-size:smaller"></p>        |
 |           <p style="font-size:smaller">uart0_rx</p>           |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |                    <p style="font-size:smaller">- / kTopEarlgreyPinmuxPeripheralInUart0Rx</p>                    |       <p style="font-size:smaller"></p>        |
@@ -194,7 +195,6 @@
 |        <p style="font-size:smaller">pwm_aon_pwm[5]</p>        |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |                     <p style="font-size:smaller">kTopEarlgreyPinmuxOutselPwmAonPwm5 / -</p>                      |       <p style="font-size:smaller"></p>        |
 |       <p style="font-size:smaller">otp_ctrl_test[0]</p>       |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |                    <p style="font-size:smaller">kTopEarlgreyPinmuxOutselOtpCtrlTest0 / -</p>                     |       <p style="font-size:smaller"></p>        |
 | <p style="font-size:smaller">sysrst_ctrl_aon_bat_disable</p>  |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |               <p style="font-size:smaller">kTopEarlgreyPinmuxOutselSysrstCtrlAonBatDisable / -</p>               |       <p style="font-size:smaller"></p>        |
-|  <p style="font-size:smaller">sysrst_ctrl_aon_flash_wp_l</p>  |    <p style="font-size:smaller">direct</p>    |     <p style="font-size:smaller">IOR9</p>      |                                      <p style="font-size:smaller">- / -</p>                                      |       <p style="font-size:smaller"></p>        |
 |   <p style="font-size:smaller">sysrst_ctrl_aon_key0_out</p>   |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |                <p style="font-size:smaller">kTopEarlgreyPinmuxOutselSysrstCtrlAonKey0Out / -</p>                 |       <p style="font-size:smaller"></p>        |
 |   <p style="font-size:smaller">sysrst_ctrl_aon_key1_out</p>   |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |                <p style="font-size:smaller">kTopEarlgreyPinmuxOutselSysrstCtrlAonKey1Out / -</p>                 |       <p style="font-size:smaller"></p>        |
 |   <p style="font-size:smaller">sysrst_ctrl_aon_key2_out</p>   |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |                <p style="font-size:smaller">kTopEarlgreyPinmuxOutselSysrstCtrlAonKey2Out / -</p>                 |       <p style="font-size:smaller"></p>        |
diff --git a/hw/top_earlgrey/ip/pinmux/doc/autogen/pinout_cw310.md b/hw/top_earlgrey/ip/pinmux/doc/autogen/pinout_cw310.md
index 0cd5c39..8a90142 100644
--- a/hw/top_earlgrey/ip/pinmux/doc/autogen/pinout_cw310.md
+++ b/hw/top_earlgrey/ip/pinmux/doc/autogen/pinout_cw310.md
@@ -124,6 +124,7 @@
 |       <p style="font-size:smaller">spi_host1_sd[2]</p>        |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       | <p style="font-size:smaller">kTopEarlgreyPinmuxOutselSpiHost1Sd2 / kTopEarlgreyPinmuxPeripheralInSpiHost1Sd2</p> |       <p style="font-size:smaller"></p>        |
 |       <p style="font-size:smaller">spi_host1_sd[3]</p>        |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       | <p style="font-size:smaller">kTopEarlgreyPinmuxOutselSpiHost1Sd3 / kTopEarlgreyPinmuxPeripheralInSpiHost1Sd3</p> |       <p style="font-size:smaller"></p>        |
 |   <p style="font-size:smaller">sysrst_ctrl_aon_ec_rst_l</p>   |    <p style="font-size:smaller">direct</p>    |     <p style="font-size:smaller">IOR8</p>      |                                      <p style="font-size:smaller">- / -</p>                                      |       <p style="font-size:smaller"></p>        |
+|  <p style="font-size:smaller">sysrst_ctrl_aon_flash_wp_l</p>  |    <p style="font-size:smaller">direct</p>    |     <p style="font-size:smaller">IOR9</p>      |                                      <p style="font-size:smaller">- / -</p>                                      |       <p style="font-size:smaller"></p>        |
 |        <p style="font-size:smaller">spi_device_sck</p>        |    <p style="font-size:smaller">direct</p>    |  <p style="font-size:smaller">SPI_DEV_CLK</p>  |                                      <p style="font-size:smaller">- / -</p>                                      |       <p style="font-size:smaller"></p>        |
 |        <p style="font-size:smaller">spi_device_csb</p>        |    <p style="font-size:smaller">direct</p>    | <p style="font-size:smaller">SPI_DEV_CS_L</p>  |                                      <p style="font-size:smaller">- / -</p>                                      |       <p style="font-size:smaller"></p>        |
 |           <p style="font-size:smaller">uart0_rx</p>           |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |                    <p style="font-size:smaller">- / kTopEarlgreyPinmuxPeripheralInUart0Rx</p>                    |       <p style="font-size:smaller"></p>        |
@@ -177,7 +178,6 @@
 |        <p style="font-size:smaller">pwm_aon_pwm[5]</p>        |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |                     <p style="font-size:smaller">kTopEarlgreyPinmuxOutselPwmAonPwm5 / -</p>                      |       <p style="font-size:smaller"></p>        |
 |       <p style="font-size:smaller">otp_ctrl_test[0]</p>       |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |                    <p style="font-size:smaller">kTopEarlgreyPinmuxOutselOtpCtrlTest0 / -</p>                     |       <p style="font-size:smaller"></p>        |
 | <p style="font-size:smaller">sysrst_ctrl_aon_bat_disable</p>  |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |               <p style="font-size:smaller">kTopEarlgreyPinmuxOutselSysrstCtrlAonBatDisable / -</p>               |       <p style="font-size:smaller"></p>        |
-|  <p style="font-size:smaller">sysrst_ctrl_aon_flash_wp_l</p>  |    <p style="font-size:smaller">direct</p>    |     <p style="font-size:smaller">IOR9</p>      |                                      <p style="font-size:smaller">- / -</p>                                      |       <p style="font-size:smaller"></p>        |
 |   <p style="font-size:smaller">sysrst_ctrl_aon_key0_out</p>   |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |                <p style="font-size:smaller">kTopEarlgreyPinmuxOutselSysrstCtrlAonKey0Out / -</p>                 |       <p style="font-size:smaller"></p>        |
 |   <p style="font-size:smaller">sysrst_ctrl_aon_key1_out</p>   |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |                <p style="font-size:smaller">kTopEarlgreyPinmuxOutselSysrstCtrlAonKey1Out / -</p>                 |       <p style="font-size:smaller"></p>        |
 |   <p style="font-size:smaller">sysrst_ctrl_aon_key2_out</p>   |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |                <p style="font-size:smaller">kTopEarlgreyPinmuxOutselSysrstCtrlAonKey2Out / -</p>                 |       <p style="font-size:smaller"></p>        |
diff --git a/hw/top_earlgrey/ip/pinmux/doc/autogen/pinout_nexysvideo.md b/hw/top_earlgrey/ip/pinmux/doc/autogen/pinout_nexysvideo.md
index c3d09eb..d649fc6 100644
--- a/hw/top_earlgrey/ip/pinmux/doc/autogen/pinout_nexysvideo.md
+++ b/hw/top_earlgrey/ip/pinmux/doc/autogen/pinout_nexysvideo.md
@@ -119,6 +119,7 @@
 |       <p style="font-size:smaller">spi_host1_sd[2]</p>        |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       | <p style="font-size:smaller">kTopEarlgreyPinmuxOutselSpiHost1Sd2 / kTopEarlgreyPinmuxPeripheralInSpiHost1Sd2</p> |       <p style="font-size:smaller"></p>        |
 |       <p style="font-size:smaller">spi_host1_sd[3]</p>        |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       | <p style="font-size:smaller">kTopEarlgreyPinmuxOutselSpiHost1Sd3 / kTopEarlgreyPinmuxPeripheralInSpiHost1Sd3</p> |       <p style="font-size:smaller"></p>        |
 |   <p style="font-size:smaller">sysrst_ctrl_aon_ec_rst_l</p>   |    <p style="font-size:smaller">direct</p>    |     <p style="font-size:smaller">IOR8</p>      |                                      <p style="font-size:smaller">- / -</p>                                      |       <p style="font-size:smaller"></p>        |
+|  <p style="font-size:smaller">sysrst_ctrl_aon_flash_wp_l</p>  |    <p style="font-size:smaller">direct</p>    |     <p style="font-size:smaller">IOR9</p>      |                                      <p style="font-size:smaller">- / -</p>                                      |       <p style="font-size:smaller"></p>        |
 |        <p style="font-size:smaller">spi_device_sck</p>        |    <p style="font-size:smaller">direct</p>    |  <p style="font-size:smaller">SPI_DEV_CLK</p>  |                                      <p style="font-size:smaller">- / -</p>                                      |       <p style="font-size:smaller"></p>        |
 |        <p style="font-size:smaller">spi_device_csb</p>        |    <p style="font-size:smaller">direct</p>    | <p style="font-size:smaller">SPI_DEV_CS_L</p>  |                                      <p style="font-size:smaller">- / -</p>                                      |       <p style="font-size:smaller"></p>        |
 |           <p style="font-size:smaller">uart0_rx</p>           |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |                    <p style="font-size:smaller">- / kTopEarlgreyPinmuxPeripheralInUart0Rx</p>                    |       <p style="font-size:smaller"></p>        |
@@ -172,7 +173,6 @@
 |        <p style="font-size:smaller">pwm_aon_pwm[5]</p>        |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |                     <p style="font-size:smaller">kTopEarlgreyPinmuxOutselPwmAonPwm5 / -</p>                      |       <p style="font-size:smaller"></p>        |
 |       <p style="font-size:smaller">otp_ctrl_test[0]</p>       |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |                    <p style="font-size:smaller">kTopEarlgreyPinmuxOutselOtpCtrlTest0 / -</p>                     |       <p style="font-size:smaller"></p>        |
 | <p style="font-size:smaller">sysrst_ctrl_aon_bat_disable</p>  |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |               <p style="font-size:smaller">kTopEarlgreyPinmuxOutselSysrstCtrlAonBatDisable / -</p>               |       <p style="font-size:smaller"></p>        |
-|  <p style="font-size:smaller">sysrst_ctrl_aon_flash_wp_l</p>  |    <p style="font-size:smaller">direct</p>    |     <p style="font-size:smaller">IOR9</p>      |                                      <p style="font-size:smaller">- / -</p>                                      |       <p style="font-size:smaller"></p>        |
 |   <p style="font-size:smaller">sysrst_ctrl_aon_key0_out</p>   |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |                <p style="font-size:smaller">kTopEarlgreyPinmuxOutselSysrstCtrlAonKey0Out / -</p>                 |       <p style="font-size:smaller"></p>        |
 |   <p style="font-size:smaller">sysrst_ctrl_aon_key1_out</p>   |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |                <p style="font-size:smaller">kTopEarlgreyPinmuxOutselSysrstCtrlAonKey1Out / -</p>                 |       <p style="font-size:smaller"></p>        |
 |   <p style="font-size:smaller">sysrst_ctrl_aon_key2_out</p>   |    <p style="font-size:smaller">muxed</p>     |       <p style="font-size:smaller">-</p>       |                <p style="font-size:smaller">kTopEarlgreyPinmuxOutselSysrstCtrlAonKey2Out / -</p>                 |       <p style="font-size:smaller"></p>        |
diff --git a/hw/top_earlgrey/rtl/autogen/chip_earlgrey_asic.sv b/hw/top_earlgrey/rtl/autogen/chip_earlgrey_asic.sv
index d37baa6..8217d98 100644
--- a/hw/top_earlgrey/rtl/autogen/chip_earlgrey_asic.sv
+++ b/hw/top_earlgrey/rtl/autogen/chip_earlgrey_asic.sv
@@ -122,7 +122,6 @@
     usb_sense_idx:     MioInUsbdevSense,
     // Pad types for attribute WARL behavior
     dio_pad_type: {
-      BidirOd, // DIO sysrst_ctrl_aon_flash_wp_l
       BidirTol, // DIO usbdev_rx_enable
       BidirTol, // DIO usbdev_suspend
       BidirTol, // DIO usbdev_tx_mode_se
@@ -133,6 +132,7 @@
       BidirStd, // DIO spi_host0_sck
       InputStd, // DIO spi_device_csb
       InputStd, // DIO spi_device_sck
+      BidirOd, // DIO sysrst_ctrl_aon_flash_wp_l
       BidirOd, // DIO sysrst_ctrl_aon_ec_rst_l
       BidirTol, // DIO usbdev_dn
       BidirTol, // DIO usbdev_dp
diff --git a/hw/top_earlgrey/rtl/autogen/chip_earlgrey_cw310.sv b/hw/top_earlgrey/rtl/autogen/chip_earlgrey_cw310.sv
index 5168fdf..737c9e0 100644
--- a/hw/top_earlgrey/rtl/autogen/chip_earlgrey_cw310.sv
+++ b/hw/top_earlgrey/rtl/autogen/chip_earlgrey_cw310.sv
@@ -87,8 +87,8 @@
   parameter int Tap1PadIdx = 16;
   parameter int Dft0PadIdx = 23;
   parameter int Dft1PadIdx = 34;
-  parameter int TckPadIdx = 59;
-  parameter int TmsPadIdx = 60;
+  parameter int TckPadIdx = 60;
+  parameter int TmsPadIdx = 61;
   parameter int TrstNPadIdx = 18;
   parameter int TdiPadIdx = 51;
   parameter int TdoPadIdx = 52;
@@ -112,7 +112,6 @@
     usb_sense_idx:     MioInUsbdevSense,
     // Pad types for attribute WARL behavior
     dio_pad_type: {
-      BidirOd, // DIO sysrst_ctrl_aon_flash_wp_l
       BidirTol, // DIO usbdev_rx_enable
       BidirTol, // DIO usbdev_suspend
       BidirTol, // DIO usbdev_tx_mode_se
@@ -123,6 +122,7 @@
       BidirStd, // DIO spi_host0_sck
       InputStd, // DIO spi_device_csb
       InputStd, // DIO spi_device_sck
+      BidirOd, // DIO sysrst_ctrl_aon_flash_wp_l
       BidirOd, // DIO sysrst_ctrl_aon_ec_rst_l
       BidirTol, // DIO usbdev_dn
       BidirTol, // DIO usbdev_dp
diff --git a/hw/top_earlgrey/rtl/autogen/chip_earlgrey_nexysvideo.sv b/hw/top_earlgrey/rtl/autogen/chip_earlgrey_nexysvideo.sv
index f84cd2c..fd36c86 100644
--- a/hw/top_earlgrey/rtl/autogen/chip_earlgrey_nexysvideo.sv
+++ b/hw/top_earlgrey/rtl/autogen/chip_earlgrey_nexysvideo.sv
@@ -82,8 +82,8 @@
   parameter int Tap1PadIdx = 16;
   parameter int Dft0PadIdx = 23;
   parameter int Dft1PadIdx = 34;
-  parameter int TckPadIdx = 59;
-  parameter int TmsPadIdx = 60;
+  parameter int TckPadIdx = 60;
+  parameter int TmsPadIdx = 61;
   parameter int TrstNPadIdx = 18;
   parameter int TdiPadIdx = 51;
   parameter int TdoPadIdx = 52;
@@ -107,7 +107,6 @@
     usb_sense_idx:     MioInUsbdevSense,
     // Pad types for attribute WARL behavior
     dio_pad_type: {
-      BidirOd, // DIO sysrst_ctrl_aon_flash_wp_l
       BidirTol, // DIO usbdev_rx_enable
       BidirTol, // DIO usbdev_suspend
       BidirTol, // DIO usbdev_tx_mode_se
@@ -118,6 +117,7 @@
       BidirStd, // DIO spi_host0_sck
       InputStd, // DIO spi_device_csb
       InputStd, // DIO spi_device_sck
+      BidirOd, // DIO sysrst_ctrl_aon_flash_wp_l
       BidirOd, // DIO sysrst_ctrl_aon_ec_rst_l
       BidirTol, // DIO usbdev_dn
       BidirTol, // DIO usbdev_dp
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
index 2859cb4..8afc0f8 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
@@ -314,10 +314,9 @@
   logic        cio_sysrst_ctrl_aon_pwrb_in_p2d;
   logic        cio_sysrst_ctrl_aon_lid_open_p2d;
   logic        cio_sysrst_ctrl_aon_ec_rst_l_p2d;
+  logic        cio_sysrst_ctrl_aon_flash_wp_l_p2d;
   logic        cio_sysrst_ctrl_aon_bat_disable_d2p;
   logic        cio_sysrst_ctrl_aon_bat_disable_en_d2p;
-  logic        cio_sysrst_ctrl_aon_flash_wp_l_d2p;
-  logic        cio_sysrst_ctrl_aon_flash_wp_l_en_d2p;
   logic        cio_sysrst_ctrl_aon_key0_out_d2p;
   logic        cio_sysrst_ctrl_aon_key0_out_en_d2p;
   logic        cio_sysrst_ctrl_aon_key1_out_d2p;
@@ -330,6 +329,8 @@
   logic        cio_sysrst_ctrl_aon_z3_wakeup_en_d2p;
   logic        cio_sysrst_ctrl_aon_ec_rst_l_d2p;
   logic        cio_sysrst_ctrl_aon_ec_rst_l_en_d2p;
+  logic        cio_sysrst_ctrl_aon_flash_wp_l_d2p;
+  logic        cio_sysrst_ctrl_aon_flash_wp_l_en_d2p;
   // adc_ctrl_aon
   // pwm_aon
   logic [5:0]  cio_pwm_aon_pwm_d2p;
@@ -1794,12 +1795,11 @@
       .cio_pwrb_in_i        (cio_sysrst_ctrl_aon_pwrb_in_p2d),
       .cio_lid_open_i       (cio_sysrst_ctrl_aon_lid_open_p2d),
       .cio_ec_rst_l_i       (cio_sysrst_ctrl_aon_ec_rst_l_p2d),
+      .cio_flash_wp_l_i     (cio_sysrst_ctrl_aon_flash_wp_l_p2d),
 
       // Output
       .cio_bat_disable_o    (cio_sysrst_ctrl_aon_bat_disable_d2p),
       .cio_bat_disable_en_o (cio_sysrst_ctrl_aon_bat_disable_en_d2p),
-      .cio_flash_wp_l_o     (cio_sysrst_ctrl_aon_flash_wp_l_d2p),
-      .cio_flash_wp_l_en_o  (cio_sysrst_ctrl_aon_flash_wp_l_en_d2p),
       .cio_key0_out_o       (cio_sysrst_ctrl_aon_key0_out_d2p),
       .cio_key0_out_en_o    (cio_sysrst_ctrl_aon_key0_out_en_d2p),
       .cio_key1_out_o       (cio_sysrst_ctrl_aon_key1_out_d2p),
@@ -1812,6 +1812,8 @@
       .cio_z3_wakeup_en_o   (cio_sysrst_ctrl_aon_z3_wakeup_en_d2p),
       .cio_ec_rst_l_o       (cio_sysrst_ctrl_aon_ec_rst_l_d2p),
       .cio_ec_rst_l_en_o    (cio_sysrst_ctrl_aon_ec_rst_l_en_d2p),
+      .cio_flash_wp_l_o     (cio_sysrst_ctrl_aon_flash_wp_l_d2p),
+      .cio_flash_wp_l_en_o  (cio_sysrst_ctrl_aon_flash_wp_l_en_d2p),
 
       // Interrupt
       .intr_sysrst_ctrl_o (intr_sysrst_ctrl_aon_sysrst_ctrl),
@@ -3191,6 +3193,7 @@
   assign cio_usbdev_dp_p2d = dio_p2d[DioUsbdevDp];
   assign cio_usbdev_dn_p2d = dio_p2d[DioUsbdevDn];
   assign cio_sysrst_ctrl_aon_ec_rst_l_p2d = dio_p2d[DioSysrstCtrlAonEcRstL];
+  assign cio_sysrst_ctrl_aon_flash_wp_l_p2d = dio_p2d[DioSysrstCtrlAonFlashWpL];
   assign cio_spi_device_sck_p2d = dio_p2d[DioSpiDeviceSck];
   assign cio_spi_device_csb_p2d = dio_p2d[DioSpiDeviceCsb];
 
@@ -3207,6 +3210,7 @@
   assign dio_d2p[DioUsbdevDp] = cio_usbdev_dp_d2p;
   assign dio_d2p[DioUsbdevDn] = cio_usbdev_dn_d2p;
   assign dio_d2p[DioSysrstCtrlAonEcRstL] = cio_sysrst_ctrl_aon_ec_rst_l_d2p;
+  assign dio_d2p[DioSysrstCtrlAonFlashWpL] = cio_sysrst_ctrl_aon_flash_wp_l_d2p;
   assign dio_d2p[DioSpiDeviceSck] = 1'b0;
   assign dio_d2p[DioSpiDeviceCsb] = 1'b0;
   assign dio_d2p[DioSpiHost0Sck] = cio_spi_host0_sck_d2p;
@@ -3217,7 +3221,6 @@
   assign dio_d2p[DioUsbdevTxModeSe] = cio_usbdev_tx_mode_se_d2p;
   assign dio_d2p[DioUsbdevSuspend] = cio_usbdev_suspend_d2p;
   assign dio_d2p[DioUsbdevRxEnable] = cio_usbdev_rx_enable_d2p;
-  assign dio_d2p[DioSysrstCtrlAonFlashWpL] = cio_sysrst_ctrl_aon_flash_wp_l_d2p;
 
   // All dedicated output enables
   assign dio_en_d2p[DioSpiHost0Sd0] = cio_spi_host0_sd_en_d2p[0];
@@ -3232,6 +3235,7 @@
   assign dio_en_d2p[DioUsbdevDp] = cio_usbdev_dp_en_d2p;
   assign dio_en_d2p[DioUsbdevDn] = cio_usbdev_dn_en_d2p;
   assign dio_en_d2p[DioSysrstCtrlAonEcRstL] = cio_sysrst_ctrl_aon_ec_rst_l_en_d2p;
+  assign dio_en_d2p[DioSysrstCtrlAonFlashWpL] = cio_sysrst_ctrl_aon_flash_wp_l_en_d2p;
   assign dio_en_d2p[DioSpiDeviceSck] = 1'b0;
   assign dio_en_d2p[DioSpiDeviceCsb] = 1'b0;
   assign dio_en_d2p[DioSpiHost0Sck] = cio_spi_host0_sck_en_d2p;
@@ -3242,7 +3246,6 @@
   assign dio_en_d2p[DioUsbdevTxModeSe] = cio_usbdev_tx_mode_se_en_d2p;
   assign dio_en_d2p[DioUsbdevSuspend] = cio_usbdev_suspend_en_d2p;
   assign dio_en_d2p[DioUsbdevRxEnable] = cio_usbdev_rx_enable_en_d2p;
-  assign dio_en_d2p[DioSysrstCtrlAonFlashWpL] = cio_sysrst_ctrl_aon_flash_wp_l_en_d2p;
 
 
   // make sure scanmode_i is never X (including during reset)
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv
index fc945d7..9119994 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv
@@ -716,17 +716,17 @@
     DioUsbdevDp = 9,
     DioUsbdevDn = 10,
     DioSysrstCtrlAonEcRstL = 11,
-    DioSpiDeviceSck = 12,
-    DioSpiDeviceCsb = 13,
-    DioSpiHost0Sck = 14,
-    DioSpiHost0Csb = 15,
-    DioUsbdevSe0 = 16,
-    DioUsbdevDpPullup = 17,
-    DioUsbdevDnPullup = 18,
-    DioUsbdevTxModeSe = 19,
-    DioUsbdevSuspend = 20,
-    DioUsbdevRxEnable = 21,
-    DioSysrstCtrlAonFlashWpL = 22,
+    DioSysrstCtrlAonFlashWpL = 12,
+    DioSpiDeviceSck = 13,
+    DioSpiDeviceCsb = 14,
+    DioSpiHost0Sck = 15,
+    DioSpiHost0Csb = 16,
+    DioUsbdevSe0 = 17,
+    DioUsbdevDpPullup = 18,
+    DioUsbdevDnPullup = 19,
+    DioUsbdevTxModeSe = 20,
+    DioUsbdevSuspend = 21,
+    DioUsbdevRxEnable = 22,
     DioCount = 23
   } dio_e;