summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/system.c11
-rw-r--r--include/system.h9
2 files changed, 17 insertions, 3 deletions
diff --git a/common/system.c b/common/system.c
index a8b9961b74..e188acc136 100644
--- a/common/system.c
+++ b/common/system.c
@@ -503,6 +503,13 @@ const char *ec_image_to_string(enum ec_image copy)
return image_names[copy < ARRAY_SIZE(image_names) ? copy : 0];
}
+__overridable void board_pulse_entering_rw(void)
+{
+ gpio_set_level(GPIO_EC_ENTERING_RW, 1);
+ usleep(MSEC);
+ gpio_set_level(GPIO_EC_ENTERING_RW, 0);
+}
+
/**
* Jump to what we hope is the init address of an image.
*
@@ -523,9 +530,7 @@ static void jump_to_image(uintptr_t init_addr)
* drop it again so we don't leak power through the pulldown in the
* Silego.
*/
- gpio_set_level(GPIO_ENTERING_RW, 1);
- usleep(MSEC);
- gpio_set_level(GPIO_ENTERING_RW, 0);
+ board_pulse_entering_rw();
/*
* Since in EFS2, USB/PD won't be enabled in RO or if it's enabled in
diff --git a/include/system.h b/include/system.h
index be213bf2fe..c50c44797b 100644
--- a/include/system.h
+++ b/include/system.h
@@ -348,6 +348,15 @@ const char *system_get_chip_revision(void);
int system_get_chip_unique_id(uint8_t **id);
/**
+ * Optional board-level function to pulse EC_ENTERING_RW.
+ *
+ * This should ONLY be overridden in very rare circumstances! AKA there better
+ * be a good reason why you're overriding this!
+ * The function ***MUST*** assert EC_ENTERING_RW for 1ms and then deassert it.
+ */
+__override_proto void board_pulse_entering_rw(void);
+
+/**
* Optional board-level callback functions to read a unique serial number per
* chip. Default implementation reads from flash/otp (flash/otp_read_serial).
*/