summaryrefslogtreecommitdiff
path: root/common/keyboard_scan.c
diff options
context:
space:
mode:
authorDevn Lu <Devin.lu@quantatw.com>2016-03-14 15:23:05 +0800
committerchrome-bot <chrome-bot@chromium.org>2016-04-01 00:21:35 -0700
commit93be0c3b0ac3ed49d7d1d99c5ace8cd0487de7f5 (patch)
treed1862b3dbd160bd2983f1a966047c5830d0f7346 /common/keyboard_scan.c
parent55cd6e4c75895c5727ea6fd87b047a39a8730490 (diff)
downloadchrome-ec-93be0c3b0ac3ed49d7d1d99c5ace8cd0487de7f5.tar.gz
ectool: Support keyboard factory scanning
This is keyboard test mechanism request for "multiple key press test", we can thru the testing to scan out kso ksi pins shortting or keyboard has multiple key pressing, below was the testing steps: 1. Turn off internal keyboard scan function. 2. Set all scan & sense pins to input and internal push up. 3. Set start one pin to output low. 4. check other pins status if any sense low level. 5. repeat step 3~4 for all keyboard KSO/KSI pins. 6. Turn on internal keyboard scan function. BUG=chrome-os-partner:49235 BRANCH=ToT TEST=manual Short any KSO or KSI pins and excute "ectool kbfactorytest", it shows failed. if no pins short together, it shows passed. Change-Id: Id2c4310d45e892aebc6d2c0795db22eba5a30641 Signed-off-by: Devin Lu <Devin.Lu@quantatw.com> Reviewed-on: https://chromium-review.googlesource.com/332322 Reviewed-by: Shawn N <shawnn@chromium.org>
Diffstat (limited to 'common/keyboard_scan.c')
-rw-r--r--common/keyboard_scan.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/common/keyboard_scan.c b/common/keyboard_scan.c
index cad5bb559a..cf046b86e4 100644
--- a/common/keyboard_scan.c
+++ b/common/keyboard_scan.c
@@ -748,6 +748,30 @@ DECLARE_HOST_COMMAND(EC_CMD_MKBP_SIMULATE_KEY,
mkbp_command_simulate_key,
EC_VER_MASK(0));
+#ifdef CONFIG_KEYBOARD_FACTORY_TEST
+static int keyboard_factory_test(struct host_cmd_handler_args *args)
+{
+ struct ec_response_keyboard_factory_test *r = args->response;
+
+ /* Only available on unlocked systems */
+ if (system_is_locked())
+ return EC_RES_ACCESS_DENIED;
+
+ if (keyboard_factory_scan_pins_used == 0)
+ return EC_RES_INVALID_COMMAND;
+
+ r->shorted = keyboard_factory_test_scan();
+
+ args->response_size = sizeof(*r);
+
+ return EC_RES_SUCCESS;
+}
+
+DECLARE_HOST_COMMAND(EC_CMD_KEYBOARD_FACTORY_TEST,
+ keyboard_factory_test,
+ EC_VER_MASK(0));
+#endif
+
/*****************************************************************************/
/* Console commands */
#ifdef CONFIG_CMD_KEYBOARD