From 9157996e3713ac5c774196151539c2925db715c7 Mon Sep 17 00:00:00 2001 From: Tommy Chung Date: Wed, 31 Aug 2022 17:16:28 +0800 Subject: dojo: Add keyboard factory test BUG=none BRANCH=cherry TEST=make sure that `ectool kbfactory test` works. Signed-off-by: Tommy Chung Change-Id: I7189a240e3e21cbaed04ce3cfbfe36192e643bf3 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3865212 Reviewed-by: Ting Shen Reviewed-by: Devin Lu --- board/dojo/board.c | 25 +++++++++++++++++++++++++ board/dojo/board.h | 2 ++ board/dojo/gpio.inc | 6 ++++++ 3 files changed, 33 insertions(+) diff --git a/board/dojo/board.c b/board/dojo/board.c index 5d2aa78f2b..a53c2af881 100644 --- a/board/dojo/board.c +++ b/board/dojo/board.c @@ -50,6 +50,31 @@ __override struct keyboard_scan_config keyscan_config = { }, }; +/* Support keyboard factory test */ +#ifdef CONFIG_KEYBOARD_FACTORY_TEST +/* + * Map keyboard connector pins to EC GPIO pins for factory test. + * Pins mapped to {-1, -1} are skipped. + * The connector has 30 pins total, and there is no pin 0. + */ +const int keyboard_factory_scan_pins[][2] = { + { -1, -1 }, { GPIO_KSO_H, 4 }, { GPIO_KSO_H, 0 }, + { GPIO_KSO_H, 1 }, { GPIO_KSO_H, 3 }, { GPIO_KSO_H, 2 }, + { -1, -1 }, { -1, -1 }, { GPIO_KSO_L, 5 }, + { GPIO_KSO_L, 6 }, { -1, -1 }, { GPIO_KSO_L, 3 }, + { GPIO_KSO_L, 2 }, { GPIO_KSI, 0 }, { GPIO_KSO_L, 1 }, + { GPIO_KSO_L, 4 }, { GPIO_KSI, 3 }, { GPIO_KSI, 2 }, + { GPIO_KSO_L, 0 }, { GPIO_KSI, 5 }, { GPIO_KSI, 4 }, + { GPIO_KSO_L, 7 }, { GPIO_KSI, 6 }, { GPIO_KSI, 7 }, + { GPIO_KSI, 1 }, { -1, -1 }, { GPIO_KSO_H, 5 }, + { -1, -1 }, { GPIO_KSO_H, 6 }, { -1, -1 }, + { -1, -1 }, +}; + +const int keyboard_factory_scan_pins_used = + ARRAY_SIZE(keyboard_factory_scan_pins); +#endif + /* Vol-up key matrix at T13 */ const struct vol_up_key vol_up_key_matrix_T13 = { .row = 3, diff --git a/board/dojo/board.h b/board/dojo/board.h index 7c09649759..160d98d3ff 100644 --- a/board/dojo/board.h +++ b/board/dojo/board.h @@ -53,6 +53,8 @@ /* Keyboard */ #define CONFIG_KEYBOARD_REFRESH_ROW3 +#define CONFIG_KEYBOARD_FACTORY_TEST +#define GPIO_KBD_KSO2 GPIO_EC_KSO_02_INV /* Sensor */ #define CONFIG_GMR_TABLET_MODE diff --git a/board/dojo/gpio.inc b/board/dojo/gpio.inc index c215d3f5d4..01cf57258d 100644 --- a/board/dojo/gpio.inc +++ b/board/dojo/gpio.inc @@ -118,6 +118,12 @@ ALTERNATE(PIN_MASK(I, 0b11001001), 0, MODULE_ADC, 0) /* ADC 0,3,6,7 */ /* SPI */ ALTERNATE(PIN_MASK(M, 0x33), 0, MODULE_SPI, 0) /* SPI */ +/* KEYBOARD */ +ALTERNATE(PIN_MASK(KSI, 0xFF), 0, MODULE_KEYBOARD_SCAN, 0) /* KSI0-7 */ +ALTERNATE(PIN_MASK(KSO_H, 0xFF), 0, MODULE_KEYBOARD_SCAN, 0) /* KSO8-15 */ +ALTERNATE(PIN_MASK(KSO_L, 0xFB), 0, MODULE_KEYBOARD_SCAN, 0) /* KSO0-1, 3-7 */ +GPIO(EC_KSO_02_INV, PIN(KSO_L, 2), GPIO_OUT_HIGH) /* KSO2 inverted */ + /* Unimplemented Pins */ GPIO(PG_PP5000_S5_OD, PIN(D, 2), GPIO_INPUT) /* *_ODL pin has external pullup so don't pull it down. */ -- cgit v1.2.1