* fix OTP parsing 8260
* fix powersave handling for 8260 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJVZvCtAAoJEC0Llv5uNjIBhlYP/jYLiFZ2xmln2pcvsMt2kYjP zDDAQoNa89diynS7FMH1Sl13fBgNAmDoFU1V0DematJIek/KeF+Gj/kr9dq8dAqx /X37fTHXaJHone/BeRSQVbvOcGBS6w4zUGHG4Mc2PqGwen1KPPd6dhm9wTjIxzeS LkTY+Skf+xTAJpYxLAoC1LmbWDvDph3MBVL/i/jBCHdd1Vb9hDxPz+YB9YgXEdoP K9O5cMrg/fie/7dJ/fN4Sd6+vQXj7jybHEWqtezc9QoL/5oBOTxSAMBfjYFquDHm tU3s29+Mp3rNUSW3aJl33VomN5azPepTq5GQ4zInfaFoeYDKhF5BgiMqhJgSMjqw mvgKp49LziQ+cU9ueT1fQsQrXh9wSKQO/rm6WwSBljVv6XOtThBuDijc2OWt3Zhp xGLMhtQU8a+Oo2yn7OJ2IfViOTLTwsCbyCJycYFpFddbF1CRS3fUH/fJpkfaBEaM ZYq7G3hBM3ixHGIfMBpX8u09TE9N7+sbT6vxDLigHDLdjjyF2AVWc0ZQToyI91eR tuDRTLiy70CnLXyPLK2m18+6oaxU9tT5tutWiAUv1E5vr5IAUtpmBAB6hBIH6peY FsBwexc7YHyelkGpxo7f4kAdvODC/fwtRlVgi0dg6iLKH49b3uizLLiswucCZgFg FlBEpDFdVYekQfbQ9oOd =6Phl -----END PGP SIGNATURE----- Merge tag 'iwlwifi-for-kalle-2015-05-28' of https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-fixes * fix OTP parsing 8260 * fix powersave handling for 8260
This commit is contained in:
commit
38fe44e61a
|
@ -471,7 +471,7 @@ static int iwl_get_radio_cfg(const struct iwl_cfg *cfg, const __le16 *nvm_sw,
|
|||
if (cfg->device_family != IWL_DEVICE_FAMILY_8000)
|
||||
return le16_to_cpup(nvm_sw + RADIO_CFG);
|
||||
|
||||
return le32_to_cpup((__le32 *)(nvm_sw + RADIO_CFG_FAMILY_8000));
|
||||
return le32_to_cpup((__le32 *)(phy_sku + RADIO_CFG_FAMILY_8000));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2003 - 2014 Intel Corporation. All rights reserved.
|
||||
* Copyright(c) 2013 - 2014 Intel Mobile Communications GmbH
|
||||
* Copyright(c) 2003 - 2015 Intel Corporation. All rights reserved.
|
||||
* Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
|
||||
*
|
||||
* Portions of this file are derived from the ipw3945 project, as well
|
||||
* as portions of the ieee80211 subsystem header files.
|
||||
|
@ -320,7 +320,7 @@ struct iwl_trans_pcie {
|
|||
|
||||
/*protect hw register */
|
||||
spinlock_t reg_lock;
|
||||
bool cmd_in_flight;
|
||||
bool cmd_hold_nic_awake;
|
||||
bool ref_cmd_in_flight;
|
||||
|
||||
/* protect ref counter */
|
||||
|
|
|
@ -1372,7 +1372,7 @@ static bool iwl_trans_pcie_grab_nic_access(struct iwl_trans *trans, bool silent,
|
|||
|
||||
spin_lock_irqsave(&trans_pcie->reg_lock, *flags);
|
||||
|
||||
if (trans_pcie->cmd_in_flight)
|
||||
if (trans_pcie->cmd_hold_nic_awake)
|
||||
goto out;
|
||||
|
||||
/* this bit wakes up the NIC */
|
||||
|
@ -1438,7 +1438,7 @@ static void iwl_trans_pcie_release_nic_access(struct iwl_trans *trans,
|
|||
*/
|
||||
__acquire(&trans_pcie->reg_lock);
|
||||
|
||||
if (trans_pcie->cmd_in_flight)
|
||||
if (trans_pcie->cmd_hold_nic_awake)
|
||||
goto out;
|
||||
|
||||
__iwl_trans_pcie_clear_bit(trans, CSR_GP_CNTRL,
|
||||
|
|
|
@ -1039,18 +1039,14 @@ static int iwl_pcie_set_cmd_in_flight(struct iwl_trans *trans,
|
|||
iwl_trans_pcie_ref(trans);
|
||||
}
|
||||
|
||||
if (trans_pcie->cmd_in_flight)
|
||||
return 0;
|
||||
|
||||
trans_pcie->cmd_in_flight = true;
|
||||
|
||||
/*
|
||||
* wake up the NIC to make sure that the firmware will see the host
|
||||
* command - we will let the NIC sleep once all the host commands
|
||||
* returned. This needs to be done only on NICs that have
|
||||
* apmg_wake_up_wa set.
|
||||
*/
|
||||
if (trans->cfg->base_params->apmg_wake_up_wa) {
|
||||
if (trans->cfg->base_params->apmg_wake_up_wa &&
|
||||
!trans_pcie->cmd_hold_nic_awake) {
|
||||
__iwl_trans_pcie_set_bit(trans, CSR_GP_CNTRL,
|
||||
CSR_GP_CNTRL_REG_FLAG_MAC_ACCESS_REQ);
|
||||
if (trans->cfg->device_family == IWL_DEVICE_FAMILY_8000)
|
||||
|
@ -1064,10 +1060,10 @@ static int iwl_pcie_set_cmd_in_flight(struct iwl_trans *trans,
|
|||
if (ret < 0) {
|
||||
__iwl_trans_pcie_clear_bit(trans, CSR_GP_CNTRL,
|
||||
CSR_GP_CNTRL_REG_FLAG_MAC_ACCESS_REQ);
|
||||
trans_pcie->cmd_in_flight = false;
|
||||
IWL_ERR(trans, "Failed to wake NIC for hcmd\n");
|
||||
return -EIO;
|
||||
}
|
||||
trans_pcie->cmd_hold_nic_awake = true;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -1085,15 +1081,14 @@ static int iwl_pcie_clear_cmd_in_flight(struct iwl_trans *trans)
|
|||
iwl_trans_pcie_unref(trans);
|
||||
}
|
||||
|
||||
if (WARN_ON(!trans_pcie->cmd_in_flight))
|
||||
if (trans->cfg->base_params->apmg_wake_up_wa) {
|
||||
if (WARN_ON(!trans_pcie->cmd_hold_nic_awake))
|
||||
return 0;
|
||||
|
||||
trans_pcie->cmd_in_flight = false;
|
||||
|
||||
if (trans->cfg->base_params->apmg_wake_up_wa)
|
||||
trans_pcie->cmd_hold_nic_awake = false;
|
||||
__iwl_trans_pcie_clear_bit(trans, CSR_GP_CNTRL,
|
||||
CSR_GP_CNTRL_REG_FLAG_MAC_ACCESS_REQ);
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue