diff options
author | Dave Parker <dparker@chromium.org> | 2013-08-27 16:12:20 -0700 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2013-09-19 22:11:17 +0000 |
commit | 8fedda848b5f1d93c3a0454bc49242ebf7c25156 (patch) | |
tree | 8691350c0ff0c42cfc7a27726c1e4b0a5a604ca7 | |
parent | 92f59f782d7b42eada17727820cb33a7be00a908 (diff) | |
download | chrome-ec-8fedda848b5f1d93c3a0454bc49242ebf7c25156.tar.gz |
CHERRY-PICK: Haswell: Add control for touchscreen reset
BUG=chrome-os-partner:22076
BRANCH=peppy
TEST=Manual. Verify touchscreen operational in S0.
Original-Change-Id: Ife2d4e11142195bddf202933430ec8af243b1309
Signed-off-by: Dave Parker <dparker@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/167150
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Conflicts:
common/chipset_haswell.c
Change-Id: I8998c2b998d49882e9019942b87f5050369ba64b
Reviewed-on: https://chromium-review.googlesource.com/170072
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Tested-by: Dave Parker <dparker@chromium.org>
Commit-Queue: Dave Parker <dparker@chromium.org>
-rw-r--r-- | common/chipset_haswell.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/common/chipset_haswell.c b/common/chipset_haswell.c index 9e5ecf72d2..9482a860b2 100644 --- a/common/chipset_haswell.c +++ b/common/chipset_haswell.c @@ -12,6 +12,7 @@ #include "getset.h" #include "gpio.h" #include "hooks.h" +#include "lid_switch.h" #include "system.h" #include "timer.h" #include "util.h" @@ -160,6 +161,14 @@ enum x86_state x86_handle_state(enum x86_state state) break; case X86_S3: + /* + * If lid is closed; hold touchscreen in reset to cut power + * usage. If lid is open, take touchscreen out of reset so it + * can wake the processor. Chipset task is awakened on lid + * switch transitions. + */ + gpio_set_level(GPIO_TOUCHSCREEN_RESET_L, lid_is_open()); + /* Check for state transitions */ if (!x86_has_signals(IN_PGOOD_S3)) { /* Required rail went away */ @@ -250,12 +259,20 @@ enum x86_state x86_handle_state(enum x86_state state) /* Enable wireless */ wireless_enable(EC_WIRELESS_SWITCH_ALL); + /* + * Make sure touchscreen is out if reset (even if the lid is + * still closed); it may have been turned off if the lid was + * closed in S3. + */ + gpio_set_level(GPIO_TOUCHSCREEN_RESET_L, 1); + /* Wait for non-core power rails good */ if (x86_wait_signals(IN_PGOOD_S0)) { chipset_force_shutdown(); wireless_enable(0); gpio_set_level(GPIO_EC_EDP_VDD_EN, 0); gpio_set_level(GPIO_PP3300_DX_EN, 0); + gpio_set_level(GPIO_TOUCHSCREEN_RESET_L, 0); return X86_S3; } |