提交 a3ead656 编写于 作者: E Emmanuel Grumbach

iwlwifi: pcie: fix recovery from ARC reset in WoWLAN

When the ARC is reset when we exit from Sx in case we had
WoWLAN running, we can't access the prph before we reset
the NIC.
Reviewed-by: NJohannes Berg <johannes.berg@intel.com>
Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
上级 40a76905
...@@ -1023,14 +1023,6 @@ static int iwl_trans_pcie_d3_resume(struct iwl_trans *trans, ...@@ -1023,14 +1023,6 @@ static int iwl_trans_pcie_d3_resume(struct iwl_trans *trans,
return 0; return 0;
} }
iwl_pcie_set_pwr(trans, false);
val = iwl_read32(trans, CSR_RESET);
if (val & CSR_RESET_REG_FLAG_NEVO_RESET) {
*status = IWL_D3_STATUS_RESET;
return 0;
}
/* /*
* Also enables interrupts - none will happen as the device doesn't * Also enables interrupts - none will happen as the device doesn't
* know we're waking it up, only when the opmode actually tells it * know we're waking it up, only when the opmode actually tells it
...@@ -1050,6 +1042,8 @@ static int iwl_trans_pcie_d3_resume(struct iwl_trans *trans, ...@@ -1050,6 +1042,8 @@ static int iwl_trans_pcie_d3_resume(struct iwl_trans *trans,
return ret; return ret;
} }
iwl_pcie_set_pwr(trans, false);
iwl_trans_pcie_tx_reset(trans); iwl_trans_pcie_tx_reset(trans);
ret = iwl_pcie_rx_init(trans); ret = iwl_pcie_rx_init(trans);
...@@ -1058,7 +1052,12 @@ static int iwl_trans_pcie_d3_resume(struct iwl_trans *trans, ...@@ -1058,7 +1052,12 @@ static int iwl_trans_pcie_d3_resume(struct iwl_trans *trans,
return ret; return ret;
} }
*status = IWL_D3_STATUS_ALIVE; val = iwl_read32(trans, CSR_RESET);
if (val & CSR_RESET_REG_FLAG_NEVO_RESET)
*status = IWL_D3_STATUS_RESET;
else
*status = IWL_D3_STATUS_ALIVE;
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册