diff options
author | Sooraj Govindan <sooraj.govindan@intel.com> | 2020-05-27 20:31:21 +0530 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-05-28 04:54:49 +0000 |
commit | 5a7c7624a11b9b5681c6d52475b3f8d65f510fad (patch) | |
tree | 4cca571b4ceebeaa973f0375afaee3679a3615da /baseboard/dedede | |
parent | f6424dd187d7123c90f4d7a16d08e4ca01370694 (diff) | |
download | chrome-ec-5a7c7624a11b9b5681c6d52475b3f8d65f510fad.tar.gz |
dedede:Pull VCCIO_EXT low within 200us of SLP_S3_L
There is a potential race condition where VCCST_PWRGD
gets pulled LOW, while EN_VCCIO_EXT is still HIGH,
during SLP_S3_L assertion. EN_VCCIO_EXT was not driven
low in the baseboard_all_sys_pgood_interrupt().
So VCCST_PWRGD was getting SET again by the time
EN_VCCIO_EXT is driven LOW in the switch case.
This patch ensures that VCCST_PWRGD gets pulled low
along with EN_VCCIO_EXT.
BUG=b:153763236, b:157216597
BRANCH=none
TEST=verify SLP_S3 entry and exit
Signed-off-by: Sooraj Govindan <sooraj.govindan@intel.com>
Change-Id: Iaf85b9ff6d4cb420dd330d5852b11e05e4401b54
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2217600
Tested-by: Sooraj Govindan <sooraj.govindan@intel.corp-partner.google.com>
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Commit-Queue: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'baseboard/dedede')
-rw-r--r-- | baseboard/dedede/baseboard.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/baseboard/dedede/baseboard.c b/baseboard/dedede/baseboard.c index d44622140c..7cccbff2ef 100644 --- a/baseboard/dedede/baseboard.c +++ b/baseboard/dedede/baseboard.c @@ -166,9 +166,12 @@ void baseboard_all_sys_pgood_interrupt(enum gpio_signal signal) * driver to. * Early protos do not pull VCCST_PWRGD below Vil in hardware logic, * so we need to do the same for this signal. + * Pull EN_VCCIO_EXT to LOW, which ensures VCCST_PWRGD remains LOW during + * SLP_S3_L assertion. */ if (!gpio_get_level(GPIO_SLP_S3_L)) { gpio_set_level(GPIO_ALL_SYS_PWRGD, 0); + gpio_set_level(GPIO_EN_VCCIO_EXT, 0); gpio_set_level(GPIO_EC_AP_VCCST_PWRGD_OD, 0); } /* Now chain off to the normal power signal interrupt handler. */ |