summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Parker <dparker@chromium.org>2013-08-27 16:12:20 -0700
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2013-09-19 22:11:17 +0000
commit8fedda848b5f1d93c3a0454bc49242ebf7c25156 (patch)
tree8691350c0ff0c42cfc7a27726c1e4b0a5a604ca7
parent92f59f782d7b42eada17727820cb33a7be00a908 (diff)
downloadchrome-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.c17
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;
}