diff options
author | Tomas Winkler <tomas.winkler@intel.com> | 2008-05-29 04:34:59 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-06-03 15:00:20 -0400 |
commit | 46315e012236af887cf442fd494a91b1d36858b9 (patch) | |
tree | dce2020ca64e6ef8b445ed09fe98ed0ff0522d4a /drivers/net/wireless/iwlwifi/iwl-5000.c | |
parent | f118a91d16127e461cc8c17c529306910f13a8b1 (diff) |
iwlwifi: refactor stop master function
This patch refactors stop master function for 4965 and 5000.
Currently it duplicates the function.
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-5000.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-5000.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c index 27cfe3c9a58d..d6074522c446 100644 --- a/drivers/net/wireless/iwlwifi/iwl-5000.c +++ b/drivers/net/wireless/iwlwifi/iwl-5000.c | |||
@@ -56,6 +56,31 @@ static const u16 iwl5000_default_queue_to_tx_fifo[] = { | |||
56 | IWL_TX_FIFO_HCCA_2 | 56 | IWL_TX_FIFO_HCCA_2 |
57 | }; | 57 | }; |
58 | 58 | ||
59 | /* FIXME: same implementation as 4965 */ | ||
60 | static int iwl5000_apm_stop_master(struct iwl_priv *priv) | ||
61 | { | ||
62 | int ret = 0; | ||
63 | unsigned long flags; | ||
64 | |||
65 | spin_lock_irqsave(&priv->lock, flags); | ||
66 | |||
67 | /* set stop master bit */ | ||
68 | iwl_set_bit(priv, CSR_RESET, CSR_RESET_REG_FLAG_STOP_MASTER); | ||
69 | |||
70 | ret = iwl_poll_bit(priv, CSR_RESET, | ||
71 | CSR_RESET_REG_FLAG_MASTER_DISABLED, | ||
72 | CSR_RESET_REG_FLAG_MASTER_DISABLED, 100); | ||
73 | if (ret < 0) | ||
74 | goto out; | ||
75 | |||
76 | out: | ||
77 | spin_unlock_irqrestore(&priv->lock, flags); | ||
78 | IWL_DEBUG_INFO("stop master\n"); | ||
79 | |||
80 | return ret; | ||
81 | } | ||
82 | |||
83 | |||
59 | static int iwl5000_apm_init(struct iwl_priv *priv) | 84 | static int iwl5000_apm_init(struct iwl_priv *priv) |
60 | { | 85 | { |
61 | int ret = 0; | 86 | int ret = 0; |
@@ -105,7 +130,7 @@ static void iwl5000_apm_stop(struct iwl_priv *priv) | |||
105 | { | 130 | { |
106 | unsigned long flags; | 131 | unsigned long flags; |
107 | 132 | ||
108 | iwl4965_hw_nic_stop_master(priv); | 133 | iwl5000_apm_stop_master(priv); |
109 | 134 | ||
110 | spin_lock_irqsave(&priv->lock, flags); | 135 | spin_lock_irqsave(&priv->lock, flags); |
111 | 136 | ||
@@ -124,7 +149,7 @@ static int iwl5000_apm_reset(struct iwl_priv *priv) | |||
124 | int ret = 0; | 149 | int ret = 0; |
125 | unsigned long flags; | 150 | unsigned long flags; |
126 | 151 | ||
127 | iwl4965_hw_nic_stop_master(priv); | 152 | iwl5000_apm_stop_master(priv); |
128 | 153 | ||
129 | spin_lock_irqsave(&priv->lock, flags); | 154 | spin_lock_irqsave(&priv->lock, flags); |
130 | 155 | ||