summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKoro Chen <koro.chen@mediatek.com>2016-03-07 17:48:47 +0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2017-02-13 09:30:18 +0000
commitc8b120d51e68194a871b12c889af87413c37e8ce (patch)
treea83d51aae4a582df638dc1e2d76dfd478622d9dc
parent9e1a993be7ef48fd89a17ea98d2e9ae4aca8e3fa (diff)
downloadchrome-ec-c8b120d51e68194a871b12c889af87413c37e8ce.tar.gz
mkbp_event: prevent unnecessary interrupts to AP
After commit 237406c5b12ed9934fc6eab7d24f30ba6e70fdce, there is chance that pd_power_supply_reset() will be called during S0->S3, and it interrupts AP and fails suspend if we are using MKBP_EVENT. This is because mkbp_send_event() does not check power state POWER_S0S3. Modify the condition to check events when AP is not in S0. BRANCH=none BUG=chrome-os-partner:50833,chrome-os-partner:6082 TEST=powerd_dbus_suspend always works without being resumed Signed-off-by: Koro Chen <koro.chen@mediatek.com> Reviewed-on: https://chromium-review.googlesource.com/331160 Commit-Ready: Daniel Kurtz <djkurtz@chromium.org> Tested-by: Milton Chiang <milton.chiang@mediatek.com> Reviewed-by: Wei-Ning Huang <wnhuang@chromium.org> Reviewed-by: Daniel Kurtz <djkurtz@chromium.org> (cherry picked from commit fe996b200c36e5ce6134250ef60e0e6b30b9183b) Change-Id: Id905a2cd4d2a0376bca163f40c68bcf4208d8bf5 Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> Reviewed-on: https://chromium-review.googlesource.com/438066 Reviewed-by: Alexandru Stan <amstan@chromium.org> Reviewed-by: Simon Glass <sjg@google.com>
-rw-r--r--common/mkbp_event.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/common/mkbp_event.c b/common/mkbp_event.c
index 540c3a7d98..cba3d8a782 100644
--- a/common/mkbp_event.c
+++ b/common/mkbp_event.c
@@ -49,8 +49,8 @@ void mkbp_send_event(uint8_t event_type)
set_event(event_type);
#ifdef CONFIG_MKBP_WAKEUP_MASK
- /* checking the event if AP suspended */
- if (chipset_in_state(CHIPSET_STATE_SUSPEND)) {
+ /* checking the event if AP is not in S0 */
+ if (!chipset_in_state(CHIPSET_STATE_ON)) {
uint32_t events;
events = *(uint32_t *)host_get_memmap(EC_MEMMAP_HOST_EVENTS);
/*