diff options
-rw-r--r-- | drivers/net/wireless/cnss2/main.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/net/wireless/cnss2/main.c b/drivers/net/wireless/cnss2/main.c index 66a7f4694d96..df65c97b3257 100644 --- a/drivers/net/wireless/cnss2/main.c +++ b/drivers/net/wireless/cnss2/main.c @@ -1201,9 +1201,15 @@ out: static int cnss_cold_boot_cal_start_hdlr(struct cnss_plat_data *plat_priv) { int ret = 0; + bool pwr_up_reqd = false; set_bit(CNSS_COLD_BOOT_CAL, &plat_priv->driver_state); - ret = cnss_bus_dev_powerup(plat_priv); + if (test_bit(CNSS_DEV_REMOVED, &plat_priv->driver_state)) + pwr_up_reqd = true; + + if (pwr_up_reqd || plat_priv->bus_type != CNSS_BUS_USB) + ret = cnss_bus_dev_powerup(plat_priv); + if (ret) clear_bit(CNSS_COLD_BOOT_CAL, &plat_priv->driver_state); @@ -1214,7 +1220,8 @@ static int cnss_cold_boot_cal_done_hdlr(struct cnss_plat_data *plat_priv) { plat_priv->cal_done = true; cnss_wlfw_wlan_mode_send_sync(plat_priv, QMI_WLFW_OFF_V01); - if (plat_priv->device_id == QCN7605_DEVICE_ID) + if (plat_priv->device_id == QCN7605_DEVICE_ID || + plat_priv->bus_type == CNSS_BUS_USB) goto skip_shutdown; cnss_bus_dev_shutdown(plat_priv); @@ -1677,6 +1684,8 @@ static ssize_t cnss_fs_ready_store(struct device *dev, case QCA6290_EMULATION_DEVICE_ID: case QCA6290_DEVICE_ID: case QCN7605_DEVICE_ID: + case QCN7605_COMPOSITE_DEVICE_ID: + case QCN7605_STANDALONE_DEVICE_ID: break; default: cnss_pr_err("Not supported for device ID 0x%lx\n", |