diff options
author | Daisuke Nojiri <dnojiri@chromium.org> | 2018-10-16 15:16:29 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-10-19 23:21:56 -0700 |
commit | 9a890ad22965daa7e9365a0b2cb8c734ae41a842 (patch) | |
tree | 27e3f1f0845031e685fc46ffdad44d8cb87adfeb /test | |
parent | 4d4d8f06e91090336c2eb29ee00ca86fea2bb796 (diff) | |
download | chrome-ec-9a890ad22965daa7e9365a0b2cb8c734ae41a842.tar.gz |
Keyboard: Allow keyboard size to be set at run time
Currently, the keyboard size (i.e. number of columns) is static.
This patch allows it to be configured at run time. It's required to
support a keyboard with/without keypad in a single image.
KEYBOARD_COLS_MAX has the build time col size. It's used to allocate
exact spaces for arrays. Actual keyboard scanning is done using
keyboard_cols, which holds a runtime col size.
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
BUG=b:117126568
BRANCH=none
TEST=Verify keyboard functionality on Sona and Veyron.
Change-Id: I4b3552be0b4b315c3fe5a6884cf25e10aba8be7c
Reviewed-on: https://chromium-review.googlesource.com/1285292
Commit-Ready: Daisuke Nojiri <dnojiri@chromium.org>
Tested-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'test')
-rw-r--r-- | test/button.c | 3 | ||||
-rw-r--r-- | test/kb_mkbp.c | 6 | ||||
-rw-r--r-- | test/kb_scan.c | 4 |
3 files changed, 8 insertions, 5 deletions
diff --git a/test/button.c b/test/button.c index 73172abbfd..8cd82f93c2 100644 --- a/test/button.c +++ b/test/button.c @@ -16,10 +16,13 @@ #include "gpio.h" #include "test_util.h" #include "timer.h" +#include "keyboard_config.h" #include "keyboard_protocol.h" #define UNCHANGED -1 +uint8_t keyboard_cols = KEYBOARD_COLS_MAX; + static const struct button_config *button_vol_down = &buttons[BUTTON_VOLUME_DOWN]; static const struct button_config *button_vol_up = &buttons[BUTTON_VOLUME_UP]; diff --git a/test/kb_mkbp.c b/test/kb_mkbp.c index f838a0c411..15952e74bb 100644 --- a/test/kb_mkbp.c +++ b/test/kb_mkbp.c @@ -16,7 +16,7 @@ #include "test_util.h" #include "util.h" -static uint8_t state[KEYBOARD_COLS]; +static uint8_t state[KEYBOARD_COLS_MAX]; static int ec_int_level; static const char *action[2] = {"release", "press"}; @@ -48,7 +48,7 @@ int lid_is_open(void) void clear_state(void) { - memset(state, 0xff, KEYBOARD_COLS); + memset(state, 0xff, KEYBOARD_COLS_MAX); } void set_state(int c, int r, int pressed) @@ -89,7 +89,7 @@ int verify_key(int c, int r, int pressed) if (host_command_process(&args) != EC_RES_SUCCESS) return 0; - for (i = 0; i < KEYBOARD_COLS; ++i) + for (i = 0; i < KEYBOARD_COLS_MAX; ++i) if (event.data.key_matrix[i] != state[i]) return 0; } else { diff --git a/test/kb_scan.c b/test/kb_scan.c index 75ee1932ed..b364d19368 100644 --- a/test/kb_scan.c +++ b/test/kb_scan.c @@ -31,7 +31,7 @@ old = fifo_add_count; \ } while (0) -static uint8_t mock_state[KEYBOARD_COLS]; +static uint8_t mock_state[KEYBOARD_COLS_MAX]; static int column_driven; static int fifo_add_count; static int lid_open; @@ -60,7 +60,7 @@ int keyboard_raw_read_rows(void) if (column_driven == KEYBOARD_COLUMN_NONE) { return 0; } else if (column_driven == KEYBOARD_COLUMN_ALL) { - for (i = 0; i < KEYBOARD_COLS; ++i) + for (i = 0; i < KEYBOARD_COLS_MAX; ++i) r |= mock_state[i]; return r; } else { |