wcnss: Set PMU register bit to indicate SSR

wcnss subsystem needs to distinguish between device boot up
and subsystem restart during its initialization. Setting this
spare bit in PMU register before reinitializing wcnss would
let the wcnss know whether this is cold boot or SSR

Change-Id: I4e535c0c46a20ddcc02c33b7ecd8d0f7fb1fca7f
Signed-off-by: Sunny Kapdi <sunnyk@codeaurora.org>
Signed-off-by: Ajay Dudani <adudani@codeaurora.org>
diff --git a/arch/arm/mach-msm/wcnss-ssr-8960.c b/arch/arm/mach-msm/wcnss-ssr-8960.c
index 39d0a66..92df9d5 100644
--- a/arch/arm/mach-msm/wcnss-ssr-8960.c
+++ b/arch/arm/mach-msm/wcnss-ssr-8960.c
@@ -31,6 +31,10 @@
 #define MODULE_NAME			"wcnss_8960"
 #define MAX_BUF_SIZE			0x51
 
+static void __iomem *msm_riva_base;
+#define MSM_RIVA_PHYS			0x03204000
+#define RIVA_SSR_OUT			(msm_riva_base + 0x0b4)
+#define RIVA_SSR_BIT			BIT(23)
 
 
 static struct delayed_work cancel_vote_work;
@@ -143,7 +147,20 @@
 	struct platform_device *pdev = wcnss_get_platform_device();
 	struct wcnss_wlan_config *pwlanconfig = wcnss_get_wlan_config();
 	int    ret = -1;
+	u32 reg = 0;
 
+	msm_riva_base = ioremap(MSM_RIVA_PHYS, SZ_256);
+	if (!msm_riva_base) {
+		pr_err("ioremap MSM_RIVA_PHYS failed\n");
+		goto poweron;
+	}
+
+	reg = readl_relaxed(RIVA_SSR_OUT);
+	reg |= RIVA_SSR_BIT;
+	writel_relaxed(reg, RIVA_SSR_OUT);
+	iounmap(msm_riva_base);
+
+poweron:
 	if (pdev && pwlanconfig)
 		ret = wcnss_wlan_power(&pdev->dev, pwlanconfig,
 					WCNSS_WLAN_SWITCH_ON);