summaryrefslogtreecommitdiff
path: root/test
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 /test
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 'test')
-rw-r--r--test/bklight_lid.c106
-rw-r--r--test/bklight_lid.tasklist (renamed from test/bklight_x86.tasklist)0
-rw-r--r--test/bklight_passthru.c (renamed from test/bklight_x86.c)0
-rw-r--r--test/bklight_passthru.tasklist17
-rw-r--r--test/build.mk5
-rw-r--r--test/test_config.h9
6 files changed, 133 insertions, 4 deletions
diff --git a/test/bklight_lid.c b/test/bklight_lid.c
new file mode 100644
index 0000000000..9cdd3741a2
--- /dev/null
+++ b/test/bklight_lid.c
@@ -0,0 +1,106 @@
+/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ * Test backlight control based on lid
+ */
+
+#include "backlight.h"
+#include "common.h"
+#include "console.h"
+#include "hooks.h"
+#include "host_command.h"
+#include "lid_switch.h"
+#include "test_util.h"
+#include "timer.h"
+#include "util.h"
+
+static int mock_lid = 1;
+static int backlight_en;
+
+int gpio_get_level(enum gpio_signal signal)
+{
+ if (signal == GPIO_LID_OPEN)
+ return mock_lid;
+ return 0;
+}
+
+void gpio_set_level(enum gpio_signal signal, int level)
+{
+ if (signal == GPIO_ENABLE_BACKLIGHT)
+ backlight_en = level;
+}
+
+void set_lid_state(int is_open)
+{
+ mock_lid = is_open;
+ lid_interrupt(GPIO_LID_OPEN);
+ msleep(40);
+}
+
+static int send_bklight_hostcmd(int enabled)
+{
+ struct ec_params_switch_enable_backlight p;
+ p.enabled = enabled;
+
+ return test_send_host_command(EC_CMD_SWITCH_ENABLE_BKLIGHT, 0, &p,
+ sizeof(p), NULL, 0);
+}
+
+static int test_passthrough(void)
+{
+ /* Initial state */
+ TEST_ASSERT(mock_lid == 1);
+ TEST_ASSERT(backlight_en);
+
+ /* Close lid. Backlight should turn off */
+ set_lid_state(0);
+ TEST_ASSERT(!backlight_en);
+
+ /* Open lid. Backlight turns on */
+ set_lid_state(1);
+ TEST_ASSERT(backlight_en);
+
+ return EC_SUCCESS;
+}
+
+static int test_hostcommand(void)
+{
+ /* Open lid */
+ set_lid_state(1);
+ TEST_ASSERT(backlight_en);
+
+ /* Disable by host command */
+ send_bklight_hostcmd(0);
+ TEST_ASSERT(!backlight_en);
+
+ /* Close and open lid. Backlight should come up */
+ set_lid_state(0);
+ set_lid_state(1);
+ TEST_ASSERT(backlight_en);
+
+ /* Close lid */
+ set_lid_state(0);
+ TEST_ASSERT(!backlight_en);
+
+ /* Enable by host command */
+ send_bklight_hostcmd(1);
+ TEST_ASSERT(backlight_en);
+
+ /* Disable backlight by lid */
+ set_lid_state(1);
+ set_lid_state(0);
+ TEST_ASSERT(!backlight_en);
+
+ return EC_SUCCESS;
+}
+
+void run_test(void)
+{
+ test_reset();
+
+ RUN_TEST(test_passthrough);
+ RUN_TEST(test_hostcommand);
+
+ test_print_result();
+}
diff --git a/test/bklight_x86.tasklist b/test/bklight_lid.tasklist
index 26cfc53453..26cfc53453 100644
--- a/test/bklight_x86.tasklist
+++ b/test/bklight_lid.tasklist
diff --git a/test/bklight_x86.c b/test/bklight_passthru.c
index cf533912ae..cf533912ae 100644
--- a/test/bklight_x86.c
+++ b/test/bklight_passthru.c
diff --git a/test/bklight_passthru.tasklist b/test/bklight_passthru.tasklist
new file mode 100644
index 0000000000..26cfc53453
--- /dev/null
+++ b/test/bklight_passthru.tasklist
@@ -0,0 +1,17 @@
+/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+/**
+ * List of enabled tasks in the priority order
+ *
+ * The first one has the lowest priority.
+ *
+ * For each task, use the macro TASK_TEST(n, r, d, s) where :
+ * 'n' in the name of the task
+ * 'r' in the main routine of the task
+ * 'd' in an opaque parameter passed to the routine at startup
+ * 's' is the stack size in bytes; must be a multiple of 8
+ */
+#define CONFIG_TEST_TASK_LIST /* No test task */
diff --git a/test/build.mk b/test/build.mk
index af3807a84a..1271511129 100644
--- a/test/build.mk
+++ b/test/build.mk
@@ -30,10 +30,11 @@ test-list-$(BOARD_bolt)=
test-list-host=mutex pingpong utils kb_scan kb_mkbp lid_sw power_button hooks
test-list-host+=thermal flash queue kb_8042 extpwr_gpio console_edit system
test-list-host+=sbs_charging adapter host_command thermal_falco led_lp5562
-test-list-host+=bklight_x86
+test-list-host+=bklight_lid bklight_passthru
adapter-y=adapter.o
-bklight_x86-y=bklight_x86.o
+bklight_lid-y=bklight_lid.o
+bklight_passthru-y=bklight_passthru.o
console_edit-y=console_edit.o
extpwr_gpio-y=extpwr_gpio.o
flash-y=flash.o
diff --git a/test/test_config.h b/test/test_config.h
index bf47205d9b..3c8f35b75d 100644
--- a/test/test_config.h
+++ b/test/test_config.h
@@ -13,8 +13,13 @@
#define CONFIG_EXTPOWER_FALCO
#endif
-#ifdef TEST_bklight_x86
-#define CONFIG_BACKLIGHT_X86
+#ifdef TEST_bklight_lid
+#define CONFIG_BACKLIGHT_LID
+#endif
+
+#ifdef TEST_bklight_passthru
+#define CONFIG_BACKLIGHT_LID
+#define CONFIG_BACKLIGHT_REQ_GPIO GPIO_PCH_BKLTEN
#endif
#ifdef TEST_kb_8042