Loading drivers/soc/qcom/icnss.c +13 −0 Original line number Original line Diff line number Diff line Loading @@ -613,6 +613,15 @@ bool icnss_is_fw_down(void) } } EXPORT_SYMBOL(icnss_is_fw_down); EXPORT_SYMBOL(icnss_is_fw_down); bool icnss_is_rejuvenate(void) { if (!penv) return false; else return test_bit(ICNSS_REJUVENATE, &penv->state); } EXPORT_SYMBOL(icnss_is_rejuvenate); int icnss_power_off(struct device *dev) int icnss_power_off(struct device *dev) { { struct icnss_priv *priv = dev_get_drvdata(dev); struct icnss_priv *priv = dev_get_drvdata(dev); Loading Loading @@ -876,6 +885,7 @@ static int icnss_pd_restart_complete(struct icnss_priv *priv) icnss_call_driver_shutdown(priv); icnss_call_driver_shutdown(priv); clear_bit(ICNSS_REJUVENATE, &priv->state); clear_bit(ICNSS_PD_RESTART, &priv->state); clear_bit(ICNSS_PD_RESTART, &priv->state); priv->early_crash_ind = false; priv->early_crash_ind = false; Loading Loading @@ -2486,6 +2496,9 @@ static int icnss_stats_show_state(struct seq_file *s, struct icnss_priv *priv) continue; continue; case ICNSS_DRIVER_UNLOADING: case ICNSS_DRIVER_UNLOADING: seq_puts(s, "DRIVER UNLOADING"); seq_puts(s, "DRIVER UNLOADING"); continue; case ICNSS_REJUVENATE: seq_puts(s, "FW REJUVENATE"); } } seq_printf(s, "UNKNOWN-%d", i); seq_printf(s, "UNKNOWN-%d", i); Loading drivers/soc/qcom/icnss_private.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -151,6 +151,7 @@ enum icnss_driver_state { ICNSS_HOST_TRIGGERED_PDR, ICNSS_HOST_TRIGGERED_PDR, ICNSS_FW_DOWN, ICNSS_FW_DOWN, ICNSS_DRIVER_UNLOADING, ICNSS_DRIVER_UNLOADING, ICNSS_REJUVENATE, }; }; struct ce_irq_list { struct ce_irq_list { Loading drivers/soc/qcom/icnss_qmi.c +1 −0 Original line number Original line Diff line number Diff line Loading @@ -982,6 +982,7 @@ void icnss_handle_rejuvenate(struct icnss_priv *priv) event_data->crashed = true; event_data->crashed = true; event_data->fw_rejuvenate = true; event_data->fw_rejuvenate = true; fw_down_data.crashed = true; fw_down_data.crashed = true; set_bit(ICNSS_REJUVENATE, &priv->state); icnss_call_driver_uevent(priv, ICNSS_UEVENT_FW_DOWN, icnss_call_driver_uevent(priv, ICNSS_UEVENT_FW_DOWN, &fw_down_data); &fw_down_data); Loading include/soc/qcom/icnss.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -142,5 +142,6 @@ extern unsigned int icnss_socinfo_get_serial_number(struct device *dev); extern bool icnss_is_qmi_disable(struct device *dev); extern bool icnss_is_qmi_disable(struct device *dev); extern bool icnss_is_fw_ready(void); extern bool icnss_is_fw_ready(void); extern bool icnss_is_fw_down(void); extern bool icnss_is_fw_down(void); extern bool icnss_is_rejuvenate(void); extern int icnss_trigger_recovery(struct device *dev); extern int icnss_trigger_recovery(struct device *dev); #endif /* _ICNSS_WLAN_H_ */ #endif /* _ICNSS_WLAN_H_ */ Loading
drivers/soc/qcom/icnss.c +13 −0 Original line number Original line Diff line number Diff line Loading @@ -613,6 +613,15 @@ bool icnss_is_fw_down(void) } } EXPORT_SYMBOL(icnss_is_fw_down); EXPORT_SYMBOL(icnss_is_fw_down); bool icnss_is_rejuvenate(void) { if (!penv) return false; else return test_bit(ICNSS_REJUVENATE, &penv->state); } EXPORT_SYMBOL(icnss_is_rejuvenate); int icnss_power_off(struct device *dev) int icnss_power_off(struct device *dev) { { struct icnss_priv *priv = dev_get_drvdata(dev); struct icnss_priv *priv = dev_get_drvdata(dev); Loading Loading @@ -876,6 +885,7 @@ static int icnss_pd_restart_complete(struct icnss_priv *priv) icnss_call_driver_shutdown(priv); icnss_call_driver_shutdown(priv); clear_bit(ICNSS_REJUVENATE, &priv->state); clear_bit(ICNSS_PD_RESTART, &priv->state); clear_bit(ICNSS_PD_RESTART, &priv->state); priv->early_crash_ind = false; priv->early_crash_ind = false; Loading Loading @@ -2486,6 +2496,9 @@ static int icnss_stats_show_state(struct seq_file *s, struct icnss_priv *priv) continue; continue; case ICNSS_DRIVER_UNLOADING: case ICNSS_DRIVER_UNLOADING: seq_puts(s, "DRIVER UNLOADING"); seq_puts(s, "DRIVER UNLOADING"); continue; case ICNSS_REJUVENATE: seq_puts(s, "FW REJUVENATE"); } } seq_printf(s, "UNKNOWN-%d", i); seq_printf(s, "UNKNOWN-%d", i); Loading
drivers/soc/qcom/icnss_private.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -151,6 +151,7 @@ enum icnss_driver_state { ICNSS_HOST_TRIGGERED_PDR, ICNSS_HOST_TRIGGERED_PDR, ICNSS_FW_DOWN, ICNSS_FW_DOWN, ICNSS_DRIVER_UNLOADING, ICNSS_DRIVER_UNLOADING, ICNSS_REJUVENATE, }; }; struct ce_irq_list { struct ce_irq_list { Loading
drivers/soc/qcom/icnss_qmi.c +1 −0 Original line number Original line Diff line number Diff line Loading @@ -982,6 +982,7 @@ void icnss_handle_rejuvenate(struct icnss_priv *priv) event_data->crashed = true; event_data->crashed = true; event_data->fw_rejuvenate = true; event_data->fw_rejuvenate = true; fw_down_data.crashed = true; fw_down_data.crashed = true; set_bit(ICNSS_REJUVENATE, &priv->state); icnss_call_driver_uevent(priv, ICNSS_UEVENT_FW_DOWN, icnss_call_driver_uevent(priv, ICNSS_UEVENT_FW_DOWN, &fw_down_data); &fw_down_data); Loading
include/soc/qcom/icnss.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -142,5 +142,6 @@ extern unsigned int icnss_socinfo_get_serial_number(struct device *dev); extern bool icnss_is_qmi_disable(struct device *dev); extern bool icnss_is_qmi_disable(struct device *dev); extern bool icnss_is_fw_ready(void); extern bool icnss_is_fw_ready(void); extern bool icnss_is_fw_down(void); extern bool icnss_is_fw_down(void); extern bool icnss_is_rejuvenate(void); extern int icnss_trigger_recovery(struct device *dev); extern int icnss_trigger_recovery(struct device *dev); #endif /* _ICNSS_WLAN_H_ */ #endif /* _ICNSS_WLAN_H_ */