|
|
@@ -284,7 +284,7 @@ int iwl_run_init_mvm_ucode(struct iwl_mvm *mvm, bool read_nvm)
|
|
|
|
|
|
lockdep_assert_held(&mvm->mutex);
|
|
|
|
|
|
- if (WARN_ON_ONCE(mvm->init_ucode_complete))
|
|
|
+ if (WARN_ON_ONCE(mvm->init_ucode_complete || mvm->calibrating))
|
|
|
return 0;
|
|
|
|
|
|
iwl_init_notification_wait(&mvm->notif_wait,
|
|
|
@@ -334,6 +334,8 @@ int iwl_run_init_mvm_ucode(struct iwl_mvm *mvm, bool read_nvm)
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
|
+ mvm->calibrating = true;
|
|
|
+
|
|
|
/* Send TX valid antennas before triggering calibrations */
|
|
|
ret = iwl_send_tx_ant_cfg(mvm, mvm->fw->valid_tx_ant);
|
|
|
if (ret)
|
|
|
@@ -358,11 +360,17 @@ int iwl_run_init_mvm_ucode(struct iwl_mvm *mvm, bool read_nvm)
|
|
|
MVM_UCODE_CALIB_TIMEOUT);
|
|
|
if (!ret)
|
|
|
mvm->init_ucode_complete = true;
|
|
|
+
|
|
|
+ if (ret && iwl_mvm_is_radio_killed(mvm)) {
|
|
|
+ IWL_DEBUG_RF_KILL(mvm, "RFKILL while calibrating.\n");
|
|
|
+ ret = 1;
|
|
|
+ }
|
|
|
goto out;
|
|
|
|
|
|
error:
|
|
|
iwl_remove_notification(&mvm->notif_wait, &calib_wait);
|
|
|
out:
|
|
|
+ mvm->calibrating = false;
|
|
|
if (iwlmvm_mod_params.init_dbg && !mvm->nvm_data) {
|
|
|
/* we want to debug INIT and we have no NVM - fake */
|
|
|
mvm->nvm_data = kzalloc(sizeof(struct iwl_nvm_data) +
|