summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael5 Chen <michael5_chen1@pegatron.corp-partner.google.com>2020-12-17 21:52:08 +0800
committerCommit Bot <commit-bot@chromium.org>2020-12-22 02:32:55 +0000
commitf4433328164d2a57dfe9dd0b0ae908e6786f1852 (patch)
tree799a2e7b8cc1377a0a744d0480bc81bc6bdd2e50
parent453c5bca2181c26697042ff0512ab045cc46f338 (diff)
downloadchrome-ec-f4433328164d2a57dfe9dd0b0ae908e6786f1852.tar.gz
galtic: Implement keyboard function.
The galtic/galnat keyboard without keyboard numpad. The galith keyboard with keyboard numpad. BUG=b:175857578 BRANCH=dedede TEST=make BOARD=galtic Signed-off-by: Michael5 Chen <michael5_chen1@pegatron.corp-partner.google.com> Change-Id: I6c143105e67fab207ef50be87ea06caa22e59107 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2597128 Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
-rw-r--r--baseboard/dedede/cbi_fw_config.c6
-rw-r--r--baseboard/dedede/cbi_fw_config.h11
-rw-r--r--board/galtic/board.c56
-rw-r--r--board/galtic/board.h5
4 files changed, 78 insertions, 0 deletions
diff --git a/baseboard/dedede/cbi_fw_config.c b/baseboard/dedede/cbi_fw_config.c
index 62b582e3b9..6f54632260 100644
--- a/baseboard/dedede/cbi_fw_config.c
+++ b/baseboard/dedede/cbi_fw_config.c
@@ -50,3 +50,9 @@ int get_cbi_fw_config_keyboard(void)
return ((cached_fw_config & FW_CONFIG_KB_LAYOUT_MASK)
>> FW_CONFIG_KB_LAYOUT_OFFSET);
}
+
+enum fw_config_numeric_pad_type get_cbi_fw_config_numeric_pad(void)
+{
+ return ((cached_fw_config & FW_CONFIG_KB_NUMPAD_MASK)
+ >> FW_CONFIG_KB_NUMPAD_OFFSET);
+}
diff --git a/baseboard/dedede/cbi_fw_config.h b/baseboard/dedede/cbi_fw_config.h
index 8c10df03e3..f9c2c03d5d 100644
--- a/baseboard/dedede/cbi_fw_config.h
+++ b/baseboard/dedede/cbi_fw_config.h
@@ -34,6 +34,16 @@ enum fw_config_kblight_type {
#define FW_CONFIG_KB_BL_MASK GENMASK(8, 8)
/*
+ * Keyboard numeric pad (1 bit)
+ */
+enum fw_config_numeric_pad_type {
+ NUMERIC_PAD_ABSENT = 0,
+ NUMERIC_PAD_PRESENT = 1,
+};
+#define FW_CONFIG_KB_NUMPAD_OFFSET 9
+#define FW_CONFIG_KB_NUMPAD_MASK GENMASK(9, 9)
+
+/*
* Tablet Mode (1 bit)
*/
enum fw_config_tablet_mode_type {
@@ -49,6 +59,7 @@ enum fw_config_tablet_mode_type {
enum fw_config_db get_cbi_fw_config_db(void);
enum fw_config_kblight_type get_cbi_fw_config_kblight(void);
enum fw_config_tablet_mode_type get_cbi_fw_config_tablet_mode(void);
+enum fw_config_numeric_pad_type get_cbi_fw_config_numeric_pad(void);
int get_cbi_fw_config_keyboard(void);
diff --git a/board/galtic/board.c b/board/galtic/board.c
index 1ed1511ab6..b0f52fb21a 100644
--- a/board/galtic/board.c
+++ b/board/galtic/board.c
@@ -7,6 +7,7 @@
#include "adc_chip.h"
#include "button.h"
+#include "cbi_fw_config.h"
#include "charge_manager.h"
#include "charge_state_v2.h"
#include "charger.h"
@@ -21,6 +22,7 @@
#include "gpio.h"
#include "hooks.h"
#include "intc.h"
+#include "keyboard_raw.h"
#include "keyboard_scan.h"
#include "lid_switch.h"
#include "power.h"
@@ -234,6 +236,49 @@ const struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_MAX_COUNT] = {
},
};
+static const struct ec_response_keybd_config galith_kb = {
+ .num_top_row_keys = 10,
+ .action_keys = {
+ TK_BACK, /* T1 */
+ TK_REFRESH, /* T2 */
+ TK_FULLSCREEN, /* T3 */
+ TK_OVERVIEW, /* T4 */
+ TK_SNAPSHOT, /* T5 */
+ TK_BRIGHTNESS_DOWN, /* T6 */
+ TK_BRIGHTNESS_UP, /* T7 */
+ TK_VOL_MUTE, /* T8 */
+ TK_VOL_DOWN, /* T9 */
+ TK_VOL_UP, /* T10 */
+ },
+ .capabilities = KEYBD_CAP_SCRNLOCK_KEY | KEYBD_CAP_NUMERIC_KEYPAD,
+};
+
+static const struct ec_response_keybd_config galtic_kb = {
+ .num_top_row_keys = 10,
+ .action_keys = {
+ TK_BACK, /* T1 */
+ TK_FORWARD, /* T2 */
+ TK_REFRESH, /* T3 */
+ TK_FULLSCREEN, /* T4 */
+ TK_SNAPSHOT, /* T5 */
+ TK_BRIGHTNESS_DOWN, /* T6 */
+ TK_BRIGHTNESS_UP, /* T7 */
+ TK_VOL_MUTE, /* T8 */
+ TK_VOL_DOWN, /* T9 */
+ TK_VOL_UP, /* T10 */
+ },
+ .capabilities = KEYBD_CAP_SCRNLOCK_KEY,
+};
+
+__override const struct ec_response_keybd_config
+*board_vivaldi_keybd_config(void)
+{
+ if (get_cbi_fw_config_numeric_pad() == NUMERIC_PAD_PRESENT)
+ return &galith_kb;
+ else
+ return &galtic_kb;
+}
+
void board_init(void)
{
int on;
@@ -258,6 +303,17 @@ void board_init(void)
on = chipset_in_state(CHIPSET_STATE_ON | CHIPSET_STATE_ANY_SUSPEND |
CHIPSET_STATE_SOFT_OFF);
board_power_5v_enable(on);
+
+ if (get_cbi_fw_config_numeric_pad() == NUMERIC_PAD_ABSENT) {
+ /* Disable scanning KSO13 and 14 if keypad isn't present. */
+ keyboard_raw_set_cols(KEYBOARD_COLS_NO_KEYPAD);
+ } else {
+ /* Setting scan mask KSO11, KSO12, KSO13 and KSO14 */
+ keyscan_config.actual_key_mask[11] = 0xfe;
+ keyscan_config.actual_key_mask[12] = 0xff;
+ keyscan_config.actual_key_mask[13] = 0xff;
+ keyscan_config.actual_key_mask[14] = 0xff;
+ }
}
DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
diff --git a/board/galtic/board.h b/board/galtic/board.h
index f152dba213..c5e15f757b 100644
--- a/board/galtic/board.h
+++ b/board/galtic/board.h
@@ -83,6 +83,11 @@
#define CONFIG_USBC_RETIMER_TUSB544 /* C1 Redriver: TUSB544 */
+/* Keyboard */
+#define CONFIG_KEYBOARD_VIVALDI
+#define CONFIG_KEYBOARD_REFRESH_ROW3
+#define CONFIG_KEYBOARD_KEYPAD
+
#ifndef __ASSEMBLER__
#include "gpio_signal.h"