wcnss: Add interface to Reset wcnss
Add wcnss reset interface, this interface generates an FIQ to Riva.
Upon receiving this interrupt, Riva will execute the ERR_FATAL
routine and invoke SSR.
Conflicts:
drivers/net/wireless/wcnss/wcnss_wlan.c
include/linux/wcnss_wlan.h
Change-Id: I74c293121cb69b312ed980902a12019adb700792
Signed-off-by: Sameer Thalappil <sameert@codeaurora.org>
diff --git a/drivers/net/wireless/wcnss/wcnss_wlan.c b/drivers/net/wireless/wcnss/wcnss_wlan.c
index dc599de..b30ed45 100644
--- a/drivers/net/wireless/wcnss/wcnss_wlan.c
+++ b/drivers/net/wireless/wcnss/wcnss_wlan.c
@@ -26,6 +26,7 @@
#include <linux/delay.h>
#include <mach/peripheral-loader.h>
#include <mach/msm_smd.h>
+#include <mach/msm_iomap.h>
#define DEVICE "wcnss_wlan"
#define VERSION "1.01"
@@ -161,6 +162,13 @@
static DEVICE_ATTR(wcnss_version, S_IRUSR,
wcnss_version_show, NULL);
+/* interface to reset Riva by sending the reset interrupt */
+void wcnss_reset_intr(void)
+{
+ wmb();
+ __raw_writel(1 << 24, MSM_APCS_GCC_BASE + 0x8);
+}
+EXPORT_SYMBOL(wcnss_reset_intr);
static int wcnss_create_sysfs(struct device *dev)
{
diff --git a/include/linux/wcnss_wlan.h b/include/linux/wcnss_wlan.h
index 3c4225c..44ad73e 100644
--- a/include/linux/wcnss_wlan.h
+++ b/include/linux/wcnss_wlan.h
@@ -26,6 +26,7 @@
};
#define WCNSS_WLAN_IRQ_INVALID -1
+#define HAVE_WCNSS_RESET_INTR 1
struct device *wcnss_wlan_get_device(void);
struct resource *wcnss_wlan_get_memory_map(struct device *dev);
@@ -51,6 +52,8 @@
void wcnss_allow_suspend(void);
void wcnss_prevent_suspend(void);
void wcnss_ssr_boot_notify(void);
+void wcnss_reset_intr(void);
+
#define wcnss_wlan_get_drvdata(dev) dev_get_drvdata(dev)
#define wcnss_wlan_set_drvdata(dev, data) dev_set_drvdata((dev), (data))