diff options
author | Kein Yuan <kein.yuan@intel.com> | 2014-03-21 16:42:13 -0700 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-03-25 00:33:41 +0000 |
commit | 72be9d5881e3d125df0c4951ebfa8ad72d445361 (patch) | |
tree | e093b20120146cd7f23b07c62886617e1d1cb3f2 /common | |
parent | 3b1fce4855e2484b50b3c6b93e325c1931eaa3c6 (diff) | |
download | chrome-ec-72be9d5881e3d125df0c4951ebfa8ad72d445361.tar.gz |
rambi: EC take control on charger to make sure charge battery
in non-S0 states when work with DPTF.
If user sleeps/shutdown system when on battery(or when TCHG is throttled),
system will never charge while in S3 or S5.
BUG=chrome-os-partner:355015
BRANCH=rambi
TEST=with the same test system will charge in S3 or S5.
Change-Id: Idc68b2f533da0a55ad07d0ff8e3e5294c1e2143c
Signed-off-by: Kein Yuan <kein.yuan@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/191153
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'common')
-rw-r--r-- | common/charger.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/common/charger.c b/common/charger.c index 3780b2b5a1..d7c92fe2a4 100644 --- a/common/charger.c +++ b/common/charger.c @@ -12,6 +12,7 @@ #include "host_command.h" #include "printf.h" #include "util.h" +#include "hooks.h" /* Console output macros */ #define CPUTS(outstr) cputs(CC_CHARGER, outstr) @@ -19,6 +20,7 @@ /* DPTF current limit, -1 = none */ static int dptf_limit_ma = -1; +static int dptf_limit_ma_bak = -1; void dptf_set_charging_current_limit(int ma) { @@ -30,6 +32,28 @@ int dptf_get_charging_current_limit(void) return dptf_limit_ma; } +static void dptf_suspend_hook(void) +{ + /* Before get to Sx, EC should take control of charger from DPTF */ + dptf_limit_ma_bak = dptf_limit_ma; + dptf_limit_ma = -1; +} +DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, dptf_suspend_hook, HOOK_PRIO_DEFAULT); + +static void dptf_shutdown_hook(void) +{ + dptf_limit_ma = -1; + dptf_limit_ma_bak = -1; +} +DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, dptf_shutdown_hook, HOOK_PRIO_DEFAULT); + +static void dptf_s0_hook(void) +{ + /* Before go to S0, EC restore charger control */ + dptf_limit_ma = dptf_limit_ma_bak; +} +DECLARE_HOOK(HOOK_CHIPSET_RESUME, dptf_s0_hook, HOOK_PRIO_DEFAULT); + int charger_closest_voltage(int voltage) { const struct charger_info *info = charger_get_info(); |