diff options
author | Vic Yang <victoryang@chromium.org> | 2013-07-28 17:26:32 -0700 |
---|---|---|
committer | Vincent Palatin <vpalatin@chromium.org> | 2013-07-29 06:06:21 -0700 |
commit | 337d3ee8e4b917ffdf68170c54197d8a33b8e87a (patch) | |
tree | 5c1e324be92a76293592328327227b44b96b8f66 | |
parent | c8f25867ebe2f1b76d0fad8a0ed1d0439940c6a6 (diff) | |
download | chrome-ec-337d3ee8e4b917ffdf68170c54197d8a33b8e87a.tar.gz |
spring: Pull down VAC when charger is unplugged
To get TPS65090 locked into battery mode, we need to pull down VAC
voltage after a charger is unplugged.
BUG=chrome-os-partner:21107
TEST=Unplug a charger and probe VAC voltage.
BRANCH=Spring
Change-Id: Icd32b4509f157f7d931903025cb5ca620693d8bb
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/63568
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
-rw-r--r-- | board/spring/usb_charging.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/board/spring/usb_charging.c b/board/spring/usb_charging.c index e4fd1fa8f3..c480e07e59 100644 --- a/board/spring/usb_charging.c +++ b/board/spring/usb_charging.c @@ -702,6 +702,21 @@ static void send_battery_key_deferred(void) } DECLARE_DEFERRED(send_battery_key_deferred); +static void usb_release_vac(void) +{ + gpio_set_level(GPIO_PMIC_RESET, 0); + CPRINTF("[%T Stop pulling VAC]\n"); +} +DECLARE_DEFERRED(usb_release_vac); + +static void usb_pull_vac(void) +{ + gpio_set_level(GPIO_PMIC_RESET, 1); + hook_call_deferred(usb_release_vac, 550 * MSEC); + CPRINTF("[%T Pulling VAC low]\n"); +} +DECLARE_DEFERRED(usb_pull_vac); + static void notify_dev_type_change(int dev_type) { int org_type = current_dev_type; @@ -712,6 +727,15 @@ static void notify_dev_type_change(int dev_type) usb_has_power_input(dev_type)) hook_notify(HOOK_AC_CHANGE); hook_call_deferred(send_battery_key_deferred, BATTERY_KEY_DELAY); + + /* + * If the charger is surely removed (not coming back within + * BATTERY_KEY_DELAY), pull down VAC. + */ + if (!(dev_type & TSU6721_TYPE_VBUS_DEBOUNCED)) + hook_call_deferred(usb_pull_vac, BATTERY_KEY_DELAY); + else + hook_call_deferred(usb_pull_vac, -1); } static int usb_want_redetect(int dev_type) |