diff options
| author | choongryeol.lee <choongryeol.lee@lge.com> | 2012-11-15 17:03:03 -0800 |
|---|---|---|
| committer | Iliyan Malchev <malchev@google.com> | 2012-12-06 15:48:52 -0800 |
| commit | 9255713bcf929e7cdd2817481f0dd08f838285c3 (patch) | |
| tree | 958e7e3037fad35b0e149814604a764ab5c40def /charger | |
| parent | a2411eedb2f005e344e7d920715727e136a806aa (diff) | |
| download | system_core-9255713bcf929e7cdd2817481f0dd08f838285c3.tar.gz system_core-9255713bcf929e7cdd2817481f0dd08f838285c3.tar.bz2 system_core-9255713bcf929e7cdd2817481f0dd08f838285c3.zip | |
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>
Diffstat (limited to 'charger')
| -rw-r--r-- | charger/Android.mk | 7 | ||||
| -rw-r--r-- | charger/charger.c | 23 |
2 files changed, 29 insertions, 1 deletions
diff --git a/charger/Android.mk b/charger/Android.mk index fe0c91d93..02586042f 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 c5e4ec276..1bacc81f8 100644 --- a/charger/charger.c +++ b/charger/charger.c @@ -41,6 +41,8 @@ #include <cutils/misc.h> #include <cutils/uevent.h> +#include <suspend/autosuspend.h> + #include "minui/minui.h" #ifndef max @@ -352,6 +354,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 +702,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 +842,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 +863,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", |
