diff options
author | davidycchen <davidycchen@google.com> | 2021-11-09 16:58:08 +0800 |
---|---|---|
committer | David Chen <davidycchen@google.com> | 2021-11-09 09:00:55 +0000 |
commit | dea276d4993ea7d25974b32330bc0d244c529cb4 (patch) | |
tree | 96a2b952df32729cf4b8906791e1972491628b53 | |
parent | ee84406952a0968ddc7161a0e233efc2ec1054e8 (diff) | |
download | synaptics_touch-dea276d4993ea7d25974b32330bc0d244c529cb4.tar.gz |
synaptics: report input timestamp
Bug: 199104313
Test: touch is workable.
Signed-off-by: davidycchen <davidycchen@google.com>
Change-Id: I4d1f4f59c79dec32bcc3cac816041564cbf8d0b2
-rw-r--r-- | syna_tcm2.c | 18 | ||||
-rw-r--r-- | syna_tcm2.h | 3 |
2 files changed, 17 insertions, 4 deletions
diff --git a/syna_tcm2.c b/syna_tcm2.c index 07e9677..8d1abec 100644 --- a/syna_tcm2.c +++ b/syna_tcm2.c @@ -389,6 +389,7 @@ static void syna_dev_report_input_events(struct syna_tcm *tcm) #endif } + input_set_timestamp(input_dev, tcm->timestamp); input_sync(input_dev); exit: @@ -589,8 +590,17 @@ exit: return retval; } +static irqreturn_t syna_dev_isr(int irq, void *handle) +{ + struct syna_tcm *tcm = handle; + + tcm->timestamp = ktime_get(); + + return IRQ_WAKE_THREAD; +} + /** - * syna_dev_isr() + * syna_dev_interrupt_thread() * * This is the function to be called when the interrupt is asserted. * The purposes of this handler is to read events generated by device and @@ -603,7 +613,7 @@ exit: * @return * on success, 0; otherwise, negative value on error. */ -static irqreturn_t syna_dev_isr(int irq, void *data) +static irqreturn_t syna_dev_interrupt_thread(int irq, void *data) { int retval; unsigned char code = 0; @@ -704,15 +714,15 @@ static int syna_dev_request_irq(struct syna_tcm *tcm) #ifdef DEV_MANAGED_API retval = devm_request_threaded_irq(dev, attn->irq_id, - NULL, syna_dev_isr, + syna_dev_interrupt_thread, attn->irq_flags, PLATFORM_DRIVER_NAME, tcm); #else /* Legacy API */ retval = request_threaded_irq(attn->irq_id, - NULL, syna_dev_isr, + syna_dev_interrupt_thread, attn->irq_flags, PLATFORM_DRIVER_NAME, tcm); diff --git a/syna_tcm2.h b/syna_tcm2.h index 22bdf42..1e78c3d 100644 --- a/syna_tcm2.h +++ b/syna_tcm2.h @@ -339,6 +339,9 @@ struct syna_tcm { u32 bus_refmask; struct mutex bus_mutex; ktime_t bugreport_ktime_start; + ktime_t timestamp; /* Time that the event was first received from the + * touch IC, acquired during hard interrupt, in + * CLOCK_MONOTONIC */ /* IOCTL-related variables */ pid_t proc_pid; |