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