diff options
author | Jay Sternberg <jay.e.sternberg@linux.intel.com> | 2009-01-29 14:09:13 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-02-09 15:03:42 -0500 |
commit | 050681b77d10ac81bf6be5b2c61aa6c5969947e4 (patch) | |
tree | b9d25169eba2e75cb700ca74318b7e0d9f452330 /drivers | |
parent | c0bac76a22c00d0b4622b2847e0b087befb9ff25 (diff) |
iwlwifi: parametrize configuration of the PLL for exclusion on 6000
added a config parameter to enable setting PLL_CFG. older hardware has
this parameter set true. the 6000 family does not support this setting,
so this parameter set false.
Signed-off-by: Jay Sternberg <jay.e.sternberg@linux.intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-100.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-5000.c | 12 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-6000.c | 5 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-core.h | 1 |
4 files changed, 17 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-100.c b/drivers/net/wireless/iwlwifi/iwl-100.c index 4c4d16537e3d..a5df93154d21 100644 --- a/drivers/net/wireless/iwlwifi/iwl-100.c +++ b/drivers/net/wireless/iwlwifi/iwl-100.c | |||
@@ -68,5 +68,6 @@ struct iwl_cfg iwl100_bgn_cfg = { | |||
68 | .mod_params = &iwl50_mod_params, | 68 | .mod_params = &iwl50_mod_params, |
69 | .valid_tx_ant = ANT_A, | 69 | .valid_tx_ant = ANT_A, |
70 | .valid_rx_ant = ANT_AB, | 70 | .valid_rx_ant = ANT_AB, |
71 | .need_pll_cfg = true, | ||
71 | }; | 72 | }; |
72 | 73 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c index 539fc0e234f7..f8158edf6ebf 100644 --- a/drivers/net/wireless/iwlwifi/iwl-5000.c +++ b/drivers/net/wireless/iwlwifi/iwl-5000.c | |||
@@ -109,7 +109,8 @@ static int iwl5000_apm_init(struct iwl_priv *priv) | |||
109 | iwl_set_bit(priv, CSR_HW_IF_CONFIG_REG, | 109 | iwl_set_bit(priv, CSR_HW_IF_CONFIG_REG, |
110 | CSR_HW_IF_CONFIG_REG_BIT_HAP_WAKE_L1A); | 110 | CSR_HW_IF_CONFIG_REG_BIT_HAP_WAKE_L1A); |
111 | 111 | ||
112 | iwl_set_bit(priv, CSR_ANA_PLL_CFG, CSR50_ANA_PLL_CFG_VAL); | 112 | if (priv->cfg->need_pll_cfg) |
113 | iwl_set_bit(priv, CSR_ANA_PLL_CFG, CSR50_ANA_PLL_CFG_VAL); | ||
113 | 114 | ||
114 | /* set "initialization complete" bit to move adapter | 115 | /* set "initialization complete" bit to move adapter |
115 | * D0U* --> D0A* state */ | 116 | * D0U* --> D0A* state */ |
@@ -177,7 +178,8 @@ static int iwl5000_apm_reset(struct iwl_priv *priv) | |||
177 | 178 | ||
178 | /* FIXME: put here L1A -L0S w/a */ | 179 | /* FIXME: put here L1A -L0S w/a */ |
179 | 180 | ||
180 | iwl_set_bit(priv, CSR_ANA_PLL_CFG, CSR50_ANA_PLL_CFG_VAL); | 181 | if (priv->cfg->need_pll_cfg) |
182 | iwl_set_bit(priv, CSR_ANA_PLL_CFG, CSR50_ANA_PLL_CFG_VAL); | ||
181 | 183 | ||
182 | /* set "initialization complete" bit to move adapter | 184 | /* set "initialization complete" bit to move adapter |
183 | * D0U* --> D0A* state */ | 185 | * D0U* --> D0A* state */ |
@@ -1548,6 +1550,7 @@ struct iwl_cfg iwl5300_agn_cfg = { | |||
1548 | .mod_params = &iwl50_mod_params, | 1550 | .mod_params = &iwl50_mod_params, |
1549 | .valid_tx_ant = ANT_ABC, | 1551 | .valid_tx_ant = ANT_ABC, |
1550 | .valid_rx_ant = ANT_ABC, | 1552 | .valid_rx_ant = ANT_ABC, |
1553 | .need_pll_cfg = true, | ||
1551 | }; | 1554 | }; |
1552 | 1555 | ||
1553 | struct iwl_cfg iwl5100_bg_cfg = { | 1556 | struct iwl_cfg iwl5100_bg_cfg = { |
@@ -1563,6 +1566,7 @@ struct iwl_cfg iwl5100_bg_cfg = { | |||
1563 | .mod_params = &iwl50_mod_params, | 1566 | .mod_params = &iwl50_mod_params, |
1564 | .valid_tx_ant = ANT_B, | 1567 | .valid_tx_ant = ANT_B, |
1565 | .valid_rx_ant = ANT_AB, | 1568 | .valid_rx_ant = ANT_AB, |
1569 | .need_pll_cfg = true, | ||
1566 | }; | 1570 | }; |
1567 | 1571 | ||
1568 | struct iwl_cfg iwl5100_abg_cfg = { | 1572 | struct iwl_cfg iwl5100_abg_cfg = { |
@@ -1578,6 +1582,7 @@ struct iwl_cfg iwl5100_abg_cfg = { | |||
1578 | .mod_params = &iwl50_mod_params, | 1582 | .mod_params = &iwl50_mod_params, |
1579 | .valid_tx_ant = ANT_B, | 1583 | .valid_tx_ant = ANT_B, |
1580 | .valid_rx_ant = ANT_AB, | 1584 | .valid_rx_ant = ANT_AB, |
1585 | .need_pll_cfg = true, | ||
1581 | }; | 1586 | }; |
1582 | 1587 | ||
1583 | struct iwl_cfg iwl5100_agn_cfg = { | 1588 | struct iwl_cfg iwl5100_agn_cfg = { |
@@ -1593,6 +1598,7 @@ struct iwl_cfg iwl5100_agn_cfg = { | |||
1593 | .mod_params = &iwl50_mod_params, | 1598 | .mod_params = &iwl50_mod_params, |
1594 | .valid_tx_ant = ANT_B, | 1599 | .valid_tx_ant = ANT_B, |
1595 | .valid_rx_ant = ANT_AB, | 1600 | .valid_rx_ant = ANT_AB, |
1601 | .need_pll_cfg = true, | ||
1596 | }; | 1602 | }; |
1597 | 1603 | ||
1598 | struct iwl_cfg iwl5350_agn_cfg = { | 1604 | struct iwl_cfg iwl5350_agn_cfg = { |
@@ -1608,6 +1614,7 @@ struct iwl_cfg iwl5350_agn_cfg = { | |||
1608 | .mod_params = &iwl50_mod_params, | 1614 | .mod_params = &iwl50_mod_params, |
1609 | .valid_tx_ant = ANT_ABC, | 1615 | .valid_tx_ant = ANT_ABC, |
1610 | .valid_rx_ant = ANT_ABC, | 1616 | .valid_rx_ant = ANT_ABC, |
1617 | .need_pll_cfg = true, | ||
1611 | }; | 1618 | }; |
1612 | 1619 | ||
1613 | struct iwl_cfg iwl5150_agn_cfg = { | 1620 | struct iwl_cfg iwl5150_agn_cfg = { |
@@ -1623,6 +1630,7 @@ struct iwl_cfg iwl5150_agn_cfg = { | |||
1623 | .mod_params = &iwl50_mod_params, | 1630 | .mod_params = &iwl50_mod_params, |
1624 | .valid_tx_ant = ANT_A, | 1631 | .valid_tx_ant = ANT_A, |
1625 | .valid_rx_ant = ANT_AB, | 1632 | .valid_rx_ant = ANT_AB, |
1633 | .need_pll_cfg = true, | ||
1626 | }; | 1634 | }; |
1627 | 1635 | ||
1628 | MODULE_FIRMWARE(IWL5000_MODULE_FIRMWARE(IWL5000_UCODE_API_MAX)); | 1636 | MODULE_FIRMWARE(IWL5000_MODULE_FIRMWARE(IWL5000_UCODE_API_MAX)); |
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c index b78d67633c27..1672a988424a 100644 --- a/drivers/net/wireless/iwlwifi/iwl-6000.c +++ b/drivers/net/wireless/iwlwifi/iwl-6000.c | |||
@@ -74,6 +74,7 @@ struct iwl_cfg iwl6000_2ag_cfg = { | |||
74 | .mod_params = &iwl50_mod_params, | 74 | .mod_params = &iwl50_mod_params, |
75 | .valid_tx_ant = ANT_BC, | 75 | .valid_tx_ant = ANT_BC, |
76 | .valid_rx_ant = ANT_BC, | 76 | .valid_rx_ant = ANT_BC, |
77 | .need_pll_cfg = false, | ||
77 | }; | 78 | }; |
78 | 79 | ||
79 | struct iwl_cfg iwl6000_2agn_cfg = { | 80 | struct iwl_cfg iwl6000_2agn_cfg = { |
@@ -89,6 +90,7 @@ struct iwl_cfg iwl6000_2agn_cfg = { | |||
89 | .mod_params = &iwl50_mod_params, | 90 | .mod_params = &iwl50_mod_params, |
90 | .valid_tx_ant = ANT_BC, | 91 | .valid_tx_ant = ANT_BC, |
91 | .valid_rx_ant = ANT_BC, | 92 | .valid_rx_ant = ANT_BC, |
93 | .need_pll_cfg = false, | ||
92 | }; | 94 | }; |
93 | 95 | ||
94 | struct iwl_cfg iwl6050_2agn_cfg = { | 96 | struct iwl_cfg iwl6050_2agn_cfg = { |
@@ -104,6 +106,7 @@ struct iwl_cfg iwl6050_2agn_cfg = { | |||
104 | .mod_params = &iwl50_mod_params, | 106 | .mod_params = &iwl50_mod_params, |
105 | .valid_tx_ant = ANT_BC, | 107 | .valid_tx_ant = ANT_BC, |
106 | .valid_rx_ant = ANT_BC, | 108 | .valid_rx_ant = ANT_BC, |
109 | .need_pll_cfg = false, | ||
107 | }; | 110 | }; |
108 | 111 | ||
109 | struct iwl_cfg iwl6000_3agn_cfg = { | 112 | struct iwl_cfg iwl6000_3agn_cfg = { |
@@ -119,6 +122,7 @@ struct iwl_cfg iwl6000_3agn_cfg = { | |||
119 | .mod_params = &iwl50_mod_params, | 122 | .mod_params = &iwl50_mod_params, |
120 | .valid_tx_ant = ANT_ABC, | 123 | .valid_tx_ant = ANT_ABC, |
121 | .valid_rx_ant = ANT_ABC, | 124 | .valid_rx_ant = ANT_ABC, |
125 | .need_pll_cfg = false, | ||
122 | }; | 126 | }; |
123 | 127 | ||
124 | struct iwl_cfg iwl6050_3agn_cfg = { | 128 | struct iwl_cfg iwl6050_3agn_cfg = { |
@@ -134,6 +138,7 @@ struct iwl_cfg iwl6050_3agn_cfg = { | |||
134 | .mod_params = &iwl50_mod_params, | 138 | .mod_params = &iwl50_mod_params, |
135 | .valid_tx_ant = ANT_ABC, | 139 | .valid_tx_ant = ANT_ABC, |
136 | .valid_rx_ant = ANT_ABC, | 140 | .valid_rx_ant = ANT_ABC, |
141 | .need_pll_cfg = false, | ||
137 | }; | 142 | }; |
138 | 143 | ||
139 | MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX)); | 144 | MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX)); |
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h index 02e92be75568..789fe6ee27a2 100644 --- a/drivers/net/wireless/iwlwifi/iwl-core.h +++ b/drivers/net/wireless/iwlwifi/iwl-core.h | |||
@@ -213,6 +213,7 @@ struct iwl_cfg { | |||
213 | const struct iwl_mod_params *mod_params; | 213 | const struct iwl_mod_params *mod_params; |
214 | u8 valid_tx_ant; | 214 | u8 valid_tx_ant; |
215 | u8 valid_rx_ant; | 215 | u8 valid_rx_ant; |
216 | bool need_pll_cfg; | ||
216 | }; | 217 | }; |
217 | 218 | ||
218 | /*************************** | 219 | /*************************** |