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 /test | |
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 'test')
-rw-r--r-- | test/bklight_lid.c | 106 | ||||
-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.tasklist | 17 | ||||
-rw-r--r-- | test/build.mk | 5 | ||||
-rw-r--r-- | test/test_config.h | 9 |
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 |