summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVic Yang <victoryang@chromium.org>2013-07-28 17:26:32 -0700
committerVincent Palatin <vpalatin@chromium.org>2013-07-29 06:06:21 -0700
commit337d3ee8e4b917ffdf68170c54197d8a33b8e87a (patch)
tree5c1e324be92a76293592328327227b44b96b8f66
parentc8f25867ebe2f1b76d0fad8a0ed1d0439940c6a6 (diff)
downloadchrome-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.c24
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)