diff --git a/icnss2/main.c b/icnss2/main.c index b254558966..f1883598df 100644 --- a/icnss2/main.c +++ b/icnss2/main.c @@ -929,6 +929,9 @@ static int icnss_driver_event_server_arrive(struct icnss_priv *priv, } } + if (priv->device_id == WCN6450_DEVICE_ID) + icnss_hw_power_off(priv); + ret = wlfw_cap_send_sync_msg(priv); if (ret < 0) { ignore_assert = true; @@ -3440,7 +3443,7 @@ int icnss_wlan_enable(struct device *dev, struct icnss_wlan_enable_cfg *config, const char *host_version) { struct icnss_priv *priv = dev_get_drvdata(dev); - int temp = 0; + int temp = 0, ret = 0; if (test_bit(ICNSS_FW_DOWN, &priv->state) || !test_bit(ICNSS_FW_READY, &priv->state)) { @@ -3467,7 +3470,15 @@ int icnss_wlan_enable(struct device *dev, struct icnss_wlan_enable_cfg *config, } } - return icnss_send_wlan_enable_to_fw(priv, config, mode, host_version); + if (priv->device_id == WCN6450_DEVICE_ID) + icnss_hw_power_off(priv); + + ret = icnss_send_wlan_enable_to_fw(priv, config, mode, host_version); + + if (priv->device_id == WCN6450_DEVICE_ID) + icnss_hw_power_on(priv); + + return ret; } EXPORT_SYMBOL(icnss_wlan_enable);