From a15f85fc4059939f763db7958c6f0b89169fbe98 Mon Sep 17 00:00:00 2001 From: Prashanth Bhatta Date: Wed, 31 Aug 2016 12:45:58 -0700 Subject: [PATCH] icnss: Shutdown only if probed With the recovery changes, if modem is brought down without FW ready but WLAN driver is registered then shutdown call back is called. This causes stability issue. Make sure not call the shutdown call back if driver is not registered. Also listening for PD notifications are enough even for Subsystem restart so changing the quirks to take care of it. CRs-fixed: 1061734 Change-Id: Ic5d1a38dfb6ea3e255424af135e2afbe47d1fc18 Signed-off-by: Prashanth Bhatta --- drivers/soc/qcom/icnss.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/soc/qcom/icnss.c b/drivers/soc/qcom/icnss.c index 96d51bcc1cc5..9fcc64b8e6e7 100644 --- a/drivers/soc/qcom/icnss.c +++ b/drivers/soc/qcom/icnss.c @@ -208,9 +208,7 @@ enum icnss_debug_quirks { PDR_ONLY, }; -#define ICNSS_QUIRKS_DEFAULT ( \ - BIT(SSR_ONLY) \ - ) +#define ICNSS_QUIRKS_DEFAULT 0 unsigned long quirks = ICNSS_QUIRKS_DEFAULT; module_param(quirks, ulong, 0600); @@ -1911,6 +1909,9 @@ static int icnss_call_driver_reinit(struct icnss_priv *priv) if (!priv->ops || !priv->ops->reinit) goto out; + if (!test_bit(ICNSS_DRIVER_PROBED, &penv->state)) + goto out; + icnss_hw_power_on(priv); ret = priv->ops->reinit(&priv->pdev->dev); @@ -2048,6 +2049,9 @@ static int icnss_qmi_pd_event_service_down(struct icnss_priv *priv, void *data) if (!priv->ops || !priv->ops->shutdown) goto out; + if (!test_bit(ICNSS_DRIVER_PROBED, &penv->state)) + goto out; + priv->ops->shutdown(&priv->pdev->dev); out: