diff options
author | Mary Ruthven <mruthven@chromium.org> | 2017-02-15 15:40:54 -0800 |
---|---|---|
committer | Mary Ruthven <mruthven@chromium.org> | 2017-02-21 20:09:46 +0000 |
commit | 349cc5da790266f49bfe3e5e4cadf702d7e65b04 (patch) | |
tree | dff1d16d2e1761b03fb26239df47aa2f02b3b553 /board/cr50/board.c | |
parent | 237b450f4bac463263cc2d6364505241eb54e084 (diff) | |
download | chrome-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.c | 3 |
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); |