diff options
author | Randall Spangler <rspangler@chromium.org> | 2012-12-06 14:29:04 -0800 |
---|---|---|
committer | Gerrit <chrome-bot@google.com> | 2012-12-06 17:58:31 -0800 |
commit | 3d0d2adb63b9ca148216d866c772ea0b6e5e2598 (patch) | |
tree | fc0c8ccfe434a61113a868e1961fcd12ee793cbc /common | |
parent | 52440ef89387809af91051671a98ea9c36ce27ca (diff) | |
download | chrome-ec-3d0d2adb63b9ca148216d866c772ea0b6e5e2598.tar.gz |
link: Enable +5VALW at boot and leave it enabled
This works around a problem where disabling +5VALW glitches +3VALW_EC,
which may cause the EC to brown out or hang.
BUG=chrome-os-partner:16600
BRANCH=link
TEST=manual
1. When the system boots, look for this line as the first x86 power state:
[0.004977 x86 power state 0 = G3, in 0x0001]
2. Boot the system. Should boot normally.
3. Shut down the system using the power button.
4. After ~10 seconds, you should see that line of output again.
5. At the EC console: 'gpioget enable_5valw' should output:
1* ENABLE_5VALW
This should ideally be combined with a hardware fix to add 30+ ms of
delay to EC_EN_5V, since when the EC is reset via power+refresh that
tri-states EC_EN_5V, and it takes ~22ms for the EC to boot and start
driving EC_EN_5V again.
Change-Id: Iba4d961d064105faf988a35c2277e9d7406e39e2
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/39334
Reviewed-by: Yung-Chieh Lo <yjlou@chromium.org>
Diffstat (limited to 'common')
-rw-r--r-- | common/x86_power.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/common/x86_power.c b/common/x86_power.c index 2bbe8e469e..75c2905700 100644 --- a/common/x86_power.c +++ b/common/x86_power.c @@ -359,7 +359,6 @@ static void x86_power_init(void) gpio_set_level(GPIO_ENABLE_1_5V_DDR, 0); gpio_set_level(GPIO_PCH_RSMRSTn, 0); gpio_set_level(GPIO_PCH_DPWROK, 0); - gpio_set_level(GPIO_ENABLE_5VALW, 0); } } @@ -513,8 +512,6 @@ void x86_power_task(void) break; case X86_S5S3: - /* Switch on +5V always-on */ - gpio_set_level(GPIO_ENABLE_5VALW, 1); /* Wait for the always-on rails to be good */ wait_in_signals(IN_PGOOD_ALWAYS_ON); @@ -625,14 +622,17 @@ void x86_power_task(void) /* * Put touchscreen and lightbar in reset, so we won't - * leak +3VALW through the reset line. + * leak +3VALW through the reset line to chips powered + * by +5VALW. + * + * (Note that we're no longer powering down +5VALW due + * to crosbug.com/p/16600, but to minimize side effects + * of that change we'll still reset these components in + * S5.) */ gpio_set_level(GPIO_TOUCHSCREEN_RESETn, 0); gpio_set_level(GPIO_LIGHTBAR_RESETn, 0); - /* Switch off +5V always-on */ - gpio_set_level(GPIO_ENABLE_5VALW, 0); - state = X86_S5; break; |