diff options
author | Johannes Berg <johannes.berg@intel.com> | 2013-05-17 06:01:26 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-05-27 05:39:30 -0400 |
commit | 8ade62857ef77bdf639185410fbcd811aa700cb2 (patch) | |
tree | 5b42cce7cf802a11fe12514e02d29cffce16d554 /drivers/net/wireless/iwlwifi/dvm | |
parent | dfcb4c3aacedee6838e436fb575b31e138505203 (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.c | 8 |
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"); |