diff options
Diffstat (limited to 'common/keyboard_vivaldi.c')
-rw-r--r-- | common/keyboard_vivaldi.c | 187 |
1 files changed, 0 insertions, 187 deletions
diff --git a/common/keyboard_vivaldi.c b/common/keyboard_vivaldi.c deleted file mode 100644 index 443b475c82..0000000000 --- a/common/keyboard_vivaldi.c +++ /dev/null @@ -1,187 +0,0 @@ -/* Copyright 2020 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. - */ - -/* Vivali Keyboard code for Chrome EC */ - -#include "keyboard_8042_sharedlib.h" -#include "keyboard_scan.h" -#include "ec_commands.h" -#include <host_command.h> -#include <util.h> -#include <hooks.h> - -/* Console output macros */ -#define CPUTS(outstr) cputs(CC_KEYBOARD, outstr) -#define CPRINTS(format, args...) cprints(CC_KEYBOARD, format, ## args) - -/* - * Row Column info for Top row keys T1 - T15. This has been sourced from - * go/vivaldi-matrix (internal link for vivaldi scan matrix spec). - */ -static const struct key { - uint8_t row; - uint8_t col; -} vivaldi_keys[] = { - {.row = 0, .col = 2}, /* T1 */ - {.row = 3, .col = 2}, /* T2 */ - {.row = 2, .col = 2}, /* T3 */ - {.row = 1, .col = 2}, /* T4 */ - {.row = 3, .col = 4}, /* T5 */ - {.row = 2, .col = 4}, /* T6 */ - {.row = 1, .col = 4}, /* T7 */ - {.row = 2, .col = 9}, /* T8 */ - {.row = 1, .col = 9}, /* T9 */ - {.row = 0, .col = 4}, /* T10 */ - {.row = 0, .col = 1}, /* T11 */ - {.row = 1, .col = 5}, /* T12 */ - {.row = 3, .col = 5}, /* T13 */ - {.row = 0, .col = 9}, /* T14 */ - {.row = 0, .col = 11}, /* T15 */ -}; -BUILD_ASSERT(ARRAY_SIZE(vivaldi_keys) == MAX_TOP_ROW_KEYS); - -/* Scancodes for top row action keys */ -static const uint16_t action_scancodes[] = { - [TK_BACK] = SCANCODE_BACK, - [TK_FORWARD] = SCANCODE_FORWARD, - [TK_REFRESH] = SCANCODE_REFRESH, - [TK_FULLSCREEN] = SCANCODE_FULLSCREEN, - [TK_OVERVIEW] = SCANCODE_OVERVIEW, - [TK_VOL_MUTE] = SCANCODE_VOLUME_MUTE, - [TK_VOL_DOWN] = SCANCODE_VOLUME_DOWN, - [TK_VOL_UP] = SCANCODE_VOLUME_UP, - [TK_PLAY_PAUSE] = SCANCODE_PLAY_PAUSE, - [TK_NEXT_TRACK] = SCANCODE_NEXT_TRACK, - [TK_PREV_TRACK] = SCANCODE_PREV_TRACK, - [TK_SNAPSHOT] = SCANCODE_SNAPSHOT, - [TK_BRIGHTNESS_DOWN] = SCANCODE_BRIGHTNESS_DOWN, - [TK_BRIGHTNESS_UP] = SCANCODE_BRIGHTNESS_UP, - [TK_KBD_BKLIGHT_DOWN] = SCANCODE_KBD_BKLIGHT_DOWN, - [TK_KBD_BKLIGHT_UP] = SCANCODE_KBD_BKLIGHT_UP, - [TK_PRIVACY_SCRN_TOGGLE] = SCANCODE_PRIVACY_SCRN_TOGGLE, - [TK_MICMUTE] = SCANCODE_MICMUTE, - [TK_KBD_BKLIGHT_TOGGLE] = SCANCODE_KBD_BKLIGHT_TOGGLE, -}; - -static const struct ec_response_keybd_config *vivaldi_keybd; - -static enum -ec_status get_vivaldi_keybd_config(struct host_cmd_handler_args *args) -{ - struct ec_response_keybd_config *resp = args->response; - - if (vivaldi_keybd && vivaldi_keybd->num_top_row_keys) { - memcpy(resp, vivaldi_keybd, sizeof(*resp)); - args->response_size = sizeof(*resp); - return EC_RES_SUCCESS; - } - return EC_RES_ERROR; -} -DECLARE_HOST_COMMAND(EC_CMD_GET_KEYBD_CONFIG, get_vivaldi_keybd_config, - EC_VER_MASK(0)); - -#ifdef CONFIG_KEYBOARD_CUSTOMIZATION - -/* - * Boards selecting CONFIG_KEYBOARD_CUSTOMIZATION are likely to not - * want vivaldi code messing with their customized keyboards. - */ -__overridable -const struct ec_response_keybd_config *board_vivaldi_keybd_config(void) -{ - return NULL; -} - -#else - -static const struct ec_response_keybd_config default_keybd = { - /* Default Chromeos keyboard config */ - .num_top_row_keys = 10, - .action_keys = { - TK_BACK, /* T1 */ - TK_FORWARD, /* T2 */ - TK_REFRESH, /* T3 */ - TK_FULLSCREEN, /* T4 */ - TK_OVERVIEW, /* T5 */ - TK_BRIGHTNESS_DOWN, /* T6 */ - TK_BRIGHTNESS_UP, /* T7 */ - TK_VOL_MUTE, /* T8 */ - TK_VOL_DOWN, /* T9 */ - TK_VOL_UP, /* T10 */ - }, - /* No function keys, no numeric keypad, has screenlock key */ - .capabilities = KEYBD_CAP_SCRNLOCK_KEY, -}; - -__overridable -const struct ec_response_keybd_config *board_vivaldi_keybd_config(void) -{ - return &default_keybd; -} - -#endif /* CONFIG_KEYBOARD_CUSTOMIZATION */ - -static void vivaldi_init(void) -{ - uint8_t i; - - /* Allow the boards to change the keyboard config */ - vivaldi_keybd = board_vivaldi_keybd_config(); - - if (!vivaldi_keybd || !vivaldi_keybd->num_top_row_keys) { - CPUTS("VIVALDI keybd disabled on board request"); - return; - } - - CPRINTS("VIVALDI: Num top row keys = %u", - vivaldi_keybd->num_top_row_keys); - - if (vivaldi_keybd->num_top_row_keys > MAX_TOP_ROW_KEYS || - vivaldi_keybd->num_top_row_keys < MIN_TOP_ROW_KEYS) { - CPRINTS("VIVALDI: Error! num_top_row_keys=%u, disabled vivaldi", - vivaldi_keybd->num_top_row_keys); - vivaldi_keybd = NULL; - return; - } - - for (i = 0; i < ARRAY_SIZE(vivaldi_keys); i++) { - - uint8_t row, col, *mask; - enum action_key key; - - row = vivaldi_keys[i].row; - col = vivaldi_keys[i].col; - - if (col >= KEYBOARD_COLS_MAX || row >= KEYBOARD_ROWS) { - CPRINTS("VIVALDI: Bad (row,col) for T-%u: (%u,%u)", - i, row, col); - ASSERT(false); - } - - mask = &keyscan_config.actual_key_mask[col]; - - /* - * Potentially indexing past meaningful data, - * but we bounds check it below. - */ - key = vivaldi_keybd->action_keys[i]; - - if (i < vivaldi_keybd->num_top_row_keys && key != TK_ABSENT) { - - /* Enable the mask */ - *mask |= BIT(row); - - /* Populate the scancode */ - set_scancode_set2(row, col, action_scancodes[key]); - CPRINTS("VIVALDI key-%u (r-%u, c-%u) = scancode-%X", - i, row, col, action_scancodes[key]); - - if (key == TK_VOL_UP) - set_vol_up_key(row, col); - - } - } -} -DECLARE_HOOK(HOOK_INIT, vivaldi_init, HOOK_PRIO_DEFAULT); |