diff options
author | Bill Richardson <wfrichar@chromium.org> | 2014-03-05 09:52:06 -0800 |
---|---|---|
committer | Bill Richardson <wfrichar@chromium.org> | 2014-03-06 17:51:38 +0000 |
commit | bfb16961c7fcdcca1823f776ab75d54079ebaa20 (patch) | |
tree | 4c49b5df8ec441050e01856d1dd6cc16fc17f75d | |
parent | 8a9817a5c7be54b6efc0e116ae607fb9955af247 (diff) | |
download | chrome-ec-bfb16961c7fcdcca1823f776ab75d54079ebaa20.tar.gz |
Samus: Enable manual control of TOUCHSCREEN_RESET_L
The charger task was holding this either on or off in S3, no matter what we
wanted. We really only need to set it at S3->S0 or S3->S5, or when the
lid opens or closes. The rest of the time we should be able to turn it off
and on with gpioset, for testing purposes.
BUG=chrome-os-partner:26502
BRANCH=ToT
TEST=manual
Check the state with
gpioget TOUCHSCREEN_RESET_L
Open and close the lid, suspend the AP with powerd_dbus_suspend, etc. The
touchscreen should be on when the lid is open and the AP is in either S3 or
S0, off when the lid is closed or the AP is off.
Then
gpioset TOUCHSCREEN_RESET_L 1
gpioget TOUCHSCREEN_RESET_L
gpioset TOUCHSCREEN_RESET_L 0
gpioget TOUCHSCREEN_RESET_L
The change should persist as long as nothing else changes.
Change-Id: If7b6f809b1b28ae2699d0fbc6c9b2305fc57cbff
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/188869
Reviewed-by: Randall Spangler <rspangler@chromium.org>
-rw-r--r-- | board/samus/power_sequence.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/board/samus/power_sequence.c b/board/samus/power_sequence.c index e9bdbbb576..a8bba2748d 100644 --- a/board/samus/power_sequence.c +++ b/board/samus/power_sequence.c @@ -146,6 +146,18 @@ enum power_state power_chipset_init(void) return POWER_G3; } +static void update_touchscreen(void) +{ + /* + * If the lid is closed; put the touchscreen in reset to save power. + * If the lid is open, take it out of reset so it can wake the + * processor (although just opening the lid should do that anyway, so + * we don't have to worry about it staying on while the AP is off). + */ + gpio_set_level(GPIO_TOUCHSCREEN_RESET_L, lid_is_open()); +} +DECLARE_HOOK(HOOK_LID_CHANGE, update_touchscreen, HOOK_PRIO_DEFAULT); + enum power_state power_handle_state(enum power_state state) { switch (state) { @@ -159,13 +171,6 @@ enum power_state power_handle_state(enum power_state state) break; case POWER_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. - */ - gpio_set_level(GPIO_TOUCHSCREEN_RESET_L, lid_is_open()); - /* Check for state transitions */ if (!power_has_signals(IN_PGOOD_S3)) { /* Required rail went away */ @@ -280,11 +285,7 @@ enum power_state power_handle_state(enum power_state state) /* Enable wireless. */ wireless_set_state(WIRELESS_ON); - /* - * 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. - */ + /* Make sure the touchscreen is on, too. */ gpio_set_level(GPIO_TOUCHSCREEN_RESET_L, 1); /* Wait for non-core power rails good */ |