diff options
author | Randall Spangler <rspangler@chromium.org> | 2013-07-16 10:23:25 -0700 |
---|---|---|
committer | Bill Richardson <wfrichar@chromium.org> | 2013-07-30 10:37:19 -0700 |
commit | 739f4c0f1958e7825fc404026db3b9e882673b51 (patch) | |
tree | a3b282af274ff41649ad346cf3432b70d0892ca0 | |
parent | 6a4c0ce1fffe582b612b06531145b0dede3b14cd (diff) | |
download | chrome-ec-739f4c0f1958e7825fc404026db3b9e882673b51.tar.gz |
Pulse EC_ENTERING_RW instead of just leaving it high
The Silego chip has a 50k pulldown which will leak power if we leave
EC_ENTERING_RW high. We don't need to leave it high, because once the
latch in the Silego gets set it ignores this signal. This is ~100uA,
so it only really matters in S5 on pit (since x86 boards and spring
both hibernate in S5).
BUG=chrome-os-partner:20757
BRANCH=none
TEST=probe ec_in_rw signal before/after sysjump
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/62133
Reviewed-by: Vic Yang <victoryang@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
(cherry picked from commit 245275f4b67a45276aed3a79ee405d91cc1ccef5)
Change-Id: I59ab88dbf0e5554bb7226683351d84d1a2175a4b
Reviewed-on: https://gerrit.chromium.org/gerrit/63736
Commit-Queue: Bill Richardson <wfrichar@chromium.org>
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
Tested-by: Bill Richardson <wfrichar@chromium.org>
-rw-r--r-- | common/system_common.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/common/system_common.c b/common/system_common.c index c0dd639034..ecf72c0782 100644 --- a/common/system_common.c +++ b/common/system_common.c @@ -16,6 +16,7 @@ #include "panic.h" #include "system.h" #include "task.h" +#include "timer.h" #include "uart.h" #include "util.h" #include "version.h" @@ -301,9 +302,15 @@ static void jump_to_image(uintptr_t init_addr) /* * Jumping to any image asserts the signal to the Silego chip that that * EC is not in read-only firmware. (This is not technically true if - * jumping from RO -> RO, but that's not a meaningful use case...) + * jumping from RO -> RO, but that's not a meaningful use case...). + * + * Pulse the signal long enough to set the latch in the Silego, then + * drop it again so we don't leak power through the pulldown in the + * Silego. */ gpio_set_level(GPIO_ENTERING_RW, 1); + usleep(MSEC); + gpio_set_level(GPIO_ENTERING_RW, 0); /* Flush UART output unless the UART hasn't been initialized yet */ if (uart_init_done()) |