diff options
author | choongryeol.lee <choongryeol.lee@lge.com> | 2012-11-15 17:03:03 -0800 |
---|---|---|
committer | Iliyan Malchev <malchev@google.com> | 2013-01-22 16:06:02 -0800 |
commit | dec27f6e11c2bdfe35791d0d25a3b1bb2204d194 (patch) | |
tree | 15bf6956a80149297a12c06e004c50070839d6ae | |
parent | fdf2f337805b0b9c6ebdf57540b2b70bb1eb64dd (diff) | |
download | system_core-dec27f6e11c2bdfe35791d0d25a3b1bb2204d194.zip system_core-dec27f6e11c2bdfe35791d0d25a3b1bb2204d194.tar.gz system_core-dec27f6e11c2bdfe35791d0d25a3b1bb2204d194.tar.bz2 |
charger: suspend enable in charger mode
To reduce power consumption after charging completion, enable suspend when LCD
is turned off.
Bug: 7429504
Change-Id: I34731dc392661c9051a20cea74f70d94a8aaeb42
Signed-off-by: Iliyan Malchev <malchev@google.com>
-rw-r--r-- | charger/Android.mk | 7 | ||||
-rw-r--r-- | charger/charger.c | 25 |
2 files changed, 31 insertions, 1 deletions
diff --git a/charger/Android.mk b/charger/Android.mk index fe0c91d..0258604 100644 --- a/charger/Android.mk +++ b/charger/Android.mk @@ -12,6 +12,10 @@ ifeq ($(strip $(BOARD_CHARGER_DISABLE_INIT_BLANK)),true) LOCAL_CFLAGS := -DCHARGER_DISABLE_INIT_BLANK endif +ifeq ($(strip $(BOARD_CHARGER_ENABLE_SUSPEND)),true) +LOCAL_CFLAGS += -DCHARGER_ENABLE_SUSPEND +endif + LOCAL_MODULE := charger LOCAL_MODULE_TAGS := optional LOCAL_FORCE_STATIC_EXECUTABLE := true @@ -21,6 +25,9 @@ LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_UNSTRIPPED) LOCAL_C_INCLUDES := bootable/recovery LOCAL_STATIC_LIBRARIES := libminui libpixelflinger_static libpng +ifeq ($(strip $(BOARD_CHARGER_ENABLE_SUSPEND)),true) +LOCAL_STATIC_LIBRARIES += libsuspend +endif LOCAL_STATIC_LIBRARIES += libz libstdc++ libcutils libm libc include $(BUILD_EXECUTABLE) diff --git a/charger/charger.c b/charger/charger.c index c5e4ec2..25b3b1a 100644 --- a/charger/charger.c +++ b/charger/charger.c @@ -41,6 +41,10 @@ #include <cutils/misc.h> #include <cutils/uevent.h> +#ifdef CHARGER_ENABLE_SUSPEND +#include <suspend/autosuspend.h> +#endif + #include "minui/minui.h" #ifndef max @@ -352,6 +356,21 @@ static void remove_supply(struct charger *charger, struct power_supply *supply) free(supply); } +#ifdef CHARGER_ENABLE_SUSPEND +static int request_suspend(bool enable) +{ + if (enable) + return autosuspend_enable(); + else + return autosuspend_disable(); +} +#else +static int request_suspend(bool enable) +{ + return 0; +} +#endif + static void parse_uevent(const char *msg, struct uevent *uevent) { uevent->action = ""; @@ -685,6 +704,7 @@ static void update_screen_state(struct charger *charger, int64_t now) charger->next_screen_transition = -1; gr_fb_blank(true); LOGV("[%lld] animation done\n", now); + request_suspend(true); return; } @@ -824,8 +844,10 @@ static void process_key(struct charger *charger, int code, int64_t now) } } else { /* if the power key got released, force screen state cycle */ - if (key->pending) + if (key->pending) { + request_suspend(false); kick_animation(charger->batt_anim); + } } } @@ -843,6 +865,7 @@ static void handle_input_state(struct charger *charger, int64_t now) static void handle_power_supply_state(struct charger *charger, int64_t now) { if (charger->num_supplies_online == 0) { + request_suspend(false); if (charger->next_pwr_check == -1) { charger->next_pwr_check = now + UNPLUGGED_SHUTDOWN_TIME; LOGI("[%lld] device unplugged: shutting down in %lld (@ %lld)\n", |