]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/2.6.36.2/ath9k_hw-fix-tx-carrier-leakage-for-ieee-compliance-on-ar9003-2.2.patch
Fixes for 5.10
[thirdparty/kernel/stable-queue.git] / releases / 2.6.36.2 / ath9k_hw-fix-tx-carrier-leakage-for-ieee-compliance-on-ar9003-2.2.patch
CommitLineData
c06f7f46
GKH
1From 0dfa6dbb7372e581d3beb38b11772152114796b8 Mon Sep 17 00:00:00 2001
2From: Luis R. Rodriguez <lrodriguez@atheros.com>
3Date: Mon, 18 Oct 2010 22:47:54 -0700
4Subject: ath9k_hw: Fix TX carrier leakage for IEEE compliance on AR9003 2.2
5
6From: Luis R. Rodriguez <lrodriguez@atheros.com>
7
8commit 0dfa6dbb7372e581d3beb38b11772152114796b8 upstream.
9
10This updates the initvals for the AR9003 2.2 chipsets. The initvals
11are the initial register values we use for our registers upon hardware
12reset. This synchs up the initvals to match what our latest recommendation
13from our systems engineering team.
14
15The description of changes in this update:
16
17 Improves ability to support very strong Rx conditions.
18 Enhances DFS support for AP-mode.
19 Improves performance of Tx carrier leak calibration.
20 Adds support for Japan channel 14 Tx filtering requirements.
21 Improves Tx power accuracy.
22
23Impact:
24
25 Update required to address degraded throughput at very short range.
26 Update required for AP-mode DFS certification.
27 Update required to comply to IEEE Tx carrier leak specification.
28 May not meet expected +/- 2 dB Tx power accuracy without update.
29
30The most important fix here would be the TX carrier leakage required
31to comply with IEEE 802.11 specifications. The group of changes have
32been tested all together in one release.
33
34References:
35
36 Osprey 2.2 header file ver #33
37
38Checksums:
39
40$ ./initvals -f ar9003-2p2
410x000000004a488fc7 ar9300_2p2_radio_postamble
420x0000000046cb1300 ar9300Modes_lowest_ob_db_tx_gain_table_2p2
430x00000000e912711f ar9300Modes_fast_clock_2p2
440x0000000037ac0ee8 ar9300_2p2_radio_core
450x00000000047a7700 ar9300Common_rx_gain_table_merlin_2p2
460x0000000003f783bb ar9300_2p2_mac_postamble
470x00000000301fc841 ar9300_2p2_soc_postamble
480x000000005ec8075f ar9200_merlin_2p2_radio_core
490x0000000083372ffa ar9300_2p2_baseband_postamble
500x00000000c4f59974 ar9300_2p2_baseband_core
510x00000000e20d2e72 ar9300Modes_high_power_tx_gain_table_2p2
520x000000007fd55c70 ar9300Modes_high_ob_db_tx_gain_table_2p2
530x0000000029495000 ar9300Common_rx_gain_table_2p2
540x0000000042cb1300 ar9300Modes_low_ob_db_tx_gain_table_2p2
550x00000000c4739cd6 ar9300_2p2_mac_core
560x000000003521a300 ar9300Common_wo_xlna_rx_gain_table_2p2
570x00000000a15ccf1b ar9300_2p2_soc_preamble
580x0000000029734396 ar9300PciePhy_pll_on_clkreq_disable_L1_2p2
590x000000002d834396 ar9300PciePhy_clkreq_enable_L1_2p2
600x0000000029834396 ar9300PciePhy_clkreq_disable_L1_2p2
61
62$ ./initvals -f ar9003-2p2 | sha1sum
630ceddb5cf66737610fb51f04cf3e9ff71870c7b4 -
64
65Cc: Yixiang Li <yixiang.li@atheros.com>
66Cc: Don Breslin <don.breslin@atheros.com>
67Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
68Signed-off-by: John W. Linville <linville@tuxdriver.com>
69Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
70
71---
72 drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h | 191 +++++++++++++------
73 1 file changed, 135 insertions(+), 56 deletions(-)
74
75--- a/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
76+++ b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
77@@ -34,6 +34,10 @@ static const u32 ar9300_2p2_radio_postam
78
79 static const u32 ar9300Modes_lowest_ob_db_tx_gain_table_2p2[][5] = {
80 /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
81+ {0x0000a2dc, 0x0380c7fc, 0x0380c7fc, 0x00637800, 0x00637800},
82+ {0x0000a2e0, 0x0000f800, 0x0000f800, 0x03838000, 0x03838000},
83+ {0x0000a2e4, 0x03ff0000, 0x03ff0000, 0x03fc0000, 0x03fc0000},
84+ {0x0000a2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
85 {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9},
86 {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
87 {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002},
88@@ -99,6 +103,30 @@ static const u32 ar9300Modes_lowest_ob_d
89 {0x0000a5f4, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
90 {0x0000a5f8, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
91 {0x0000a5fc, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
92+ {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
93+ {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
94+ {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
95+ {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
96+ {0x0000a610, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
97+ {0x0000a614, 0x01404000, 0x01404000, 0x01404000, 0x01404000},
98+ {0x0000a618, 0x01404501, 0x01404501, 0x01404501, 0x01404501},
99+ {0x0000a61c, 0x02008802, 0x02008802, 0x02008501, 0x02008501},
100+ {0x0000a620, 0x0300cc03, 0x0300cc03, 0x0280ca03, 0x0280ca03},
101+ {0x0000a624, 0x0300cc03, 0x0300cc03, 0x03010c04, 0x03010c04},
102+ {0x0000a628, 0x0300cc03, 0x0300cc03, 0x04014c04, 0x04014c04},
103+ {0x0000a62c, 0x03810c03, 0x03810c03, 0x04015005, 0x04015005},
104+ {0x0000a630, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005},
105+ {0x0000a634, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005},
106+ {0x0000a638, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005},
107+ {0x0000a63c, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005},
108+ {0x0000b2dc, 0x0380c7fc, 0x0380c7fc, 0x00637800, 0x00637800},
109+ {0x0000b2e0, 0x0000f800, 0x0000f800, 0x03838000, 0x03838000},
110+ {0x0000b2e4, 0x03ff0000, 0x03ff0000, 0x03fc0000, 0x03fc0000},
111+ {0x0000b2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
112+ {0x0000c2dc, 0x0380c7fc, 0x0380c7fc, 0x00637800, 0x00637800},
113+ {0x0000c2e0, 0x0000f800, 0x0000f800, 0x03838000, 0x03838000},
114+ {0x0000c2e4, 0x03ff0000, 0x03ff0000, 0x03fc0000, 0x03fc0000},
115+ {0x0000c2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
116 {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
117 {0x00016048, 0x62480001, 0x62480001, 0x62480001, 0x62480001},
118 {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
119@@ -118,7 +146,7 @@ static const u32 ar9300Modes_fast_clock_
120 {0x00008014, 0x044c044c, 0x08980898},
121 {0x0000801c, 0x148ec02b, 0x148ec057},
122 {0x00008318, 0x000044c0, 0x00008980},
123- {0x00009e00, 0x03721821, 0x03721821},
124+ {0x00009e00, 0x0372131c, 0x0372131c},
125 {0x0000a230, 0x0000000b, 0x00000016},
126 {0x0000a254, 0x00000898, 0x00001130},
127 };
128@@ -595,15 +623,16 @@ static const u32 ar9300_2p2_baseband_pos
129 {0x0000982c, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4},
130 {0x00009830, 0x0000059c, 0x0000059c, 0x0000119c, 0x0000119c},
131 {0x00009c00, 0x000000c4, 0x000000c4, 0x000000c4, 0x000000c4},
132- {0x00009e00, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0},
133- {0x00009e04, 0x00802020, 0x00802020, 0x00802020, 0x00802020},
134+ {0x00009e00, 0x0372111a, 0x0372111a, 0x037216a0, 0x037216a0},
135+ {0x00009e04, 0x001c2020, 0x001c2020, 0x001c2020, 0x001c2020},
136 {0x00009e0c, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2},
137 {0x00009e10, 0x7ec88d2e, 0x7ec88d2e, 0x7ec84d2e, 0x7ec84d2e},
138- {0x00009e14, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e},
139+ {0x00009e14, 0x37b95d5e, 0x37b9605e, 0x3379605e, 0x33795d5e},
140 {0x00009e18, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
141 {0x00009e1c, 0x0001cf9c, 0x0001cf9c, 0x00021f9c, 0x00021f9c},
142 {0x00009e20, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce},
143 {0x00009e2c, 0x0000001c, 0x0000001c, 0x00000021, 0x00000021},
144+ {0x00009e3c, 0xcf946220, 0xcf946220, 0xcf946222, 0xcf946222},
145 {0x00009e44, 0x02321e27, 0x02321e27, 0x02291e27, 0x02291e27},
146 {0x00009e48, 0x5030201a, 0x5030201a, 0x50302012, 0x50302012},
147 {0x00009fc8, 0x0003f000, 0x0003f000, 0x0001a000, 0x0001a000},
148@@ -624,16 +653,16 @@ static const u32 ar9300_2p2_baseband_pos
149 {0x0000a28c, 0x00022222, 0x00022222, 0x00022222, 0x00022222},
150 {0x0000a2c4, 0x00158d18, 0x00158d18, 0x00158d18, 0x00158d18},
151 {0x0000a2d0, 0x00071981, 0x00071981, 0x00071981, 0x00071982},
152- {0x0000a2d8, 0xf999a83a, 0xf999a83a, 0xf999a83a, 0xf999a83a},
153+ {0x0000a2d8, 0x7999a83a, 0x7999a83a, 0x7999a83a, 0x7999a83a},
154 {0x0000a358, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
155 {0x0000a830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c},
156- {0x0000ae04, 0x00800000, 0x00800000, 0x00800000, 0x00800000},
157+ {0x0000ae04, 0x001c0000, 0x001c0000, 0x001c0000, 0x001c0000},
158 {0x0000ae18, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
159 {0x0000ae1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c},
160 {0x0000ae20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce},
161 {0x0000b284, 0x00000000, 0x00000000, 0x00000150, 0x00000150},
162 {0x0000b830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c},
163- {0x0000be04, 0x00800000, 0x00800000, 0x00800000, 0x00800000},
164+ {0x0000be04, 0x001c0000, 0x001c0000, 0x001c0000, 0x001c0000},
165 {0x0000be18, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
166 {0x0000be1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c},
167 {0x0000be20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce},
168@@ -649,13 +678,13 @@ static const u32 ar9300_2p2_baseband_cor
169 {0x00009814, 0x9280c00a},
170 {0x00009818, 0x00000000},
171 {0x0000981c, 0x00020028},
172- {0x00009834, 0x5f3ca3de},
173+ {0x00009834, 0x6400a290},
174 {0x00009838, 0x0108ecff},
175 {0x0000983c, 0x14750600},
176 {0x00009880, 0x201fff00},
177 {0x00009884, 0x00001042},
178 {0x000098a4, 0x00200400},
179- {0x000098b0, 0x52440bbe},
180+ {0x000098b0, 0x32840bbe},
181 {0x000098d0, 0x004b6a8e},
182 {0x000098d4, 0x00000820},
183 {0x000098dc, 0x00000000},
184@@ -681,7 +710,6 @@ static const u32 ar9300_2p2_baseband_cor
185 {0x00009e30, 0x06336f77},
186 {0x00009e34, 0x6af6532f},
187 {0x00009e38, 0x0cc80c00},
188- {0x00009e3c, 0xcf946222},
189 {0x00009e40, 0x0d261820},
190 {0x00009e4c, 0x00001004},
191 {0x00009e50, 0x00ff03f1},
192@@ -694,7 +722,7 @@ static const u32 ar9300_2p2_baseband_cor
193 {0x0000a220, 0x00000000},
194 {0x0000a224, 0x00000000},
195 {0x0000a228, 0x10002310},
196- {0x0000a22c, 0x01036a1e},
197+ {0x0000a22c, 0x01036a27},
198 {0x0000a23c, 0x00000000},
199 {0x0000a244, 0x0c000000},
200 {0x0000a2a0, 0x00000001},
201@@ -702,10 +730,6 @@ static const u32 ar9300_2p2_baseband_cor
202 {0x0000a2c8, 0x00000000},
203 {0x0000a2cc, 0x18c43433},
204 {0x0000a2d4, 0x00000000},
205- {0x0000a2dc, 0x00000000},
206- {0x0000a2e0, 0x00000000},
207- {0x0000a2e4, 0x00000000},
208- {0x0000a2e8, 0x00000000},
209 {0x0000a2ec, 0x00000000},
210 {0x0000a2f0, 0x00000000},
211 {0x0000a2f4, 0x00000000},
212@@ -753,33 +777,17 @@ static const u32 ar9300_2p2_baseband_cor
213 {0x0000a430, 0x1ce739ce},
214 {0x0000a434, 0x00000000},
215 {0x0000a438, 0x00001801},
216- {0x0000a43c, 0x00000000},
217+ {0x0000a43c, 0x00100000},
218 {0x0000a440, 0x00000000},
219 {0x0000a444, 0x00000000},
220 {0x0000a448, 0x06000080},
221 {0x0000a44c, 0x00000001},
222 {0x0000a450, 0x00010000},
223 {0x0000a458, 0x00000000},
224- {0x0000a600, 0x00000000},
225- {0x0000a604, 0x00000000},
226- {0x0000a608, 0x00000000},
227- {0x0000a60c, 0x00000000},
228- {0x0000a610, 0x00000000},
229- {0x0000a614, 0x00000000},
230- {0x0000a618, 0x00000000},
231- {0x0000a61c, 0x00000000},
232- {0x0000a620, 0x00000000},
233- {0x0000a624, 0x00000000},
234- {0x0000a628, 0x00000000},
235- {0x0000a62c, 0x00000000},
236- {0x0000a630, 0x00000000},
237- {0x0000a634, 0x00000000},
238- {0x0000a638, 0x00000000},
239- {0x0000a63c, 0x00000000},
240 {0x0000a640, 0x00000000},
241 {0x0000a644, 0x3fad9d74},
242 {0x0000a648, 0x0048060a},
243- {0x0000a64c, 0x00000637},
244+ {0x0000a64c, 0x00003c37},
245 {0x0000a670, 0x03020100},
246 {0x0000a674, 0x09080504},
247 {0x0000a678, 0x0d0c0b0a},
248@@ -802,10 +810,6 @@ static const u32 ar9300_2p2_baseband_cor
249 {0x0000a8f4, 0x00000000},
250 {0x0000b2d0, 0x00000080},
251 {0x0000b2d4, 0x00000000},
252- {0x0000b2dc, 0x00000000},
253- {0x0000b2e0, 0x00000000},
254- {0x0000b2e4, 0x00000000},
255- {0x0000b2e8, 0x00000000},
256 {0x0000b2ec, 0x00000000},
257 {0x0000b2f0, 0x00000000},
258 {0x0000b2f4, 0x00000000},
259@@ -820,10 +824,6 @@ static const u32 ar9300_2p2_baseband_cor
260 {0x0000b8f4, 0x00000000},
261 {0x0000c2d0, 0x00000080},
262 {0x0000c2d4, 0x00000000},
263- {0x0000c2dc, 0x00000000},
264- {0x0000c2e0, 0x00000000},
265- {0x0000c2e4, 0x00000000},
266- {0x0000c2e8, 0x00000000},
267 {0x0000c2ec, 0x00000000},
268 {0x0000c2f0, 0x00000000},
269 {0x0000c2f4, 0x00000000},
270@@ -835,6 +835,10 @@ static const u32 ar9300_2p2_baseband_cor
271
272 static const u32 ar9300Modes_high_power_tx_gain_table_2p2[][5] = {
273 /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
274+ {0x0000a2dc, 0x0380c7fc, 0x0380c7fc, 0x00637800, 0x00637800},
275+ {0x0000a2e0, 0x0000f800, 0x0000f800, 0x03838000, 0x03838000},
276+ {0x0000a2e4, 0x03ff0000, 0x03ff0000, 0x03fc0000, 0x03fc0000},
277+ {0x0000a2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
278 {0x0000a410, 0x000050d8, 0x000050d8, 0x000050d9, 0x000050d9},
279 {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000},
280 {0x0000a504, 0x04002222, 0x04002222, 0x04000002, 0x04000002},
281@@ -855,7 +859,7 @@ static const u32 ar9300Modes_high_power_
282 {0x0000a540, 0x49005e72, 0x49005e72, 0x38001660, 0x38001660},
283 {0x0000a544, 0x4e005eb2, 0x4e005eb2, 0x3b001861, 0x3b001861},
284 {0x0000a548, 0x53005f12, 0x53005f12, 0x3e001a81, 0x3e001a81},
285- {0x0000a54c, 0x59025eb5, 0x59025eb5, 0x42001a83, 0x42001a83},
286+ {0x0000a54c, 0x59025eb2, 0x59025eb2, 0x42001a83, 0x42001a83},
287 {0x0000a550, 0x5e025f12, 0x5e025f12, 0x44001c84, 0x44001c84},
288 {0x0000a554, 0x61027f12, 0x61027f12, 0x48001ce3, 0x48001ce3},
289 {0x0000a558, 0x6702bf12, 0x6702bf12, 0x4c001ce5, 0x4c001ce5},
290@@ -900,6 +904,30 @@ static const u32 ar9300Modes_high_power_
291 {0x0000a5f4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec},
292 {0x0000a5f8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec},
293 {0x0000a5fc, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec},
294+ {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
295+ {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
296+ {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
297+ {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
298+ {0x0000a610, 0x00804000, 0x00804000, 0x00000000, 0x00000000},
299+ {0x0000a614, 0x00804201, 0x00804201, 0x01404000, 0x01404000},
300+ {0x0000a618, 0x0280c802, 0x0280c802, 0x01404501, 0x01404501},
301+ {0x0000a61c, 0x0280ca03, 0x0280ca03, 0x02008501, 0x02008501},
302+ {0x0000a620, 0x04c15104, 0x04c15104, 0x0280ca03, 0x0280ca03},
303+ {0x0000a624, 0x04c15305, 0x04c15305, 0x03010c04, 0x03010c04},
304+ {0x0000a628, 0x04c15305, 0x04c15305, 0x04014c04, 0x04014c04},
305+ {0x0000a62c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005},
306+ {0x0000a630, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005},
307+ {0x0000a634, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005},
308+ {0x0000a638, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005},
309+ {0x0000a63c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005},
310+ {0x0000b2dc, 0x0380c7fc, 0x0380c7fc, 0x00637800, 0x00637800},
311+ {0x0000b2e0, 0x0000f800, 0x0000f800, 0x03838000, 0x03838000},
312+ {0x0000b2e4, 0x03ff0000, 0x03ff0000, 0x03fc0000, 0x03fc0000},
313+ {0x0000b2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
314+ {0x0000c2dc, 0x0380c7fc, 0x0380c7fc, 0x00637800, 0x00637800},
315+ {0x0000c2e0, 0x0000f800, 0x0000f800, 0x03838000, 0x03838000},
316+ {0x0000c2e4, 0x03ff0000, 0x03ff0000, 0x03fc0000, 0x03fc0000},
317+ {0x0000c2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
318 {0x00016044, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6},
319 {0x00016048, 0xae480001, 0xae480001, 0xae480001, 0xae480001},
320 {0x00016068, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c},
321@@ -913,6 +941,10 @@ static const u32 ar9300Modes_high_power_
322
323 static const u32 ar9300Modes_high_ob_db_tx_gain_table_2p2[][5] = {
324 /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
325+ {0x0000a2dc, 0x01feee00, 0x01feee00, 0x00637800, 0x00637800},
326+ {0x0000a2e0, 0x0000f000, 0x0000f000, 0x03838000, 0x03838000},
327+ {0x0000a2e4, 0x01ff0000, 0x01ff0000, 0x03fc0000, 0x03fc0000},
328+ {0x0000a2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
329 {0x0000a410, 0x000050d8, 0x000050d8, 0x000050d9, 0x000050d9},
330 {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000},
331 {0x0000a504, 0x04002222, 0x04002222, 0x04000002, 0x04000002},
332@@ -933,7 +965,7 @@ static const u32 ar9300Modes_high_ob_db_
333 {0x0000a540, 0x49005e72, 0x49005e72, 0x38001660, 0x38001660},
334 {0x0000a544, 0x4e005eb2, 0x4e005eb2, 0x3b001861, 0x3b001861},
335 {0x0000a548, 0x53005f12, 0x53005f12, 0x3e001a81, 0x3e001a81},
336- {0x0000a54c, 0x59025eb5, 0x59025eb5, 0x42001a83, 0x42001a83},
337+ {0x0000a54c, 0x59025eb2, 0x59025eb2, 0x42001a83, 0x42001a83},
338 {0x0000a550, 0x5e025f12, 0x5e025f12, 0x44001c84, 0x44001c84},
339 {0x0000a554, 0x61027f12, 0x61027f12, 0x48001ce3, 0x48001ce3},
340 {0x0000a558, 0x6702bf12, 0x6702bf12, 0x4c001ce5, 0x4c001ce5},
341@@ -978,6 +1010,30 @@ static const u32 ar9300Modes_high_ob_db_
342 {0x0000a5f4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec},
343 {0x0000a5f8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec},
344 {0x0000a5fc, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec},
345+ {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
346+ {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
347+ {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
348+ {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
349+ {0x0000a610, 0x00804000, 0x00804000, 0x00000000, 0x00000000},
350+ {0x0000a614, 0x00804201, 0x00804201, 0x01404000, 0x01404000},
351+ {0x0000a618, 0x0280c802, 0x0280c802, 0x01404501, 0x01404501},
352+ {0x0000a61c, 0x0280ca03, 0x0280ca03, 0x02008501, 0x02008501},
353+ {0x0000a620, 0x04c15104, 0x04c15104, 0x0280ca03, 0x0280ca03},
354+ {0x0000a624, 0x04c15305, 0x04c15305, 0x03010c04, 0x03010c04},
355+ {0x0000a628, 0x04c15305, 0x04c15305, 0x04014c04, 0x04014c04},
356+ {0x0000a62c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005},
357+ {0x0000a630, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005},
358+ {0x0000a634, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005},
359+ {0x0000a638, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005},
360+ {0x0000a63c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005},
361+ {0x0000b2dc, 0x01feee00, 0x01feee00, 0x00637800, 0x00637800},
362+ {0x0000b2e0, 0x0000f000, 0x0000f000, 0x03838000, 0x03838000},
363+ {0x0000b2e4, 0x01ff0000, 0x01ff0000, 0x03fc0000, 0x03fc0000},
364+ {0x0000b2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
365+ {0x0000c2dc, 0x01feee00, 0x01feee00, 0x00637800, 0x00637800},
366+ {0x0000c2e0, 0x0000f000, 0x0000f000, 0x03838000, 0x03838000},
367+ {0x0000c2e4, 0x01ff0000, 0x01ff0000, 0x03fc0000, 0x03fc0000},
368+ {0x0000c2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
369 {0x00016044, 0x056db2e4, 0x056db2e4, 0x056db2e4, 0x056db2e4},
370 {0x00016048, 0x8e480001, 0x8e480001, 0x8e480001, 0x8e480001},
371 {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
372@@ -1151,14 +1207,14 @@ static const u32 ar9300Common_rx_gain_ta
373 {0x0000b074, 0x00000000},
374 {0x0000b078, 0x00000000},
375 {0x0000b07c, 0x00000000},
376- {0x0000b080, 0x32323232},
377- {0x0000b084, 0x2f2f3232},
378- {0x0000b088, 0x23282a2d},
379- {0x0000b08c, 0x1c1e2123},
380- {0x0000b090, 0x14171919},
381- {0x0000b094, 0x0e0e1214},
382- {0x0000b098, 0x03050707},
383- {0x0000b09c, 0x00030303},
384+ {0x0000b080, 0x2a2d2f32},
385+ {0x0000b084, 0x21232328},
386+ {0x0000b088, 0x19191c1e},
387+ {0x0000b08c, 0x12141417},
388+ {0x0000b090, 0x07070e0e},
389+ {0x0000b094, 0x03030305},
390+ {0x0000b098, 0x00000003},
391+ {0x0000b09c, 0x00000000},
392 {0x0000b0a0, 0x00000000},
393 {0x0000b0a4, 0x00000000},
394 {0x0000b0a8, 0x00000000},
395@@ -1251,6 +1307,10 @@ static const u32 ar9300Common_rx_gain_ta
396
397 static const u32 ar9300Modes_low_ob_db_tx_gain_table_2p2[][5] = {
398 /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
399+ {0x0000a2dc, 0x0380c7fc, 0x0380c7fc, 0x00637800, 0x00637800},
400+ {0x0000a2e0, 0x0000f800, 0x0000f800, 0x03838000, 0x03838000},
401+ {0x0000a2e4, 0x03ff0000, 0x03ff0000, 0x03fc0000, 0x03fc0000},
402+ {0x0000a2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
403 {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9},
404 {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
405 {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002},
406@@ -1316,6 +1376,30 @@ static const u32 ar9300Modes_low_ob_db_t
407 {0x0000a5f4, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
408 {0x0000a5f8, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
409 {0x0000a5fc, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
410+ {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
411+ {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
412+ {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
413+ {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
414+ {0x0000a610, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
415+ {0x0000a614, 0x01404000, 0x01404000, 0x01404000, 0x01404000},
416+ {0x0000a618, 0x01404501, 0x01404501, 0x01404501, 0x01404501},
417+ {0x0000a61c, 0x02008802, 0x02008802, 0x02008501, 0x02008501},
418+ {0x0000a620, 0x0300cc03, 0x0300cc03, 0x0280ca03, 0x0280ca03},
419+ {0x0000a624, 0x0300cc03, 0x0300cc03, 0x03010c04, 0x03010c04},
420+ {0x0000a628, 0x0300cc03, 0x0300cc03, 0x04014c04, 0x04014c04},
421+ {0x0000a62c, 0x03810c03, 0x03810c03, 0x04015005, 0x04015005},
422+ {0x0000a630, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005},
423+ {0x0000a634, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005},
424+ {0x0000a638, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005},
425+ {0x0000a63c, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005},
426+ {0x0000b2dc, 0x0380c7fc, 0x0380c7fc, 0x00637800, 0x00637800},
427+ {0x0000b2e0, 0x0000f800, 0x0000f800, 0x03838000, 0x03838000},
428+ {0x0000b2e4, 0x03ff0000, 0x03ff0000, 0x03fc0000, 0x03fc0000},
429+ {0x0000b2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
430+ {0x0000c2dc, 0x0380c7fc, 0x0380c7fc, 0x00637800, 0x00637800},
431+ {0x0000c2e0, 0x0000f800, 0x0000f800, 0x03838000, 0x03838000},
432+ {0x0000c2e4, 0x03ff0000, 0x03ff0000, 0x03fc0000, 0x03fc0000},
433+ {0x0000c2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
434 {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
435 {0x00016048, 0x66480001, 0x66480001, 0x66480001, 0x66480001},
436 {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
437@@ -1414,15 +1498,10 @@ static const u32 ar9300_2p2_mac_core[][2
438 {0x00008144, 0xffffffff},
439 {0x00008168, 0x00000000},
440 {0x0000816c, 0x00000000},
441- {0x00008170, 0x18486200},
442- {0x00008174, 0x33332210},
443- {0x00008178, 0x00000000},
444- {0x0000817c, 0x00020000},
445 {0x000081c0, 0x00000000},
446 {0x000081c4, 0x33332210},
447 {0x000081c8, 0x00000000},
448 {0x000081cc, 0x00000000},
449- {0x000081d4, 0x00000000},
450 {0x000081ec, 0x00000000},
451 {0x000081f0, 0x00000000},
452 {0x000081f4, 0x00000000},