diff options
author | Wei-Han Chen <stimim@google.com> | 2018-08-22 12:10:21 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-09-03 08:50:35 -0700 |
commit | 5cd66ffe1698b94cb83bb05732af01e95f2f2510 (patch) | |
tree | 9cdaa704285cbe0983d16912df2413b2956b7e9a | |
parent | 0632d12a3c72a54cad441905820455ed93383c0e (diff) | |
download | chrome-ec-5cd66ffe1698b94cb83bb05732af01e95f2f2510.tar.gz |
driver/touchpad_st: add more debug commands
The following new commands are added to help debugging touchpad issues.
+ST_TP_DEBUG_CMD_RESET_TOUCHPAD 0x00
ST_TP_DEBUG_CMD_CALIBRATE 0x01
+ST_TP_DEBUG_CMD_START_SCAN 0x02
+ST_TP_DEBUG_CMD_STOP_SCAN 0x03
+ST_TP_DEBUG_CMD_READ_BUF_HEADER 0x04
+ST_TP_DEBUG_CMD_READ_EVENTS 0x05
BRANCH=none
BUG=b:70482333
TEST=manual on whiskers
Signed-off-by: Wei-Han Chen <stimim@chromium.org>
Change-Id: Id9a604560afda9304329d5ca7c21160df225bf15
Reviewed-on: https://chromium-review.googlesource.com/1184135
Commit-Ready: Nicolas Boichat <drinkcat@chromium.org>
Tested-by: Wei-Han Chen <stimim@chromium.org>
Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
-rw-r--r-- | driver/touchpad_st.c | 43 | ||||
-rw-r--r-- | driver/touchpad_st.h | 7 |
2 files changed, 49 insertions, 1 deletions
diff --git a/driver/touchpad_st.c b/driver/touchpad_st.c index bcf186b7ae..b933a12723 100644 --- a/driver/touchpad_st.c +++ b/driver/touchpad_st.c @@ -594,6 +594,7 @@ static void st_tp_init(void) st_tp_start_scan(); } +DECLARE_DEFERRED(st_tp_init); #ifdef CONFIG_USB_UPDATE int touchpad_get_info(struct touchpad_info *tp) @@ -900,16 +901,58 @@ int touchpad_update_write(int offset, int size, const uint8_t *data) int touchpad_debug(const uint8_t *param, unsigned int param_size, uint8_t **data, unsigned int *data_size) { + static uint8_t buf[8]; + int num_events; + if (param_size != 1) return EC_RES_INVALID_PARAM; switch (*param) { + case ST_TP_DEBUG_CMD_RESET_TOUCHPAD: + *data = NULL; + *data_size = 0; + st_tp_stop_scan(); + hook_call_deferred(&st_tp_init_data, 100 * MSEC); + return EC_SUCCESS; case ST_TP_DEBUG_CMD_CALIBRATE: /* no return value */ *data = NULL; *data_size = 0; st_tp_full_initialize_start(); return EC_SUCCESS; + case ST_TP_DEBUG_CMD_START_SCAN: + *data = NULL; + *data_size = 0; + st_tp_start_scan(); + return EC_SUCCESS; + case ST_TP_DEBUG_CMD_STOP_SCAN: + *data = NULL; + *data_size = 0; + st_tp_stop_scan(); + return EC_SUCCESS; + case ST_TP_DEBUG_CMD_READ_BUF_HEADER: + *data = buf; + *data_size = 8; + st_tp_read_host_buffer_header(); + memcpy(buf, rx_buf.bytes, *data_size); + CPRINTS("header: %.*h", *data_size, buf); + return EC_SUCCESS; + case ST_TP_DEBUG_CMD_READ_EVENTS: + num_events = st_tp_read_all_events(); + if (num_events) { + int i; + + for (i = 0; i < num_events; i++) { + CPRINTS("event[%d]: id=%d, type=%d", + i, rx_buf.events[i].evt_id, + rx_buf.events[i].report.report_type); + } + } + *data = buf; + *data_size = 1; + *data[0] = num_events; + st_tp_send_ack(); + return EC_SUCCESS; } return EC_RES_INVALID_PARAM; } diff --git a/driver/touchpad_st.h b/driver/touchpad_st.h index 286c39cbab..1d642eb48e 100644 --- a/driver/touchpad_st.h +++ b/driver/touchpad_st.h @@ -240,7 +240,12 @@ enum ST_TP_MODE { HEAT_MAP_MODE, }; -#define ST_TP_DEBUG_CMD_CALIBRATE 0x1 +#define ST_TP_DEBUG_CMD_RESET_TOUCHPAD 0x00 +#define ST_TP_DEBUG_CMD_CALIBRATE 0x01 +#define ST_TP_DEBUG_CMD_START_SCAN 0x02 +#define ST_TP_DEBUG_CMD_STOP_SCAN 0x03 +#define ST_TP_DEBUG_CMD_READ_BUF_HEADER 0x04 +#define ST_TP_DEBUG_CMD_READ_EVENTS 0x05 #define ST_TP_HEAT_MAP_THRESHOLD 10 |