summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorJohn Crossley <crossley@lionsemi.corp-partner.google.com>2021-04-19 21:27:03 +0000
committerCommit Bot <commit-bot@chromium.org>2021-05-06 04:22:42 +0000
commit64be980319e9e7c8f132bfda349e8ebaefb780f1 (patch)
treea1d153fd6328179e1ca37df10159a88cb239e3e2 /board
parent0a9949d1b059698247bde17a34c9c8caace4d48d (diff)
downloadchrome-ec-64be980319e9e7c8f132bfda349e8ebaefb780f1.tar.gz
ln9310: Stronger workaround to prevent SCOUT overvoltage at startup
This improved workaround (compared to the previous 2520279) moves the CFLY precharge step out of the ln9310's internal startup sequence and implements it using I2C commands sent by the EC just before the I2C command that triggers the ln9310 startup. The workaround additionally modifies the ln9310's internal startup sequence to use the precharged CFLY capacitors as decoupling of an internal node during the startup sequence which should help prevent an OV glitch from appearing on the LN9310 output even if the internal level shifter on SW1 glitches and pulls up on the C1PA/B nodes. BRANCH=Trogdor BUG=b:185308433 TEST=Should not break the current boot flow, i.e. power-up and power-down (using long-press of the power button) should function similar to before this change. Testing the efficacy at preventing the SCOUT overvoltage glitch must be done with LN9310 parts screened out at wafer test that have a higher likelihood of exhibiting the glitch at the SCOUT output. With these parts, startup should be observed with a scope probe monitoring LN9310 SCOUT for overvoltagee. Change-Id: I216991f950196225cabbbfdaa2333f1650f7f4fa Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2837531 Reviewed-by: Alexandru M Stan <amstan@chromium.org> Reviewed-by: Wai-Hong Tam <waihong@google.com> Tested-by: John Crossley <crossley@lionsemi.corp-partner.google.com> Commit-Queue: John Crossley <crossley@lionsemi.corp-partner.google.com>
Diffstat (limited to 'board')
-rw-r--r--board/homestar/board.c1
-rw-r--r--board/lazor/switchcap.c6
2 files changed, 5 insertions, 2 deletions
diff --git a/board/homestar/board.c b/board/homestar/board.c
index ce13ee1076..657b547c5f 100644
--- a/board/homestar/board.c
+++ b/board/homestar/board.c
@@ -439,6 +439,7 @@ DECLARE_HOOK(HOOK_CHIPSET_RESUME, board_chipset_resume, HOOK_PRIO_DEFAULT);
void board_set_switchcap_power(int enable)
{
gpio_set_level(GPIO_SWITCHCAP_ON_L, !enable);
+ ln9310_software_enable(enable);
}
int board_is_switchcap_enabled(void)
diff --git a/board/lazor/switchcap.c b/board/lazor/switchcap.c
index 3d5255791c..6cb5106efb 100644
--- a/board/lazor/switchcap.c
+++ b/board/lazor/switchcap.c
@@ -105,10 +105,12 @@ DECLARE_HOOK(HOOK_INIT, switchcap_init, HOOK_PRIO_DEFAULT);
void board_set_switchcap_power(int enable)
{
- if (board_has_ln9310())
+ if (board_has_ln9310()) {
gpio_set_level(GPIO_SWITCHCAP_ON_L, !enable);
- else
+ ln9310_software_enable(enable);
+ } else {
gpio_set_level(GPIO_SWITCHCAP_ON, enable);
+ }
}
int board_is_switchcap_enabled(void)