aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/dvm
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2013-05-17 06:01:26 -0400
committerJohannes Berg <johannes.berg@intel.com>2013-05-27 05:39:30 -0400
commit8ade62857ef77bdf639185410fbcd811aa700cb2 (patch)
tree5b42cce7cf802a11fe12514e02d29cffce16d554 /drivers/net/wireless/iwlwifi/dvm
parentdfcb4c3aacedee6838e436fb575b31e138505203 (diff)
iwlwifi: move D3_CFG_COMPLETE handling into DVM
The MVM firmware doesn't communicate this way, it instead assumes D3 configuration is complete after a specific host command (which must be last) has been sent. Handling this bit thus belongs into the firmware API code, i.e. DVM. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/dvm')
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/mac80211.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/dvm/mac80211.c b/drivers/net/wireless/iwlwifi/dvm/mac80211.c
index cab23af0be9e..700215324af8 100644
--- a/drivers/net/wireless/iwlwifi/dvm/mac80211.c
+++ b/drivers/net/wireless/iwlwifi/dvm/mac80211.c
@@ -426,6 +426,10 @@ static int iwlagn_mac_suspend(struct ieee80211_hw *hw,
426 if (ret) 426 if (ret)
427 goto error; 427 goto error;
428 428
429 /* let the ucode operate on its own */
430 iwl_write32(priv->trans, CSR_UCODE_DRV_GP1_SET,
431 CSR_UCODE_DRV_GP1_BIT_D3_CFG_COMPLETE);
432
429 iwl_trans_d3_suspend(priv->trans); 433 iwl_trans_d3_suspend(priv->trans);
430 434
431 goto out; 435 goto out;
@@ -509,6 +513,10 @@ static int iwlagn_mac_resume(struct ieee80211_hw *hw)
509 goto out_unlock; 513 goto out_unlock;
510 } 514 }
511 515
516 /* uCode is no longer operating by itself */
517 iwl_write32(priv->trans, CSR_UCODE_DRV_GP1_CLR,
518 CSR_UCODE_DRV_GP1_BIT_D3_CFG_COMPLETE);
519
512 base = priv->device_pointers.error_event_table; 520 base = priv->device_pointers.error_event_table;
513 if (!iwlagn_hw_valid_rtc_data_addr(base)) { 521 if (!iwlagn_hw_valid_rtc_data_addr(base)) {
514 IWL_WARN(priv, "Invalid error table during resume!\n"); 522 IWL_WARN(priv, "Invalid error table during resume!\n");