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 || RTL8814C_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 |
931 ODM_RTL8814B | ODM_RTL8814C | ODM_IC_11N_SERIES)))
932 return;
933 #endif
934
935 odm_txpowertracking_thermal_meter_init(dm);
936 }
937
938
939 u8
get_swing_index(void * dm_void)940 get_swing_index(
941 void *dm_void
942 )
943 {
944 struct dm_struct *dm = (struct dm_struct *)dm_void;
945 u8 i = 0, bb_swing_mask = 0;
946 u32 bb_swing = 0;
947 u32 swing_table_size = 0;
948 u32 *swing_table = 0;
949 struct rtl8192cd_priv *priv = dm->priv;
950
951 #if (RTL8197F_SUPPORT == 1)
952 if (GET_CHIP_VER(priv) == VERSION_8197F) {
953 bb_swing = phy_query_bb_reg(priv, REG_OFDM_0_XA_TX_IQ_IMBALANCE, MASKOFDM_D);
954 swing_table = ofdm_swing_table_new;
955 swing_table_size = OFDM_TABLE_SIZE_92D;
956 bb_swing_mask = 22;
957 }
958 #endif
959
960 #if (RTL8192F_SUPPORT == 1)
961 if (GET_CHIP_VER(priv) == VERSION_8192F) {
962 bb_swing = phy_query_bb_reg(priv, REG_OFDM_0_XA_TX_IQ_IMBALANCE, MASKOFDM_D);
963 swing_table = ofdm_swing_table_new;
964 swing_table_size = OFDM_TABLE_SIZE_92D;
965 bb_swing_mask = 22;
966 }
967 #endif
968
969 #if (RTL8822B_SUPPORT == 1)
970 if (GET_CHIP_VER(priv) == VERSION_8822B) {
971 bb_swing = phy_query_bb_reg(priv, REG_A_TX_SCALE_JAGUAR, 0xFFE00000);
972 swing_table = tx_scaling_table_jaguar;
973 swing_table_size = TXSCALE_TABLE_SIZE;
974 bb_swing_mask = 0;
975 }
976 #endif
977
978 for (i = 0; i < swing_table_size - 1; i++) {
979 u32 table_value = swing_table[i] >> bb_swing_mask;
980
981 if (bb_swing == table_value)
982 break;
983 }
984
985 RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "bb_swing=0x%x bbswing_index=%d\n", bb_swing, i);
986
987
988 return i;
989 }
990
get_cck_swing_index(void * dm_void)991 u8 get_cck_swing_index(void *dm_void)
992 {
993 struct dm_struct *dm = (struct dm_struct *)dm_void;
994 struct rtl8192cd_priv *priv = dm->priv;
995
996 u8 i = 0;
997 u32 bb_cck_swing;
998
999 #if (RTL8192F_SUPPORT == 1)
1000 if (GET_CHIP_VER(priv) == VERSION_8192F) {
1001 bb_cck_swing = odm_get_bb_reg(dm, R_0xab4, 0x7ff);
1002
1003 for (i = 0; i < CCK_TABLE_SIZE; i++) {
1004 if (bb_cck_swing == cck_swing_table_ch1_ch14_8192f[i])
1005 break;
1006 }
1007 }
1008 #endif
1009
1010 return i;
1011 }
1012
1013 s8
get_txagc_default_index(void * dm_void)1014 get_txagc_default_index(
1015 void *dm_void
1016 )
1017 {
1018 struct dm_struct *dm = (struct dm_struct *)dm_void;
1019 s8 tmp;
1020
1021 #if (RTL8814B_SUPPORT == 1 || RTL8814C_SUPPORT == 1)
1022 if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8814C)) {
1023 tmp = (s8)(odm_get_bb_reg(dm, R_0x18a0, 0x7f) & 0xff);
1024 if (tmp & BIT(6))
1025 tmp = tmp | 0x80;
1026 return tmp;
1027 } else
1028 return 0;
1029 #endif
1030 }
1031
1032 void
odm_txpowertracking_thermal_meter_init(void * dm_void)1033 odm_txpowertracking_thermal_meter_init(
1034 void *dm_void
1035 )
1036 {
1037 struct dm_struct *dm = (struct dm_struct *)dm_void;
1038 struct dm_rf_calibration_struct *cali_info = &(dm->rf_calibrate_info);
1039 struct _hal_rf_ *rf = &dm->rf_table;
1040 struct _halrf_tssi_data *tssi = &rf->halrf_tssi_data;
1041 struct rtl8192cd_priv *priv = dm->priv;
1042 u8 p;
1043 u8 default_swing_index;
1044 u8 default_cckswing_idx;
1045 u8 i;
1046 #if (RTL8197F_SUPPORT == 1 || RTL8822B_SUPPORT == 1 || RTL8192F_SUPPORT == 1)
1047 if ((GET_CHIP_VER(priv) == VERSION_8197F) || (GET_CHIP_VER(priv) == VERSION_8822B) ||(GET_CHIP_VER(priv) == VERSION_8192F))
1048 default_swing_index = get_swing_index(dm);
1049 if (GET_CHIP_VER(priv) == VERSION_8192F)
1050 default_cckswing_idx = get_cck_swing_index(dm);
1051 #endif
1052
1053 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
1054 void *adapter = dm->adapter;
1055 PMGNT_INFO mgnt_info = &adapter->MgntInfo;
1056 HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter));
1057
1058 mgnt_info->is_txpowertracking = true;
1059 hal_data->tx_powercount = 0;
1060 hal_data->is_txpowertracking_init = false;
1061
1062 if (*(dm->mp_mode) == false)
1063 hal_data->txpowertrack_control = true;
1064 RF_DBG(dm, COMP_POWER_TRACKING, "mgnt_info->is_txpowertracking = %d\n", mgnt_info->is_txpowertracking);
1065 #elif (DM_ODM_SUPPORT_TYPE == ODM_CE)
1066 #ifdef CONFIG_RTL8188E
1067 {
1068 dm->rf_calibrate_info.is_txpowertracking = true;
1069 dm->rf_calibrate_info.tx_powercount = 0;
1070 dm->rf_calibrate_info.is_txpowertracking_init = false;
1071
1072 if (*(dm->mp_mode) == false)
1073 dm->rf_calibrate_info.txpowertrack_control = true;
1074
1075 MSG_8192C("dm txpowertrack_control = %d\n", dm->rf_calibrate_info.txpowertrack_control);
1076 }
1077 #else
1078 {
1079 void *adapter = dm->adapter;
1080 HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter));
1081 struct dm_priv *pdmpriv = &hal_data->dmpriv;
1082
1083 pdmpriv->is_txpowertracking = true;
1084 pdmpriv->tx_powercount = 0;
1085 pdmpriv->is_txpowertracking_init = false;
1086
1087 if (*(dm->mp_mode) == false) /* for mp driver, turn off txpwrtracking as default */
1088 pdmpriv->txpowertrack_control = true;
1089
1090 MSG_8192C("pdmpriv->txpowertrack_control = %d\n", pdmpriv->txpowertrack_control);
1091
1092 }
1093 #endif/* endif (CONFIG_RTL8188E==1) */
1094 #elif (DM_ODM_SUPPORT_TYPE & (ODM_AP))
1095
1096 #ifdef RTL8188E_SUPPORT
1097 {
1098 dm->rf_calibrate_info.is_txpowertracking = true;
1099 dm->rf_calibrate_info.tx_powercount = 0;
1100 dm->rf_calibrate_info.is_txpowertracking_init = false;
1101 dm->rf_calibrate_info.txpowertrack_control = true;
1102 dm->rf_calibrate_info.tm_trigger = 0;
1103 }
1104 #endif
1105 #endif
1106
1107 dm->rf_calibrate_info.txpowertrack_control = true;
1108 dm->rf_calibrate_info.delta_power_index = 0;
1109 dm->rf_calibrate_info.delta_power_index_last = 0;
1110 dm->rf_calibrate_info.power_index_offset = 0;
1111 dm->rf_calibrate_info.thermal_value = 0;
1112 cali_info->default_ofdm_index = 28;
1113
1114 #if (RTL8197F_SUPPORT == 1)
1115 if (GET_CHIP_VER(priv) == VERSION_8197F) {
1116 cali_info->default_ofdm_index = (default_swing_index >= (OFDM_TABLE_SIZE_92D - 1)) ? 30 : default_swing_index;
1117 cali_info->default_cck_index = 28;
1118 }
1119 #endif
1120
1121 #if (RTL8192F_SUPPORT == 1)
1122 if (GET_CHIP_VER(priv) == VERSION_8192F) {
1123 cali_info->default_ofdm_index = (default_swing_index >= (OFDM_TABLE_SIZE_92D - 1)) ? 30 : default_swing_index;
1124 cali_info->default_cck_index = (default_cckswing_idx >= (CCK_TABLE_SIZE_8192F - 1)) ? 28 : default_cckswing_idx;
1125 }
1126 #endif
1127
1128 #if (RTL8822B_SUPPORT == 1)
1129 if (GET_CHIP_VER(priv) == VERSION_8822B) {
1130 cali_info->default_ofdm_index = (default_swing_index >= (TXSCALE_TABLE_SIZE - 1)) ? 24 : default_swing_index;
1131 cali_info->default_cck_index = 20;
1132 }
1133 #endif
1134
1135
1136 #if RTL8188E_SUPPORT
1137 if (GET_CHIP_VER(priv) == VERSION_8188E) {
1138 cali_info->default_cck_index = 20; /* -6 dB */
1139 }
1140 #endif
1141
1142 #if RTL8192E_SUPPORT
1143 if (GET_CHIP_VER(priv) == VERSION_8192E) {
1144 cali_info->default_cck_index = 8; /* -12 dB */
1145 }
1146 #endif
1147
1148 #if (RTL8814B_SUPPORT == 1 || RTL8814C_SUPPORT == 1)
1149 if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8814C)) {
1150 cali_info->default_txagc_index = get_txagc_default_index(dm);
1151
1152 for (i = 0; i < MAX_PATH_NUM_8814B; i++)
1153 tssi->tssi_trk_txagc_offset[i] =
1154 cali_info->default_txagc_index;
1155 }
1156 #endif
1157
1158 cali_info->bb_swing_idx_ofdm_base = cali_info->default_ofdm_index;
1159 cali_info->bb_swing_idx_cck_base = cali_info->default_cck_index;
1160 dm->rf_calibrate_info.CCK_index = cali_info->default_cck_index;
1161
1162 for (p = 0; p < MAX_RF_PATH; p++) {
1163 dm->rf_calibrate_info.OFDM_index[p] = cali_info->default_ofdm_index;
1164 cali_info->bb_swing_idx_ofdm[p] = cali_info->default_ofdm_index;
1165 cali_info->kfree_offset[p] = 0; /* for 8814 kfree*/
1166 }
1167 cali_info->bb_swing_idx_cck = cali_info->default_cck_index;
1168
1169 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);
1170
1171 cali_info->tm_trigger = 0;
1172 }
1173
1174
1175 void
odm_txpowertracking_check(void * dm_void)1176 odm_txpowertracking_check(
1177 void *dm_void
1178 )
1179 {
1180 /* */
1181 /* For AP/ADSL use struct rtl8192cd_priv* */
1182 /* For CE/NIC use struct void* */
1183 /* */
1184 struct dm_struct *dm = (struct dm_struct *)dm_void;
1185 struct _hal_rf_ *rf = &(dm->rf_table);
1186
1187 if (!(rf->rf_supportability & HAL_RF_TX_PWR_TRACK))
1188 return;
1189
1190 /* */
1191 /* 2011/09/29 MH In HW integration first stage, we provide 4 different handle to operate */
1192 /* at the same time. In the stage2/3, we need to prive universal interface and merge all */
1193 /* HW dynamic mechanism. */
1194 /* */
1195 switch (dm->support_platform) {
1196 case ODM_WIN:
1197 odm_txpowertracking_check_mp(dm);
1198 break;
1199
1200 case ODM_CE:
1201 odm_txpowertracking_check_ce(dm);
1202 break;
1203
1204 case ODM_AP:
1205 odm_txpowertracking_check_ap(dm);
1206 break;
1207 }
1208
1209 }
1210
1211 void
odm_txpowertracking_check_ce(void * dm_void)1212 odm_txpowertracking_check_ce(
1213 void *dm_void
1214 )
1215 {
1216 #if (DM_ODM_SUPPORT_TYPE == ODM_CE)
1217 struct dm_struct *dm = (struct dm_struct *)dm_void;
1218 void *adapter = dm->adapter;
1219 struct _hal_rf_ *rf = &(dm->rf_table);
1220
1221 #if (RTL8188E_SUPPORT == 1)
1222
1223 /* if(!mgnt_info->is_txpowertracking || (!pdmpriv->txpowertrack_control && pdmpriv->is_ap_kdone)) */
1224
1225 if (!(rf->rf_supportability & HAL_RF_TX_PWR_TRACK))
1226 return;
1227
1228 if (!dm->rf_calibrate_info.tm_trigger) { /* at least delay 1 sec */
1229 /* hal_data->TxPowerCheckCnt++; */ /* cosa add for debug */
1230 odm_set_rf_reg(dm, RF_PATH_A, RF_T_METER, RFREGOFFSETMASK, 0x60);
1231 /* DBG_8192C("Trigger 92C Thermal Meter!!\n"); */
1232
1233 dm->rf_calibrate_info.tm_trigger = 1;
1234 return;
1235
1236 } else {
1237 /* DBG_8192C("Schedule TxPowerTracking direct call!!\n"); */
1238 odm_txpowertracking_callback_thermal_meter_8188e(adapter);
1239 dm->rf_calibrate_info.tm_trigger = 0;
1240 }
1241 #endif
1242
1243 #endif
1244 }
1245
1246 void
odm_txpowertracking_check_mp(void * dm_void)1247 odm_txpowertracking_check_mp(
1248 void *dm_void
1249 )
1250 {
1251 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
1252 struct dm_struct *dm = (struct dm_struct *)dm_void;
1253 void *adapter = dm->adapter;
1254
1255 if (odm_check_power_status(adapter) == false)
1256 return;
1257
1258 if (!adapter->is_slave_of_dmsp || adapter->dual_mac_smart_concurrent == false)
1259 odm_txpowertracking_thermal_meter_check(adapter);
1260 #endif
1261
1262 }
1263
1264
1265 void
odm_txpowertracking_check_ap(void * dm_void)1266 odm_txpowertracking_check_ap(
1267 void *dm_void
1268 )
1269 {
1270 struct dm_struct *dm = (struct dm_struct *)dm_void;
1271 struct _hal_rf_ *rf = &dm->rf_table;
1272 struct _halrf_tssi_data *tssi = &rf->halrf_tssi_data;
1273
1274 #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) || (RTL8814C_SUPPORT == 1))
1275 if (!dm->rf_calibrate_info.tm_trigger) {
1276 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)) {
1277 odm_set_rf_reg(dm, RF_PATH_A, 0x42, (BIT(17) | BIT(16)), 0x3);
1278 } else if (dm->support_ic_type & ODM_RTL8812F) {
1279 odm_set_rf_reg(dm, RF_PATH_A, R_0x42, BIT(19), 0x01);
1280 odm_set_rf_reg(dm, RF_PATH_A, R_0x42, BIT(19), 0x00);
1281 odm_set_rf_reg(dm, RF_PATH_A, R_0x42, BIT(19), 0x01);
1282
1283 odm_set_rf_reg(dm, RF_PATH_B, R_0x42, BIT(19), 0x01);
1284 odm_set_rf_reg(dm, RF_PATH_B, R_0x42, BIT(19), 0x00);
1285 odm_set_rf_reg(dm, RF_PATH_B, R_0x42, BIT(19), 0x01);
1286 } else if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8814C)) {
1287 odm_set_rf_reg(dm, RF_PATH_A, 0x42, BIT(17), 0x1);
1288 odm_set_rf_reg(dm, RF_PATH_B, 0x42, BIT(17), 0x1);
1289 odm_set_rf_reg(dm, RF_PATH_C, 0x42, BIT(17), 0x1);
1290 odm_set_rf_reg(dm, RF_PATH_D, 0x42, BIT(17), 0x1);
1291 } else if (dm->support_ic_type & ODM_RTL8197G) {
1292 odm_set_rf_reg(dm, RF_PATH_A, RF_0x42, BIT(17), 0x1);
1293 odm_set_rf_reg(dm, RF_PATH_A, RF_0x42, BIT(17), 0x0);
1294 odm_set_rf_reg(dm, RF_PATH_A, RF_0x42, BIT(17), 0x1);
1295
1296 odm_set_rf_reg(dm, RF_PATH_B, RF_0x42, BIT(17), 0x1);
1297 odm_set_rf_reg(dm, RF_PATH_B, RF_0x42, BIT(17), 0x0);
1298 odm_set_rf_reg(dm, RF_PATH_B, RF_0x42, BIT(17), 0x1);
1299 }
1300
1301 if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8814C)) {
1302 ODM_delay_us(300);
1303 odm_txpowertracking_callback_thermal_meter(dm);
1304 tssi->thermal_trigger = 1;
1305 }
1306
1307 dm->rf_calibrate_info.tm_trigger = 1;
1308 } else {
1309 odm_txpowertracking_callback_thermal_meter(dm);
1310 if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8814C))
1311 tssi->thermal_trigger = 0;
1312 dm->rf_calibrate_info.tm_trigger = 0;
1313 }
1314 #endif
1315
1316 }
1317