1 /******************************************************************************
2 *
3 * Copyright(c) 2007 - 2017 Realtek Corporation.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of version 2 of the GNU General Public License as
7 * published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 *****************************************************************************/
15
16 /* ************************************************************
17 * include files
18 * ************************************************************ */
19 #include "mp_precomp.h"
20 #include "phydm_precomp.h"
21
22 #if !defined(_OUTSRC_COEXIST)
23 /* ************************************************************
24 * Global var
25 * ************************************************************ */
26
27
28 u32 ofdm_swing_table_new[OFDM_TABLE_SIZE_92D] = {
29 0x0b40002d, /* 0, -15.0dB */
30 0x0c000030, /* 1, -14.5dB */
31 0x0cc00033, /* 2, -14.0dB */
32 0x0d800036, /* 3, -13.5dB */
33 0x0e400039, /* 4, -13.0dB */
34 0x0f00003c, /* 5, -12.5dB */
35 0x10000040, /* 6, -12.0dB */
36 0x11000044, /* 7, -11.5dB */
37 0x12000048, /* 8, -11.0dB */
38 0x1300004c, /* 9, -10.5dB */
39 0x14400051, /* 10, -10.0dB */
40 0x15800056, /* 11, -9.5dB */
41 0x16c0005b, /* 12, -9.0dB */
42 0x18000060, /* 13, -8.5dB */
43 0x19800066, /* 14, -8.0dB */
44 0x1b00006c, /* 15, -7.5dB */
45 0x1c800072, /* 16, -7.0dB */
46 0x1e400079, /* 17, -6.5dB */
47 0x20000080, /* 18, -6.0dB */
48 0x22000088, /* 19, -5.5dB */
49 0x24000090, /* 20, -5.0dB */
50 0x26000098, /* 21, -4.5dB */
51 0x288000a2, /* 22, -4.0dB */
52 0x2ac000ab, /* 23, -3.5dB */
53 0x2d4000b5, /* 24, -3.0dB */
54 0x300000c0, /* 25, -2.5dB */
55 0x32c000cb, /* 26, -2.0dB */
56 0x35c000d7, /* 27, -1.5dB */
57 0x390000e4, /* 28, -1.0dB */
58 0x3c8000f2, /* 29, -0.5dB */
59 0x40000100, /* 30, +0dB */
60 0x43c0010f, /* 31, +0.5dB */
61 0x47c0011f, /* 32, +1.0dB */
62 0x4c000130, /* 33, +1.5dB */
63 0x50800142, /* 34, +2.0dB */
64 0x55400155, /* 35, +2.5dB */
65 0x5a400169, /* 36, +3.0dB */
66 0x5fc0017f, /* 37, +3.5dB */
67 0x65400195, /* 38, +4.0dB */
68 0x6b8001ae, /* 39, +4.5dB */
69 0x71c001c7, /* 40, +5.0dB */
70 0x788001e2, /* 41, +5.5dB */
71 0x7f8001fe /* 42, +6.0dB */
72 };
73
74 u8 cck_swing_table_ch1_ch13_new[CCK_TABLE_SIZE][8] = {
75 {0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01}, /* 0, -16.0dB */
76 {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01}, /* 1, -15.5dB */
77 {0x0a, 0x09, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 2, -15.0dB */
78 {0x0a, 0x0a, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 3, -14.5dB */
79 {0x0b, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 4, -14.0dB */
80 {0x0b, 0x0b, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 5, -13.5dB */
81 {0x0c, 0x0c, 0x0a, 0x09, 0x06, 0x04, 0x02, 0x01}, /* 6, -13.0dB */
82 {0x0d, 0x0c, 0x0b, 0x09, 0x07, 0x04, 0x02, 0x01}, /* 7, -12.5dB */
83 {0x0d, 0x0d, 0x0c, 0x0a, 0x07, 0x05, 0x02, 0x01}, /* 8, -12.0dB */
84 {0x0e, 0x0e, 0x0c, 0x0a, 0x08, 0x05, 0x02, 0x01}, /* 9, -11.5dB */
85 {0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 10, -11.0dB */
86 {0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 11, -10.5dB */
87 {0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 12, -10.0dB */
88 {0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 13, -9.5dB */
89 {0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01}, /* 14, -9.0dB */
90 {0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02}, /* 15, -8.5dB */
91 {0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01}, /* 16, -8.0dB */
92 {0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02}, /* 17, -7.5dB */
93 {0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02}, /* 18, -7.0dB */
94 {0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02}, /* 19, -6.5dB */
95 {0x1c, 0x1a, 0x18, 0x12, 0x0e, 0x08, 0x04, 0x02}, /* 20, -6.0dB */
96 {0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02}, /* 21, -5.5dB */
97 {0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02}, /* 22, -5.0dB */
98 {0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02}, /* 23, -4.5dB */
99 {0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02}, /* 24, -4.0dB */
100 {0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03}, /* 25, -3.5dB */
101 {0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03}, /* 26, -3.0dB */
102 {0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03}, /* 27, -2.5dB */
103 {0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03}, /* 28, -2.0dB */
104 {0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03}, /* 29, -1.5dB */
105 {0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03}, /* 30, -1.0dB */
106 {0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04}, /* 31, -0.5dB */
107 {0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04} /* 32, +0dB */
108 };
109
110
111 u8 cck_swing_table_ch14_new[CCK_TABLE_SIZE][8] = {
112 {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00}, /* 0, -16.0dB */
113 {0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 1, -15.5dB */
114 {0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 2, -15.0dB */
115 {0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 3, -14.5dB */
116 {0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 4, -14.0dB */
117 {0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 5, -13.5dB */
118 {0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 6, -13.0dB */
119 {0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 7, -12.5dB */
120 {0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 8, -12.0dB */
121 {0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 9, -11.5dB */
122 {0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 10, -11.0dB */
123 {0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 11, -10.5dB */
124 {0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 12, -10.0dB */
125 {0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 13, -9.5dB */
126 {0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 14, -9.0dB */
127 {0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 15, -8.5dB */
128 {0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 16, -8.0dB */
129 {0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 17, -7.5dB */
130 {0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00}, /* 18, -7.0dB */
131 {0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00}, /* 19, -6.5dB */
132 {0x1c, 0x1a, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 20, -6.0dB */
133 {0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 21, -5.5dB */
134 {0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00}, /* 22, -5.0dB */
135 {0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00}, /* 23, -4.5dB */
136 {0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00}, /* 24, -4.0dB */
137 {0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00}, /* 25, -3.5dB */
138 {0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00}, /* 26, -3.0dB */
139 {0x28, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00}, /* 27, -2.5dB */
140 {0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00}, /* 28, -2.0dB */
141 {0x2d, 0x2d, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00}, /* 29, -1.5dB */
142 {0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00}, /* 30, -1.0dB */
143 {0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00}, /* 31, -0.5dB */
144 {0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00} /* 32, +0dB */
145 };
146
147 u32 ofdm_swing_table[OFDM_TABLE_SIZE_92D] = {
148 0x0b40002d, /* 0, -15.0dB */
149 0x0c000030, /* 1, -14.5dB */
150 0x0cc00033, /* 2, -14.0dB */
151 0x0d800036, /* 3, -13.5dB */
152 0x0e400039, /* 4, -13.0dB */
153 0x0f00003c, /* 5, -12.5dB */
154 0x10000040, /* 6, -12.0dB */
155 0x11000044, /* 7, -11.5dB */
156 0x12000048, /* 8, -11.0dB */
157 0x1300004c, /* 9, -10.5dB */
158 0x14400051, /* 10, -10.0dB */
159 0x15800056, /* 11, -9.5dB */
160 0x16c0005b, /* 12, -9.0dB */
161 0x18000060, /* 13, -8.5dB */
162 0x19800066, /* 14, -8.0dB */
163 0x1b00006c, /* 15, -7.5dB */
164 0x1c800072, /* 16, -7.0dB */
165 0x1e400079, /* 17, -6.5dB */
166 0x20000080, /* 18, -6.0dB */
167 0x22000088, /* 19, -5.5dB */
168 0x24000090, /* 20, -5.0dB */
169 0x26000098, /* 21, -4.5dB */
170 0x288000a2, /* 22, -4.0dB */
171 0x2ac000ab, /* 23, -3.5dB */
172 0x2d4000b5, /* 24, -3.0dB */
173 0x300000c0, /* 25, -2.5dB */
174 0x32c000cb, /* 26, -2.0dB */
175 0x35c000d7, /* 27, -1.5dB */
176 0x390000e4, /* 28, -1.0dB */
177 0x3c8000f2, /* 29, -0.5dB */
178 0x40000100, /* 30, +0dB */
179 0x43c0010f, /* 31, +0.5dB */
180 0x47c0011f, /* 32, +1.0dB */
181 0x4c000130, /* 33, +1.5dB */
182 0x50800142, /* 34, +2.0dB */
183 0x55400155, /* 35, +2.5dB */
184 0x5a400169, /* 36, +3.0dB */
185 0x5fc0017f, /* 37, +3.5dB */
186 0x65400195, /* 38, +4.0dB */
187 0x6b8001ae, /* 39, +4.5dB */
188 0x71c001c7, /* 40, +5.0dB */
189 0x788001e2, /* 41, +5.5dB */
190 0x7f8001fe /* 42, +6.0dB */
191 };
192
193
194 u8 cck_swing_table_ch1_ch13[CCK_TABLE_SIZE][8] = {
195 {0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01}, /* 0, -16.0dB */
196 {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01}, /* 1, -15.5dB */
197 {0x0a, 0x09, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 2, -15.0dB */
198 {0x0a, 0x0a, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 3, -14.5dB */
199 {0x0b, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 4, -14.0dB */
200 {0x0b, 0x0b, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 5, -13.5dB */
201 {0x0c, 0x0c, 0x0a, 0x09, 0x06, 0x04, 0x02, 0x01}, /* 6, -13.0dB */
202 {0x0d, 0x0c, 0x0b, 0x09, 0x07, 0x04, 0x02, 0x01}, /* 7, -12.5dB */
203 {0x0d, 0x0d, 0x0c, 0x0a, 0x07, 0x05, 0x02, 0x01}, /* 8, -12.0dB */
204 {0x0e, 0x0e, 0x0c, 0x0a, 0x08, 0x05, 0x02, 0x01}, /* 9, -11.5dB */
205 {0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 10, -11.0dB */
206 {0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 11, -10.5dB */
207 {0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 12, -10.0dB */
208 {0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 13, -9.5dB */
209 {0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01}, /* 14, -9.0dB */
210 {0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02}, /* 15, -8.5dB */
211 {0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01}, /* 16, -8.0dB */
212 {0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02}, /* 17, -7.5dB */
213 {0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02}, /* 18, -7.0dB */
214 {0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02}, /* 19, -6.5dB */
215 {0x1c, 0x1a, 0x18, 0x12, 0x0e, 0x08, 0x04, 0x02}, /* 20, -6.0dB */
216 {0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02}, /* 21, -5.5dB */
217 {0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02}, /* 22, -5.0dB */
218 {0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02}, /* 23, -4.5dB */
219 {0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02}, /* 24, -4.0dB */
220 {0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03}, /* 25, -3.5dB */
221 {0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03}, /* 26, -3.0dB */
222 {0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03}, /* 27, -2.5dB */
223 {0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03}, /* 28, -2.0dB */
224 {0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03}, /* 29, -1.5dB */
225 {0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03}, /* 30, -1.0dB */
226 {0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04}, /* 31, -0.5dB */
227 {0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04} /* 32, +0dB */
228 };
229
230
231 u8 cck_swing_table_ch14[CCK_TABLE_SIZE][8] = {
232 {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00}, /* 0, -16.0dB */
233 {0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 1, -15.5dB */
234 {0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 2, -15.0dB */
235 {0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 3, -14.5dB */
236 {0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 4, -14.0dB */
237 {0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 5, -13.5dB */
238 {0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 6, -13.0dB */
239 {0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 7, -12.5dB */
240 {0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 8, -12.0dB */
241 {0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 9, -11.5dB */
242 {0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 10, -11.0dB */
243 {0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 11, -10.5dB */
244 {0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 12, -10.0dB */
245 {0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 13, -9.5dB */
246 {0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 14, -9.0dB */
247 {0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 15, -8.5dB */
248 {0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 16, -8.0dB */
249 {0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 17, -7.5dB */
250 {0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00}, /* 18, -7.0dB */
251 {0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00}, /* 19, -6.5dB */
252 {0x1c, 0x1a, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 20, -6.0dB */
253 {0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 21, -5.5dB */
254 {0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00}, /* 22, -5.0dB */
255 {0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00}, /* 23, -4.5dB */
256 {0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00}, /* 24, -4.0dB */
257 {0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00}, /* 25, -3.5dB */
258 {0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00}, /* 26, -3.0dB */
259 {0x28, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00}, /* 27, -2.5dB */
260 {0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00}, /* 28, -2.0dB */
261 {0x2d, 0x2d, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00}, /* 29, -1.5dB */
262 {0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00}, /* 30, -1.0dB */
263 {0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00}, /* 31, -0.5dB */
264 {0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00} /* 32, +0dB */
265 };
266
267 u8 cck_swing_table_ch1_ch14_88f[CCK_TABLE_SIZE_88F][16] = {
268 {0x16, 0x15, 0x13, 0x10, 0xD, 0x9, 0x6, 0x3, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 0 -16dB */
269 {0x18, 0x17, 0x15, 0x12, 0xE, 0xA, 0x7, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 1 -15.5dB */
270 {0x1B, 0x1A, 0x18, 0x14, 0x10, 0xB, 0x7, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 2 -15dB */
271 {0x1F, 0x1E, 0x1B, 0x17, 0x12, 0xD, 0x8, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 3 -14.5dB */
272 {0x22, 0x21, 0x1E, 0x19, 0x14, 0xE, 0x9, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 4 -14dB */
273 {0x26, 0x25, 0x22, 0x1C, 0x16, 0x10, 0xA, 0x6, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 5 -13.5dB */
274 {0x2B, 0x2A, 0x26, 0x20, 0x19, 0x12, 0xC, 0x7, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 6 -13dB */
275 {0x30, 0x2F, 0x2A, 0x24, 0x1C, 0x14, 0xD, 0x8, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 7 -12.5dB */
276 {0x36, 0x34, 0x2F, 0x28, 0x1F, 0x17, 0xF, 0x9, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 8 -12dB */
277 {0x3D, 0x3B, 0x35, 0x2D, 0x23, 0x19, 0x11, 0xA, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 9 -11.5dB */
278 {0x44, 0x42, 0x3C, 0x33, 0x28, 0x1C, 0x13, 0xB, 0x5, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 10 -11dB */
279 {0x4D, 0x4A, 0x43, 0x39, 0x2C, 0x20, 0x15, 0xC, 0x6, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 11 -10.5dB */
280 {0x56, 0x53, 0x4B, 0x40, 0x32, 0x24, 0x17, 0xE, 0x6, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 12 -10dB */
281 {0x60, 0x5D, 0x54, 0x47, 0x38, 0x28, 0x1A, 0xF, 0x7, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 13 -9.5dB */
282 {0x6C, 0x69, 0x5F, 0x50, 0x3F, 0x2D, 0x1E, 0x11, 0x8, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 14 -9dB */
283 {0x79, 0x76, 0x6A, 0x5A, 0x46, 0x33, 0x21, 0x13, 0x9, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 15 -8.5dB */
284 {0x88, 0x84, 0x77, 0x65, 0x4F, 0x39, 0x25, 0x15, 0xA, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 16 -8dB */
285 {0x99, 0x94, 0x86, 0x71, 0x58, 0x40, 0x2A, 0x18, 0xB, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 17 -7.5dB */
286 {0xAC, 0xA6, 0x96, 0x7F, 0x63, 0x47, 0x2F, 0x1B, 0xD, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 18 -7dB */
287 {0xC1, 0xBA, 0xA8, 0x8F, 0x6F, 0x50, 0x35, 0x1E, 0xE, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 19 -6.5dB */
288 {0xD8, 0xD1, 0xBD, 0xA0, 0x7D, 0x5A, 0x3B, 0x22, 0x10, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0} /* 20 -6dB */
289 };
290
291
292 u8 cck_swing_table_ch1_ch13_88f[CCK_TABLE_SIZE_88F][16] = {
293 {0x16, 0x15, 0x13, 0x10, 0xD, 0x9, 0x6, 0x3, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 0 -16dB */
294 {0x18, 0x17, 0x15, 0x12, 0xE, 0xA, 0x7, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 1 -15.5dB */
295 {0x1B, 0x1A, 0x18, 0x14, 0x10, 0xB, 0x7, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 2 -15dB */
296 {0x1F, 0x1E, 0x1B, 0x17, 0x12, 0xD, 0x8, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 3 -14.5dB */
297 {0x22, 0x21, 0x1E, 0x19, 0x14, 0xE, 0x9, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 4 -14dB */
298 {0x26, 0x25, 0x22, 0x1C, 0x16, 0x10, 0xA, 0x6, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 5 -13.5dB */
299 {0x2B, 0x2A, 0x26, 0x20, 0x19, 0x12, 0xC, 0x7, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 6 -13dB */
300 {0x30, 0x2F, 0x2A, 0x24, 0x1C, 0x14, 0xD, 0x8, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 7 -12.5dB */
301 {0x36, 0x34, 0x2F, 0x28, 0x1F, 0x17, 0xF, 0x9, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 8 -12dB */
302 {0x3D, 0x3B, 0x35, 0x2D, 0x23, 0x19, 0x11, 0xA, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 9 -11.5dB */
303 {0x44, 0x42, 0x3C, 0x33, 0x28, 0x1C, 0x13, 0xB, 0x5, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 10 -11dB */
304 {0x4D, 0x4A, 0x43, 0x39, 0x2C, 0x20, 0x15, 0xC, 0x6, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 11 -10.5dB */
305 {0x56, 0x53, 0x4B, 0x40, 0x32, 0x24, 0x17, 0xE, 0x6, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 12 -10dB */
306 {0x60, 0x5D, 0x54, 0x47, 0x38, 0x28, 0x1A, 0xF, 0x7, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 13 -9.5dB */
307 {0x6C, 0x69, 0x5F, 0x50, 0x3F, 0x2D, 0x1E, 0x11, 0x8, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 14 -9dB */
308 {0x79, 0x76, 0x6A, 0x5A, 0x46, 0x33, 0x21, 0x13, 0x9, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 15 -8.5dB */
309 {0x88, 0x84, 0x77, 0x65, 0x4F, 0x39, 0x25, 0x15, 0xA, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 16 -8dB */
310 {0x99, 0x94, 0x86, 0x71, 0x58, 0x40, 0x2A, 0x18, 0xB, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 17 -7.5dB */
311 {0xAC, 0xA6, 0x96, 0x7F, 0x63, 0x47, 0x2F, 0x1B, 0xD, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 18 -7dB */
312 {0xC1, 0xBA, 0xA8, 0x8F, 0x6F, 0x50, 0x35, 0x1E, 0xE, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 19 -6.5dB */
313 {0xD8, 0xD1, 0xBD, 0xA0, 0x7D, 0x5A, 0x3B, 0x22, 0x10, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0} /* 20 -6dB */
314 };
315
316
317 u8 cck_swing_table_ch14_88f[CCK_TABLE_SIZE_88F][16] = {
318 {0x44, 0x42, 0x3C, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-16dB*/
319 {0x48, 0x46, 0x3F, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-15.5dB*/
320 {0x4D, 0x4A, 0x43, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-15dB*/
321 {0x51, 0x4F, 0x47, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-14.5dB*/
322 {0x56, 0x53, 0x4B, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-14dB*/
323 {0x5B, 0x58, 0x50, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-13.5dB*/
324 {0x60, 0x5D, 0x54, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-13dB*/
325 {0x66, 0x63, 0x59, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-12.5dB*/
326 {0x6C, 0x69, 0x5F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-12dB*/
327 {0x73, 0x6F, 0x64, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-11.5dB*/
328 {0x79, 0x76, 0x6A, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-11dB*/
329 {0x81, 0x7C, 0x71, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-10.5dB*/
330 {0x88, 0x84, 0x77, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-10dB*/
331 {0x90, 0x8C, 0x7E, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-9.5dB*/
332 {0x99, 0x94, 0x86, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-9dB*/
333 {0xA2, 0x9D, 0x8E, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-8.5dB*/
334 {0xAC, 0xA6, 0x96, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-8dB*/
335 {0xB6, 0xB0, 0x9F, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-7.5dB*/
336 {0xC1, 0xBA, 0xA8, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-7dB*/
337 {0xCC, 0xC5, 0xB2, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-6.5dB*/
338 {0xD8, 0xD1, 0xBD, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} /*-6dB*/
339 };
340
341 /* Winnita ADD 20171113 PathA 0xAB4[10:0],PathB 0xAB4[21:11]*/
342 u32 cck_swing_table_ch1_ch14_8192f[CCK_TABLE_SIZE_8192F] = {
343 0x0CD, /*0 , -20dB*/
344 0x0D9,
345 0x0E6,
346 0x0F3,
347 0x102,
348 0x111,
349 0x121,
350 0x132,
351 0x144,
352 0x158,
353 0x16C,
354 0x182,
355 0x198,
356 0x1B1,
357 0x1CA,
358 0x1E5,
359 0x202,
360 0x221,
361 0x241,
362 0x263, /*19*/
363 0x287, /*20*/
364 0x2AE, /*21*/
365 0x2D6, /*22*/
366 0x301, /*23*/
367 0x32F, /*24*/
368 0x35F, /*25*/
369 0x392, /*26*/
370 0x3C9, /*27*/
371 0x402, /*28*/
372 0x43F, /*29*/
373 0x47F, /*30*/
374 0x4C3, /*31*/
375 0x50C, /*32*/
376 0x558, /*33*/
377 0x5A9, /*34*/
378 0x5FF, /*35*/
379 0x65A, /*36*/
380 0x6BA,
381 0x720,
382 0x78C,
383 0x7FF,
384 };
385
386
387 #if 0
388 u32 ofdm_swing_table_92e[OFDM_TABLE_SIZE_92E] = {
389 /* Index0 6 dB */ 0x7fc001ff,
390 /* Index1 5.7dB */ 0x7b4001ed,
391 /* Index2 5.4dB */ 0x774001dd,
392 /* Index3 5.1dB */ 0x734001cd,
393 /* Index4 4.8dB */ 0x6f4001bd,
394 /* Index5 4.5dB */ 0x6b8001ae,
395 /* Index6 4.2dB */ 0x67c0019f,
396 /* Index7 3.9dB */ 0x64400191,
397 /* Index8 3.6dB */ 0x60c00183,
398 /* Index9 3.3dB */ 0x5d800176,
399 /* Index10 3 dB */ 0x5a80016a,
400 /* Index11 2.7dB */ 0x5740015d,
401 /* Index12 2.4dB */ 0x54400151,
402 /* Index13 2.1dB */ 0x51800146,
403 /* Index14 1.8dB */ 0x4ec0013b,
404 /* Index15 1.5dB */ 0x4c000130,
405 /* Index16 1.2dB */ 0x49800126,
406 /* Index17 0.9dB */ 0x4700011c,
407 /* Index18 0.6dB */ 0x44800112,
408 /* Index19 0.3dB */ 0x42000108,
409 /* Index20 0 dB */ 0x40000100, /* 20 This is OFDM base index */
410 /* Index21 -0.3dB */ 0x3dc000f7,
411 /* Index22 -0.6dB */ 0x3bc000ef,
412 /* Index23 -0.9dB */ 0x39c000e7,
413 /* Index24 -1.2dB */ 0x37c000df,
414 /* Index25 -1.5dB */ 0x35c000d7,
415 /* Index26 -1.8dB */ 0x340000d0,
416 /* Index27 -2.1dB */ 0x324000c9,
417 /* Index28 -2.4dB */ 0x308000c2,
418 /* Index29 -2.7dB */ 0x2f0000bc,
419 /* Index30 -3 dB */ 0x2d4000b5,
420 /* Index31 -3.3dB */ 0x2bc000af,
421 /* Index32 -3.6dB */ 0x2a4000a9,
422 /* Index33 -3.9dB */ 0x28c000a3,
423 /* Index34 -4.2dB */ 0x2780009e,
424 /* Index35 -4.5dB */ 0x26000098,
425 /* Index36 -4.8dB */ 0x24c00093,
426 /* Index37 -5.1dB */ 0x2380008e,
427 /* Index38 -5.4dB */ 0x22400089,
428 /* Index39 -5.7dB */ 0x21400085,
429 /* Index40 -6 dB */ 0x20000080,
430 /* Index41 -6.3dB */ 0x1f00007c,
431 /* Index42 -6.6dB */ 0x1e000078,
432 /* Index43 -6.9dB */ 0x1d000074,
433 /* Index44 -7.2dB */ 0x1c000070,
434 /* Index45 -7.5dB */ 0x1b00006c,
435 /* Index46 -7.8dB */ 0x1a000068,
436 /* Index47 -8.1dB */ 0x19400065,
437 /* Index48 -8.4dB */ 0x18400061,
438 /* Index49 -8.7dB */ 0x1780005e,
439 /* Index50 -9 dB */ 0x16c0005b,
440 /* Index51 -9.3dB */ 0x16000058,
441 /* Index52 -9.6dB */ 0x15400055,
442 /* Index53 -9.9dB */ 0x14800052
443 };
444 u8 cck_swing_table_ch1_ch13_92e[CCK_TABLE_SIZE_92E][8] = {
445 /* Index0 0 dB */ {0x36, 0x34, 0x2E, 0x26, 0x1C, 0x12, 0x08, 0x04},
446 /* Index1 -0.3dB */ {0x34, 0x32, 0x2C, 0x25, 0x1B, 0x11, 0x08, 0x04},
447 /* Index2 -0.6dB */ {0x32, 0x30, 0x2B, 0x23, 0x1A, 0x11, 0x07, 0x04},
448 /* Index3 -0.9dB */ {0x31, 0x2F, 0x29, 0x22, 0x19, 0x10, 0x07, 0x04},
449 /* Index4 -1.2dB */ {0x2F, 0x2D, 0x28, 0x21, 0x18, 0x10, 0x07, 0x03},
450 /* Index5 -1.5dB */ {0x2D, 0x2C, 0x27, 0x20, 0x18, 0x0F, 0x07, 0x03},
451 /* Index6 -1.8dB */ {0x2C, 0x2A, 0x25, 0x1F, 0x17, 0x0F, 0x06, 0x03},
452 /* Index7 -2.1dB */ {0x2A, 0x29, 0x24, 0x1E, 0x16, 0x0E, 0x06, 0x03},
453 /* Index8 -2.4dB */ {0x29, 0x27, 0x23, 0x1D, 0x15, 0x0E, 0x06, 0x03},
454 /* Index9 -2.7dB */ {0x27, 0x26, 0x22, 0x1C, 0x14, 0x0D, 0x06, 0x03},
455 /* Index10 -3 dB */ {0x26, 0x25, 0x20, 0x1B, 0x14, 0x0D, 0x06, 0x03},
456 /* Index11 -3.3dB */ {0x25, 0x23, 0x1F, 0x1A, 0x13, 0x0C, 0x05, 0x03},
457 /* Index12 -3.6dB */ {0x24, 0x22, 0x1E, 0x19, 0x12, 0x0C, 0x05, 0x03},
458 /* Index13 -3.9dB */ {0x22, 0x21, 0x1D, 0x18, 0x12, 0x0B, 0x05, 0x03},
459 /* Index14 -4.2dB */ {0x21, 0x20, 0x1C, 0x17, 0x11, 0x0B, 0x05, 0x02},
460 /* Index15 -4.5dB */ {0x20, 0x1F, 0x1B, 0x17, 0x11, 0x0B, 0x05, 0x02},
461 /* Index16 -4.8dB */ {0x1F, 0x1E, 0x1A, 0x16, 0x10, 0x0A, 0x05, 0x02},
462 /* Index17 -5.1dB */ {0x1E, 0x1D, 0x1A, 0x15, 0x10, 0x0A, 0x04, 0x02},
463 /* Index18 -5.4dB */ {0x1D, 0x1C, 0x19, 0x14, 0x0F, 0x0A, 0x04, 0x02},
464 /* Index19 -5.7dB */ {0x1C, 0x1B, 0x18, 0x14, 0x0E, 0x09, 0x04, 0x02},
465 /* Index20 -6.0dB */ {0x1B, 0x1A, 0x17, 0x13, 0x0E, 0x09, 0x04, 0x02}, /* 20 This is CCK base index */
466 /* Index21 -6.3dB */ {0x1A, 0x19, 0x16, 0x12, 0x0E, 0x09, 0x04, 0x02},
467 /* Index22 -6.6dB */ {0x19, 0x18, 0x15, 0x12, 0x0D, 0x08, 0x04, 0x02},
468 /* Index23 -6.9dB */ {0x18, 0x17, 0x15, 0x11, 0x0D, 0x08, 0x04, 0x02},
469 /* Index24 -7.2dB */ {0x18, 0x17, 0x14, 0x11, 0x0C, 0x08, 0x03, 0x02},
470 /* Index25 -7.5dB */ {0x17, 0x16, 0x13, 0x10, 0x0C, 0x08, 0x03, 0x02},
471 /* Index26 -7.8dB */ {0x16, 0x15, 0x13, 0x0F, 0x0B, 0x07, 0x03, 0x02},
472 /* Index27 -8.1dB */ {0x15, 0x14, 0x12, 0x0F, 0x0B, 0x07, 0x03, 0x02},
473 /* Index28 -8.4dB */ {0x14, 0x14, 0x11, 0x0E, 0x0B, 0x07, 0x03, 0x02},
474 /* Index29 -8.7dB */ {0x14, 0x13, 0x11, 0x0E, 0x0A, 0x07, 0x03, 0x01},
475 /* Index30 -9.0dB */ {0x13, 0x12, 0x10, 0x0D, 0x0A, 0x06, 0x03, 0x01}, /* 30 This is hp CCK base index */
476 /* Index31 -9.3dB */ {0x12, 0x12, 0x0F, 0x0D, 0x0A, 0x06, 0x03, 0x01},
477 /* Index32 -9.6dB */ {0x12, 0x11, 0x0F, 0x0D, 0x09, 0x06, 0x03, 0x01},
478 /* Index33 -9.9dB */ {0x11, 0x11, 0x0F, 0x0C, 0x09, 0x06, 0x03, 0x01},
479 /* Index34 -10.2dB */ {0x11, 0x11, 0x0E, 0x0C, 0x09, 0x06, 0x02, 0x01},
480 /* Index35 -10.5dB */ {0x10, 0x0F, 0x0E, 0x0B, 0x08, 0x05, 0x02, 0x01},
481 /* Index36 -10.8dB */ {0x10, 0x0F, 0x0D, 0x0B, 0x08, 0x05, 0x02, 0x01},
482 /* Index37 -11.1dB */ {0x0F, 0x0E, 0x0D, 0x0A, 0x08, 0x05, 0x02, 0x01},
483 /* Index38 -11.4dB */ {0x0E, 0x0E, 0x0C, 0x0A, 0x07, 0x05, 0x02, 0x01},
484 /* Index39 -11.7dB */ {0x0E, 0x0D, 0x0C, 0x0A, 0x07, 0x05, 0x02, 0x01},
485 /* Index40 -12 dB */ {0x0E, 0x0D, 0x0C, 0x0A, 0x07, 0x05, 0x02, 0x01},
486 /* Index41 -12.3dB */ {0x0D, 0x0D, 0x0B, 0x09, 0x07, 0x04, 0x02, 0x01},
487 /* Index42 -12.6dB */ {0x0D, 0x0C, 0x0B, 0x09, 0x07, 0x04, 0x02, 0x01},
488 /* Index43 -12.9dB */ {0x0C, 0x0C, 0x0A, 0x09, 0x06, 0x04, 0x02, 0x01},
489 /* Index44 -13.2dB */ {0x0C, 0x0B, 0x0A, 0x08, 0x06, 0x04, 0x02, 0x01},
490 /* Index45 -13.5dB */ {0x0B, 0x0B, 0x0A, 0x08, 0x06, 0x04, 0x02, 0x01},
491 /* Index46 -13.8dB */ {0x0B, 0x0B, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01},
492 /* Index47 -14.1dB */ {0x0B, 0x0A, 0x09, 0x07, 0x06, 0x04, 0x02, 0x01},
493 /* Index48 -14.4dB */ {0x0A, 0x0A, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01},
494 /* Index49 -14.7dB */ {0x0A, 0x0A, 0x08, 0x07, 0x05, 0x03, 0x01, 0x01},
495 /* Index50 -15 dB */ {0x0A, 0x09, 0x08, 0x07, 0x05, 0x03, 0x01, 0x01},
496 /* Index51 -15.3dB */ {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01},
497 /* Index52 -15.6dB */ {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01},
498 /* Index53 -15.9dB */ {0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01}
499 };
500 u8 cck_swing_table_ch14_92e[CCK_TABLE_SIZE_92E][8] = {
501 /* Index0 0 dB */ {0x36, 0x34, 0x2E, 0x26, 0x00, 0x00, 0x00, 0x00},
502 /* Index1 -0.3dB */ {0x34, 0x32, 0x2C, 0x25, 0x00, 0x00, 0x00, 0x00},
503 /* Index2 -0.6dB */ {0x32, 0x30, 0x2B, 0x23, 0x00, 0x00, 0x00, 0x00},
504 /* Index3 -0.9dB */ {0x31, 0x2F, 0x29, 0x22, 0x00, 0x00, 0x00, 0x00},
505 /* Index4 -1.2dB */ {0x2F, 0x2D, 0x28, 0x21, 0x00, 0x00, 0x00, 0x00},
506 /* Index5 -1.5dB */ {0x2D, 0x2C, 0x27, 0x20, 0x00, 0x00, 0x00, 0x00},
507 /* Index6 -1.8dB */ {0x2C, 0x2A, 0x25, 0x1F, 0x00, 0x00, 0x00, 0x00},
508 /* Index7 -2.1dB */ {0x2A, 0x29, 0x24, 0x1E, 0x00, 0x00, 0x00, 0x00},
509 /* Index8 -2.4dB */ {0x29, 0x27, 0x23, 0x1D, 0x00, 0x00, 0x00, 0x00},
510 /* Index9 -2.7dB */ {0x27, 0x26, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00},
511 /* Index10 -3 dB */ {0x26, 0x25, 0x20, 0x1B, 0x00, 0x00, 0x00, 0x00},
512 /* Index11 -3.3dB */ {0x25, 0x23, 0x1F, 0x1A, 0x00, 0x00, 0x00, 0x00},
513 /* Index12 -3.6dB */ {0x24, 0x22, 0x1E, 0x19, 0x00, 0x00, 0x00, 0x00},
514 /* Index13 -3.9dB */ {0x22, 0x21, 0x1D, 0x18, 0x00, 0x00, 0x00, 0x00},
515 /* Index14 -4.2dB */ {0x21, 0x20, 0x1C, 0x17, 0x00, 0x00, 0x00, 0x00},
516 /* Index15 -4.5dB */ {0x20, 0x1F, 0x1B, 0x17, 0x00, 0x00, 0x00, 0x00},
517 /* Index16 -4.8dB */ {0x1F, 0x1E, 0x1A, 0x16, 0x00, 0x00, 0x00, 0x00},
518 /* Index17 -5.1dB */ {0x1E, 0x1D, 0x1A, 0x15, 0x00, 0x00, 0x00, 0x00},
519 /* Index18 -5.4dB */ {0x1D, 0x1C, 0x19, 0x14, 0x00, 0x00, 0x00, 0x00},
520 /* Index19 -5.7dB */ {0x1C, 0x1B, 0x18, 0x14, 0x00, 0x00, 0x00, 0x00},
521 /* Index20 -6 dB */ {0x1B, 0x1A, 0x17, 0x13, 0x00, 0x00, 0x00, 0x00},
522 /* Index21 -6.3dB */ {0x1A, 0x19, 0x16, 0x12, 0x00, 0x00, 0x00, 0x00},
523 /* Index22 -6.6dB */ {0x19, 0x18, 0x15, 0x12, 0x00, 0x00, 0x00, 0x00},
524 /* Index23 -6.9dB */ {0x18, 0x17, 0x15, 0x11, 0x00, 0x00, 0x00, 0x00},
525 /* Index24 -7.2dB */ {0x18, 0x17, 0x14, 0x11, 0x00, 0x00, 0x00, 0x00},
526 /* Index25 -7.5dB */ {0x17, 0x16, 0x13, 0x10, 0x00, 0x00, 0x00, 0x00},
527 /* Index26 -7.8dB */ {0x16, 0x15, 0x13, 0x0F, 0x00, 0x00, 0x00, 0x00},
528 /* Index27 -8.1dB */ {0x15, 0x14, 0x12, 0x0F, 0x00, 0x00, 0x00, 0x00},
529 /* Index28 -8.4dB */ {0x14, 0x14, 0x11, 0x0E, 0x00, 0x00, 0x00, 0x00},
530 /* Index29 -8.7dB */ {0x14, 0x13, 0x11, 0x0E, 0x00, 0x00, 0x00, 0x00},
531 /* Index30 -9 dB */ {0x13, 0x12, 0x10, 0x0D, 0x00, 0x00, 0x00, 0x00},
532 /* Index31 -9.3dB */ {0x12, 0x12, 0x0F, 0x0D, 0x00, 0x00, 0x00, 0x00},
533 /* Index32 -9.6dB */ {0x12, 0x11, 0x0F, 0x0D, 0x00, 0x00, 0x00, 0x00},
534 /* Index33 -9.9dB */ {0x11, 0x11, 0x0F, 0x0C, 0x00, 0x00, 0x00, 0x00},
535 /* Index34 -10.2dB */ {0x11, 0x11, 0x0E, 0x0C, 0x00, 0x00, 0x00, 0x00},
536 /* Index35 -10.5dB */ {0x10, 0x0F, 0x0E, 0x0B, 0x00, 0x00, 0x00, 0x00},
537 /* Index36 -10.8dB */ {0x10, 0x0F, 0x0D, 0x0B, 0x00, 0x00, 0x00, 0x00},
538 /* Index37 -11.1dB */ {0x0F, 0x0E, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00},
539 /* Index38 -11.4dB */ {0x0E, 0x0E, 0x0C, 0x0A, 0x00, 0x00, 0x00, 0x00},
540 /* Index39 -11.7dB */ {0x0E, 0x0D, 0x0C, 0x0A, 0x00, 0x00, 0x00, 0x00},
541 /* Index40 -12 dB */ {0x0E, 0x0D, 0x0C, 0x0A, 0x00, 0x00, 0x00, 0x00},
542 /* Index41 -12.3dB */ {0x0D, 0x0D, 0x0B, 0x09, 0x00, 0x00, 0x00, 0x00},
543 /* Index42 -12.6dB */ {0x0D, 0x0C, 0x0B, 0x09, 0x00, 0x00, 0x00, 0x00},
544 /* Index43 -12.9dB */ {0x0C, 0x0C, 0x0A, 0x09, 0x00, 0x00, 0x00, 0x00},
545 /* Index44 -13.2dB */ {0x0C, 0x0B, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00},
546 /* Index45 -13.5dB */ {0x0B, 0x0B, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00},
547 /* Index46 -13.8dB */ {0x0B, 0x0B, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00},
548 /* Index47 -14.1dB */ {0x0B, 0x0A, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00},
549 /* Index48 -14.4dB */ {0x0A, 0x0A, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00},
550 /* Index49 -14.7dB */ {0x0A, 0x0A, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00},
551 /* Index50 -15 dB */ {0x0A, 0x09, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00},
552 /* Index51 -15.3dB */ {0x09, 0x09, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00},
553 /* Index52 -15.6dB */ {0x09, 0x09, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00},
554 /* Index53 -15.9dB */ {0x09, 0x08, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00}
555 };
556 #endif
557 #endif
558
559
560 u8 delta_swing_table_idx_2ga_p_default[DELTA_SWINGIDX_SIZE] = {0, 0, 0, 0, 1, 1, 2, 2, 3, 3
561 , 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9
562 };
563 u8 delta_swing_table_idx_2ga_n_default[DELTA_SWINGIDX_SIZE] = {0, 0, 0, 2, 2, 3, 3, 4, 4, 4
564 , 4, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11
565 };
566
567
568 #ifdef CONFIG_WLAN_HAL_8192EE
569 u32 ofdm_swing_table_92e[OFDM_TABLE_SIZE_92E] = {
570 /* Index0 6 dB */ 0x7fc001ff,
571 /* Index1 5.7dB */ 0x7b4001ed,
572 /* Index2 5.4dB */ 0x774001dd,
573 /* Index3 5.1dB */ 0x734001cd,
574 /* Index4 4.8dB */ 0x6f4001bd,
575 /* Index5 4.5dB */ 0x6b8001ae,
576 /* Index6 4.2dB */ 0x67c0019f,
577 /* Index7 3.9dB */ 0x64400191,
578 /* Index8 3.6dB */ 0x60c00183,
579 /* Index9 3.3dB */ 0x5d800176,
580 /* Index10 3 dB */ 0x5a80016a,
581 /* Index11 2.7dB */ 0x5740015d,
582 /* Index12 2.4dB */ 0x54400151,
583 /* Index13 2.1dB */ 0x51800146,
584 /* Index14 1.8dB */ 0x4ec0013b,
585 /* Index15 1.5dB */ 0x4c000130,
586 /* Index16 1.2dB */ 0x49800126,
587 /* Index17 0.9dB */ 0x4700011c,
588 /* Index18 0.6dB */ 0x44800112,
589 /* Index19 0.3dB */ 0x42000108,
590 /* Index20 0 dB */ 0x40000100, /* 20 This is OFDM base index */
591 /* Index21 -0.3dB */ 0x3dc000f7,
592 /* Index22 -0.6dB */ 0x3bc000ef,
593 /* Index23 -0.9dB */ 0x39c000e7,
594 /* Index24 -1.2dB */ 0x37c000df,
595 /* Index25 -1.5dB */ 0x35c000d7,
596 /* Index26 -1.8dB */ 0x340000d0,
597 /* Index27 -2.1dB */ 0x324000c9,
598 /* Index28 -2.4dB */ 0x308000c2,
599 /* Index29 -2.7dB */ 0x2f0000bc,
600 /* Index30 -3 dB */ 0x2d4000b5,
601 /* Index31 -3.3dB */ 0x2bc000af,
602 /* Index32 -3.6dB */ 0x2a4000a9,
603 /* Index33 -3.9dB */ 0x28c000a3,
604 /* Index34 -4.2dB */ 0x2780009e,
605 /* Index35 -4.5dB */ 0x26000098,
606 /* Index36 -4.8dB */ 0x24c00093,
607 /* Index37 -5.1dB */ 0x2380008e,
608 /* Index38 -5.4dB */ 0x22400089,
609 /* Index39 -5.7dB */ 0x21400085,
610 /* Index40 -6 dB */ 0x20000080,
611 /* Index41 -6.3dB */ 0x1f00007c,
612 /* Index42 -6.6dB */ 0x1e000078,
613 /* Index43 -6.9dB */ 0x1d000074,
614 /* Index44 -7.2dB */ 0x1c000070,
615 /* Index45 -7.5dB */ 0x1b00006c,
616 /* Index46 -7.8dB */ 0x1a000068,
617 /* Index47 -8.1dB */ 0x19400065,
618 /* Index48 -8.4dB */ 0x18400061,
619 /* Index49 -8.7dB */ 0x1780005e,
620 /* Index50 -9 dB */ 0x16c0005b,
621 /* Index51 -9.3dB */ 0x16000058,
622 /* Index52 -9.6dB */ 0x15400055,
623 /* Index53 -9.9dB */ 0x14800052
624 };
625 u8 cck_swing_table_ch1_ch13_92e[CCK_TABLE_SIZE_92E][8] = {
626 /* Index0 0 dB */ {0x36, 0x34, 0x2E, 0x26, 0x1C, 0x12, 0x08, 0x04},
627 /* Index1 -0.3dB */ {0x34, 0x32, 0x2C, 0x25, 0x1B, 0x11, 0x08, 0x04},
628 /* Index2 -0.6dB */ {0x32, 0x30, 0x2B, 0x23, 0x1A, 0x11, 0x07, 0x04},
629 /* Index3 -0.9dB */ {0x31, 0x2F, 0x29, 0x22, 0x19, 0x10, 0x07, 0x04},
630 /* Index4 -1.2dB */ {0x2F, 0x2D, 0x28, 0x21, 0x18, 0x10, 0x07, 0x03},
631 /* Index5 -1.5dB */ {0x2D, 0x2C, 0x27, 0x20, 0x18, 0x0F, 0x07, 0x03},
632 /* Index6 -1.8dB */ {0x2C, 0x2A, 0x25, 0x1F, 0x17, 0x0F, 0x06, 0x03},
633 /* Index7 -2.1dB */ {0x2A, 0x29, 0x24, 0x1E, 0x16, 0x0E, 0x06, 0x03},
634 /* Index8 -2.4dB */ {0x29, 0x27, 0x23, 0x1D, 0x15, 0x0E, 0x06, 0x03},
635 /* Index9 -2.7dB */ {0x27, 0x26, 0x22, 0x1C, 0x14, 0x0D, 0x06, 0x03},
636 /* Index10 -3 dB */ {0x26, 0x25, 0x20, 0x1B, 0x14, 0x0D, 0x06, 0x03},
637 /* Index11 -3.3dB */ {0x25, 0x23, 0x1F, 0x1A, 0x13, 0x0C, 0x05, 0x03},
638 /* Index12 -3.6dB */ {0x24, 0x22, 0x1E, 0x19, 0x12, 0x0C, 0x05, 0x03},
639 /* Index13 -3.9dB */ {0x22, 0x21, 0x1D, 0x18, 0x12, 0x0B, 0x05, 0x03},
640 /* Index14 -4.2dB */ {0x21, 0x20, 0x1C, 0x17, 0x11, 0x0B, 0x05, 0x02},
641 /* Index15 -4.5dB */ {0x20, 0x1F, 0x1B, 0x17, 0x11, 0x0B, 0x05, 0x02},
642 /* Index16 -4.8dB */ {0x1F, 0x1E, 0x1A, 0x16, 0x10, 0x0A, 0x05, 0x02},
643 /* Index17 -5.1dB */ {0x1E, 0x1D, 0x1A, 0x15, 0x10, 0x0A, 0x04, 0x02},
644 /* Index18 -5.4dB */ {0x1D, 0x1C, 0x19, 0x14, 0x0F, 0x0A, 0x04, 0x02},
645 /* Index19 -5.7dB */ {0x1C, 0x1B, 0x18, 0x14, 0x0E, 0x09, 0x04, 0x02},
646 /* Index20 -6.0dB */ {0x1B, 0x1A, 0x17, 0x13, 0x0E, 0x09, 0x04, 0x02}, /* 20 This is CCK base index */
647 /* Index21 -6.3dB */ {0x1A, 0x19, 0x16, 0x12, 0x0E, 0x09, 0x04, 0x02},
648 /* Index22 -6.6dB */ {0x19, 0x18, 0x15, 0x12, 0x0D, 0x08, 0x04, 0x02},
649 /* Index23 -6.9dB */ {0x18, 0x17, 0x15, 0x11, 0x0D, 0x08, 0x04, 0x02},
650 /* Index24 -7.2dB */ {0x18, 0x17, 0x14, 0x11, 0x0C, 0x08, 0x03, 0x02},
651 /* Index25 -7.5dB */ {0x17, 0x16, 0x13, 0x10, 0x0C, 0x08, 0x03, 0x02},
652 /* Index26 -7.8dB */ {0x16, 0x15, 0x13, 0x0F, 0x0B, 0x07, 0x03, 0x02},
653 /* Index27 -8.1dB */ {0x15, 0x14, 0x12, 0x0F, 0x0B, 0x07, 0x03, 0x02},
654 /* Index28 -8.4dB */ {0x14, 0x14, 0x11, 0x0E, 0x0B, 0x07, 0x03, 0x02},
655 /* Index29 -8.7dB */ {0x14, 0x13, 0x11, 0x0E, 0x0A, 0x07, 0x03, 0x01},
656 /* Index30 -9.0dB */ {0x13, 0x12, 0x10, 0x0D, 0x0A, 0x06, 0x03, 0x01}, /* 30 This is hp CCK base index */
657 /* Index31 -9.3dB */ {0x12, 0x12, 0x0F, 0x0D, 0x0A, 0x06, 0x03, 0x01},
658 /* Index32 -9.6dB */ {0x12, 0x11, 0x0F, 0x0D, 0x09, 0x06, 0x03, 0x01},
659 /* Index33 -9.9dB */ {0x11, 0x11, 0x0F, 0x0C, 0x09, 0x06, 0x03, 0x01},
660 /* Index34 -10.2dB */ {0x11, 0x11, 0x0E, 0x0C, 0x09, 0x06, 0x02, 0x01},
661 /* Index35 -10.5dB */ {0x10, 0x0F, 0x0E, 0x0B, 0x08, 0x05, 0x02, 0x01},
662 /* Index36 -10.8dB */ {0x10, 0x0F, 0x0D, 0x0B, 0x08, 0x05, 0x02, 0x01},
663 /* Index37 -11.1dB */ {0x0F, 0x0E, 0x0D, 0x0A, 0x08, 0x05, 0x02, 0x01},
664 /* Index38 -11.4dB */ {0x0E, 0x0E, 0x0C, 0x0A, 0x07, 0x05, 0x02, 0x01},
665 /* Index39 -11.7dB */ {0x0E, 0x0D, 0x0C, 0x0A, 0x07, 0x05, 0x02, 0x01},
666 /* Index40 -12 dB */ {0x0E, 0x0D, 0x0C, 0x0A, 0x07, 0x05, 0x02, 0x01},
667 /* Index41 -12.3dB */ {0x0D, 0x0D, 0x0B, 0x09, 0x07, 0x04, 0x02, 0x01},
668 /* Index42 -12.6dB */ {0x0D, 0x0C, 0x0B, 0x09, 0x07, 0x04, 0x02, 0x01},
669 /* Index43 -12.9dB */ {0x0C, 0x0C, 0x0A, 0x09, 0x06, 0x04, 0x02, 0x01},
670 /* Index44 -13.2dB */ {0x0C, 0x0B, 0x0A, 0x08, 0x06, 0x04, 0x02, 0x01},
671 /* Index45 -13.5dB */ {0x0B, 0x0B, 0x0A, 0x08, 0x06, 0x04, 0x02, 0x01},
672 /* Index46 -13.8dB */ {0x0B, 0x0B, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01},
673 /* Index47 -14.1dB */ {0x0B, 0x0A, 0x09, 0x07, 0x06, 0x04, 0x02, 0x01},
674 /* Index48 -14.4dB */ {0x0A, 0x0A, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01},
675 /* Index49 -14.7dB */ {0x0A, 0x0A, 0x08, 0x07, 0x05, 0x03, 0x01, 0x01},
676 /* Index50 -15 dB */ {0x0A, 0x09, 0x08, 0x07, 0x05, 0x03, 0x01, 0x01},
677 /* Index51 -15.3dB */ {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01},
678 /* Index52 -15.6dB */ {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01},
679 /* Index53 -15.9dB */ {0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01}
680 };
681 u8 cck_swing_table_ch14_92e[CCK_TABLE_SIZE_92E][8] = {
682 /* Index0 0 dB */ {0x36, 0x34, 0x2E, 0x26, 0x00, 0x00, 0x00, 0x00},
683 /* Index1 -0.3dB */ {0x34, 0x32, 0x2C, 0x25, 0x00, 0x00, 0x00, 0x00},
684 /* Index2 -0.6dB */ {0x32, 0x30, 0x2B, 0x23, 0x00, 0x00, 0x00, 0x00},
685 /* Index3 -0.9dB */ {0x31, 0x2F, 0x29, 0x22, 0x00, 0x00, 0x00, 0x00},
686 /* Index4 -1.2dB */ {0x2F, 0x2D, 0x28, 0x21, 0x00, 0x00, 0x00, 0x00},
687 /* Index5 -1.5dB */ {0x2D, 0x2C, 0x27, 0x20, 0x00, 0x00, 0x00, 0x00},
688 /* Index6 -1.8dB */ {0x2C, 0x2A, 0x25, 0x1F, 0x00, 0x00, 0x00, 0x00},
689 /* Index7 -2.1dB */ {0x2A, 0x29, 0x24, 0x1E, 0x00, 0x00, 0x00, 0x00},
690 /* Index8 -2.4dB */ {0x29, 0x27, 0x23, 0x1D, 0x00, 0x00, 0x00, 0x00},
691 /* Index9 -2.7dB */ {0x27, 0x26, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00},
692 /* Index10 -3 dB */ {0x26, 0x25, 0x20, 0x1B, 0x00, 0x00, 0x00, 0x00},
693 /* Index11 -3.3dB */ {0x25, 0x23, 0x1F, 0x1A, 0x00, 0x00, 0x00, 0x00},
694 /* Index12 -3.6dB */ {0x24, 0x22, 0x1E, 0x19, 0x00, 0x00, 0x00, 0x00},
695 /* Index13 -3.9dB */ {0x22, 0x21, 0x1D, 0x18, 0x00, 0x00, 0x00, 0x00},
696 /* Index14 -4.2dB */ {0x21, 0x20, 0x1C, 0x17, 0x00, 0x00, 0x00, 0x00},
697 /* Index15 -4.5dB */ {0x20, 0x1F, 0x1B, 0x17, 0x00, 0x00, 0x00, 0x00},
698 /* Index16 -4.8dB */ {0x1F, 0x1E, 0x1A, 0x16, 0x00, 0x00, 0x00, 0x00},
699 /* Index17 -5.1dB */ {0x1E, 0x1D, 0x1A, 0x15, 0x00, 0x00, 0x00, 0x00},
700 /* Index18 -5.4dB */ {0x1D, 0x1C, 0x19, 0x14, 0x00, 0x00, 0x00, 0x00},
701 /* Index19 -5.7dB */ {0x1C, 0x1B, 0x18, 0x14, 0x00, 0x00, 0x00, 0x00},
702 /* Index20 -6 dB */ {0x1B, 0x1A, 0x17, 0x13, 0x00, 0x00, 0x00, 0x00},
703 /* Index21 -6.3dB */ {0x1A, 0x19, 0x16, 0x12, 0x00, 0x00, 0x00, 0x00},
704 /* Index22 -6.6dB */ {0x19, 0x18, 0x15, 0x12, 0x00, 0x00, 0x00, 0x00},
705 /* Index23 -6.9dB */ {0x18, 0x17, 0x15, 0x11, 0x00, 0x00, 0x00, 0x00},
706 /* Index24 -7.2dB */ {0x18, 0x17, 0x14, 0x11, 0x00, 0x00, 0x00, 0x00},
707 /* Index25 -7.5dB */ {0x17, 0x16, 0x13, 0x10, 0x00, 0x00, 0x00, 0x00},
708 /* Index26 -7.8dB */ {0x16, 0x15, 0x13, 0x0F, 0x00, 0x00, 0x00, 0x00},
709 /* Index27 -8.1dB */ {0x15, 0x14, 0x12, 0x0F, 0x00, 0x00, 0x00, 0x00},
710 /* Index28 -8.4dB */ {0x14, 0x14, 0x11, 0x0E, 0x00, 0x00, 0x00, 0x00},
711 /* Index29 -8.7dB */ {0x14, 0x13, 0x11, 0x0E, 0x00, 0x00, 0x00, 0x00},
712 /* Index30 -9 dB */ {0x13, 0x12, 0x10, 0x0D, 0x00, 0x00, 0x00, 0x00},
713 /* Index31 -9.3dB */ {0x12, 0x12, 0x0F, 0x0D, 0x00, 0x00, 0x00, 0x00},
714 /* Index32 -9.6dB */ {0x12, 0x11, 0x0F, 0x0D, 0x00, 0x00, 0x00, 0x00},
715 /* Index33 -9.9dB */ {0x11, 0x11, 0x0F, 0x0C, 0x00, 0x00, 0x00, 0x00},
716 /* Index34 -10.2dB */ {0x11, 0x11, 0x0E, 0x0C, 0x00, 0x00, 0x00, 0x00},
717 /* Index35 -10.5dB */ {0x10, 0x0F, 0x0E, 0x0B, 0x00, 0x00, 0x00, 0x00},
718 /* Index36 -10.8dB */ {0x10, 0x0F, 0x0D, 0x0B, 0x00, 0x00, 0x00, 0x00},
719 /* Index37 -11.1dB */ {0x0F, 0x0E, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00},
720 /* Index38 -11.4dB */ {0x0E, 0x0E, 0x0C, 0x0A, 0x00, 0x00, 0x00, 0x00},
721 /* Index39 -11.7dB */ {0x0E, 0x0D, 0x0C, 0x0A, 0x00, 0x00, 0x00, 0x00},
722 /* Index40 -12 dB */ {0x0E, 0x0D, 0x0C, 0x0A, 0x00, 0x00, 0x00, 0x00},
723 /* Index41 -12.3dB */ {0x0D, 0x0D, 0x0B, 0x09, 0x00, 0x00, 0x00, 0x00},
724 /* Index42 -12.6dB */ {0x0D, 0x0C, 0x0B, 0x09, 0x00, 0x00, 0x00, 0x00},
725 /* Index43 -12.9dB */ {0x0C, 0x0C, 0x0A, 0x09, 0x00, 0x00, 0x00, 0x00},
726 /* Index44 -13.2dB */ {0x0C, 0x0B, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00},
727 /* Index45 -13.5dB */ {0x0B, 0x0B, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00},
728 /* Index46 -13.8dB */ {0x0B, 0x0B, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00},
729 /* Index47 -14.1dB */ {0x0B, 0x0A, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00},
730 /* Index48 -14.4dB */ {0x0A, 0x0A, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00},
731 /* Index49 -14.7dB */ {0x0A, 0x0A, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00},
732 /* Index50 -15 dB */ {0x0A, 0x09, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00},
733 /* Index51 -15.3dB */ {0x09, 0x09, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00},
734 /* Index52 -15.6dB */ {0x09, 0x09, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00},
735 /* Index53 -15.9dB */ {0x09, 0x08, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00}
736 };
737 #endif
738
739 #if (RTL8814A_SUPPORT == 1 || RTL8822B_SUPPORT == 1 ||\
740 RTL8821C_SUPPORT == 1 || RTL8198F_SUPPORT == 1 ||\
741 RTL8814B_SUPPORT == 1)
742 u32 tx_scaling_table_jaguar[TXSCALE_TABLE_SIZE] = {
743 0x081, /* 0, -12.0dB */
744 0x088, /* 1, -11.5dB */
745 0x090, /* 2, -11.0dB */
746 0x099, /* 3, -10.5dB */
747 0x0A2, /* 4, -10.0dB */
748 0x0AC, /* 5, -9.5dB */
749 0x0B6, /* 6, -9.0dB */
750 0x0C0, /* 7, -8.5dB */
751 0x0CC, /* 8, -8.0dB */
752 0x0D8, /* 9, -7.5dB */
753 0x0E5, /* 10, -7.0dB */
754 0x0F2, /* 11, -6.5dB */
755 0x101, /* 12, -6.0dB */
756 0x110, /* 13, -5.5dB */
757 0x120, /* 14, -5.0dB */
758 0x131, /* 15, -4.5dB */
759 0x143, /* 16, -4.0dB */
760 0x156, /* 17, -3.5dB */
761 0x16A, /* 18, -3.0dB */
762 0x180, /* 19, -2.5dB */
763 0x197, /* 20, -2.0dB */
764 0x1AF, /* 21, -1.5dB */
765 0x1C8, /* 22, -1.0dB */
766 0x1E3, /* 23, -0.5dB */
767 0x200, /* 24, +0 dB */
768 0x21E, /* 25, +0.5dB */
769 0x23E, /* 26, +1.0dB */
770 0x261, /* 27, +1.5dB */
771 0x285, /* 28, +2.0dB */
772 0x2AB, /* 29, +2.5dB */
773 0x2D3, /* 30, +3.0dB */
774 0x2FE, /* 31, +3.5dB */
775 0x32B, /* 32, +4.0dB */
776 0x35C, /* 33, +4.5dB */
777 0x38E, /* 34, +5.0dB */
778 0x3C4, /* 35, +5.5dB */
779 0x3FE /* 36, +6.0dB */
780 };
781 #elif(ODM_IC_11AC_SERIES_SUPPORT)
782 u32 ofdm_swing_table_8812[OFDM_TABLE_SIZE_8812] = {
783 0x3FE, /* 0, (6dB) */
784 0x3C4, /* 1, (5.5dB) */
785 0x38E, /* 2, (5dB) */
786 0x35C, /* 3, (4.5dB) */
787 0x32B, /* 4, (4dB) */
788 0x2FE, /* 5, (3.5dB) */
789 0x2D3, /* 6, (3dB) */
790 0x2AB, /* 7, (2.5dB) */
791 0x285, /* 8, (2dB) */
792 0x261, /* 9, (1.5dB */
793 0x23E, /* 10, (1dB) */
794 0x21E, /* 11, (0.5dB) */
795 0x200, /* 12, (0dB) 8814 int PA 2G default */
796 0x1E3, /* 13, (-0.5dB) */
797 0x1C8, /* 14, (-1dB) */
798 0x1AF, /* 15, (-1.5dB) */
799 0x197, /* 16, (-2dB) */
800 0x180, /* 17, (-2.5dB) */
801 0x16A, /* 18, (-3dB) 8812 / 8814 int PA 5G / 8814 ext PA 2G5G default */
802 0x156, /* 19, (-3.5dB) */
803 0x143, /* 20, (-4dB) 8812 HP default */
804 0x131, /* 21, (-4.5dB) */
805 0x120, /* 22, (-5dB) */
806 0x110, /* 23, (-5.5dB) */
807 0x101, /* 24, (-6dB) */
808 0x0F2, /* 25, (-6.5dB) */
809 0x0E5, /* 26, (-7dB) */
810 0x0D8, /* 27, (-7.5dB) */
811 0x0CC, /* 28, (-8dB) */
812 0x0C0, /* 29, (-8.5dB) */
813 0x0B6, /* 30, (-9dB) */
814 0x0AC, /* 31, (-9.5dB) */
815 0x0A2, /* 32, (-10dB) */
816 0x099, /* 33, (-10.5dB) */
817 0x090, /* 34, (-11dB) */
818 0x088, /* 35, (-11.5dB) */
819 0x081, /* 36, (-12dB) */
820 0x079, /* 37, (-12.5dB) */
821 0x072, /* 38, (-13dB) */
822 0x06c, /* 39, (-13.5dB) */
823 0x066, /* 40, (-14dB) */
824 0x060, /* 41, (-14.5dB) */
825 0x05B /* 42, (-15dB) */
826 };
827 #endif
828
829 u32 cck_swing_table_ch1_ch14_8723d[CCK_TABLE_SIZE_8723D] = {
830 0x0CD,
831 0x0D9,
832 0x0E6,
833 0x0F3,
834 0x102,
835 0x111,
836 0x121,
837 0x132,
838 0x144,
839 0x158,
840 0x16C,
841 0x182,
842 0x198,
843 0x1B1,
844 0x1CA,
845 0x1E5,
846 0x202,
847 0x221,
848 0x241,
849 0x263,
850 0x287,
851 0x2AE,
852 0x2D6,
853 0x301,
854 0x32F,
855 0x35F,
856 0x392,
857 0x3C9,
858 0x402,
859 0x43F,
860 0x47F,
861 0x4C3,
862 0x50C,
863 0x558,
864 0x5A9,
865 0x5FF,
866 0x65A,
867 0x6BA,
868 0x720,
869 0x78C,
870 0x7FF,
871 };
872 /* JJ ADD 20161014 */
873 u32 cck_swing_table_ch1_ch14_8710b[CCK_TABLE_SIZE_8710B] = {
874 0x0CD,
875 0x0D9,
876 0x0E6,
877 0x0F3,
878 0x102,
879 0x111,
880 0x121,
881 0x132,
882 0x144,
883 0x158,
884 0x16C,
885 0x182,
886 0x198,
887 0x1B1,
888 0x1CA,
889 0x1E5,
890 0x202,
891 0x221,
892 0x241,
893 0x263,
894 0x287,
895 0x2AE,
896 0x2D6,
897 0x301,
898 0x32F,
899 0x35F,
900 0x392,
901 0x3C9,
902 0x402,
903 0x43F,
904 0x47F,
905 0x4C3,
906 0x50C,
907 0x558,
908 0x5A9,
909 0x5FF,
910 0x65A,
911 0x6BA,
912 0x720,
913 0x78C,
914 0x7FF,
915 };
916
917
918 /* #endif */
919 /* 3============================================================
920 * 3 Tx Power Tracking
921 * 3============================================================ */
922
923 void
odm_txpowertracking_init(void * dm_void)924 odm_txpowertracking_init(
925 void *dm_void
926 )
927 {
928 struct dm_struct *dm = (struct dm_struct *)dm_void;
929 #if (DM_ODM_SUPPORT_TYPE & (ODM_AP))
930 if (!(dm->support_ic_type & (ODM_RTL8814A | ODM_RTL8822B | ODM_RTL8814B | ODM_IC_11N_SERIES)))
931 return;
932 #endif
933
934 odm_txpowertracking_thermal_meter_init(dm);
935 }
936
937
938 u8
get_swing_index(void * dm_void)939 get_swing_index(
940 void *dm_void
941 )
942 {
943 struct dm_struct *dm = (struct dm_struct *)dm_void;
944 u8 i = 0, bb_swing_mask = 0;
945 u32 bb_swing = 0;
946 u32 swing_table_size = 0;
947 u32 *swing_table = 0;
948 struct rtl8192cd_priv *priv = dm->priv;
949
950 #if (RTL8197F_SUPPORT == 1)
951 if (GET_CHIP_VER(priv) == VERSION_8197F) {
952 bb_swing = phy_query_bb_reg(priv, REG_OFDM_0_XA_TX_IQ_IMBALANCE, MASKOFDM_D);
953 swing_table = ofdm_swing_table_new;
954 swing_table_size = OFDM_TABLE_SIZE_92D;
955 bb_swing_mask = 22;
956 }
957 #endif
958
959 #if (RTL8192F_SUPPORT == 1)
960 if (GET_CHIP_VER(priv) == VERSION_8192F) {
961 bb_swing = phy_query_bb_reg(priv, REG_OFDM_0_XA_TX_IQ_IMBALANCE, MASKOFDM_D);
962 swing_table = ofdm_swing_table_new;
963 swing_table_size = OFDM_TABLE_SIZE_92D;
964 bb_swing_mask = 22;
965 }
966 #endif
967
968 #if (RTL8822B_SUPPORT == 1)
969 if (GET_CHIP_VER(priv) == VERSION_8822B) {
970 bb_swing = phy_query_bb_reg(priv, REG_A_TX_SCALE_JAGUAR, 0xFFE00000);
971 swing_table = tx_scaling_table_jaguar;
972 swing_table_size = TXSCALE_TABLE_SIZE;
973 bb_swing_mask = 0;
974 }
975 #endif
976
977 for (i = 0; i < swing_table_size - 1; i++) {
978 u32 table_value = swing_table[i] >> bb_swing_mask;
979
980 if (bb_swing == table_value)
981 break;
982 }
983
984 RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "bb_swing=0x%x bbswing_index=%d\n", bb_swing, i);
985
986
987 return i;
988 }
989
990 s8
get_txagc_default_index(void * dm_void)991 get_txagc_default_index(
992 void *dm_void
993 )
994 {
995 struct dm_struct *dm = (struct dm_struct *)dm_void;
996 s8 tmp;
997
998 #if RTL8814B_SUPPORT
999 if (dm->support_ic_type == ODM_RTL8814B) {
1000 tmp = (s8)(odm_get_bb_reg(dm, R_0x18a0, 0x7f) & 0xff);
1001 if (tmp & BIT(6))
1002 tmp = tmp | 0x80;
1003 return tmp;
1004 } else
1005 return 0;
1006 #endif
1007 }
1008
1009 void
odm_txpowertracking_thermal_meter_init(void * dm_void)1010 odm_txpowertracking_thermal_meter_init(
1011 void *dm_void
1012 )
1013 {
1014 struct dm_struct *dm = (struct dm_struct *)dm_void;
1015 struct dm_rf_calibration_struct *cali_info = &(dm->rf_calibrate_info);
1016 struct rtl8192cd_priv *priv = dm->priv;
1017 u8 p;
1018 u8 default_swing_index;
1019 #if (RTL8197F_SUPPORT == 1 || RTL8822B_SUPPORT == 1 || RTL8192F_SUPPORT == 1)
1020 if ((GET_CHIP_VER(priv) == VERSION_8197F) || (GET_CHIP_VER(priv) == VERSION_8822B) ||(GET_CHIP_VER(priv) == VERSION_8192F))
1021 default_swing_index = get_swing_index(dm);
1022 #endif
1023
1024 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
1025 void *adapter = dm->adapter;
1026 PMGNT_INFO mgnt_info = &adapter->MgntInfo;
1027 HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter));
1028
1029 mgnt_info->is_txpowertracking = true;
1030 hal_data->tx_powercount = 0;
1031 hal_data->is_txpowertracking_init = false;
1032
1033 if (*(dm->mp_mode) == false)
1034 hal_data->txpowertrack_control = true;
1035 RF_DBG(dm, COMP_POWER_TRACKING, "mgnt_info->is_txpowertracking = %d\n", mgnt_info->is_txpowertracking);
1036 #elif (DM_ODM_SUPPORT_TYPE == ODM_CE)
1037 #ifdef CONFIG_RTL8188E
1038 {
1039 dm->rf_calibrate_info.is_txpowertracking = true;
1040 dm->rf_calibrate_info.tx_powercount = 0;
1041 dm->rf_calibrate_info.is_txpowertracking_init = false;
1042
1043 if (*(dm->mp_mode) == false)
1044 dm->rf_calibrate_info.txpowertrack_control = true;
1045
1046 MSG_8192C("dm txpowertrack_control = %d\n", dm->rf_calibrate_info.txpowertrack_control);
1047 }
1048 #else
1049 {
1050 void *adapter = dm->adapter;
1051 HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter));
1052 struct dm_priv *pdmpriv = &hal_data->dmpriv;
1053
1054 pdmpriv->is_txpowertracking = true;
1055 pdmpriv->tx_powercount = 0;
1056 pdmpriv->is_txpowertracking_init = false;
1057
1058 if (*(dm->mp_mode) == false) /* for mp driver, turn off txpwrtracking as default */
1059 pdmpriv->txpowertrack_control = true;
1060
1061 MSG_8192C("pdmpriv->txpowertrack_control = %d\n", pdmpriv->txpowertrack_control);
1062
1063 }
1064 #endif/* endif (CONFIG_RTL8188E==1) */
1065 #elif (DM_ODM_SUPPORT_TYPE & (ODM_AP))
1066
1067 #ifdef RTL8188E_SUPPORT
1068 {
1069 dm->rf_calibrate_info.is_txpowertracking = true;
1070 dm->rf_calibrate_info.tx_powercount = 0;
1071 dm->rf_calibrate_info.is_txpowertracking_init = false;
1072 dm->rf_calibrate_info.txpowertrack_control = true;
1073 dm->rf_calibrate_info.tm_trigger = 0;
1074 }
1075 #endif
1076 #endif
1077
1078 dm->rf_calibrate_info.txpowertrack_control = true;
1079 dm->rf_calibrate_info.delta_power_index = 0;
1080 dm->rf_calibrate_info.delta_power_index_last = 0;
1081 dm->rf_calibrate_info.power_index_offset = 0;
1082 dm->rf_calibrate_info.thermal_value = 0;
1083 cali_info->default_ofdm_index = 28;
1084
1085 #if (RTL8197F_SUPPORT == 1)
1086 if (GET_CHIP_VER(priv) == VERSION_8197F) {
1087 cali_info->default_ofdm_index = (default_swing_index >= (OFDM_TABLE_SIZE_92D - 1)) ? 30 : default_swing_index;
1088 cali_info->default_cck_index = 28;
1089 }
1090 #endif
1091
1092 #if (RTL8192F_SUPPORT == 1)
1093 if (GET_CHIP_VER(priv) == VERSION_8192F) {
1094 cali_info->default_ofdm_index = (default_swing_index >= (OFDM_TABLE_SIZE_92D - 1)) ? 30 : default_swing_index;
1095 cali_info->default_cck_index = 28;
1096 }
1097 #endif
1098
1099 #if (RTL8822B_SUPPORT == 1)
1100 if (GET_CHIP_VER(priv) == VERSION_8822B) {
1101 cali_info->default_ofdm_index = (default_swing_index >= (TXSCALE_TABLE_SIZE - 1)) ? 24 : default_swing_index;
1102 cali_info->default_cck_index = 20;
1103 }
1104 #endif
1105
1106
1107 #if RTL8188E_SUPPORT
1108 if (GET_CHIP_VER(priv) == VERSION_8188E) {
1109 cali_info->default_cck_index = 20; /* -6 dB */
1110 }
1111 #endif
1112
1113 #if RTL8192E_SUPPORT
1114 if (GET_CHIP_VER(priv) == VERSION_8192E) {
1115 cali_info->default_cck_index = 8; /* -12 dB */
1116 }
1117 #endif
1118
1119 #if RTL8814B_SUPPORT
1120 if (GET_CHIP_VER(priv) == VERSION_8814B) {
1121 cali_info->default_txagc_index = get_txagc_default_index(dm);
1122 }
1123 #endif
1124
1125 cali_info->bb_swing_idx_ofdm_base = cali_info->default_ofdm_index;
1126 cali_info->bb_swing_idx_cck_base = cali_info->default_cck_index;
1127 dm->rf_calibrate_info.CCK_index = cali_info->default_cck_index;
1128
1129 for (p = 0; p < MAX_RF_PATH; p++) {
1130 dm->rf_calibrate_info.OFDM_index[p] = cali_info->default_ofdm_index;
1131 cali_info->bb_swing_idx_ofdm[p] = cali_info->default_ofdm_index;
1132 cali_info->kfree_offset[p] = 0; /* for 8814 kfree*/
1133 }
1134 cali_info->bb_swing_idx_cck = cali_info->default_cck_index;
1135
1136 RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "cali_info->default_ofdm_index=%d cali_info->default_cck_index=%d\n", cali_info->default_ofdm_index, cali_info->default_cck_index);
1137
1138 cali_info->tm_trigger = 0;
1139 }
1140
1141
1142 void
odm_txpowertracking_check(void * dm_void)1143 odm_txpowertracking_check(
1144 void *dm_void
1145 )
1146 {
1147 /* */
1148 /* For AP/ADSL use struct rtl8192cd_priv* */
1149 /* For CE/NIC use struct void* */
1150 /* */
1151 struct dm_struct *dm = (struct dm_struct *)dm_void;
1152 struct _hal_rf_ *rf = &(dm->rf_table);
1153
1154 if (!(rf->rf_supportability & HAL_RF_TX_PWR_TRACK))
1155 return;
1156
1157 /* */
1158 /* 2011/09/29 MH In HW integration first stage, we provide 4 different handle to operate */
1159 /* at the same time. In the stage2/3, we need to prive universal interface and merge all */
1160 /* HW dynamic mechanism. */
1161 /* */
1162 switch (dm->support_platform) {
1163 case ODM_WIN:
1164 odm_txpowertracking_check_mp(dm);
1165 break;
1166
1167 case ODM_CE:
1168 odm_txpowertracking_check_ce(dm);
1169 break;
1170
1171 case ODM_AP:
1172 odm_txpowertracking_check_ap(dm);
1173 break;
1174 }
1175
1176 }
1177
1178 void
odm_txpowertracking_check_ce(void * dm_void)1179 odm_txpowertracking_check_ce(
1180 void *dm_void
1181 )
1182 {
1183 #if (DM_ODM_SUPPORT_TYPE == ODM_CE)
1184 struct dm_struct *dm = (struct dm_struct *)dm_void;
1185 void *adapter = dm->adapter;
1186 struct _hal_rf_ *rf = &(dm->rf_table);
1187
1188 #if (RTL8188E_SUPPORT == 1)
1189
1190 /* if(!mgnt_info->is_txpowertracking || (!pdmpriv->txpowertrack_control && pdmpriv->is_ap_kdone)) */
1191
1192 if (!(rf->rf_supportability & HAL_RF_TX_PWR_TRACK))
1193 return;
1194
1195 if (!dm->rf_calibrate_info.tm_trigger) { /* at least delay 1 sec */
1196 /* hal_data->TxPowerCheckCnt++; */ /* cosa add for debug */
1197 odm_set_rf_reg(dm, RF_PATH_A, RF_T_METER, RFREGOFFSETMASK, 0x60);
1198 /* DBG_8192C("Trigger 92C Thermal Meter!!\n"); */
1199
1200 dm->rf_calibrate_info.tm_trigger = 1;
1201 return;
1202
1203 } else {
1204 /* DBG_8192C("Schedule TxPowerTracking direct call!!\n"); */
1205 odm_txpowertracking_callback_thermal_meter_8188e(adapter);
1206 dm->rf_calibrate_info.tm_trigger = 0;
1207 }
1208 #endif
1209
1210 #endif
1211 }
1212
1213 void
odm_txpowertracking_check_mp(void * dm_void)1214 odm_txpowertracking_check_mp(
1215 void *dm_void
1216 )
1217 {
1218 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
1219 struct dm_struct *dm = (struct dm_struct *)dm_void;
1220 void *adapter = dm->adapter;
1221
1222 if (odm_check_power_status(adapter) == false)
1223 return;
1224
1225 if (!adapter->is_slave_of_dmsp || adapter->dual_mac_smart_concurrent == false)
1226 odm_txpowertracking_thermal_meter_check(adapter);
1227 #endif
1228
1229 }
1230
1231
1232 void
odm_txpowertracking_check_ap(void * dm_void)1233 odm_txpowertracking_check_ap(
1234 void *dm_void
1235 )
1236 {
1237 struct dm_struct *dm = (struct dm_struct *)dm_void;
1238 struct _hal_rf_ *rf = &dm->rf_table;
1239 struct _halrf_tssi_data *tssi = &rf->halrf_tssi_data;
1240
1241 #if ((RTL8188E_SUPPORT == 1) || (RTL8192E_SUPPORT == 1) || (RTL8812A_SUPPORT == 1) || (RTL8881A_SUPPORT == 1) || (RTL8814A_SUPPORT == 1) || (RTL8197F_SUPPORT == 1) || (RTL8192F_SUPPORT == 1) || (RTL8198F_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) || (RTL8812F_SUPPORT == 1) || (RTL8197G_SUPPORT == 1))
1242 if (!dm->rf_calibrate_info.tm_trigger) {
1243 if (dm->support_ic_type & (ODM_RTL8188E | ODM_RTL8192E | ODM_RTL8812 | ODM_RTL8881A | ODM_RTL8814A | ODM_RTL8197F | ODM_RTL8822B | ODM_RTL8821C | ODM_RTL8192F | ODM_RTL8198F)) {
1244 odm_set_rf_reg(dm, RF_PATH_A, 0x42, (BIT(17) | BIT(16)), 0x3);
1245 } else if (dm->support_ic_type & ODM_RTL8812F) {
1246 odm_set_rf_reg(dm, RF_PATH_A, R_0x42, BIT(19), 0x01);
1247 odm_set_rf_reg(dm, RF_PATH_A, R_0x42, BIT(19), 0x00);
1248 odm_set_rf_reg(dm, RF_PATH_A, R_0x42, BIT(19), 0x01);
1249
1250 odm_set_rf_reg(dm, RF_PATH_B, R_0x42, BIT(19), 0x01);
1251 odm_set_rf_reg(dm, RF_PATH_B, R_0x42, BIT(19), 0x00);
1252 odm_set_rf_reg(dm, RF_PATH_B, R_0x42, BIT(19), 0x01);
1253 } else if (dm->support_ic_type & ODM_RTL8814B) {
1254 odm_set_rf_reg(dm, RF_PATH_A, 0x42, BIT(17), 0x1);
1255 odm_set_rf_reg(dm, RF_PATH_B, 0x42, BIT(17), 0x1);
1256 odm_set_rf_reg(dm, RF_PATH_C, 0x42, BIT(17), 0x1);
1257 odm_set_rf_reg(dm, RF_PATH_D, 0x42, BIT(17), 0x1);
1258 } else if (dm->support_ic_type & ODM_RTL8197G) {
1259 odm_set_rf_reg(dm, RF_PATH_A, RF_0x42, BIT(17), 0x1);
1260 odm_set_rf_reg(dm, RF_PATH_A, RF_0x42, BIT(17), 0x0);
1261 odm_set_rf_reg(dm, RF_PATH_A, RF_0x42, BIT(17), 0x1);
1262
1263 odm_set_rf_reg(dm, RF_PATH_B, RF_0x42, BIT(17), 0x1);
1264 odm_set_rf_reg(dm, RF_PATH_B, RF_0x42, BIT(17), 0x0);
1265 odm_set_rf_reg(dm, RF_PATH_B, RF_0x42, BIT(17), 0x1);
1266 }
1267
1268 if (dm->support_ic_type & ODM_RTL8814B) {
1269 ODM_delay_us(300);
1270 odm_txpowertracking_callback_thermal_meter(dm);
1271 tssi->thermal_trigger = 1;
1272 }
1273
1274 dm->rf_calibrate_info.tm_trigger = 1;
1275 } else {
1276 odm_txpowertracking_callback_thermal_meter(dm);
1277 if (dm->support_ic_type & ODM_RTL8814B)
1278 tssi->thermal_trigger = 0;
1279 dm->rf_calibrate_info.tm_trigger = 0;
1280 }
1281 #endif
1282
1283 }
1284