aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-5000.c
diff options
context:
space:
mode:
authorAbhijeet Kolekar <abhijeet.kolekar@intel.com>2009-10-02 16:44:04 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-10-07 16:39:45 -0400
commitd68b603cf01a6e7d8c85c5a86db751ed3960c0c7 (patch)
treefeb661659e80684e3edaa918f650bcc7e70d0625 /drivers/net/wireless/iwlwifi/iwl-5000.c
parente932a609e9759cc75db0c234f465a5fd6e20d362 (diff)
iwlwifi/iwl3945 : unify apm stop operation
Unify the usage of apm_stop_master and apm_stop across all hardwares. Signed-off-by: Abhijeet Kolekar <abhijeet.kolekar@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@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.c46
1 files changed, 3 insertions, 43 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index 624853503db1..d8dadbf04138 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -72,26 +72,6 @@ static const u16 iwl5000_default_queue_to_tx_fifo[] = {
72 IWL_TX_FIFO_HCCA_2 72 IWL_TX_FIFO_HCCA_2
73}; 73};
74 74
75/* FIXME: same implementation as 4965 */
76static int iwl5000_apm_stop_master(struct iwl_priv *priv)
77{
78 unsigned long flags;
79
80 spin_lock_irqsave(&priv->lock, flags);
81
82 /* set stop master bit */
83 iwl_set_bit(priv, CSR_RESET, CSR_RESET_REG_FLAG_STOP_MASTER);
84
85 iwl_poll_direct_bit(priv, CSR_RESET,
86 CSR_RESET_REG_FLAG_MASTER_DISABLED, 100);
87
88 spin_unlock_irqrestore(&priv->lock, flags);
89 IWL_DEBUG_INFO(priv, "stop master\n");
90
91 return 0;
92}
93
94
95int iwl5000_apm_init(struct iwl_priv *priv) 75int iwl5000_apm_init(struct iwl_priv *priv)
96{ 76{
97 int ret = 0; 77 int ret = 0;
@@ -137,31 +117,11 @@ int iwl5000_apm_init(struct iwl_priv *priv)
137 return ret; 117 return ret;
138} 118}
139 119
140/* FIXME: this is identical to 4965 */
141void iwl5000_apm_stop(struct iwl_priv *priv)
142{
143 unsigned long flags;
144
145 iwl5000_apm_stop_master(priv);
146
147 spin_lock_irqsave(&priv->lock, flags);
148
149 iwl_set_bit(priv, CSR_RESET, CSR_RESET_REG_FLAG_SW_RESET);
150
151 udelay(10);
152
153 /* clear "init complete" move adapter D0A* --> D0U state */
154 iwl_clear_bit(priv, CSR_GP_CNTRL, CSR_GP_CNTRL_REG_FLAG_INIT_DONE);
155
156 spin_unlock_irqrestore(&priv->lock, flags);
157}
158
159
160int iwl5000_apm_reset(struct iwl_priv *priv) 120int iwl5000_apm_reset(struct iwl_priv *priv)
161{ 121{
162 int ret = 0; 122 int ret = 0;
163 123
164 iwl5000_apm_stop_master(priv); 124 iwl_apm_stop_master(priv);
165 125
166 iwl_set_bit(priv, CSR_RESET, CSR_RESET_REG_FLAG_SW_RESET); 126 iwl_set_bit(priv, CSR_RESET, CSR_RESET_REG_FLAG_SW_RESET);
167 127
@@ -1561,7 +1521,7 @@ struct iwl_lib_ops iwl5000_lib = {
1561 .apm_ops = { 1521 .apm_ops = {
1562 .init = iwl5000_apm_init, 1522 .init = iwl5000_apm_init,
1563 .reset = iwl5000_apm_reset, 1523 .reset = iwl5000_apm_reset,
1564 .stop = iwl5000_apm_stop, 1524 .stop = iwl_apm_stop,
1565 .config = iwl5000_nic_config, 1525 .config = iwl5000_nic_config,
1566 .set_pwr_src = iwl_set_pwr_src, 1526 .set_pwr_src = iwl_set_pwr_src,
1567 }, 1527 },
@@ -1613,7 +1573,7 @@ static struct iwl_lib_ops iwl5150_lib = {
1613 .apm_ops = { 1573 .apm_ops = {
1614 .init = iwl5000_apm_init, 1574 .init = iwl5000_apm_init,
1615 .reset = iwl5000_apm_reset, 1575 .reset = iwl5000_apm_reset,
1616 .stop = iwl5000_apm_stop, 1576 .stop = iwl_apm_stop,
1617 .config = iwl5000_nic_config, 1577 .config = iwl5000_nic_config,
1618 .set_pwr_src = iwl_set_pwr_src, 1578 .set_pwr_src = iwl_set_pwr_src,
1619 }, 1579 },