diff options
-rw-r--r-- | drivers/net/wireless/iwlwifi/dvm/devices.c | 13 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/dvm/main.c | 13 |
2 files changed, 12 insertions, 14 deletions
diff --git a/drivers/net/wireless/iwlwifi/dvm/devices.c b/drivers/net/wireless/iwlwifi/dvm/devices.c index 0521a6be09d2..349c205d5f62 100644 --- a/drivers/net/wireless/iwlwifi/dvm/devices.c +++ b/drivers/net/wireless/iwlwifi/dvm/devices.c | |||
@@ -250,17 +250,6 @@ struct iwl_lib_ops iwl2030_lib = { | |||
250 | */ | 250 | */ |
251 | 251 | ||
252 | /* NIC configuration for 5000 series */ | 252 | /* NIC configuration for 5000 series */ |
253 | static void iwl5000_nic_config(struct iwl_priv *priv) | ||
254 | { | ||
255 | /* W/A : NIC is stuck in a reset state after Early PCIe power off | ||
256 | * (PCIe power is lost before PERST# is asserted), | ||
257 | * causing ME FW to lose ownership and not being able to obtain it back. | ||
258 | */ | ||
259 | iwl_set_bits_mask_prph(priv->trans, APMG_PS_CTRL_REG, | ||
260 | APMG_PS_CTRL_EARLY_PWR_OFF_RESET_DIS, | ||
261 | ~APMG_PS_CTRL_EARLY_PWR_OFF_RESET_DIS); | ||
262 | } | ||
263 | |||
264 | static const struct iwl_sensitivity_ranges iwl5000_sensitivity = { | 253 | static const struct iwl_sensitivity_ranges iwl5000_sensitivity = { |
265 | .min_nrg_cck = 100, | 254 | .min_nrg_cck = 100, |
266 | .auto_corr_min_ofdm = 90, | 255 | .auto_corr_min_ofdm = 90, |
@@ -433,14 +422,12 @@ static int iwl5000_hw_channel_switch(struct iwl_priv *priv, | |||
433 | struct iwl_lib_ops iwl5000_lib = { | 422 | struct iwl_lib_ops iwl5000_lib = { |
434 | .set_hw_params = iwl5000_hw_set_hw_params, | 423 | .set_hw_params = iwl5000_hw_set_hw_params, |
435 | .set_channel_switch = iwl5000_hw_channel_switch, | 424 | .set_channel_switch = iwl5000_hw_channel_switch, |
436 | .nic_config = iwl5000_nic_config, | ||
437 | .temperature = iwlagn_temperature, | 425 | .temperature = iwlagn_temperature, |
438 | }; | 426 | }; |
439 | 427 | ||
440 | struct iwl_lib_ops iwl5150_lib = { | 428 | struct iwl_lib_ops iwl5150_lib = { |
441 | .set_hw_params = iwl5150_hw_set_hw_params, | 429 | .set_hw_params = iwl5150_hw_set_hw_params, |
442 | .set_channel_switch = iwl5000_hw_channel_switch, | 430 | .set_channel_switch = iwl5000_hw_channel_switch, |
443 | .nic_config = iwl5000_nic_config, | ||
444 | .temperature = iwl5150_temperature, | 431 | .temperature = iwl5150_temperature, |
445 | }; | 432 | }; |
446 | 433 | ||
diff --git a/drivers/net/wireless/iwlwifi/dvm/main.c b/drivers/net/wireless/iwlwifi/dvm/main.c index bba3edfb3488..c642c217e29f 100644 --- a/drivers/net/wireless/iwlwifi/dvm/main.c +++ b/drivers/net/wireless/iwlwifi/dvm/main.c | |||
@@ -51,11 +51,13 @@ | |||
51 | #include "iwl-op-mode.h" | 51 | #include "iwl-op-mode.h" |
52 | #include "iwl-drv.h" | 52 | #include "iwl-drv.h" |
53 | #include "iwl-modparams.h" | 53 | #include "iwl-modparams.h" |
54 | #include "iwl-prph.h" | ||
54 | 55 | ||
55 | #include "dev.h" | 56 | #include "dev.h" |
56 | #include "calib.h" | 57 | #include "calib.h" |
57 | #include "agn.h" | 58 | #include "agn.h" |
58 | 59 | ||
60 | |||
59 | /****************************************************************************** | 61 | /****************************************************************************** |
60 | * | 62 | * |
61 | * module boiler plate | 63 | * module boiler plate |
@@ -2076,7 +2078,16 @@ static void iwl_nic_config(struct iwl_op_mode *op_mode) | |||
2076 | CSR_HW_IF_CONFIG_REG_BIT_RADIO_SI | | 2078 | CSR_HW_IF_CONFIG_REG_BIT_RADIO_SI | |
2077 | CSR_HW_IF_CONFIG_REG_BIT_MAC_SI); | 2079 | CSR_HW_IF_CONFIG_REG_BIT_MAC_SI); |
2078 | 2080 | ||
2079 | priv->lib->nic_config(priv); | 2081 | /* W/A : NIC is stuck in a reset state after Early PCIe power off |
2082 | * (PCIe power is lost before PERST# is asserted), | ||
2083 | * causing ME FW to lose ownership and not being able to obtain it back. | ||
2084 | */ | ||
2085 | iwl_set_bits_mask_prph(priv->trans, APMG_PS_CTRL_REG, | ||
2086 | APMG_PS_CTRL_EARLY_PWR_OFF_RESET_DIS, | ||
2087 | ~APMG_PS_CTRL_EARLY_PWR_OFF_RESET_DIS); | ||
2088 | |||
2089 | if (priv->lib->nic_config) | ||
2090 | priv->lib->nic_config(priv); | ||
2080 | } | 2091 | } |
2081 | 2092 | ||
2082 | static void iwl_wimax_active(struct iwl_op_mode *op_mode) | 2093 | static void iwl_wimax_active(struct iwl_op_mode *op_mode) |