1 /******************************************************************************
3 * Copyright(c) 2007 - 2016 Realtek Corporation.
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.
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
14 * The full GNU General Public License is included in this distribution in the
15 * file called LICENSE.
17 * Contact Information:
18 * wlanfae <wlanfae@realtek.com>
19 * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
20 * Hsinchu 300, Taiwan.
22 * Larry Finger <Larry.Finger@lwfinger.net>
24 *****************************************************************************/
26 /*============================================================ */
28 /*============================================================ */
29 #include "mp_precomp.h"
30 #include "phydm_precomp.h"
32 /* ************************************************************
34 * *************************************************************/
36 u32 ofdm_swing_table[OFDM_TABLE_SIZE] = {
37 0x7f8001fe, /* 0, +6.0dB */
38 0x788001e2, /* 1, +5.5dB */
39 0x71c001c7, /* 2, +5.0dB*/
40 0x6b8001ae, /* 3, +4.5dB*/
41 0x65400195, /* 4, +4.0dB*/
42 0x5fc0017f, /* 5, +3.5dB*/
43 0x5a400169, /* 6, +3.0dB*/
44 0x55400155, /* 7, +2.5dB*/
45 0x50800142, /* 8, +2.0dB*/
46 0x4c000130, /* 9, +1.5dB*/
47 0x47c0011f, /* 10, +1.0dB*/
48 0x43c0010f, /* 11, +0.5dB*/
49 0x40000100, /* 12, +0dB*/
50 0x3c8000f2, /* 13, -0.5dB*/
51 0x390000e4, /* 14, -1.0dB*/
52 0x35c000d7, /* 15, -1.5dB*/
53 0x32c000cb, /* 16, -2.0dB*/
54 0x300000c0, /* 17, -2.5dB*/
55 0x2d4000b5, /* 18, -3.0dB*/
56 0x2ac000ab, /* 19, -3.5dB*/
57 0x288000a2, /* 20, -4.0dB*/
58 0x26000098, /* 21, -4.5dB*/
59 0x24000090, /* 22, -5.0dB*/
60 0x22000088, /* 23, -5.5dB*/
61 0x20000080, /* 24, -6.0dB*/
62 0x1e400079, /* 25, -6.5dB*/
63 0x1c800072, /* 26, -7.0dB*/
64 0x1b00006c, /* 27. -7.5dB*/
65 0x19800066, /* 28, -8.0dB*/
66 0x18000060, /* 29, -8.5dB*/
67 0x16c0005b, /* 30, -9.0dB*/
68 0x15800056, /* 31, -9.5dB*/
69 0x14400051, /* 32, -10.0dB*/
70 0x1300004c, /* 33, -10.5dB*/
71 0x12000048, /* 34, -11.0dB*/
72 0x11000044, /* 35, -11.5dB*/
73 0x10000040, /* 36, -12.0dB*/
76 u8 cck_swing_table_ch1_ch13[CCK_TABLE_SIZE][8] = {
77 {0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04}, /* 0, +0dB */
78 {0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04}, /* 1, -0.5dB */
79 {0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03}, /* 2, -1.0dB*/
80 {0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03}, /* 3, -1.5dB*/
81 {0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03}, /* 4, -2.0dB */
82 {0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03}, /* 5, -2.5dB*/
83 {0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03}, /* 6, -3.0dB*/
84 {0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03}, /* 7, -3.5dB*/
85 {0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02}, /* 8, -4.0dB */
86 {0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02}, /* 9, -4.5dB*/
87 {0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02}, /* 10, -5.0dB */
88 {0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02}, /* 11, -5.5dB*/
89 {0x1b, 0x1a, 0x17, 0x13, 0x0e, 0x09, 0x04,
90 0x02}, /* 12, -6.0dB <== default */
91 {0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02}, /* 13, -6.5dB*/
92 {0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02}, /* 14, -7.0dB */
93 {0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02}, /* 15, -7.5dB*/
94 {0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01}, /* 16, -8.0dB */
95 {0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02}, /* 17, -8.5dB*/
96 {0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01}, /* 18, -9.0dB */
97 {0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 19, -9.5dB*/
98 {0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 20, -10.0dB*/
99 {0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 21, -10.5dB*/
100 {0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 22, -11.0dB*/
101 {0x0e, 0x0e, 0x0c, 0x0a, 0x08, 0x05, 0x02, 0x01}, /* 23, -11.5dB*/
102 {0x0d, 0x0d, 0x0c, 0x0a, 0x07, 0x05, 0x02, 0x01}, /* 24, -12.0dB*/
103 {0x0d, 0x0c, 0x0b, 0x09, 0x07, 0x04, 0x02, 0x01}, /* 25, -12.5dB*/
104 {0x0c, 0x0c, 0x0a, 0x09, 0x06, 0x04, 0x02, 0x01}, /* 26, -13.0dB*/
105 {0x0b, 0x0b, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 27, -13.5dB*/
106 {0x0b, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 28, -14.0dB*/
107 {0x0a, 0x0a, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 29, -14.5dB*/
108 {0x0a, 0x09, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 30, -15.0dB*/
109 {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01}, /* 31, -15.5dB*/
110 {0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01} /* 32, -16.0dB*/
113 u8 cck_swing_table_ch14[CCK_TABLE_SIZE][8] = {
114 {0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00}, /* 0, +0dB */
115 {0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00}, /* 1, -0.5dB */
116 {0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00}, /* 2, -1.0dB */
117 {0x2d, 0x2d, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00}, /* 3, -1.5dB*/
118 {0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00}, /* 4, -2.0dB */
119 {0x28, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00}, /* 5, -2.5dB*/
120 {0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00}, /* 6, -3.0dB */
121 {0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00}, /* 7, -3.5dB */
122 {0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00}, /* 8, -4.0dB */
123 {0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00}, /* 9, -4.5dB*/
124 {0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00}, /* 10, -5.0dB */
125 {0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 11, -5.5dB*/
126 {0x1b, 0x1a, 0x17, 0x0e, 0x00, 0x00, 0x00,
127 0x00}, /* 12, -6.0dB <== default*/
128 {0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00}, /* 13, -6.5dB */
129 {0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00}, /* 14, -7.0dB */
130 {0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 15, -7.5dB*/
131 {0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 16, -8.0dB */
132 {0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 17, -8.5dB*/
133 {0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 18, -9.0dB */
134 {0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 19, -9.5dB*/
135 {0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 20, -10.0dB*/
136 {0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 21, -10.5dB*/
137 {0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 22, -11.0dB*/
138 {0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 23, -11.5dB*/
139 {0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 24, -12.0dB*/
140 {0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 25, -12.5dB*/
141 {0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 26, -13.0dB*/
142 {0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 27, -13.5dB*/
143 {0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 28, -14.0dB*/
144 {0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 29, -14.5dB*/
145 {0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 30, -15.0dB*/
146 {0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 31, -15.5dB*/
147 {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00} /* 32, -16.0dB*/
150 u32 ofdm_swing_table_new[OFDM_TABLE_SIZE] = {
151 0x0b40002d, /* 0, -15.0dB */
152 0x0c000030, /* 1, -14.5dB*/
153 0x0cc00033, /* 2, -14.0dB*/
154 0x0d800036, /* 3, -13.5dB*/
155 0x0e400039, /* 4, -13.0dB */
156 0x0f00003c, /* 5, -12.5dB*/
157 0x10000040, /* 6, -12.0dB*/
158 0x11000044, /* 7, -11.5dB*/
159 0x12000048, /* 8, -11.0dB*/
160 0x1300004c, /* 9, -10.5dB*/
161 0x14400051, /* 10, -10.0dB*/
162 0x15800056, /* 11, -9.5dB*/
163 0x16c0005b, /* 12, -9.0dB*/
164 0x18000060, /* 13, -8.5dB*/
165 0x19800066, /* 14, -8.0dB*/
166 0x1b00006c, /* 15, -7.5dB*/
167 0x1c800072, /* 16, -7.0dB*/
168 0x1e400079, /* 17, -6.5dB*/
169 0x20000080, /* 18, -6.0dB*/
170 0x22000088, /* 19, -5.5dB*/
171 0x24000090, /* 20, -5.0dB*/
172 0x26000098, /* 21, -4.5dB*/
173 0x288000a2, /* 22, -4.0dB*/
174 0x2ac000ab, /* 23, -3.5dB*/
175 0x2d4000b5, /* 24, -3.0dB*/
176 0x300000c0, /* 25, -2.5dB*/
177 0x32c000cb, /* 26, -2.0dB*/
178 0x35c000d7, /* 27, -1.5dB*/
179 0x390000e4, /* 28, -1.0dB*/
180 0x3c8000f2, /* 29, -0.5dB*/
181 0x40000100, /* 30, +0dB*/
182 0x43c0010f, /* 31, +0.5dB*/
183 0x47c0011f, /* 32, +1.0dB*/
184 0x4c000130, /* 33, +1.5dB*/
185 0x50800142, /* 34, +2.0dB*/
186 0x55400155, /* 35, +2.5dB*/
187 0x5a400169, /* 36, +3.0dB*/
188 0x5fc0017f, /* 37, +3.5dB*/
189 0x65400195, /* 38, +4.0dB*/
190 0x6b8001ae, /* 39, +4.5dB*/
191 0x71c001c7, /* 40, +5.0dB*/
192 0x788001e2, /* 41, +5.5dB*/
193 0x7f8001fe /* 42, +6.0dB*/
196 u8 cck_swing_table_ch1_ch14_88f[CCK_TABLE_SIZE_88F][16] = {
197 {0x44, 0x42, 0x3C, 0x33, 0x28, 0x1C, 0x13, 0x0B, 0x05, 0x02, 0x00, 0x00,
198 0x00, 0x00, 0x00, 0x00}, /*-16dB*/
199 {0x48, 0x46, 0x3F, 0x36, 0x2A, 0x1E, 0x14, 0x0B, 0x05, 0x02, 0x00, 0x00,
200 0x00, 0x00, 0x00, 0x00}, /*-15.5dB*/
201 {0x4D, 0x4A, 0x43, 0x39, 0x2C, 0x20, 0x15, 0x0C, 0x06, 0x02, 0x00, 0x00,
202 0x00, 0x00, 0x00, 0x00}, /*-15dB*/
203 {0x51, 0x4F, 0x47, 0x3C, 0x2F, 0x22, 0x16, 0x0D, 0x06, 0x02, 0x00, 0x00,
204 0x00, 0x00, 0x00, 0x00}, /*-14.5dB*/
205 {0x56, 0x53, 0x4B, 0x40, 0x32, 0x24, 0x17, 0x0E, 0x06, 0x02, 0x00, 0x00,
206 0x00, 0x00, 0x00, 0x00}, /*-14dB*/
207 {0x5B, 0x58, 0x50, 0x43, 0x35, 0x26, 0x19, 0x0E, 0x07, 0x02, 0x00, 0x00,
208 0x00, 0x00, 0x00, 0x00}, /*-13.5dB*/
209 {0x60, 0x5D, 0x54, 0x47, 0x38, 0x28, 0x1A, 0x0F, 0x07, 0x02, 0x00, 0x00,
210 0x00, 0x00, 0x00, 0x00}, /*-13dB*/
211 {0x66, 0x63, 0x59, 0x4C, 0x3B, 0x2B, 0x1C, 0x10, 0x08, 0x02, 0x00, 0x00,
212 0x00, 0x00, 0x00, 0x00}, /*-12.5dB*/
213 {0x6C, 0x69, 0x5F, 0x50, 0x3F, 0x2D, 0x1E, 0x11, 0x08, 0x03, 0x00, 0x00,
214 0x00, 0x00, 0x00, 0x00}, /*-12dB*/
215 {0x73, 0x6F, 0x64, 0x55, 0x42, 0x30, 0x1F, 0x12, 0x08, 0x03, 0x00, 0x00,
216 0x00, 0x00, 0x00, 0x00}, /*-11.5dB*/
217 {0x79, 0x76, 0x6A, 0x5A, 0x46, 0x33, 0x21, 0x13, 0x09, 0x03, 0x00, 0x00,
218 0x00, 0x00, 0x00, 0x00}, /*-11dB*/
219 {0x81, 0x7C, 0x71, 0x5F, 0x4A, 0x36, 0x23, 0x14, 0x0A, 0x03, 0x00, 0x00,
220 0x00, 0x00, 0x00, 0x00}, /*-10.5dB*/
221 {0x88, 0x84, 0x77, 0x65, 0x4F, 0x39, 0x25, 0x15, 0x0A, 0x03, 0x00, 0x00,
222 0x00, 0x00, 0x00, 0x00}, /*-10dB*/
223 {0x90, 0x8C, 0x7E, 0x6B, 0x54, 0x3C, 0x27, 0x17, 0x0B, 0x03, 0x00, 0x00,
224 0x00, 0x00, 0x00, 0x00}, /*-9.5dB*/
225 {0x99, 0x94, 0x86, 0x71, 0x58, 0x40, 0x2A, 0x18, 0x0B, 0x04, 0x00, 0x00,
226 0x00, 0x00, 0x00, 0x00}, /*-9dB*/
227 {0xA2, 0x9D, 0x8E, 0x78, 0x5E, 0x43, 0x2C, 0x19, 0x0C, 0x04, 0x00, 0x00,
228 0x00, 0x00, 0x00, 0x00}, /*-8.5dB*/
229 {0xAC, 0xA6, 0x96, 0x7F, 0x63, 0x47, 0x2F, 0x1B, 0x0D, 0x04, 0x00, 0x00,
230 0x00, 0x00, 0x00, 0x00}, /*-8dB*/
231 {0xB6, 0xB0, 0x9F, 0x87, 0x69, 0x4C, 0x32, 0x1D, 0x0D, 0x04, 0x00, 0x00,
232 0x00, 0x00, 0x00, 0x00}, /*-7.5dB*/
233 {0xC1, 0xBA, 0xA8, 0x8F, 0x6F, 0x50, 0x35, 0x1E, 0x0E, 0x04, 0x00, 0x00,
234 0x00, 0x00, 0x00, 0x00}, /*-7dB*/
235 {0xCC, 0xC5, 0xB2, 0x97, 0x76, 0x55, 0x38, 0x20, 0x0F, 0x05, 0x00, 0x00,
236 0x00, 0x00, 0x00, 0x00}, /*-6.5dB*/
237 {0xD8, 0xD1, 0xBD, 0xA0, 0x7D, 0x5A, 0x3B, 0x22, 0x10, 0x05, 0x00, 0x00,
238 0x00, 0x00, 0x00, 0x00} /*-6dB*/
241 u8 cck_swing_table_ch1_ch13_88f[CCK_TABLE_SIZE_88F][16] = {
242 {0x44, 0x42, 0x3C, 0x33, 0x28, 0x1C, 0x13, 0x0B, 0x05, 0x02, 0x00, 0x00,
243 0x00, 0x00, 0x00, 0x00}, /*-16dB*/
244 {0x48, 0x46, 0x3F, 0x36, 0x2A, 0x1E, 0x14, 0x0B, 0x05, 0x02, 0x00, 0x00,
245 0x00, 0x00, 0x00, 0x00}, /*-15.5dB*/
246 {0x4D, 0x4A, 0x43, 0x39, 0x2C, 0x20, 0x15, 0x0C, 0x06, 0x02, 0x00, 0x00,
247 0x00, 0x00, 0x00, 0x00}, /*-15dB*/
248 {0x51, 0x4F, 0x47, 0x3C, 0x2F, 0x22, 0x16, 0x0D, 0x06, 0x02, 0x00, 0x00,
249 0x00, 0x00, 0x00, 0x00}, /*-14.5dB*/
250 {0x56, 0x53, 0x4B, 0x40, 0x32, 0x24, 0x17, 0x0E, 0x06, 0x02, 0x00, 0x00,
251 0x00, 0x00, 0x00, 0x00}, /*-14dB*/
252 {0x5B, 0x58, 0x50, 0x43, 0x35, 0x26, 0x19, 0x0E, 0x07, 0x02, 0x00, 0x00,
253 0x00, 0x00, 0x00, 0x00}, /*-13.5dB*/
254 {0x60, 0x5D, 0x54, 0x47, 0x38, 0x28, 0x1A, 0x0F, 0x07, 0x02, 0x00, 0x00,
255 0x00, 0x00, 0x00, 0x00}, /*-13dB*/
256 {0x66, 0x63, 0x59, 0x4C, 0x3B, 0x2B, 0x1C, 0x10, 0x08, 0x02, 0x00, 0x00,
257 0x00, 0x00, 0x00, 0x00}, /*-12.5dB*/
258 {0x6C, 0x69, 0x5F, 0x50, 0x3F, 0x2D, 0x1E, 0x11, 0x08, 0x03, 0x00, 0x00,
259 0x00, 0x00, 0x00, 0x00}, /*-12dB*/
260 {0x73, 0x6F, 0x64, 0x55, 0x42, 0x30, 0x1F, 0x12, 0x08, 0x03, 0x00, 0x00,
261 0x00, 0x00, 0x00, 0x00}, /*-11.5dB*/
262 {0x79, 0x76, 0x6A, 0x5A, 0x46, 0x33, 0x21, 0x13, 0x09, 0x03, 0x00, 0x00,
263 0x00, 0x00, 0x00, 0x00}, /*-11dB*/
264 {0x81, 0x7C, 0x71, 0x5F, 0x4A, 0x36, 0x23, 0x14, 0x0A, 0x03, 0x00, 0x00,
265 0x00, 0x00, 0x00, 0x00}, /*-10.5dB*/
266 {0x88, 0x84, 0x77, 0x65, 0x4F, 0x39, 0x25, 0x15, 0x0A, 0x03, 0x00, 0x00,
267 0x00, 0x00, 0x00, 0x00}, /*-10dB*/
268 {0x90, 0x8C, 0x7E, 0x6B, 0x54, 0x3C, 0x27, 0x17, 0x0B, 0x03, 0x00, 0x00,
269 0x00, 0x00, 0x00, 0x00}, /*-9.5dB*/
270 {0x99, 0x94, 0x86, 0x71, 0x58, 0x40, 0x2A, 0x18, 0x0B, 0x04, 0x00, 0x00,
271 0x00, 0x00, 0x00, 0x00}, /*-9dB*/
272 {0xA2, 0x9D, 0x8E, 0x78, 0x5E, 0x43, 0x2C, 0x19, 0x0C, 0x04, 0x00, 0x00,
273 0x00, 0x00, 0x00, 0x00}, /*-8.5dB*/
274 {0xAC, 0xA6, 0x96, 0x7F, 0x63, 0x47, 0x2F, 0x1B, 0x0D, 0x04, 0x00, 0x00,
275 0x00, 0x00, 0x00, 0x00}, /*-8dB*/
276 {0xB6, 0xB0, 0x9F, 0x87, 0x69, 0x4C, 0x32, 0x1D, 0x0D, 0x04, 0x00, 0x00,
277 0x00, 0x00, 0x00, 0x00}, /*-7.5dB*/
278 {0xC1, 0xBA, 0xA8, 0x8F, 0x6F, 0x50, 0x35, 0x1E, 0x0E, 0x04, 0x00, 0x00,
279 0x00, 0x00, 0x00, 0x00}, /*-7dB*/
280 {0xCC, 0xC5, 0xB2, 0x97, 0x76, 0x55, 0x38, 0x20, 0x0F, 0x05, 0x00, 0x00,
281 0x00, 0x00, 0x00, 0x00}, /*-6.5dB*/
282 {0xD8, 0xD1, 0xBD, 0xA0, 0x7D, 0x5A, 0x3B, 0x22, 0x10, 0x05, 0x00, 0x00,
283 0x00, 0x00, 0x00, 0x00} /*-6dB*/
286 u8 cck_swing_table_ch14_88f[CCK_TABLE_SIZE_88F][16] = {
287 {0x44, 0x42, 0x3C, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
288 0x00, 0x00, 0x00, 0x00}, /*-16dB*/
289 {0x48, 0x46, 0x3F, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
290 0x00, 0x00, 0x00, 0x00}, /*-15.5dB*/
291 {0x4D, 0x4A, 0x43, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
292 0x00, 0x00, 0x00, 0x00}, /*-15dB*/
293 {0x51, 0x4F, 0x47, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
294 0x00, 0x00, 0x00, 0x00}, /*-14.5dB*/
295 {0x56, 0x53, 0x4B, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
296 0x00, 0x00, 0x00, 0x00}, /*-14dB*/
297 {0x5B, 0x58, 0x50, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
298 0x00, 0x00, 0x00, 0x00}, /*-13.5dB*/
299 {0x60, 0x5D, 0x54, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
300 0x00, 0x00, 0x00, 0x00}, /*-13dB*/
301 {0x66, 0x63, 0x59, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
302 0x00, 0x00, 0x00, 0x00}, /*-12.5dB*/
303 {0x6C, 0x69, 0x5F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
304 0x00, 0x00, 0x00, 0x00}, /*-12dB*/
305 {0x73, 0x6F, 0x64, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
306 0x00, 0x00, 0x00, 0x00}, /*-11.5dB*/
307 {0x79, 0x76, 0x6A, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
308 0x00, 0x00, 0x00, 0x00}, /*-11dB*/
309 {0x81, 0x7C, 0x71, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
310 0x00, 0x00, 0x00, 0x00}, /*-10.5dB*/
311 {0x88, 0x84, 0x77, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
312 0x00, 0x00, 0x00, 0x00}, /*-10dB*/
313 {0x90, 0x8C, 0x7E, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
314 0x00, 0x00, 0x00, 0x00}, /*-9.5dB*/
315 {0x99, 0x94, 0x86, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
316 0x00, 0x00, 0x00, 0x00}, /*-9dB*/
317 {0xA2, 0x9D, 0x8E, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
318 0x00, 0x00, 0x00, 0x00}, /*-8.5dB*/
319 {0xAC, 0xA6, 0x96, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
320 0x00, 0x00, 0x00, 0x00}, /*-8dB*/
321 {0xB6, 0xB0, 0x9F, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
322 0x00, 0x00, 0x00, 0x00}, /*-7.5dB*/
323 {0xC1, 0xBA, 0xA8, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
324 0x00, 0x00, 0x00, 0x00}, /*-7dB*/
325 {0xCC, 0xC5, 0xB2, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
326 0x00, 0x00, 0x00, 0x00}, /*-6.5dB*/
327 {0xD8, 0xD1, 0xBD, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
328 0x00, 0x00, 0x00, 0x00} /*-6dB*/
331 u8 cck_swing_table_ch1_ch13_new[CCK_TABLE_SIZE][8] = {
332 {0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01}, /* 0, -16.0dB*/
333 {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01}, /* 1, -15.5dB*/
334 {0x0a, 0x09, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 2, -15.0dB*/
335 {0x0a, 0x0a, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 3, -14.5dB*/
336 {0x0b, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 4, -14.0dB*/
337 {0x0b, 0x0b, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 5, -13.5dB*/
338 {0x0c, 0x0c, 0x0a, 0x09, 0x06, 0x04, 0x02, 0x01}, /* 6, -13.0dB*/
339 {0x0d, 0x0c, 0x0b, 0x09, 0x07, 0x04, 0x02, 0x01}, /* 7, -12.5dB*/
340 {0x0d, 0x0d, 0x0c, 0x0a, 0x07, 0x05, 0x02, 0x01}, /* 8, -12.0dB*/
341 {0x0e, 0x0e, 0x0c, 0x0a, 0x08, 0x05, 0x02, 0x01}, /* 9, -11.5dB*/
342 {0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 10, -11.0dB*/
343 {0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 11, -10.5dB*/
344 {0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 12, -10.0dB*/
345 {0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 13, -9.5dB*/
346 {0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01}, /* 14, -9.0dB */
347 {0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02}, /* 15, -8.5dB*/
348 {0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01}, /* 16, -8.0dB */
349 {0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02}, /* 17, -7.5dB*/
350 {0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02}, /* 18, -7.0dB */
351 {0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02}, /* 19, -6.5dB*/
352 {0x1b, 0x1a, 0x17, 0x13, 0x0e, 0x09, 0x04, 0x02}, /*20, -6.0dB */
353 {0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02}, /* 21, -5.5dB*/
354 {0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02}, /* 22, -5.0dB */
355 {0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02}, /* 23, -4.5dB*/
356 {0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02}, /* 24, -4.0dB */
357 {0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03}, /* 25, -3.5dB*/
358 {0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03}, /* 26, -3.0dB*/
359 {0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03}, /* 27, -2.5dB*/
360 {0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03}, /* 28, -2.0dB */
361 {0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03}, /* 29, -1.5dB*/
362 {0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03}, /* 30, -1.0dB*/
363 {0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04}, /* 31, -0.5dB*/
364 {0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04} /* 32, +0dB*/
367 u8 cck_swing_table_ch14_new[CCK_TABLE_SIZE][8] = {
368 {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00}, /* 0, -16.0dB*/
369 {0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 1, -15.5dB*/
370 {0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 2, -15.0dB*/
371 {0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 3, -14.5dB*/
372 {0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 4, -14.0dB*/
373 {0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /*5, -13.5dB*/
374 {0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 6, -13.0dB*/
375 {0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 7, -12.5dB*/
376 {0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 8, -12.0dB*/
377 {0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 9, -11.5dB*/
378 {0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 10, -11.0dB*/
379 {0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00}, /*11, -10.5dB*/
380 {0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 12, -10.0dB*/
381 {0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 13, -9.5dB*/
382 {0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00}, /*14, -9.0dB */
383 {0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 15, -8.5dB*/
384 {0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 16, -8.0dB */
385 {0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 17, -7.5dB*/
386 {0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00}, /* 18, -7.0dB */
387 {0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00}, /* 19, -6.5dB */
388 {0x1b, 0x1a, 0x17, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 20, -6.0dB */
389 {0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 21, -5.5dB*/
390 {0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00}, /* 22, -5.0dB */
391 {0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00}, /*23, -4.5dB*/
392 {0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00}, /* 24, -4.0dB */
393 {0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00}, /* 25, -3.5dB */
394 {0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00}, /* 26, -3.0dB */
395 {0x28, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00}, /*27, -2.5dB*/
396 {0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00}, /* 28, -2.0dB */
397 {0x2d, 0x2d, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00}, /*29, -1.5dB*/
398 {0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00}, /* 30, -1.0dB */
399 {0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00}, /* 31, -0.5dB */
400 {0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00} /* 32, +0dB */
403 u32 cck_swing_table_ch1_ch14_8723d[CCK_TABLE_SIZE_8723D] = {
405 0x0D9, 0x0E6, 0x0F3, 0x102, 0x111, 0x121, 0x132, 0x144, 0x158, 0x16C,
406 0x182, 0x198, 0x1B1, 0x1CA, 0x1E5, 0x202, 0x221, 0x241, 0x263, 0x287,
407 0x2AE, 0x2D6, 0x301, 0x32F, 0x35F, 0x392, 0x3C9, 0x402, 0x43F, 0x47F,
408 0x4C3, 0x50C, 0x558, 0x5A9, 0x5FF, 0x65A, 0x6BA, 0x720, 0x78C, 0x7FF,
411 /* JJ ADD 20161014 */
412 u32 cck_swing_table_ch1_ch14_8710b[CCK_TABLE_SIZE_8710B] = {
414 0x0D9, 0x0E6, 0x0F3, 0x102, 0x111, 0x121, 0x132, 0x144, 0x158, 0x16C,
415 0x182, 0x198, 0x1B1, 0x1CA, 0x1E5, 0x202, 0x221, 0x241, 0x263, 0x287,
416 0x2AE, 0x2D6, 0x301, 0x32F, 0x35F, 0x392, 0x3C9, 0x402, 0x43F, 0x47F,
417 0x4C3, 0x50C, 0x558, 0x5A9, 0x5FF, 0x65A, 0x6BA, 0x720, 0x78C, 0x7FF,
420 u32 tx_scaling_table_jaguar[TXSCALE_TABLE_SIZE] = {
421 0x081, /* 0, -12.0dB*/
422 0x088, /* 1, -11.5dB*/
423 0x090, /* 2, -11.0dB*/
424 0x099, /* 3, -10.5dB*/
425 0x0A2, /* 4, -10.0dB*/
426 0x0AC, /* 5, -9.5dB*/
427 0x0B6, /* 6, -9.0dB*/
429 0x0CC, /* 8, -8.0dB*/
430 0x0D8, /* 9, -7.5dB*/
431 0x0E5, /* 10, -7.0dB*/
432 0x0F2, /* 11, -6.5dB*/
433 0x101, /* 12, -6.0dB*/
434 0x110, /* 13, -5.5dB*/
435 0x120, /* 14, -5.0dB*/
436 0x131, /* 15, -4.5dB*/
437 0x143, /* 16, -4.0dB*/
438 0x156, /* 17, -3.5dB*/
439 0x16A, /* 18, -3.0dB*/
440 0x180, /* 19, -2.5dB*/
441 0x197, /* 20, -2.0dB*/
442 0x1AF, /* 21, -1.5dB*/
443 0x1C8, /* 22, -1.0dB*/
444 0x1E3, /* 23, -0.5dB*/
445 0x200, /* 24, +0 dB*/
446 0x21E, /* 25, +0.5dB*/
447 0x23E, /* 26, +1.0dB*/
448 0x261, /* 27, +1.5dB*/
449 0x285, /* 28, +2.0dB*/
450 0x2AB, /* 29, +2.5dB*/
451 0x2D3, /*30, +3.0dB*/
452 0x2FE, /* 31, +3.5dB*/
453 0x32B, /* 32, +4.0dB*/
454 0x35C, /* 33, +4.5dB*/
455 0x38E, /* 34, +5.0dB*/
456 0x3C4, /* 35, +5.5dB*/
457 0x3FE /* 36, +6.0dB */
460 void odm_txpowertracking_init(void *dm_void)
462 struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void;
464 odm_txpowertracking_thermal_meter_init(dm);
467 static u8 get_swing_index(void *dm_void)
469 struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void;
472 u32 swing_table_size;
475 if (dm->support_ic_type == ODM_RTL8188E ||
476 dm->support_ic_type == ODM_RTL8723B ||
477 dm->support_ic_type == ODM_RTL8192E ||
478 dm->support_ic_type == ODM_RTL8188F ||
479 dm->support_ic_type == ODM_RTL8703B) {
480 bb_swing = odm_get_bb_reg(dm, REG_OFDM_0_XA_TX_IQ_IMBALANCE,
483 swing_table = ofdm_swing_table_new;
484 swing_table_size = OFDM_TABLE_SIZE;
488 swing_table = ofdm_swing_table;
489 swing_table_size = OFDM_TABLE_SIZE;
493 for (i = 0; i < swing_table_size; ++i) {
494 u32 table_value = swing_table[i];
496 if (table_value >= 0x100000)
498 if (bb_swing == table_value)
504 void odm_txpowertracking_thermal_meter_init(void *dm_void)
506 struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void;
507 u8 default_swing_index = get_swing_index(dm);
509 struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info;
510 struct rtl_priv *rtlpriv = (struct rtl_priv *)dm->adapter;
511 struct rtl_efuse *rtlefu = rtl_efuse(rtlpriv);
513 cali_info->is_txpowertracking = true;
514 cali_info->tx_powercount = 0;
515 cali_info->is_txpowertracking_init = false;
518 cali_info->txpowertrack_control = true;
520 cali_info->txpowertrack_control = false;
523 cali_info->txpowertrack_control = true;
525 ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, "dm txpowertrack_control = %d\n",
526 cali_info->txpowertrack_control);
528 /* dm->rf_calibrate_info.txpowertrack_control = true; */
529 cali_info->thermal_value = rtlefu->eeprom_thermalmeter;
530 cali_info->thermal_value_iqk = rtlefu->eeprom_thermalmeter;
531 cali_info->thermal_value_lck = rtlefu->eeprom_thermalmeter;
533 if (!cali_info->default_bb_swing_index_flag) {
534 /*The index of "0 dB" in SwingTable.*/
535 if (dm->support_ic_type == ODM_RTL8188E ||
536 dm->support_ic_type == ODM_RTL8723B ||
537 dm->support_ic_type == ODM_RTL8192E ||
538 dm->support_ic_type == ODM_RTL8703B) {
539 cali_info->default_ofdm_index =
540 (default_swing_index >= OFDM_TABLE_SIZE) ?
543 cali_info->default_cck_index = 20;
544 } else if (dm->support_ic_type ==
545 ODM_RTL8188F) { /*add by Mingzhi.Guo 2015-03-23*/
546 cali_info->default_ofdm_index = 28; /*OFDM: -1dB*/
547 cali_info->default_cck_index = 20; /*CCK:-6dB*/
548 } else if (dm->support_ic_type ==
549 ODM_RTL8723D) { /*add by zhaohe 2015-10-27*/
550 cali_info->default_ofdm_index = 28; /*OFDM: -1dB*/
551 cali_info->default_cck_index = 28; /*CCK: -6dB*/
552 } else if (dm->support_ic_type ==
553 ODM_RTL8710B) { /* JJ ADD 20161014 */
554 cali_info->default_ofdm_index = 28; /*OFDM: -1dB*/
555 cali_info->default_cck_index = 28; /*CCK: -6dB*/
557 cali_info->default_ofdm_index =
558 (default_swing_index >= TXSCALE_TABLE_SIZE) ?
561 cali_info->default_cck_index = 24;
563 cali_info->default_bb_swing_index_flag = true;
566 cali_info->bb_swing_idx_cck_base = cali_info->default_cck_index;
567 cali_info->CCK_index = cali_info->default_cck_index;
569 for (p = ODM_RF_PATH_A; p < MAX_RF_PATH; ++p) {
570 cali_info->bb_swing_idx_ofdm_base[p] =
571 cali_info->default_ofdm_index;
572 cali_info->OFDM_index[p] = cali_info->default_ofdm_index;
573 cali_info->delta_power_index[p] = 0;
574 cali_info->delta_power_index_last[p] = 0;
575 cali_info->power_index_offset[p] = 0;
577 cali_info->modify_tx_agc_value_ofdm = 0;
578 cali_info->modify_tx_agc_value_cck = 0;
581 void odm_txpowertracking_check(void *dm_void)
583 /* 2011/09/29 MH In HW integration first stage, we provide 4 different
584 * handle to operate at the same time.
585 * In the stage2/3, we need to prive universal interface and merge all
586 * HW dynamic mechanism.
588 struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void;
590 switch (dm->support_platform) {
592 odm_txpowertracking_check_mp(dm);
596 odm_txpowertracking_check_ce(dm);
600 odm_txpowertracking_check_ap(dm);
608 void odm_txpowertracking_check_ce(void *dm_void)
610 struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void;
611 void *adapter = dm->adapter;
613 if (!(dm->support_ability & ODM_RF_TX_PWR_TRACK))
616 if (!dm->rf_calibrate_info.tm_trigger) {
617 if (IS_HARDWARE_TYPE_8188E(adapter) ||
618 IS_HARDWARE_TYPE_8188F(adapter) ||
619 IS_HARDWARE_TYPE_8192E(adapter) ||
620 IS_HARDWARE_TYPE_8723B(adapter) ||
621 IS_HARDWARE_TYPE_JAGUAR(adapter) ||
622 IS_HARDWARE_TYPE_8814A(adapter) ||
623 IS_HARDWARE_TYPE_8703B(adapter) ||
624 IS_HARDWARE_TYPE_8723D(adapter) ||
625 IS_HARDWARE_TYPE_8822B(adapter) ||
626 IS_HARDWARE_TYPE_8821C(adapter) ||
627 (dm->support_ic_type == ODM_RTL8710B)) /* JJ ADD 20161014 */
628 odm_set_rf_reg(dm, ODM_RF_PATH_A, RF_T_METER_NEW,
629 (BIT(17) | BIT(16)), 0x03);
631 odm_set_rf_reg(dm, ODM_RF_PATH_A, RF_T_METER_OLD,
632 RFREGOFFSETMASK, 0x60);
634 dm->rf_calibrate_info.tm_trigger = 1;
638 odm_txpowertracking_callback_thermal_meter(dm);
639 dm->rf_calibrate_info.tm_trigger = 0;
642 void odm_txpowertracking_check_mp(void *dm_void) {}
644 void odm_txpowertracking_check_ap(void *dm_void) {}