summaryrefslogtreecommitdiff
path: root/include/chipset.h
diff options
context:
space:
mode:
authorWai-Hong Tam <waihong@google.com>2018-09-19 15:10:57 -0700
committerchrome-bot <chrome-bot@chromium.org>2018-10-30 01:04:51 -0700
commitb47ed2a108c679de26be89fa258931ddf040e446 (patch)
treea170884ea21d2a7c21f0a72ed06d299a11ed857b /include/chipset.h
parent5f068e277ba6de108615aa3190ccb14b316b67f0 (diff)
downloadchrome-ec-b47ed2a108c679de26be89fa258931ddf040e446.tar.gz
cheza: Monitor the WARM_RESET_L signal to hold AP
This change is a backup solution if JTAG_SRST gets fused out. The WARM_RESET_L signal is wired to JTAG_SRST, such that we can hold AP when servo/H1 programs the AP SPI flash. But when JTAG_SRST gets fused out (just in case it happens), still have a way to hold AP, i.e. overdriving the AP_RST_L and PS_HOLD signals. The WARM_RESET_L signal is pulled by a rail from PMIC, the same as POWER_GOOD. The drop of WARM_RESET_L may be caused by either servo/ cr50 holds the signal or its pull-up rail drops. We should handle both cases. Also add WARM_RESET_L as one of the power signals for debug purpose. BRANCH=none BUG=b:78194018, b:112723105, b:112564635 TEST=Ran "dut-control warm_reset:on" and "dut-control warm_reset:off". Scoped the signal of AP_RST_L and PS_HOLD to verify the correctness. Verified AP hold and back booting up. TEST=Changed to the gpio.inc to swap LID_OPEN and WARM_RESET_L and ran "dut-control lid_open:no" and "dut-control lid_open:yes" to emualte the case JTAG_SRST gets fused out. Scoped the signal correctness. Verified AP hold and back booting up. Ran flashrom to program AP SPI flash through servo. Change-Id: I71ebd920171da9994192f7742675feb7cb39ce2f Signed-off-by: Wai-Hong Tam <waihong@google.com> Reviewed-on: https://chromium-review.googlesource.com/1234743
Diffstat (limited to 'include/chipset.h')
-rw-r--r--include/chipset.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/include/chipset.h b/include/chipset.h
index b4b630f032..7363707b38 100644
--- a/include/chipset.h
+++ b/include/chipset.h
@@ -185,8 +185,8 @@ static inline void power_interrupt(enum gpio_signal signal) { }
static inline void chipset_handle_espi_reset_assert(void) { }
static inline void chipset_handle_reboot(void) { }
static inline void chipset_reset_request_interrupt(enum gpio_signal signal) { }
+static inline void chipset_warm_reset_interrupt(enum gpio_signal signal) { }
static inline void chipset_watchdog_interrupt(enum gpio_signal signal) { }
-static inline void chipset_power_signal_interrupt(enum gpio_signal signal) { }
#endif /* !HAS_TASK_CHIPSET */
@@ -210,6 +210,13 @@ void chipset_handle_reboot(void);
void chipset_reset_request_interrupt(enum gpio_signal signal);
/**
+ * GPIO interrupt handler of warm reset signal from servo or H1.
+ *
+ * It is used in SDM845 chipset power sequence.
+ */
+void chipset_warm_reset_interrupt(enum gpio_signal signal);
+
+/**
* GPIO interrupt handler of watchdog from AP.
*
* It is used in MT8183 chipset, where it must be setup to trigger on falling