aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVasanthakumar Thiagarajan <vasanth@atheros.com>2011-04-19 09:59:04 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-04-25 14:50:09 -0400
commitd89baac8b477d8f9eca72d186863a554d7137b40 (patch)
treecf3a34a2cfa9362a67fb4851151d5a9a48452644
parent9aa5a8d5fd519d61a947c797cb917b38fd156cff (diff)
ath9k_hw: Initialize mode registers from initvals.h for AR9340
Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_hw.c59
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_phy.c3
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.h1
3 files changed, 62 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_hw.c b/drivers/net/wireless/ath/ath9k/ar9003_hw.c
index aebaad97b190..37af7216a1a2 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_hw.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_hw.c
@@ -18,6 +18,7 @@
18#include "ar9003_mac.h" 18#include "ar9003_mac.h"
19#include "ar9003_2p2_initvals.h" 19#include "ar9003_2p2_initvals.h"
20#include "ar9485_initvals.h" 20#include "ar9485_initvals.h"
21#include "ar9340_initvals.h"
21 22
22/* General hardware code for the AR9003 hadware family */ 23/* General hardware code for the AR9003 hadware family */
23 24
@@ -28,7 +29,63 @@
28 */ 29 */
29static void ar9003_hw_init_mode_regs(struct ath_hw *ah) 30static void ar9003_hw_init_mode_regs(struct ath_hw *ah)
30{ 31{
31 if (AR_SREV_9485_11(ah)) { 32 if (AR_SREV_9340(ah)) {
33 /* mac */
34 INIT_INI_ARRAY(&ah->iniMac[ATH_INI_PRE], NULL, 0, 0);
35 INIT_INI_ARRAY(&ah->iniMac[ATH_INI_CORE],
36 ar9340_1p0_mac_core,
37 ARRAY_SIZE(ar9340_1p0_mac_core), 2);
38 INIT_INI_ARRAY(&ah->iniMac[ATH_INI_POST],
39 ar9340_1p0_mac_postamble,
40 ARRAY_SIZE(ar9340_1p0_mac_postamble), 5);
41
42 /* bb */
43 INIT_INI_ARRAY(&ah->iniBB[ATH_INI_PRE], NULL, 0, 0);
44 INIT_INI_ARRAY(&ah->iniBB[ATH_INI_CORE],
45 ar9340_1p0_baseband_core,
46 ARRAY_SIZE(ar9340_1p0_baseband_core), 2);
47 INIT_INI_ARRAY(&ah->iniBB[ATH_INI_POST],
48 ar9340_1p0_baseband_postamble,
49 ARRAY_SIZE(ar9340_1p0_baseband_postamble), 5);
50
51 /* radio */
52 INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_PRE], NULL, 0, 0);
53 INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_CORE],
54 ar9340_1p0_radio_core,
55 ARRAY_SIZE(ar9340_1p0_radio_core), 2);
56 INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_POST],
57 ar9340_1p0_radio_postamble,
58 ARRAY_SIZE(ar9340_1p0_radio_postamble), 5);
59
60 /* soc */
61 INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_PRE],
62 ar9340_1p0_soc_preamble,
63 ARRAY_SIZE(ar9340_1p0_soc_preamble), 2);
64 INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_CORE], NULL, 0, 0);
65 INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_POST],
66 ar9340_1p0_soc_postamble,
67 ARRAY_SIZE(ar9340_1p0_soc_postamble), 5);
68
69 /* rx/tx gain */
70 INIT_INI_ARRAY(&ah->iniModesRxGain,
71 ar9340Common_wo_xlna_rx_gain_table_1p0,
72 ARRAY_SIZE(ar9340Common_wo_xlna_rx_gain_table_1p0),
73 5);
74 INIT_INI_ARRAY(&ah->iniModesTxGain,
75 ar9340Modes_high_ob_db_tx_gain_table_1p0,
76 ARRAY_SIZE(ar9340Modes_high_ob_db_tx_gain_table_1p0),
77 5);
78
79 INIT_INI_ARRAY(&ah->iniModesAdditional,
80 ar9340Modes_fast_clock_1p0,
81 ARRAY_SIZE(ar9340Modes_fast_clock_1p0),
82 3);
83
84 INIT_INI_ARRAY(&ah->iniModesAdditional_40M,
85 ar9340_1p0_radio_core_40M,
86 ARRAY_SIZE(ar9340_1p0_radio_core_40M),
87 2);
88 } else if (AR_SREV_9485_11(ah)) {
32 /* mac */ 89 /* mac */
33 INIT_INI_ARRAY(&ah->iniMac[ATH_INI_PRE], NULL, 0, 0); 90 INIT_INI_ARRAY(&ah->iniMac[ATH_INI_PRE], NULL, 0, 0);
34 INIT_INI_ARRAY(&ah->iniMac[ATH_INI_CORE], 91 INIT_INI_ARRAY(&ah->iniMac[ATH_INI_CORE],
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_phy.c b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
index 1bc33f51e466..c4d08058d40b 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
@@ -646,6 +646,9 @@ static int ar9003_hw_process_ini(struct ath_hw *ah,
646 REG_WRITE_ARRAY(&ah->iniModesAdditional, 646 REG_WRITE_ARRAY(&ah->iniModesAdditional,
647 modesIndex, regWrites); 647 modesIndex, regWrites);
648 648
649 if (AR_SREV_9340(ah) && !ah->is_clk_25mhz)
650 REG_WRITE_ARRAY(&ah->iniModesAdditional_40M, 1, regWrites);
651
649 ar9003_hw_override_ini(ah); 652 ar9003_hw_override_ini(ah);
650 ar9003_hw_set_channel_regs(ah, chan); 653 ar9003_hw_set_channel_regs(ah, chan);
651 ar9003_hw_set_chain_masks(ah, ah->rxchainmask, ah->txchainmask); 654 ar9003_hw_set_chain_masks(ah, ah->rxchainmask, ah->txchainmask);
diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
index 9b1f415c36bc..29a745c59e63 100644
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
@@ -800,6 +800,7 @@ struct ath_hw {
800 struct ar5416IniArray iniPcieSerdes; 800 struct ar5416IniArray iniPcieSerdes;
801 struct ar5416IniArray iniPcieSerdesLowPower; 801 struct ar5416IniArray iniPcieSerdesLowPower;
802 struct ar5416IniArray iniModesAdditional; 802 struct ar5416IniArray iniModesAdditional;
803 struct ar5416IniArray iniModesAdditional_40M;
803 struct ar5416IniArray iniModesRxGain; 804 struct ar5416IniArray iniModesRxGain;
804 struct ar5416IniArray iniModesTxGain; 805 struct ar5416IniArray iniModesTxGain;
805 struct ar5416IniArray iniModes_9271_1_0_only; 806 struct ar5416IniArray iniModes_9271_1_0_only;