diff options
author | Vasanthakumar Thiagarajan <vasanth@atheros.com> | 2011-04-19 09:59:04 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-04-25 14:50:09 -0400 |
commit | d89baac8b477d8f9eca72d186863a554d7137b40 (patch) | |
tree | cf3a34a2cfa9362a67fb4851151d5a9a48452644 | |
parent | 9aa5a8d5fd519d61a947c797cb917b38fd156cff (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.c | 59 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_phy.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.h | 1 |
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 | */ |
29 | static void ar9003_hw_init_mode_regs(struct ath_hw *ah) | 30 | static 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; |