summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorRandall Spangler <rspangler@chromium.org>2013-09-27 09:11:48 -0700
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2013-09-27 23:07:21 +0000
commit84ba1881208aa0fe56e7775958d95a8fa78f93c4 (patch)
tree3a5059690586b13e18fa2f94dccb5e2f9b6df252 /common
parent1e16031f75a9c84567b6bdb6fd5372234ac93fb3 (diff)
downloadchrome-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.mk2
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