diff options
author | Zhuohao Lee <zhuohao@chromium.org> | 2022-04-11 18:06:40 +0800 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-04-21 09:51:18 +0000 |
commit | bf6f0c21d951f00574d24e34040351e94d4545a0 (patch) | |
tree | a2c9a153242a40b65d9db894857b16d8b8ced149 /power | |
parent | 5efd8eea4be5dd1417e8e98b4f8fb5e9444cc169 (diff) | |
download | chrome-ec-bf6f0c21d951f00574d24e34040351e94d4545a0.tar.gz |
power/intel_x86: block RSMRST until the system is in S5
When we set the EN_S5_RAILS to enable the 3.3v/5v power for the ap
spi flash programming via the C2D2, the power sequence ic will
deassert the SEQ_EC_RSMRST_ODL in the G3 state. In order to avoid
the ap being powered on during the C2D2 programming, we need to
bypass the RSMRST before the system enters the S5. As a result,
we add CONFIG_CHIPSET_X86_RSMRST_AFTER_S5 to block the RSMRST
until the system goes to S5.
Since the APL/GLK already applied the same approach, we enable
the CONFIG_CHIPSET_X86_RSMRST_AFTER_S5 for the APL/GLK by default
in the config.h.
BUG=b:223084533
BRANCH=None
TEST=cros ap flash -b brya -i ${IMAGE}
Change-Id: I14039b405adc62e91436759eddacf6f9dc141eff
Signed-off-by: Zhuohao Lee <zhuohao@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3583905
Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
Reviewed-by: caveh jalali <caveh@chromium.org>
Diffstat (limited to 'power')
-rw-r--r-- | power/intel_x86.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/power/intel_x86.c b/power/intel_x86.c index 25778b3f78..35c0482831 100644 --- a/power/intel_x86.c +++ b/power/intel_x86.c @@ -571,18 +571,16 @@ void common_intel_x86_handle_rsmrst(enum power_state state) board_before_rsmrst(rsmrst_in); -#ifdef CONFIG_CHIPSET_APL_GLK /* Only passthrough RSMRST_L de-assertion on power up */ - if (rsmrst_in && !power_s5_up) + if (IS_ENABLED(CONFIG_CHIPSET_X86_RSMRST_AFTER_S5) && + rsmrst_in && !power_s5_up) return; -#elif defined(CONFIG_CHIPSET_X86_RSMRST_DELAY) /* * Wait at least 10ms between power signals going high * and deasserting RSMRST to PCH. */ - if (rsmrst_in) + if (IS_ENABLED(CONFIG_CHIPSET_X86_RSMRST_DELAY) && rsmrst_in) msleep(10); -#endif gpio_set_level(GPIO_PCH_RSMRST_L, rsmrst_in); |