summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordavidycchen <davidycchen@google.com>2021-11-09 16:58:08 +0800
committerDavid Chen <davidycchen@google.com>2021-11-09 09:00:55 +0000
commitdea276d4993ea7d25974b32330bc0d244c529cb4 (patch)
tree96a2b952df32729cf4b8906791e1972491628b53
parentee84406952a0968ddc7161a0e233efc2ec1054e8 (diff)
downloadsynaptics_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.c18
-rw-r--r--syna_tcm2.h3
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;