diff options
author | davidycchen <davidycchen@google.com> | 2022-05-09 15:10:54 +0800 |
---|---|---|
committer | davidycchen <davidycchen@google.com> | 2022-05-09 15:15:18 +0800 |
commit | 921d8675e43f11ab8ec2b41b22824ba18439bf88 (patch) | |
tree | 1edf1bbad03e168c49cdd9af0254655e5c19d976 | |
parent | dd8ac97f73c32cf96e2690a8b9efb911cccdee98 (diff) | |
download | synaptics_touch-921d8675e43f11ab8ec2b41b22824ba18439bf88.tar.gz |
synaptics: add trace point for touch driver
Add more trace point in the interrupt process so we can have more
detail information when we get the systrace.
Bug: 231409427
Test: trigger systrace and check the perfetto result.
Signed-off-by: davidycchen <davidycchen@google.com>
Change-Id: I439efb3668abf74fee763a9573122e0e91e853c3
-rw-r--r-- | syna_tcm2.c | 22 | ||||
-rw-r--r-- | syna_tcm2.h | 1 |
2 files changed, 23 insertions, 0 deletions
diff --git a/syna_tcm2.c b/syna_tcm2.c index 08be4a2..7f52ec5 100644 --- a/syna_tcm2.c +++ b/syna_tcm2.c @@ -1025,6 +1025,8 @@ static void syna_offload_report(void *handle, int touch_count = 0; int tool_type; + ATRACE_BEGIN("syna_offload_report"); + syna_pal_mutex_lock(&tcm->tp_event_mutex); input_set_timestamp(tcm->input_dev, report->timestamp); @@ -1079,6 +1081,8 @@ static void syna_offload_report(void *handle, syna_update_motion_filter(tcm, touch_count); syna_pal_mutex_unlock(&tcm->tp_event_mutex); + + ATRACE_END(); } static int syna_dev_ptflib_decoder(struct syna_tcm *tcm, const u16 *in_array, @@ -1230,16 +1234,25 @@ static void syna_populate_frame(struct syna_tcm *tcm, bool has_heatmap) frame->header.index = index++; frame->header.timestamp = tcm->coords_timestamp; + ATRACE_BEGIN(__func__); + /* Populate all channels */ for (i = 0; i < frame->num_channels; i++) { if (frame->channel_type[i] == TOUCH_DATA_TYPE_COORD) { + ATRACE_BEGIN("populate coord"); syna_populate_coordinate_channel(tcm, frame, i); + ATRACE_END(); } else if ((frame->channel_type[i] & TOUCH_SCAN_TYPE_MUTUAL) != 0) { + ATRACE_BEGIN("populate mutual data"); syna_populate_mutual_channel(tcm, frame, i, has_heatmap); + ATRACE_END(); } else if ((frame->channel_type[i] & TOUCH_SCAN_TYPE_SELF) != 0) { + ATRACE_BEGIN("populate self data"); syna_populate_self_channel(tcm, frame, i, has_heatmap); + ATRACE_END(); } } + ATRACE_END(); } #endif /* CONFIG_TOUCHSCREEN_OFFLOAD */ @@ -1318,6 +1331,8 @@ static irqreturn_t syna_dev_interrupt_thread(int irq, void *data) struct syna_hw_attn_data *attn = &tcm->hw_if->bdata_attn; struct tcm_dev *tcm_dev = tcm->tcm_dev; + ATRACE_BEGIN(__func__); + cpu_latency_qos_update_request(&tcm->pm_qos_req, 100 /* usec */); /* It is possible that interrupts were disabled while the handler is @@ -1337,6 +1352,7 @@ static irqreturn_t syna_dev_interrupt_thread(int irq, void *data) goto exit; } #endif + ATRACE_BEGIN("get_event_data"); /* retrieve the original report date generated by firmware */ retval = syna_tcm_get_event_data(tcm->tcm_dev, &code, @@ -1345,6 +1361,7 @@ static irqreturn_t syna_dev_interrupt_thread(int irq, void *data) LOGE("Fail to get event data\n"); goto exit; } + ATRACE_END(); #ifdef ENABLE_EXTERNAL_FRAME_PROCESS if (tcm->report_to_queue[code] == EFP_ENABLE) { @@ -1392,7 +1409,9 @@ static irqreturn_t syna_dev_interrupt_thread(int irq, void *data) #endif /* forward the touch event to system */ + ATRACE_BEGIN("report_input_events"); syna_dev_report_input_events(tcm); + ATRACE_END(); } else if (code == tcm->raw_data_report_code) { if (!tcm->raw_data_buffer) { tcm->raw_data_buffer = kmalloc( @@ -1438,7 +1457,9 @@ static irqreturn_t syna_dev_interrupt_thread(int irq, void *data) } #endif #if IS_ENABLED(CONFIG_TOUCHSCREEN_HEATMAP) + ATRACE_BEGIN("heatmap_read"); heatmap_read(&tcm->v4l2, ktime_to_ns(tcm->coords_timestamp)); + ATRACE_END(); #endif break; case REPORT_FW_STATUS: @@ -1457,6 +1478,7 @@ static irqreturn_t syna_dev_interrupt_thread(int irq, void *data) exit: syna_set_bus_ref(tcm, SYNA_BUS_REF_IRQ, false); cpu_latency_qos_update_request(&tcm->pm_qos_req, PM_QOS_DEFAULT_VALUE); + ATRACE_END(); return IRQ_HANDLED; } diff --git a/syna_tcm2.h b/syna_tcm2.h index 89668fc..908ddaa 100644 --- a/syna_tcm2.h +++ b/syna_tcm2.h @@ -58,6 +58,7 @@ #endif #include <linux/pm_qos.h> +#include "../../../gs-google/drivers/soc/google/vh/kernel/systrace.h" #define PLATFORM_DRIVER_NAME "synaptics_tcm" |