diff options
author | Randall Spangler <rspangler@chromium.org> | 2013-09-27 09:11:48 -0700 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2013-09-27 23:07:21 +0000 |
commit | 84ba1881208aa0fe56e7775958d95a8fa78f93c4 (patch) | |
tree | 3a5059690586b13e18fa2f94dccb5e2f9b6df252 /common | |
parent | 1e16031f75a9c84567b6bdb6fd5372234ac93fb3 (diff) | |
download | chrome-ec-84ba1881208aa0fe56e7775958d95a8fa78f93c4.tar.gz |
Support backlight control via lid only
The old backlight_x86 code did
(backlight enable) = (lid is open) && (GPIO request from AP)
Newer systems will AND those signals in hardware. Support those
systems by separating CONFIG_BACKLIGHT_LID and
CONFIG_BACKLIGHT_REQ_GPIO, and add tests for the case where the enable
signal is dependent only on the lid position.
BUG=chrome-os-partner:22960
BRANCH=none
TEST=pass unit tests
Change-Id: I1909426e49f00a8acd5047fd88c801cba1dacd76
Reviewed-on: https://chromium-review.googlesource.com/170925
Tested-by: Randall Spangler <rspangler@chromium.org>
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
Commit-Queue: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'common')
-rw-r--r-- | common/backlight_lid.c (renamed from common/backlight_x86.c) | 29 | ||||
-rw-r--r-- | common/build.mk | 2 |
2 files changed, 23 insertions, 8 deletions
diff --git a/common/backlight_x86.c b/common/backlight_lid.c index 9c3b4d0ae3..30b8b75eb7 100644 --- a/common/backlight_x86.c +++ b/common/backlight_lid.c @@ -3,7 +3,7 @@ * found in the LICENSE file. */ -/* Backlight passthru for x86 platforms */ +/* Backlight control based on lid and optional request signal from AP */ #include "common.h" #include "gpio.h" @@ -16,11 +16,17 @@ */ static void update_backlight(void) { - /* Only enable the backlight if the lid is open */ - if (gpio_get_level(GPIO_PCH_BKLTEN) && lid_is_open()) - gpio_set_level(GPIO_ENABLE_BACKLIGHT, 1); - else - gpio_set_level(GPIO_ENABLE_BACKLIGHT, 0); +#ifdef CONFIG_BACKLIGHT_REQ_GPIO + /* Enable the backlight if lid is open AND requested by AP */ + gpio_set_level(GPIO_ENABLE_BACKLIGHT, lid_is_open() && + gpio_get_level(CONFIG_BACKLIGHT_REQ_GPIO)); +#else + /* + * Enable backlight if lid is open; this is AND'd with the request from + * the AP in hardware. + */ + gpio_set_level(GPIO_ENABLE_BACKLIGHT, lid_is_open()); +#endif } DECLARE_HOOK(HOOK_LID_CHANGE, update_backlight, HOOK_PRIO_DEFAULT); @@ -31,22 +37,31 @@ static void backlight_init(void) { update_backlight(); - gpio_enable_interrupt(GPIO_PCH_BKLTEN); +#ifdef CONFIG_BACKLIGHT_REQ_GPIO + gpio_enable_interrupt(CONFIG_BACKLIGHT_REQ_GPIO); +#endif } DECLARE_HOOK(HOOK_INIT, backlight_init, HOOK_PRIO_DEFAULT); +#ifdef CONFIG_BACKLIGHT_REQ_GPIO void backlight_interrupt(enum gpio_signal signal) { update_backlight(); } +#endif /** * Host command to toggle backlight. + * + * The requested state will persist until the next lid-switch or request-gpio + * transition. */ static int switch_command_enable_backlight(struct host_cmd_handler_args *args) { const struct ec_params_switch_enable_backlight *p = args->params; + gpio_set_level(GPIO_ENABLE_BACKLIGHT, p->enabled); + return EC_RES_SUCCESS; } DECLARE_HOST_COMMAND(EC_CMD_SWITCH_ENABLE_BKLIGHT, diff --git a/common/build.mk b/common/build.mk index 39c38d00c9..0ab2658c07 100644 --- a/common/build.mk +++ b/common/build.mk @@ -18,7 +18,7 @@ common-$(BOARD_peppy)+=led_common.o led_peppy.o common-$(BOARD_slippy)+=led_slippy.o common-$(BOARD_snow)+=extpower_snow.o -common-$(CONFIG_BACKLIGHT_X86)+=backlight_x86.o +common-$(CONFIG_BACKLIGHT_LID)+=backlight_lid.o common-$(CONFIG_BATTERY_BQ20Z453)+=battery_bq20z453.o common-$(CONFIG_BATTERY_BQ27541)+=battery.o battery_bq27541.o common-$(CONFIG_BATTERY_LINK)+=battery_link.o |