efba9444a57036e96cbc33a7dda582a59076c7a4
[openwrt/openwrt.git] / package / mac80211 / patches / 550-ath9k_pending_work.patch
1 --- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c
2 +++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
3 @@ -852,7 +852,7 @@ static int ar5008_hw_process_ini(struct
4
5 REG_WRITE_ARRAY(&ah->iniBB_RfGain, freqIndex, regWrites);
6
7 - if (AR_SREV_9280_20(ah) && IS_CHAN_A_5MHZ_SPACED(chan)) {
8 + if (IS_CHAN_A_FAST_CLOCK(ah, chan)) {
9 REG_WRITE_ARRAY(&ah->iniModesAdditional, modesIndex,
10 regWrites);
11 }
12 @@ -894,8 +894,7 @@ static void ar5008_hw_set_rfmode(struct
13 rfMode |= (IS_CHAN_5GHZ(chan)) ?
14 AR_PHY_MODE_RF5GHZ : AR_PHY_MODE_RF2GHZ;
15
16 - if ((AR_SREV_9280_20(ah) || AR_SREV_9300_20_OR_LATER(ah))
17 - && IS_CHAN_A_5MHZ_SPACED(chan))
18 + if (IS_CHAN_A_FAST_CLOCK(ah, chan))
19 rfMode |= (AR_PHY_MODE_DYNAMIC | AR_PHY_MODE_DYN_CCK_DISABLE);
20
21 REG_WRITE(ah, AR_PHY_MODE, rfMode);
22 --- a/drivers/net/wireless/ath/ath9k/ar9002_phy.c
23 +++ b/drivers/net/wireless/ath/ath9k/ar9002_phy.c
24 @@ -455,16 +455,12 @@ static u32 ar9002_hw_compute_pll_control
25 pll |= SM(0x2, AR_RTC_9160_PLL_CLKSEL);
26
27 if (chan && IS_CHAN_5GHZ(chan)) {
28 - pll |= SM(0x28, AR_RTC_9160_PLL_DIV);
29 -
30 -
31 - if (AR_SREV_9280_20(ah)) {
32 - if (((chan->channel % 20) == 0)
33 - || ((chan->channel % 10) == 0))
34 - pll = 0x2850;
35 - else
36 - pll = 0x142c;
37 - }
38 + if (IS_CHAN_A_FAST_CLOCK(ah, chan))
39 + pll = 0x142c;
40 + else if (AR_SREV_9280_20(ah))
41 + pll = 0x2850;
42 + else
43 + pll |= SM(0x28, AR_RTC_9160_PLL_DIV);
44 } else {
45 pll |= SM(0x2c, AR_RTC_9160_PLL_DIV);
46 }
47 --- a/drivers/net/wireless/ath/ath9k/ar9003_calib.c
48 +++ b/drivers/net/wireless/ath/ath9k/ar9003_calib.c
49 @@ -755,7 +755,8 @@ static bool ar9003_hw_init_cal(struct at
50 }
51
52 /* Do Tx IQ Calibration */
53 - ar9003_hw_tx_iq_cal(ah);
54 + if (ah->config.tx_iq_calibration)
55 + ar9003_hw_tx_iq_cal(ah);
56
57 /* Revert chainmasks to their original values before NF cal */
58 ar9003_hw_set_chain_masks(ah, ah->rxchainmask, ah->txchainmask);
59 --- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
60 +++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
61 @@ -265,7 +265,7 @@ struct cal_ctl_edge_pwr {
62 } __packed;
63
64 struct cal_ctl_data_2g {
65 - struct cal_ctl_edge_pwr ctlEdges[AR9300_NUM_BAND_EDGES_5G];
66 + struct cal_ctl_edge_pwr ctlEdges[AR9300_NUM_BAND_EDGES_2G];
67 } __packed;
68
69 struct cal_ctl_data_5g {
70 --- a/drivers/net/wireless/ath/ath9k/ar9003_initvals.h
71 +++ b/drivers/net/wireless/ath/ath9k/ar9003_initvals.h
72 @@ -31,7 +31,7 @@ static const u32 ar9300_2p0_radio_postam
73
74 static const u32 ar9300Modes_lowest_ob_db_tx_gain_table_2p0[][5] = {
75 /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
76 - {0x0000a410, 0x000050da, 0x000050da, 0x000050da, 0x000050da},
77 + {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9},
78 {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
79 {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002},
80 {0x0000a508, 0x0a000020, 0x0a000020, 0x08000004, 0x08000004},
81 @@ -545,7 +545,7 @@ static const u32 ar9300_2p0_soc_postambl
82 };
83
84 static const u32 ar9200_merlin_2p0_radio_core[][2] = {
85 - /* Addr common */
86 + /* Addr allmodes */
87 {0x00007800, 0x00040000},
88 {0x00007804, 0xdb005012},
89 {0x00007808, 0x04924914},
90 @@ -835,71 +835,71 @@ static const u32 ar9300_2p0_baseband_cor
91
92 static const u32 ar9300Modes_high_power_tx_gain_table_2p0[][5] = {
93 /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
94 - {0x0000a410, 0x000050d9, 0x000050d9, 0x000050da, 0x000050da},
95 + {0x0000a410, 0x000050db, 0x000050db, 0x000050d9, 0x000050d9},
96 {0x0000a500, 0x00020220, 0x00020220, 0x00000000, 0x00000000},
97 {0x0000a504, 0x06020223, 0x06020223, 0x04000002, 0x04000002},
98 - {0x0000a508, 0x0b022220, 0x0b022220, 0x08000004, 0x08000004},
99 - {0x0000a50c, 0x10022223, 0x10022223, 0x0b000200, 0x0b000200},
100 - {0x0000a510, 0x17022620, 0x17022620, 0x0f000202, 0x0f000202},
101 - {0x0000a514, 0x1b022622, 0x1b022622, 0x11000400, 0x11000400},
102 - {0x0000a518, 0x1f022822, 0x1f022822, 0x15000402, 0x15000402},
103 - {0x0000a51c, 0x24022842, 0x24022842, 0x19000404, 0x19000404},
104 - {0x0000a520, 0x28042840, 0x28042840, 0x1b000603, 0x1b000603},
105 - {0x0000a524, 0x2c042842, 0x2c042842, 0x1f000a02, 0x1f000a02},
106 - {0x0000a528, 0x30042844, 0x30042844, 0x23000a04, 0x23000a04},
107 - {0x0000a52c, 0x34042846, 0x34042846, 0x26000a20, 0x26000a20},
108 - {0x0000a530, 0x39042869, 0x39042869, 0x2a000e20, 0x2a000e20},
109 - {0x0000a534, 0x3d062869, 0x3d062869, 0x2e000e22, 0x2e000e22},
110 - {0x0000a538, 0x44062c69, 0x44062c69, 0x31000e24, 0x31000e24},
111 - {0x0000a53c, 0x48063069, 0x48063069, 0x34001640, 0x34001640},
112 - {0x0000a540, 0x4c0a3065, 0x4c0a3065, 0x38001660, 0x38001660},
113 - {0x0000a544, 0x500a3069, 0x500a3069, 0x3b001861, 0x3b001861},
114 - {0x0000a548, 0x530a3469, 0x530a3469, 0x3e001a81, 0x3e001a81},
115 - {0x0000a54c, 0x590a7464, 0x590a7464, 0x42001a83, 0x42001a83},
116 - {0x0000a550, 0x5e0a7865, 0x5e0a7865, 0x44001c84, 0x44001c84},
117 - {0x0000a554, 0x630a7e66, 0x630a7e66, 0x48001ce3, 0x48001ce3},
118 - {0x0000a558, 0x680a7e89, 0x680a7e89, 0x4c001ce5, 0x4c001ce5},
119 - {0x0000a55c, 0x6e0a7e8c, 0x6e0a7e8c, 0x50001ce9, 0x50001ce9},
120 - {0x0000a560, 0x730e7e8c, 0x730e7e8c, 0x54001ceb, 0x54001ceb},
121 - {0x0000a564, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec},
122 - {0x0000a568, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec},
123 - {0x0000a56c, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec},
124 - {0x0000a570, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec},
125 - {0x0000a574, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec},
126 - {0x0000a578, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec},
127 - {0x0000a57c, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec},
128 + {0x0000a508, 0x0a022220, 0x0a022220, 0x08000004, 0x08000004},
129 + {0x0000a50c, 0x0f022223, 0x0f022223, 0x0b000200, 0x0b000200},
130 + {0x0000a510, 0x14022620, 0x14022620, 0x0f000202, 0x0f000202},
131 + {0x0000a514, 0x18022622, 0x18022622, 0x11000400, 0x11000400},
132 + {0x0000a518, 0x1b022822, 0x1b022822, 0x15000402, 0x15000402},
133 + {0x0000a51c, 0x20022842, 0x20022842, 0x19000404, 0x19000404},
134 + {0x0000a520, 0x22022c41, 0x22022c41, 0x1b000603, 0x1b000603},
135 + {0x0000a524, 0x28023042, 0x28023042, 0x1f000a02, 0x1f000a02},
136 + {0x0000a528, 0x2c023044, 0x2c023044, 0x23000a04, 0x23000a04},
137 + {0x0000a52c, 0x2f023644, 0x2f023644, 0x26000a20, 0x26000a20},
138 + {0x0000a530, 0x34043643, 0x34043643, 0x2a000e20, 0x2a000e20},
139 + {0x0000a534, 0x38043a44, 0x38043a44, 0x2e000e22, 0x2e000e22},
140 + {0x0000a538, 0x3b043e45, 0x3b043e45, 0x31000e24, 0x31000e24},
141 + {0x0000a53c, 0x40063e46, 0x40063e46, 0x34001640, 0x34001640},
142 + {0x0000a540, 0x44083e46, 0x44083e46, 0x38001660, 0x38001660},
143 + {0x0000a544, 0x46083e66, 0x46083e66, 0x3b001861, 0x3b001861},
144 + {0x0000a548, 0x4b0a3e69, 0x4b0a3e69, 0x3e001a81, 0x3e001a81},
145 + {0x0000a54c, 0x4f0a5e66, 0x4f0a5e66, 0x42001a83, 0x42001a83},
146 + {0x0000a550, 0x540a7e66, 0x540a7e66, 0x44001c84, 0x44001c84},
147 + {0x0000a554, 0x570a7e89, 0x570a7e89, 0x48001ce3, 0x48001ce3},
148 + {0x0000a558, 0x5c0e7e8a, 0x5c0e7e8a, 0x4c001ce5, 0x4c001ce5},
149 + {0x0000a55c, 0x60127e8b, 0x60127e8b, 0x50001ce9, 0x50001ce9},
150 + {0x0000a560, 0x65127ecc, 0x65127ecc, 0x54001ceb, 0x54001ceb},
151 + {0x0000a564, 0x6b169ecd, 0x6b169ecd, 0x56001eec, 0x56001eec},
152 + {0x0000a568, 0x70169f0e, 0x70169f0e, 0x56001eec, 0x56001eec},
153 + {0x0000a56c, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec},
154 + {0x0000a570, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec},
155 + {0x0000a574, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec},
156 + {0x0000a578, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec},
157 + {0x0000a57c, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec},
158 {0x0000a580, 0x00820220, 0x00820220, 0x00800000, 0x00800000},
159 {0x0000a584, 0x06820223, 0x06820223, 0x04800002, 0x04800002},
160 - {0x0000a588, 0x0b822220, 0x0b822220, 0x08800004, 0x08800004},
161 - {0x0000a58c, 0x10822223, 0x10822223, 0x0b800200, 0x0b800200},
162 - {0x0000a590, 0x17822620, 0x17822620, 0x0f800202, 0x0f800202},
163 - {0x0000a594, 0x1b822622, 0x1b822622, 0x11800400, 0x11800400},
164 - {0x0000a598, 0x1f822822, 0x1f822822, 0x15800402, 0x15800402},
165 - {0x0000a59c, 0x24822842, 0x24822842, 0x19800404, 0x19800404},
166 - {0x0000a5a0, 0x28842840, 0x28842840, 0x1b800603, 0x1b800603},
167 - {0x0000a5a4, 0x2c842842, 0x2c842842, 0x1f800a02, 0x1f800a02},
168 - {0x0000a5a8, 0x30842844, 0x30842844, 0x23800a04, 0x23800a04},
169 - {0x0000a5ac, 0x34842846, 0x34842846, 0x26800a20, 0x26800a20},
170 - {0x0000a5b0, 0x39842869, 0x39842869, 0x2a800e20, 0x2a800e20},
171 - {0x0000a5b4, 0x3d862869, 0x3d862869, 0x2e800e22, 0x2e800e22},
172 - {0x0000a5b8, 0x44862c69, 0x44862c69, 0x31800e24, 0x31800e24},
173 - {0x0000a5bc, 0x48863069, 0x48863069, 0x34801640, 0x34801640},
174 - {0x0000a5c0, 0x4c8a3065, 0x4c8a3065, 0x38801660, 0x38801660},
175 - {0x0000a5c4, 0x508a3069, 0x508a3069, 0x3b801861, 0x3b801861},
176 - {0x0000a5c8, 0x538a3469, 0x538a3469, 0x3e801a81, 0x3e801a81},
177 - {0x0000a5cc, 0x598a7464, 0x598a7464, 0x42801a83, 0x42801a83},
178 - {0x0000a5d0, 0x5e8a7865, 0x5e8a7865, 0x44801c84, 0x44801c84},
179 - {0x0000a5d4, 0x638a7e66, 0x638a7e66, 0x48801ce3, 0x48801ce3},
180 - {0x0000a5d8, 0x688a7e89, 0x688a7e89, 0x4c801ce5, 0x4c801ce5},
181 - {0x0000a5dc, 0x6e8a7e8c, 0x6e8a7e8c, 0x50801ce9, 0x50801ce9},
182 - {0x0000a5e0, 0x738e7e8c, 0x738e7e8c, 0x54801ceb, 0x54801ceb},
183 - {0x0000a5e4, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec},
184 - {0x0000a5e8, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec},
185 - {0x0000a5ec, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec},
186 - {0x0000a5f0, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec},
187 - {0x0000a5f4, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec},
188 - {0x0000a5f8, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec},
189 - {0x0000a5fc, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec},
190 + {0x0000a588, 0x0a822220, 0x0a822220, 0x08800004, 0x08800004},
191 + {0x0000a58c, 0x0f822223, 0x0f822223, 0x0b800200, 0x0b800200},
192 + {0x0000a590, 0x14822620, 0x14822620, 0x0f800202, 0x0f800202},
193 + {0x0000a594, 0x18822622, 0x18822622, 0x11800400, 0x11800400},
194 + {0x0000a598, 0x1b822822, 0x1b822822, 0x15800402, 0x15800402},
195 + {0x0000a59c, 0x20822842, 0x20822842, 0x19800404, 0x19800404},
196 + {0x0000a5a0, 0x22822c41, 0x22822c41, 0x1b800603, 0x1b800603},
197 + {0x0000a5a4, 0x28823042, 0x28823042, 0x1f800a02, 0x1f800a02},
198 + {0x0000a5a8, 0x2c823044, 0x2c823044, 0x23800a04, 0x23800a04},
199 + {0x0000a5ac, 0x2f823644, 0x2f823644, 0x26800a20, 0x26800a20},
200 + {0x0000a5b0, 0x34843643, 0x34843643, 0x2a800e20, 0x2a800e20},
201 + {0x0000a5b4, 0x38843a44, 0x38843a44, 0x2e800e22, 0x2e800e22},
202 + {0x0000a5b8, 0x3b843e45, 0x3b843e45, 0x31800e24, 0x31800e24},
203 + {0x0000a5bc, 0x40863e46, 0x40863e46, 0x34801640, 0x34801640},
204 + {0x0000a5c0, 0x4c8a3065, 0x44883e46, 0x44883e46, 0x38801660},
205 + {0x0000a5c4, 0x46883e66, 0x46883e66, 0x3b801861, 0x3b801861},
206 + {0x0000a5c8, 0x4b8a3e69, 0x4b8a3e69, 0x3e801a81, 0x3e801a81},
207 + {0x0000a5cc, 0x4f8a5e66, 0x4f8a5e66, 0x42801a83, 0x42801a83},
208 + {0x0000a5d0, 0x548a7e66, 0x548a7e66, 0x44801c84, 0x44801c84},
209 + {0x0000a5d4, 0x578a7e89, 0x578a7e89, 0x48801ce3, 0x48801ce3},
210 + {0x0000a5d8, 0x5c8e7e8a, 0x5c8e7e8a, 0x4c801ce5, 0x4c801ce5},
211 + {0x0000a5dc, 0x60927e8b, 0x60927e8b, 0x50801ce9, 0x50801ce9},
212 + {0x0000a5e0, 0x65927ecc, 0x65927ecc, 0x54801ceb, 0x54801ceb},
213 + {0x0000a5e4, 0x6b969ecd, 0x6b969ecd, 0x56801eec, 0x56801eec},
214 + {0x0000a5e8, 0x70969f0e, 0x70969f0e, 0x56801eec, 0x56801eec},
215 + {0x0000a5ec, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec},
216 + {0x0000a5f0, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec},
217 + {0x0000a5f4, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec},
218 + {0x0000a5f8, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec},
219 + {0x0000a5fc, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec},
220 {0x00016044, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6},
221 {0x00016048, 0xad241a61, 0xad241a61, 0xad241a61, 0xad241a61},
222 {0x00016068, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c},
223 @@ -913,71 +913,71 @@ static const u32 ar9300Modes_high_power_
224
225 static const u32 ar9300Modes_high_ob_db_tx_gain_table_2p0[][5] = {
226 /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
227 - {0x0000a410, 0x000050d9, 0x000050d9, 0x000050da, 0x000050da},
228 + {0x0000a410, 0x000050db, 0x000050db, 0x000050d9, 0x000050d9},
229 {0x0000a500, 0x00020220, 0x00020220, 0x00000000, 0x00000000},
230 {0x0000a504, 0x06020223, 0x06020223, 0x04000002, 0x04000002},
231 - {0x0000a508, 0x0b022220, 0x0b022220, 0x08000004, 0x08000004},
232 - {0x0000a50c, 0x10022223, 0x10022223, 0x0b000200, 0x0b000200},
233 - {0x0000a510, 0x17022620, 0x17022620, 0x0f000202, 0x0f000202},
234 - {0x0000a514, 0x1b022622, 0x1b022622, 0x11000400, 0x11000400},
235 - {0x0000a518, 0x1f022822, 0x1f022822, 0x15000402, 0x15000402},
236 - {0x0000a51c, 0x24022842, 0x24022842, 0x19000404, 0x19000404},
237 - {0x0000a520, 0x28042840, 0x28042840, 0x1b000603, 0x1b000603},
238 - {0x0000a524, 0x2c042842, 0x2c042842, 0x1f000a02, 0x1f000a02},
239 - {0x0000a528, 0x30042844, 0x30042844, 0x23000a04, 0x23000a04},
240 - {0x0000a52c, 0x34042846, 0x34042846, 0x26000a20, 0x26000a20},
241 - {0x0000a530, 0x39042869, 0x39042869, 0x2a000e20, 0x2a000e20},
242 - {0x0000a534, 0x3d062869, 0x3d062869, 0x2e000e22, 0x2e000e22},
243 - {0x0000a538, 0x44062c69, 0x44062c69, 0x31000e24, 0x31000e24},
244 - {0x0000a53c, 0x48063069, 0x48063069, 0x34001640, 0x34001640},
245 - {0x0000a540, 0x4c0a3065, 0x4c0a3065, 0x38001660, 0x38001660},
246 - {0x0000a544, 0x500a3069, 0x500a3069, 0x3b001861, 0x3b001861},
247 - {0x0000a548, 0x530a3469, 0x530a3469, 0x3e001a81, 0x3e001a81},
248 - {0x0000a54c, 0x590a7464, 0x590a7464, 0x42001a83, 0x42001a83},
249 - {0x0000a550, 0x5e0a7865, 0x5e0a7865, 0x44001c84, 0x44001c84},
250 - {0x0000a554, 0x630a7e66, 0x630a7e66, 0x48001ce3, 0x48001ce3},
251 - {0x0000a558, 0x680a7e89, 0x680a7e89, 0x4c001ce5, 0x4c001ce5},
252 - {0x0000a55c, 0x6e0a7e8c, 0x6e0a7e8c, 0x50001ce9, 0x50001ce9},
253 - {0x0000a560, 0x730e7e8c, 0x730e7e8c, 0x54001ceb, 0x54001ceb},
254 - {0x0000a564, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec},
255 - {0x0000a568, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec},
256 - {0x0000a56c, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec},
257 - {0x0000a570, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec},
258 - {0x0000a574, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec},
259 - {0x0000a578, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec},
260 - {0x0000a57c, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec},
261 + {0x0000a508, 0x0a022220, 0x0a022220, 0x08000004, 0x08000004},
262 + {0x0000a50c, 0x0f022223, 0x0f022223, 0x0b000200, 0x0b000200},
263 + {0x0000a510, 0x14022620, 0x14022620, 0x0f000202, 0x0f000202},
264 + {0x0000a514, 0x18022622, 0x18022622, 0x11000400, 0x11000400},
265 + {0x0000a518, 0x1b022822, 0x1b022822, 0x15000402, 0x15000402},
266 + {0x0000a51c, 0x20022842, 0x20022842, 0x19000404, 0x19000404},
267 + {0x0000a520, 0x22022c41, 0x22022c41, 0x1b000603, 0x1b000603},
268 + {0x0000a524, 0x28023042, 0x28023042, 0x1f000a02, 0x1f000a02},
269 + {0x0000a528, 0x2c023044, 0x2c023044, 0x23000a04, 0x23000a04},
270 + {0x0000a52c, 0x2f023644, 0x2f023644, 0x26000a20, 0x26000a20},
271 + {0x0000a530, 0x34043643, 0x34043643, 0x2a000e20, 0x2a000e20},
272 + {0x0000a534, 0x38043a44, 0x38043a44, 0x2e000e22, 0x2e000e22},
273 + {0x0000a538, 0x3b043e45, 0x3b043e45, 0x31000e24, 0x31000e24},
274 + {0x0000a53c, 0x40063e46, 0x40063e46, 0x34001640, 0x34001640},
275 + {0x0000a540, 0x44083e46, 0x44083e46, 0x38001660, 0x38001660},
276 + {0x0000a544, 0x46083e66, 0x46083e66, 0x3b001861, 0x3b001861},
277 + {0x0000a548, 0x4b0a3e69, 0x4b0a3e69, 0x3e001a81, 0x3e001a81},
278 + {0x0000a54c, 0x4f0a5e66, 0x4f0a5e66, 0x42001a83, 0x42001a83},
279 + {0x0000a550, 0x540a7e66, 0x540a7e66, 0x44001c84, 0x44001c84},
280 + {0x0000a554, 0x570a7e89, 0x570a7e89, 0x48001ce3, 0x48001ce3},
281 + {0x0000a558, 0x5c0e7e8a, 0x5c0e7e8a, 0x4c001ce5, 0x4c001ce5},
282 + {0x0000a55c, 0x60127e8b, 0x60127e8b, 0x50001ce9, 0x50001ce9},
283 + {0x0000a560, 0x65127ecc, 0x65127ecc, 0x54001ceb, 0x54001ceb},
284 + {0x0000a564, 0x6b169ecd, 0x6b169ecd, 0x56001eec, 0x56001eec},
285 + {0x0000a568, 0x70169f0e, 0x70169f0e, 0x56001eec, 0x56001eec},
286 + {0x0000a56c, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec},
287 + {0x0000a570, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec},
288 + {0x0000a574, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec},
289 + {0x0000a578, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec},
290 + {0x0000a57c, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec},
291 {0x0000a580, 0x00820220, 0x00820220, 0x00800000, 0x00800000},
292 {0x0000a584, 0x06820223, 0x06820223, 0x04800002, 0x04800002},
293 - {0x0000a588, 0x0b822220, 0x0b822220, 0x08800004, 0x08800004},
294 - {0x0000a58c, 0x10822223, 0x10822223, 0x0b800200, 0x0b800200},
295 - {0x0000a590, 0x17822620, 0x17822620, 0x0f800202, 0x0f800202},
296 - {0x0000a594, 0x1b822622, 0x1b822622, 0x11800400, 0x11800400},
297 - {0x0000a598, 0x1f822822, 0x1f822822, 0x15800402, 0x15800402},
298 - {0x0000a59c, 0x24822842, 0x24822842, 0x19800404, 0x19800404},
299 - {0x0000a5a0, 0x28842840, 0x28842840, 0x1b800603, 0x1b800603},
300 - {0x0000a5a4, 0x2c842842, 0x2c842842, 0x1f800a02, 0x1f800a02},
301 - {0x0000a5a8, 0x30842844, 0x30842844, 0x23800a04, 0x23800a04},
302 - {0x0000a5ac, 0x34842846, 0x34842846, 0x26800a20, 0x26800a20},
303 - {0x0000a5b0, 0x39842869, 0x39842869, 0x2a800e20, 0x2a800e20},
304 - {0x0000a5b4, 0x3d862869, 0x3d862869, 0x2e800e22, 0x2e800e22},
305 - {0x0000a5b8, 0x44862c69, 0x44862c69, 0x31800e24, 0x31800e24},
306 - {0x0000a5bc, 0x48863069, 0x48863069, 0x34801640, 0x34801640},
307 - {0x0000a5c0, 0x4c8a3065, 0x4c8a3065, 0x38801660, 0x38801660},
308 - {0x0000a5c4, 0x508a3069, 0x508a3069, 0x3b801861, 0x3b801861},
309 - {0x0000a5c8, 0x538a3469, 0x538a3469, 0x3e801a81, 0x3e801a81},
310 - {0x0000a5cc, 0x598a7464, 0x598a7464, 0x42801a83, 0x42801a83},
311 - {0x0000a5d0, 0x5e8a7865, 0x5e8a7865, 0x44801c84, 0x44801c84},
312 - {0x0000a5d4, 0x638a7e66, 0x638a7e66, 0x48801ce3, 0x48801ce3},
313 - {0x0000a5d8, 0x688a7e89, 0x688a7e89, 0x4c801ce5, 0x4c801ce5},
314 - {0x0000a5dc, 0x6e8a7e8c, 0x6e8a7e8c, 0x50801ce9, 0x50801ce9},
315 - {0x0000a5e0, 0x738e7e8c, 0x738e7e8c, 0x54801ceb, 0x54801ceb},
316 - {0x0000a5e4, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec},
317 - {0x0000a5e8, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec},
318 - {0x0000a5ec, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec},
319 - {0x0000a5f0, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec},
320 - {0x0000a5f4, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec},
321 - {0x0000a5f8, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec},
322 - {0x0000a5fc, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec},
323 + {0x0000a588, 0x0a822220, 0x0a822220, 0x08800004, 0x08800004},
324 + {0x0000a58c, 0x0f822223, 0x0f822223, 0x0b800200, 0x0b800200},
325 + {0x0000a590, 0x14822620, 0x14822620, 0x0f800202, 0x0f800202},
326 + {0x0000a594, 0x18822622, 0x18822622, 0x11800400, 0x11800400},
327 + {0x0000a598, 0x1b822822, 0x1b822822, 0x15800402, 0x15800402},
328 + {0x0000a59c, 0x20822842, 0x20822842, 0x19800404, 0x19800404},
329 + {0x0000a5a0, 0x22822c41, 0x22822c41, 0x1b800603, 0x1b800603},
330 + {0x0000a5a4, 0x28823042, 0x28823042, 0x1f800a02, 0x1f800a02},
331 + {0x0000a5a8, 0x2c823044, 0x2c823044, 0x23800a04, 0x23800a04},
332 + {0x0000a5ac, 0x2f823644, 0x2f823644, 0x26800a20, 0x26800a20},
333 + {0x0000a5b0, 0x34843643, 0x34843643, 0x2a800e20, 0x2a800e20},
334 + {0x0000a5b4, 0x38843a44, 0x38843a44, 0x2e800e22, 0x2e800e22},
335 + {0x0000a5b8, 0x3b843e45, 0x3b843e45, 0x31800e24, 0x31800e24},
336 + {0x0000a5bc, 0x40863e46, 0x40863e46, 0x34801640, 0x34801640},
337 + {0x0000a5c0, 0x44883e46, 0x44883e46, 0x38801660, 0x38801660},
338 + {0x0000a5c4, 0x46883e66, 0x46883e66, 0x3b801861, 0x3b801861},
339 + {0x0000a5c8, 0x4b8a3e69, 0x4b8a3e69, 0x3e801a81, 0x3e801a81},
340 + {0x0000a5cc, 0x4f8a5e66, 0x4f8a5e66, 0x42801a83, 0x42801a83},
341 + {0x0000a5d0, 0x548a7e66, 0x548a7e66, 0x44801c84, 0x44801c84},
342 + {0x0000a5d4, 0x578a7e89, 0x578a7e89, 0x48801ce3, 0x48801ce3},
343 + {0x0000a5d8, 0x5c8e7e8a, 0x5c8e7e8a, 0x4c801ce5, 0x4c801ce5},
344 + {0x0000a5dc, 0x60927e8b, 0x60927e8b, 0x50801ce9, 0x50801ce9},
345 + {0x0000a5e0, 0x65927ecc, 0x65927ecc, 0x54801ceb, 0x54801ceb},
346 + {0x0000a5e4, 0x6b969ecd, 0x6b969ecd, 0x56801eec, 0x56801eec},
347 + {0x0000a5e8, 0x70969f0e, 0x70969f0e, 0x56801eec, 0x56801eec},
348 + {0x0000a5ec, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec},
349 + {0x0000a5f0, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec},
350 + {0x0000a5f4, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec},
351 + {0x0000a5f8, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec},
352 + {0x0000a5fc, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec},
353 {0x00016044, 0x056db2e4, 0x056db2e4, 0x056db2e4, 0x056db2e4},
354 {0x00016048, 0x8c001a61, 0x8c001a61, 0x8c001a61, 0x8c001a61},
355 {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
356 @@ -1251,7 +1251,7 @@ static const u32 ar9300Common_rx_gain_ta
357
358 static const u32 ar9300Modes_low_ob_db_tx_gain_table_2p0[][5] = {
359 /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
360 - {0x0000a410, 0x000050da, 0x000050da, 0x000050da, 0x000050da},
361 + {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9},
362 {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
363 {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002},
364 {0x0000a508, 0x0a000020, 0x0a000020, 0x08000004, 0x08000004},
365 @@ -1760,31 +1760,22 @@ static const u32 ar9300_2p0_soc_preamble
366 {0x00007038, 0x000004c2},
367 };
368
369 -/*
370 - * PCIE-PHY programming array, to be used prior to entering
371 - * full sleep (holding RTC in reset, PLL is ON in L1 mode)
372 - */
373 static const u32 ar9300PciePhy_pll_on_clkreq_disable_L1_2p0[][2] = {
374 + /* Addr allmodes */
375 {0x00004040, 0x08212e5e},
376 {0x00004040, 0x0008003b},
377 {0x00004044, 0x00000000},
378 };
379
380 -/*
381 - * PCIE-PHY programming array, to be used when not in
382 - * full sleep (holding RTC in reset)
383 - */
384 static const u32 ar9300PciePhy_clkreq_enable_L1_2p0[][2] = {
385 + /* Addr allmodes */
386 {0x00004040, 0x08253e5e},
387 {0x00004040, 0x0008003b},
388 {0x00004044, 0x00000000},
389 };
390
391 -/*
392 - * PCIE-PHY programming array, to be used prior to entering
393 - * full sleep (holding RTC in reset)
394 - */
395 static const u32 ar9300PciePhy_clkreq_disable_L1_2p0[][2] = {
396 + /* Addr allmodes */
397 {0x00004040, 0x08213e5e},
398 {0x00004040, 0x0008003b},
399 {0x00004044, 0x00000000},
400 --- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
401 +++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
402 @@ -375,16 +375,7 @@ static u32 ar9003_hw_compute_pll_control
403 else if (chan && IS_CHAN_QUARTER_RATE(chan))
404 pll |= SM(0x2, AR_RTC_9300_PLL_CLKSEL);
405
406 - if (chan && IS_CHAN_5GHZ(chan)) {
407 - pll |= SM(0x28, AR_RTC_9300_PLL_DIV);
408 -
409 - /*
410 - * When doing fast clock, set PLL to 0x142c
411 - */
412 - if (IS_CHAN_A_5MHZ_SPACED(chan))
413 - pll = 0x142c;
414 - } else
415 - pll |= SM(0x2c, AR_RTC_9300_PLL_DIV);
416 + pll |= SM(0x2c, AR_RTC_9300_PLL_DIV);
417
418 return pll;
419 }
420 @@ -592,7 +583,7 @@ static int ar9003_hw_process_ini(struct
421 * For 5GHz channels requiring Fast Clock, apply
422 * different modal values.
423 */
424 - if (IS_CHAN_A_5MHZ_SPACED(chan))
425 + if (IS_CHAN_A_FAST_CLOCK(ah, chan))
426 REG_WRITE_ARRAY(&ah->iniModesAdditional,
427 modesIndex, regWrites);
428
429 @@ -622,7 +613,7 @@ static void ar9003_hw_set_rfmode(struct
430 rfMode |= (IS_CHAN_B(chan) || IS_CHAN_G(chan))
431 ? AR_PHY_MODE_DYNAMIC : AR_PHY_MODE_OFDM;
432
433 - if (IS_CHAN_A_5MHZ_SPACED(chan))
434 + if (IS_CHAN_A_FAST_CLOCK(ah, chan))
435 rfMode |= (AR_PHY_MODE_DYNAMIC | AR_PHY_MODE_DYN_CCK_DISABLE);
436
437 REG_WRITE(ah, AR_PHY_MODE, rfMode);
438 --- a/drivers/net/wireless/ath/ath9k/eeprom.h
439 +++ b/drivers/net/wireless/ath/ath9k/eeprom.h
440 @@ -300,7 +300,8 @@ struct base_eep_header {
441 u32 binBuildNumber;
442 u8 deviceType;
443 u8 pwdclkind;
444 - u8 futureBase_1[2];
445 + u8 fastClk5g;
446 + u8 divChain;
447 u8 rxGainType;
448 u8 dacHiPwrMode_5G;
449 u8 openLoopPwrCntl;
450 --- a/drivers/net/wireless/ath/ath9k/eeprom_def.c
451 +++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c
452 @@ -274,6 +274,8 @@ static u32 ath9k_hw_def_get_eeprom(struc
453 return pBase->txMask;
454 case EEP_RX_MASK:
455 return pBase->rxMask;
456 + case EEP_FSTCLK_5G:
457 + return pBase->fastClk5g;
458 case EEP_RXGAIN_TYPE:
459 return pBase->rxGainType;
460 case EEP_TXGAIN_TYPE:
461 --- a/drivers/net/wireless/ath/ath9k/hw.c
462 +++ b/drivers/net/wireless/ath/ath9k/hw.c
463 @@ -29,6 +29,7 @@
464 #define ATH9K_CLOCK_RATE_CCK 22
465 #define ATH9K_CLOCK_RATE_5GHZ_OFDM 40
466 #define ATH9K_CLOCK_RATE_2GHZ_OFDM 44
467 +#define ATH9K_CLOCK_FAST_RATE_5GHZ_OFDM 44
468
469 static bool ath9k_hw_set_reset_reg(struct ath_hw *ah, u32 type);
470
471 @@ -94,7 +95,11 @@ static u32 ath9k_hw_mac_clks(struct ath_
472 return usecs *ATH9K_CLOCK_RATE_CCK;
473 if (conf->channel->band == IEEE80211_BAND_2GHZ)
474 return usecs *ATH9K_CLOCK_RATE_2GHZ_OFDM;
475 - return usecs *ATH9K_CLOCK_RATE_5GHZ_OFDM;
476 +
477 + if (ah->caps.hw_caps & ATH9K_HW_CAP_FASTCLOCK)
478 + return usecs * ATH9K_CLOCK_FAST_RATE_5GHZ_OFDM;
479 + else
480 + return usecs * ATH9K_CLOCK_RATE_5GHZ_OFDM;
481 }
482
483 static u32 ath9k_hw_mac_to_clks(struct ath_hw *ah, u32 usecs)
484 @@ -390,6 +395,12 @@ static void ath9k_hw_init_config(struct
485 ah->config.rx_intr_mitigation = true;
486
487 /*
488 + * Tx IQ Calibration (ah->config.tx_iq_calibration) is only
489 + * used by AR9003 but it is busted right now, it will take a
490 + * while to fix so this is currently disabled.
491 + */
492 +
493 + /*
494 * We need this for PCI devices only (Cardbus, PCI, miniPCI)
495 * _and_ if on non-uniprocessor systems (Multiprocessor/HT).
496 * This means we use it for all AR5416 devices, and the few
497 @@ -1233,8 +1244,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st
498 (chan->channel != ah->curchan->channel) &&
499 ((chan->channelFlags & CHANNEL_ALL) ==
500 (ah->curchan->channelFlags & CHANNEL_ALL)) &&
501 - !(AR_SREV_9280(ah) || IS_CHAN_A_5MHZ_SPACED(chan) ||
502 - IS_CHAN_A_5MHZ_SPACED(ah->curchan))) {
503 + !AR_SREV_9280(ah)) {
504
505 if (ath9k_hw_channel_change(ah, chan)) {
506 ath9k_hw_loadnf(ah, ah->curchan);
507 @@ -2198,7 +2208,8 @@ int ath9k_hw_fill_cap_info(struct ath_hw
508 }
509
510 if (AR_SREV_9300_20_OR_LATER(ah)) {
511 - pCap->hw_caps |= ATH9K_HW_CAP_EDMA | ATH9K_HW_CAP_LDPC;
512 + pCap->hw_caps |= ATH9K_HW_CAP_EDMA | ATH9K_HW_CAP_LDPC |
513 + ATH9K_HW_CAP_FASTCLOCK;
514 pCap->rx_hp_qdepth = ATH9K_HW_RX_HP_QDEPTH;
515 pCap->rx_lp_qdepth = ATH9K_HW_RX_LP_QDEPTH;
516 pCap->rx_status_len = sizeof(struct ar9003_rxs);
517 @@ -2206,6 +2217,11 @@ int ath9k_hw_fill_cap_info(struct ath_hw
518 pCap->txs_len = sizeof(struct ar9003_txs);
519 } else {
520 pCap->tx_desc_len = sizeof(struct ath_desc);
521 + if (AR_SREV_9280_20(ah) &&
522 + ((ah->eep_ops->get_eeprom(ah, EEP_MINOR_REV) <=
523 + AR5416_EEP_MINOR_VER_16) ||
524 + ah->eep_ops->get_eeprom(ah, EEP_FSTCLK_5G)))
525 + pCap->hw_caps |= ATH9K_HW_CAP_FASTCLOCK;
526 }
527
528 if (AR_SREV_9300_20_OR_LATER(ah))
529 --- a/drivers/net/wireless/ath/ath9k/hw.h
530 +++ b/drivers/net/wireless/ath/ath9k/hw.h
531 @@ -198,6 +198,7 @@ enum ath9k_hw_caps {
532 ATH9K_HW_CAP_EDMA = BIT(17),
533 ATH9K_HW_CAP_RAC_SUPPORTED = BIT(18),
534 ATH9K_HW_CAP_LDPC = BIT(19),
535 + ATH9K_HW_CAP_FASTCLOCK = BIT(20),
536 };
537
538 enum ath9k_capability_type {
539 @@ -261,6 +262,7 @@ struct ath9k_ops_config {
540 #define AR_BASE_FREQ_5GHZ 4900
541 #define AR_SPUR_FEEQ_BOUND_HT40 19
542 #define AR_SPUR_FEEQ_BOUND_HT20 10
543 + bool tx_iq_calibration; /* Only available for >= AR9003 */
544 int spurmode;
545 u16 spurchans[AR_EEPROM_MODAL_SPURS][2];
546 u8 max_txtrig_level;
547 @@ -367,10 +369,9 @@ struct ath9k_channel {
548 #define IS_CHAN_2GHZ(_c) (((_c)->channelFlags & CHANNEL_2GHZ) != 0)
549 #define IS_CHAN_HALF_RATE(_c) (((_c)->channelFlags & CHANNEL_HALF) != 0)
550 #define IS_CHAN_QUARTER_RATE(_c) (((_c)->channelFlags & CHANNEL_QUARTER) != 0)
551 -#define IS_CHAN_A_5MHZ_SPACED(_c) \
552 +#define IS_CHAN_A_FAST_CLOCK(_ah, _c) \
553 ((((_c)->channelFlags & CHANNEL_5GHZ) != 0) && \
554 - (((_c)->channel % 20) != 0) && \
555 - (((_c)->channel % 10) != 0))
556 + ((_ah)->caps.hw_caps & ATH9K_HW_CAP_FASTCLOCK))
557
558 /* These macros check chanmode and not channelFlags */
559 #define IS_CHAN_B(_c) ((_c)->chanmode == CHANNEL_B)