wlan: Qtimer for Apps

Need to sync logs between WLAN HOST driver and Firmware driver
running on WCNSS. Since WCNSS is using QTIMER tick, we want
to use API in kernel to capture QTIMER ticks.

CRs-Fixed: 874476
Change-Id: I3ada286a91712f8f34383007935e5cf640b2e9e5
diff --git a/CORE/SVC/src/logging/wlan_logging_sock_svc.c b/CORE/SVC/src/logging/wlan_logging_sock_svc.c
index 758b9b1..d236ea4 100755
--- a/CORE/SVC/src/logging/wlan_logging_sock_svc.c
+++ b/CORE/SVC/src/logging/wlan_logging_sock_svc.c
@@ -41,6 +41,7 @@
 #include <kthread.h>
 #include "vos_memory.h"
 #include <linux/ratelimit.h>
+#include <asm/arch_timer.h>
 
 #define LOGGING_TRACE(level, args...) \
 		VOS_TRACE(VOS_MODULE_ID_SVC, level, ## args)
@@ -64,6 +65,9 @@
 #define NL_BDCAST_RATELIMIT_INTERVAL (5*HZ)
 #define NL_BDCAST_RATELIMIT_BURST    1
 
+/* Qtimer Frequency */
+#define QTIMER_FREQ      19200000
+
 static DEFINE_RATELIMIT_STATE(errCnt,		\
 		NL_BDCAST_RATELIMIT_INTERVAL,	\
 		NL_BDCAST_RATELIMIT_BURST);
@@ -322,16 +326,17 @@
 {
 	/* Add the current time stamp */
 	char *ptr;
-	char tbuf[50];
+	char tbuf[100];
 	int tlen;
 	int total_log_len;
 	unsigned int *pfilled_length;
 	bool wake_up_thread = false;
 	unsigned long flags;
 
-	struct timeval tv;
-	struct rtc_time tm;
+	struct timeval tv,qtv;
+	struct rtc_time tm,qtm;
 	unsigned long local_time;
+        u64 qtimer_ticks;
 
 	if (!vos_is_multicast_logging()) {
 		/*
@@ -351,10 +356,17 @@
 	/* Convert rtc to local time */
 	local_time = (u32)(tv.tv_sec - (sys_tz.tz_minuteswest * 60));
 	rtc_time_to_tm(local_time, &tm);
-	tlen = snprintf(tbuf, sizeof(tbuf), "[%s] [%02d:%02d:%02d.%06lu] ",
-			current->comm, tm.tm_hour, tm.tm_min, tm.tm_sec,
-			tv.tv_usec);
+        /* Firmware Time Stamp */
+        qtimer_ticks =  arch_counter_get_cntpct();
+        qtv.tv_sec = (qtimer_ticks / QTIMER_FREQ);
+        qtv.tv_usec = ((qtimer_ticks % QTIMER_FREQ) * 1000 * 1000);
+        local_time = (u32)(qtv.tv_sec - (sys_tz.tz_minuteswest * 60));
+        rtc_time_to_tm(local_time, &qtm);
 
+        tlen = snprintf(tbuf, sizeof(tbuf), "[%s] [%02d:%02d:%02d.%06lu] FW: "
+            "[%02d:%02d:%02d.%06lu] ",current->comm,tm.tm_hour,tm.tm_min,
+                tm.tm_sec,tv.tv_usec,qtm.tm_hour,qtm.tm_min, qtm.tm_sec,
+                    qtv.tv_usec);
 	/* 1+1 indicate '\n'+'\0' */
 	total_log_len = length + tlen + 1 + 1;