wlan:  Update Wakelock apis fix for kernel 4.19

Wakelock apis have been changed for kernel 4.19,
to support these changes update the wakelock apis in
driver as well.

Change-Id: Ifcd8fea28b85cee64377de347bc2a5f5bf2d9e43
CRs-Fixed: 2888815
diff --git a/CORE/VOSS/inc/i_vos_lock.h b/CORE/VOSS/inc/i_vos_lock.h
index cc213f7..804733c 100644
--- a/CORE/VOSS/inc/i_vos_lock.h
+++ b/CORE/VOSS/inc/i_vos_lock.h
@@ -77,8 +77,17 @@
 typedef spinlock_t vos_spin_lock_t;
 
 #if defined(WLAN_OPEN_SOURCE)
+
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
-typedef struct wakeup_source vos_wake_lock_t;
+/**
+ * typedef struct - vos_wake_lock_t
+ * @lock: this lock needs to be used in kernel version < 4.19
+ * @priv: this lock pointer needs to be used in kernel version >= 4.19
+ */
+typedef struct vos_wake_lock {
+	struct wakeup_source lock;
+	struct wakeup_source *priv;
+} vos_wake_lock_t;
 #else
 typedef struct wake_lock vos_wake_lock_t;
 #endif
diff --git a/CORE/VOSS/src/vos_lock.c b/CORE/VOSS/src/vos_lock.c
index aaa9e50..c8b3bbf 100644
--- a/CORE/VOSS/src/vos_lock.c
+++ b/CORE/VOSS/src/vos_lock.c
@@ -482,11 +482,27 @@
    return VOS_STATUS_SUCCESS;
 }
 
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 110)) || \
+	defined(WAKEUP_SOURCE_DEV)
+VOS_STATUS vos_wake_lock_init(vos_wake_lock_t *lock, const char *name)
+{
+	vos_mem_zero(lock, sizeof(*lock));
+	lock->priv = wakeup_source_register(lock->lock.dev, name);
+	if (!(lock->priv)) {
+		VOS_BUG(0);
+		return VOS_STATUS_E_FAILURE;
+	}
+
+	lock->lock = *(lock->priv);
+
+	return VOS_STATUS_SUCCESS;
+}
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \
 	defined(WLAN_OPEN_SOURCE)
 VOS_STATUS vos_wake_lock_init(vos_wake_lock_t *pLock, const char *name)
 {
-	wakeup_source_init(pLock, name);
+	wakeup_source_init(&pLock->lock, name);
+	pLock->priv = &(pLock->lock);
 	return VOS_STATUS_SUCCESS;
 }
 #else
@@ -513,8 +529,8 @@
 	defined(WLAN_OPEN_SOURCE)
 static const char *vos_wake_lock_name(vos_wake_lock_t *pLock)
 {
-	if (pLock->name)
-		return pLock->name;
+	if (pLock)
+		return pLock->lock.name;
 
 	return "UNNAMED_WAKELOCK";
 }
@@ -548,7 +564,7 @@
 	vos_log_wlock_diag(reason, vos_wake_lock_name(pLock),
 			   WIFI_POWER_EVENT_DEFAULT_WAKELOCK_TIMEOUT,
 			   WIFI_POWER_EVENT_WAKELOCK_TAKEN);
-	__pm_stay_awake(pLock);
+	__pm_stay_awake(pLock->priv);
 	return VOS_STATUS_SUCCESS;
 }
 #else
@@ -586,7 +602,7 @@
 	 * Wakelock for Rx is frequent.
 	 * It is reported only during active debug
 	 */
-	__pm_wakeup_event(pLock, msec);
+	__pm_wakeup_event(pLock->priv, msec);
 	return VOS_STATUS_SUCCESS;
 }
 #else
@@ -630,7 +646,7 @@
 	vos_log_wlock_diag(reason, vos_wake_lock_name(pLock),
 			   WIFI_POWER_EVENT_DEFAULT_WAKELOCK_TIMEOUT,
 			   WIFI_POWER_EVENT_WAKELOCK_RELEASED);
-	__pm_relax(pLock);
+	__pm_relax(pLock->priv);
 	return VOS_STATUS_SUCCESS;
 }
 #else
@@ -660,11 +676,19 @@
 }
 #endif
 
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 110)) || \
+	defined(WAKEUP_SOURCE_DEV)
+VOS_STATUS vos_wake_lock_destroy(vos_wake_lock_t *lock)
+{
+	wakeup_source_unregister(lock->priv);
+	return VOS_STATUS_SUCCESS;
+}
+
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \
 	defined(WLAN_OPEN_SOURCE)
 VOS_STATUS vos_wake_lock_destroy(vos_wake_lock_t *pLock)
 {
-	wakeup_source_trash(pLock);
+	wakeup_source_trash(pLock->priv);
 	return VOS_STATUS_SUCCESS;
 }
 #else
@@ -691,7 +715,7 @@
 	defined(WLAN_OPEN_SOURCE)
 bool vos_wake_lock_active(vos_wake_lock_t *lock)
 {
-	return lock->active;
+	return lock->priv->active;
 }
 #else
 bool vos_wake_lock_active(vos_wake_lock_t *lock)