iwlwifi: pcie: implement Bz reset flow
Bz device reset flow changed, now the hardware (instead of firmware) will reset the PCI bus etc., this can take up to 100ms. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Link: https://lore.kernel.org/r/iwlwifi.20210802215208.df30875c6ff9.I962ed0f2c3358903dc6ba1abb65726ce5acbbd48@changeid Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
This commit is contained in:
parent
6c0795f1a5
commit
9de168a012
|
@ -131,9 +131,21 @@ void _iwl_trans_pcie_gen2_stop_device(struct iwl_trans *trans)
|
|||
if (trans_pcie->is_down)
|
||||
return;
|
||||
|
||||
if (trans_pcie->fw_reset_handshake &&
|
||||
trans->state >= IWL_TRANS_FW_STARTED)
|
||||
iwl_trans_pcie_fw_reset_handshake(trans);
|
||||
if (trans->state >= IWL_TRANS_FW_STARTED) {
|
||||
if (trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_BZ) {
|
||||
iwl_set_bit(trans, CSR_GP_CNTRL,
|
||||
CSR_GP_CNTRL_REG_FLAG_BUS_MASTER_DISABLE_REQ);
|
||||
iwl_poll_bit(trans, CSR_GP_CNTRL,
|
||||
CSR_GP_CNTRL_REG_FLAG_BUS_MASTER_DISABLE_STATUS,
|
||||
CSR_GP_CNTRL_REG_FLAG_BUS_MASTER_DISABLE_STATUS,
|
||||
5000);
|
||||
msleep(100);
|
||||
iwl_set_bit(trans, CSR_GP_CNTRL,
|
||||
CSR_GP_CNTRL_REG_FLAG_SW_RESET);
|
||||
} else if (trans_pcie->fw_reset_handshake) {
|
||||
iwl_trans_pcie_fw_reset_handshake(trans);
|
||||
}
|
||||
}
|
||||
|
||||
trans_pcie->is_down = true;
|
||||
|
||||
|
|
Loading…
Reference in New Issue