Loading drivers/soc/qcom/icnss.c +19 −0 Original line number Diff line number Diff line Loading @@ -657,6 +657,15 @@ bool icnss_is_rejuvenate(void) } EXPORT_SYMBOL(icnss_is_rejuvenate); bool icnss_is_pdr(void) { if (!penv) return false; else return test_bit(ICNSS_PDR, &penv->state); } EXPORT_SYMBOL(icnss_is_pdr); int icnss_power_off(struct device *dev) { struct icnss_priv *priv = dev_get_drvdata(dev); Loading Loading @@ -1106,9 +1115,11 @@ static int icnss_pd_restart_complete(struct icnss_priv *priv) icnss_call_driver_shutdown(priv); clear_bit(ICNSS_PDR, &priv->state); clear_bit(ICNSS_REJUVENATE, &priv->state); clear_bit(ICNSS_PD_RESTART, &priv->state); priv->early_crash_ind = false; priv->is_ssr = false; if (!priv->ops || !priv->ops->reinit) goto out; Loading Loading @@ -1482,6 +1493,8 @@ static int icnss_modem_notifier_nb(struct notifier_block *nb, if (code != SUBSYS_BEFORE_SHUTDOWN) return NOTIFY_OK; priv->is_ssr = true; if (code == SUBSYS_BEFORE_SHUTDOWN && !notif->crashed && atomic_read(&priv->is_shutdown)) { atomic_set(&priv->is_shutdown, false); Loading Loading @@ -1613,6 +1626,9 @@ static int icnss_service_notifier_notify(struct notifier_block *nb, if (notification != SERVREG_NOTIF_SERVICE_STATE_DOWN_V01) goto done; if (!priv->is_ssr) set_bit(ICNSS_PDR, &priv->state); event_data = kzalloc(sizeof(*event_data), GFP_KERNEL); if (event_data == NULL) Loading Loading @@ -2807,6 +2823,9 @@ static int icnss_stats_show_state(struct seq_file *s, struct icnss_priv *priv) continue; case ICNSS_BLOCK_SHUTDOWN: seq_puts(s, "BLOCK SHUTDOWN"); continue; case ICNSS_PDR: seq_puts(s, "PDR TRIGGERED"); } seq_printf(s, "UNKNOWN-%d", i); Loading drivers/soc/qcom/icnss_private.h +2 −1 Original line number Diff line number Diff line Loading @@ -161,6 +161,7 @@ enum icnss_driver_state { ICNSS_REJUVENATE, ICNSS_MODE_ON, ICNSS_BLOCK_SHUTDOWN, ICNSS_PDR, }; struct ce_irq_list { Loading Loading @@ -371,7 +372,7 @@ struct icnss_priv { char function_name[WLFW_FUNCTION_NAME_LEN + 1]; struct kobject *icnss_kobject; atomic_t is_shutdown; bool is_ssr; }; int icnss_call_driver_uevent(struct icnss_priv *priv, Loading include/soc/qcom/icnss.h +1 −0 Original line number Diff line number Diff line Loading @@ -145,4 +145,5 @@ extern bool icnss_is_fw_down(void); extern bool icnss_is_rejuvenate(void); extern int icnss_trigger_recovery(struct device *dev); extern void icnss_block_shutdown(bool status); extern bool icnss_is_pdr(void); #endif /* _ICNSS_WLAN_H_ */ Loading
drivers/soc/qcom/icnss.c +19 −0 Original line number Diff line number Diff line Loading @@ -657,6 +657,15 @@ bool icnss_is_rejuvenate(void) } EXPORT_SYMBOL(icnss_is_rejuvenate); bool icnss_is_pdr(void) { if (!penv) return false; else return test_bit(ICNSS_PDR, &penv->state); } EXPORT_SYMBOL(icnss_is_pdr); int icnss_power_off(struct device *dev) { struct icnss_priv *priv = dev_get_drvdata(dev); Loading Loading @@ -1106,9 +1115,11 @@ static int icnss_pd_restart_complete(struct icnss_priv *priv) icnss_call_driver_shutdown(priv); clear_bit(ICNSS_PDR, &priv->state); clear_bit(ICNSS_REJUVENATE, &priv->state); clear_bit(ICNSS_PD_RESTART, &priv->state); priv->early_crash_ind = false; priv->is_ssr = false; if (!priv->ops || !priv->ops->reinit) goto out; Loading Loading @@ -1482,6 +1493,8 @@ static int icnss_modem_notifier_nb(struct notifier_block *nb, if (code != SUBSYS_BEFORE_SHUTDOWN) return NOTIFY_OK; priv->is_ssr = true; if (code == SUBSYS_BEFORE_SHUTDOWN && !notif->crashed && atomic_read(&priv->is_shutdown)) { atomic_set(&priv->is_shutdown, false); Loading Loading @@ -1613,6 +1626,9 @@ static int icnss_service_notifier_notify(struct notifier_block *nb, if (notification != SERVREG_NOTIF_SERVICE_STATE_DOWN_V01) goto done; if (!priv->is_ssr) set_bit(ICNSS_PDR, &priv->state); event_data = kzalloc(sizeof(*event_data), GFP_KERNEL); if (event_data == NULL) Loading Loading @@ -2807,6 +2823,9 @@ static int icnss_stats_show_state(struct seq_file *s, struct icnss_priv *priv) continue; case ICNSS_BLOCK_SHUTDOWN: seq_puts(s, "BLOCK SHUTDOWN"); continue; case ICNSS_PDR: seq_puts(s, "PDR TRIGGERED"); } seq_printf(s, "UNKNOWN-%d", i); Loading
drivers/soc/qcom/icnss_private.h +2 −1 Original line number Diff line number Diff line Loading @@ -161,6 +161,7 @@ enum icnss_driver_state { ICNSS_REJUVENATE, ICNSS_MODE_ON, ICNSS_BLOCK_SHUTDOWN, ICNSS_PDR, }; struct ce_irq_list { Loading Loading @@ -371,7 +372,7 @@ struct icnss_priv { char function_name[WLFW_FUNCTION_NAME_LEN + 1]; struct kobject *icnss_kobject; atomic_t is_shutdown; bool is_ssr; }; int icnss_call_driver_uevent(struct icnss_priv *priv, Loading
include/soc/qcom/icnss.h +1 −0 Original line number Diff line number Diff line Loading @@ -145,4 +145,5 @@ extern bool icnss_is_fw_down(void); extern bool icnss_is_rejuvenate(void); extern int icnss_trigger_recovery(struct device *dev); extern void icnss_block_shutdown(bool status); extern bool icnss_is_pdr(void); #endif /* _ICNSS_WLAN_H_ */