diff options
author | Ravi Jain <raviajain@google.com> | 2022-12-26 19:57:48 +0800 |
---|---|---|
committer | Ravi Jain <raviajain@google.com> | 2023-01-06 15:12:50 +0800 |
commit | ce0dc3998a30a8c41a4e4777949276dacb81b3e4 (patch) | |
tree | af7afbe76875394dd24c956fb6f022cf29b0e538 /goodix_ts_core.c | |
parent | 6a00707d925e6c7640a415982fa79c9413537034 (diff) | |
download | goodix_touch-ce0dc3998a30a8c41a4e4777949276dacb81b3e4.tar.gz |
touch: goodix: Update report stylus eventandroid-13.0.0_r0.93android-13.0.0_r0.92android-13.0.0_r0.85android-13.0.0_r0.84android-13.0.0_r0.83android-13.0.0_r0.82android-13.0.0_r0.127android-13.0.0_r0.126android-13.0.0_r0.125android-13.0.0_r0.124android-13.0.0_r0.123android-13.0.0_r0.121android-13.0.0_r0.117android-13.0.0_r0.116android-13.0.0_r0.115android-13.0.0_r0.114android-13.0.0_r0.113android-13.0.0_r0.112android-13.0.0_r0.107android-13.0.0_r0.106android-13.0.0_r0.105android-13.0.0_r0.104android-13.0.0_r0.103android-13.0.0_r0.100android-gs-tangorpro-5.10-android13-qpr3android-gs-raviole-5.10-android13-qpr3android-gs-pantah-5.10-android13-qpr3android-gs-lynx-5.10-android13-qpr3android-gs-felix-5.10-android13-qpr3-candroid-gs-felix-5.10-android13-qpr3android-gs-felix-5.10-android13-d3android-gs-bluejay-5.10-android13-qpr3
- Fix pen pressure algo
- Report entry timestamp to input subsystem
- Add systrace node
Test: Tested by flashing locally
Bug: 262478113
Bug: 263444046
Change-Id: I4fb791708b2893cb74ccdc050cb1732f96414b33
Signed-off-by: Ravi Jain <raviajain@google.com>
Diffstat (limited to 'goodix_ts_core.c')
-rw-r--r-- | goodix_ts_core.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/goodix_ts_core.c b/goodix_ts_core.c index ae3e54a..bf17f08 100644 --- a/goodix_ts_core.c +++ b/goodix_ts_core.c @@ -1556,15 +1556,25 @@ static int goodix_parse_dt( #endif static void goodix_ts_report_pen( - struct input_dev *dev, struct goodix_pen_data *pen_data) + struct goodix_ts_core *cd, struct goodix_pen_data *pen_data) { + struct input_dev *dev = cd->pen_dev; int i; static unsigned int pen_pressure; struct goodix_hid_hogp *hogp; + char trace_tag[128]; + ktime_t pen_ktime; mutex_lock(&dev->mutex); + input_set_timestamp(dev, cd->coords_timestamp); + pen_ktime = ktime_get(); if (pen_data->coords.status == TS_TOUCH) { + scnprintf(trace_tag, sizeof(trace_tag), + "stylus-active: IN_TS=%lld TS=%lld DELTA=%lld ns.\n", + ktime_to_ns(cd->coords_timestamp), ktime_to_ns(pen_ktime), + ktime_to_ns(ktime_sub(pen_ktime, cd->coords_timestamp))); + ATRACE_BEGIN(trace_tag); input_report_key(dev, BTN_TOUCH, 1); input_report_key(dev, pen_data->coords.tool_type, 1); input_report_abs(dev, ABS_X, pen_data->coords.x); @@ -1579,7 +1589,8 @@ static void goodix_ts_report_pen( goodix_ble_data.hogp_ready = 0; mutex_unlock(&goodix_ble_data.lock); - pen_data->coords.p = pen_pressure; + if (pen_data->coords.p && pen_pressure) + pen_data->coords.p = pen_pressure; input_report_abs(dev, ABS_PRESSURE, pen_data->coords.p); if (pen_data->coords.p == 0) input_report_abs(dev, ABS_DISTANCE, 1); @@ -1595,6 +1606,11 @@ static void goodix_ts_report_pen( pen_data->keys[0].status == TS_TOUCH ? 1 : 0, pen_data->keys[1].status == TS_TOUCH ? 1 : 0); } else { + scnprintf(trace_tag, sizeof(trace_tag), + "stylus-inactive: IN_TS=%lld TS=%lld DELTA=%lld ns.\n", + ktime_to_ns(cd->coords_timestamp), ktime_to_ns(pen_ktime), + ktime_to_ns(ktime_sub(pen_ktime, cd->coords_timestamp))); + ATRACE_BEGIN(trace_tag); pen_pressure = 0; input_report_key(dev, BTN_TOUCH, 0); input_report_key(dev, pen_data->coords.tool_type, 0); @@ -1606,8 +1622,8 @@ static void goodix_ts_report_pen( else input_report_key(dev, pen_data->keys[i].code, 0); } - input_sync(dev); + ATRACE_END(); mutex_unlock(&dev->mutex); } @@ -1916,8 +1932,8 @@ static irqreturn_t goodix_ts_threadirq_func(int irq, void *data) } if (core_data->board_data.pen_enable && ts_event->event_type & EVENT_PEN) { - goodix_ts_report_pen( - core_data->pen_dev, &ts_event->pen_data); + core_data->coords_timestamp = core_data->isr_timestamp; + goodix_ts_report_pen(core_data, &ts_event->pen_data); } if (ts_event->event_type & EVENT_REQUEST) goodix_ts_request_handle(core_data, ts_event); |