summaryrefslogtreecommitdiff
path: root/board/cr50/board.c
diff options
context:
space:
mode:
authorMary Ruthven <mruthven@chromium.org>2017-02-15 15:40:54 -0800
committerMary Ruthven <mruthven@chromium.org>2017-02-21 20:09:46 +0000
commit349cc5da790266f49bfe3e5e4cadf702d7e65b04 (patch)
treedff1d16d2e1761b03fb26239df47aa2f02b3b553 /board/cr50/board.c
parent237b450f4bac463263cc2d6364505241eb54e084 (diff)
downloadchrome-ec-349cc5da790266f49bfe3e5e4cadf702d7e65b04.tar.gz
cr50:x86: disable tpm wake sources during deep sleep
Cr50 on x86 will run normally enter deep sleep and then wake up immediately. When the AP turns off it stops pulling up the i2cs signals. When cr50 enters deep sleep it sees that the i2cs signals are low then wakes up immediately. After resuming cr50 will remain awake for 20 then enter deep sleep. At this point it will remain asleep. This change disables i2cs_sda and scl as wake pins when entering deep sleep. Just like ARM these tpm signals are not in use when the device is off. We have other signals to detect when the system leaves s3 or s5, so we should rely on those. We need this change because we want cr50 to fully enter deep sleep when we run suspend resume tests. Right now the AP does not sleep long enough for cr50 to enter the second deep sleep. BUG=none BRANCH=none TEST=turn off the AP and make sure cr50 doesn't resume from deep sleep immediately. run suspend_stress_test -c 5000 and verify cr50 enters deep sleep and resumes correctly. verify dioa9 and dioa1 are enabled as wake pins on resume Change-Id: Ided8b2b7d5455650bca1e8d781063d092fb74c43 Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/443389
Diffstat (limited to 'board/cr50/board.c')
-rw-r--r--board/cr50/board.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/board/cr50/board.c b/board/cr50/board.c
index 73a85e998a..0d1e9b8a4f 100644
--- a/board/cr50/board.c
+++ b/board/cr50/board.c
@@ -369,7 +369,8 @@ void board_configure_deep_sleep_wakepins(void)
* resume.
*/
GWRITE_FIELD(PINMUX, EXITEN0, DIOA12, 0); /* SPS_CS_L */
- /* TODO remove i2cs wake event */
+ GWRITE_FIELD(PINMUX, EXITEN0, DIOA1, 0); /* I2CS_SDA */
+ GWRITE_FIELD(PINMUX, EXITEN0, DIOA9, 0); /* I2CS_SCL */
/* Remove the pulldown on EC uart tx and disable the input */
GWRITE_FIELD(PINMUX, DIOB5_CTL, PD, 0);