Event: Add more logs for event queue status.

Bug: 221696264
Test: CTS and GCA
Signed-off-by: Nick Chung <nickchung@google.com>
Change-Id: I5d47675108eb8b38f26e801f5ba7ef4af2c937e4
diff --git a/lwis_event.c b/lwis_event.c
index 5702e17..53fdfb8 100644
--- a/lwis_event.c
+++ b/lwis_event.c
@@ -552,6 +552,9 @@
 				       struct lwis_event_entry *event)
 {
 	unsigned long flags;
+	int64_t timestamp_diff;
+	int64_t current_timestamp;
+	struct lwis_event_entry *first_event;
 
 	if (!event) {
 		dev_err(lwis_client->lwis_dev->dev, "NULL event provided\n");
@@ -561,6 +564,14 @@
 	spin_lock_irqsave(&lwis_client->event_lock, flags);
 
 	if (lwis_client->event_queue_size >= MAX_NUM_PENDING_EVENTS) {
+		/* Get the front of the list */
+		first_event =
+			list_first_entry(&lwis_client->event_queue, struct lwis_event_entry, node);
+		current_timestamp = lwis_get_time();
+		timestamp_diff = ktime_sub(current_timestamp, first_event->event_info.timestamp_ns);
+		lwis_dev_err_ratelimited(lwis_client->lwis_dev->dev,
+			"First event in queue ID: 0x%llx, current timestamp %lld ns, diff: %lld ns\n",
+			event->event_info.event_id, current_timestamp, timestamp_diff);
 		spin_unlock_irqrestore(&lwis_client->event_lock, flags);
 		/* Send an error event to userspace to handle the overflow */
 		lwis_device_error_event_emit(lwis_client->lwis_dev,