summaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
authorWei-Han Chen <stimim@google.com>2018-08-22 12:10:21 +0800
committerchrome-bot <chrome-bot@chromium.org>2018-09-03 08:50:35 -0700
commit5cd66ffe1698b94cb83bb05732af01e95f2f2510 (patch)
tree9cdaa704285cbe0983d16912df2413b2956b7e9a /driver
parent0632d12a3c72a54cad441905820455ed93383c0e (diff)
downloadchrome-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>
Diffstat (limited to 'driver')
-rw-r--r--driver/touchpad_st.c43
-rw-r--r--driver/touchpad_st.h7
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