|
@@ -712,37 +712,21 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,
|
|
|
IWL_DEBUG_EEPROM(mvm->trans->dev,
|
|
|
"working without external nvm file\n");
|
|
|
|
|
|
- if (WARN(cfg->no_power_up_nic_in_init && !mvm->nvm_file_name,
|
|
|
- "not allowing power-up and not having nvm_file\n"))
|
|
|
+ err = iwl_trans_start_hw(mvm->trans);
|
|
|
+ if (err)
|
|
|
goto out_free;
|
|
|
|
|
|
- /*
|
|
|
- * Even if nvm exists in the nvm_file driver should read again the nvm
|
|
|
- * from the nic because there might be entries that exist in the OTP
|
|
|
- * and not in the file.
|
|
|
- * for nics with no_power_up_nic_in_init: rely completley on nvm_file
|
|
|
- */
|
|
|
- if (cfg->no_power_up_nic_in_init && mvm->nvm_file_name) {
|
|
|
- err = iwl_nvm_init(mvm, false);
|
|
|
- if (err)
|
|
|
- goto out_free;
|
|
|
- } else {
|
|
|
- err = iwl_trans_start_hw(mvm->trans);
|
|
|
- if (err)
|
|
|
- goto out_free;
|
|
|
-
|
|
|
- mutex_lock(&mvm->mutex);
|
|
|
- iwl_mvm_ref(mvm, IWL_MVM_REF_INIT_UCODE);
|
|
|
- err = iwl_run_init_mvm_ucode(mvm, true);
|
|
|
- if (!err || !iwlmvm_mod_params.init_dbg)
|
|
|
- iwl_mvm_stop_device(mvm);
|
|
|
- iwl_mvm_unref(mvm, IWL_MVM_REF_INIT_UCODE);
|
|
|
- mutex_unlock(&mvm->mutex);
|
|
|
- /* returns 0 if successful, 1 if success but in rfkill */
|
|
|
- if (err < 0 && !iwlmvm_mod_params.init_dbg) {
|
|
|
- IWL_ERR(mvm, "Failed to run INIT ucode: %d\n", err);
|
|
|
- goto out_free;
|
|
|
- }
|
|
|
+ mutex_lock(&mvm->mutex);
|
|
|
+ iwl_mvm_ref(mvm, IWL_MVM_REF_INIT_UCODE);
|
|
|
+ err = iwl_run_init_mvm_ucode(mvm, true);
|
|
|
+ if (!err || !iwlmvm_mod_params.init_dbg)
|
|
|
+ iwl_mvm_stop_device(mvm);
|
|
|
+ iwl_mvm_unref(mvm, IWL_MVM_REF_INIT_UCODE);
|
|
|
+ mutex_unlock(&mvm->mutex);
|
|
|
+ /* returns 0 if successful, 1 if success but in rfkill */
|
|
|
+ if (err < 0 && !iwlmvm_mod_params.init_dbg) {
|
|
|
+ IWL_ERR(mvm, "Failed to run INIT ucode: %d\n", err);
|
|
|
+ goto out_free;
|
|
|
}
|
|
|
|
|
|
scan_size = iwl_mvm_scan_size(mvm);
|
|
@@ -784,8 +768,8 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,
|
|
|
flush_delayed_work(&mvm->fw_dump_wk);
|
|
|
iwl_phy_db_free(mvm->phy_db);
|
|
|
kfree(mvm->scan_cmd);
|
|
|
- if (!cfg->no_power_up_nic_in_init || !mvm->nvm_file_name)
|
|
|
- iwl_trans_op_mode_leave(trans);
|
|
|
+ iwl_trans_op_mode_leave(trans);
|
|
|
+
|
|
|
ieee80211_free_hw(mvm->hw);
|
|
|
return NULL;
|
|
|
}
|