OSDN Git Service

Add rtl8821ce driver version 5.5.2
[android-x86/external-kernel-drivers.git] / rtl8821ce / hal / phydm / halrf / halrf_powertracking_iot.c
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  * The full GNU General Public License is included in this distribution in the
15  * file called LICENSE.
16  *
17  * Contact Information:
18  * wlanfae <wlanfae@realtek.com>
19  * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
20  * Hsinchu 300, Taiwan.
21  *
22  * Larry Finger <Larry.Finger@lwfinger.net>
23  *
24  *****************************************************************************/
25
26 /*============================================================  */
27 /* include files                                                                                                */
28 /*============================================================  */
29 #include "mp_precomp.h"
30 #include "phydm_precomp.h"
31
32 /* ************************************************************
33  * Global var
34  * ************************************************************
35  */
36
37 u32     ofdm_swing_table[OFDM_TABLE_SIZE] = {
38         0x7f8001fe,     /* 0, +6.0dB */
39         0x788001e2,     /* 1, +5.5dB */
40         0x71c001c7,     /* 2, +5.0dB*/
41         0x6b8001ae,     /* 3, +4.5dB*/
42         0x65400195,     /* 4, +4.0dB*/
43         0x5fc0017f,     /* 5, +3.5dB*/
44         0x5a400169,     /* 6, +3.0dB*/
45         0x55400155,     /* 7, +2.5dB*/
46         0x50800142,     /* 8, +2.0dB*/
47         0x4c000130,     /* 9, +1.5dB*/
48         0x47c0011f,     /* 10, +1.0dB*/
49         0x43c0010f,     /* 11, +0.5dB*/
50         0x40000100,     /* 12, +0dB*/
51         0x3c8000f2,     /* 13, -0.5dB*/
52         0x390000e4,     /* 14, -1.0dB*/
53         0x35c000d7,     /* 15, -1.5dB*/
54         0x32c000cb,     /* 16, -2.0dB*/
55         0x300000c0,     /* 17, -2.5dB*/
56         0x2d4000b5,     /* 18, -3.0dB*/
57         0x2ac000ab,     /* 19, -3.5dB*/
58         0x288000a2,     /* 20, -4.0dB*/
59         0x26000098,     /* 21, -4.5dB*/
60         0x24000090,     /* 22, -5.0dB*/
61         0x22000088,     /* 23, -5.5dB*/
62         0x20000080,     /* 24, -6.0dB*/
63         0x1e400079,     /* 25, -6.5dB*/
64         0x1c800072,     /* 26, -7.0dB*/
65         0x1b00006c,     /* 27. -7.5dB*/
66         0x19800066,     /* 28, -8.0dB*/
67         0x18000060,     /* 29, -8.5dB*/
68         0x16c0005b,     /* 30, -9.0dB*/
69         0x15800056,     /* 31, -9.5dB*/
70         0x14400051,     /* 32, -10.0dB*/
71         0x1300004c,     /* 33, -10.5dB*/
72         0x12000048,     /* 34, -11.0dB*/
73         0x11000044,     /* 35, -11.5dB*/
74         0x10000040,     /* 36, -12.0dB*/
75 };
76
77 u8      cck_swing_table_ch1_ch13[CCK_TABLE_SIZE][8] = {
78         {0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04},       /* 0, +0dB */
79         {0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04},       /* 1, -0.5dB */
80         {0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03},       /* 2, -1.0dB*/
81         {0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03},       /* 3, -1.5dB*/
82         {0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03},       /* 4, -2.0dB */
83         {0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03},       /* 5, -2.5dB*/
84         {0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03},       /* 6, -3.0dB*/
85         {0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03},       /* 7, -3.5dB*/
86         {0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02},       /* 8, -4.0dB */
87         {0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02},       /* 9, -4.5dB*/
88         {0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02},       /* 10, -5.0dB */
89         {0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02},       /* 11, -5.5dB*/
90         {0x1b, 0x1a, 0x17, 0x13, 0x0e, 0x09, 0x04, 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*/
111 };
112
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, 0x00},       /* 12, -6.0dB  <== default*/
127         {0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00},       /* 13, -6.5dB */
128         {0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00},       /* 14, -7.0dB */
129         {0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00},       /* 15, -7.5dB*/
130         {0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00},       /* 16, -8.0dB */
131         {0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00},       /* 17, -8.5dB*/
132         {0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00},       /* 18, -9.0dB */
133         {0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00},       /* 19, -9.5dB*/
134         {0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00},       /* 20, -10.0dB*/
135         {0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00},       /* 21, -10.5dB*/
136         {0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00},       /* 22, -11.0dB*/
137         {0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00},       /* 23, -11.5dB*/
138         {0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00},       /* 24, -12.0dB*/
139         {0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00},       /* 25, -12.5dB*/
140         {0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00},       /* 26, -13.0dB*/
141         {0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00},       /* 27, -13.5dB*/
142         {0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00},       /* 28, -14.0dB*/
143         {0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00},       /* 29, -14.5dB*/
144         {0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00},       /* 30, -15.0dB*/
145         {0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00},       /* 31, -15.5dB*/
146         {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00}        /* 32, -16.0dB*/
147 };
148
149 u32 ofdm_swing_table_new[OFDM_TABLE_SIZE] = {
150         0x0b40002d, /* 0,  -15.0dB      */
151         0x0c000030, /* 1,  -14.5dB*/
152         0x0cc00033, /* 2,  -14.0dB*/
153         0x0d800036, /* 3,  -13.5dB*/
154         0x0e400039, /* 4,  -13.0dB */
155         0x0f00003c, /* 5,  -12.5dB*/
156         0x10000040, /* 6,  -12.0dB*/
157         0x11000044, /* 7,  -11.5dB*/
158         0x12000048, /* 8,  -11.0dB*/
159         0x1300004c, /* 9,  -10.5dB*/
160         0x14400051, /* 10, -10.0dB*/
161         0x15800056, /* 11, -9.5dB*/
162         0x16c0005b, /* 12, -9.0dB*/
163         0x18000060, /* 13, -8.5dB*/
164         0x19800066, /* 14, -8.0dB*/
165         0x1b00006c, /* 15, -7.5dB*/
166         0x1c800072, /* 16, -7.0dB*/
167         0x1e400079, /* 17, -6.5dB*/
168         0x20000080, /* 18, -6.0dB*/
169         0x22000088, /* 19, -5.5dB*/
170         0x24000090, /* 20, -5.0dB*/
171         0x26000098, /* 21, -4.5dB*/
172         0x288000a2, /* 22, -4.0dB*/
173         0x2ac000ab, /* 23, -3.5dB*/
174         0x2d4000b5, /* 24, -3.0dB*/
175         0x300000c0, /* 25, -2.5dB*/
176         0x32c000cb, /* 26, -2.0dB*/
177         0x35c000d7, /* 27, -1.5dB*/
178         0x390000e4, /* 28, -1.0dB*/
179         0x3c8000f2, /* 29, -0.5dB*/
180         0x40000100, /* 30, +0dB*/
181         0x43c0010f, /* 31, +0.5dB*/
182         0x47c0011f, /* 32, +1.0dB*/
183         0x4c000130, /* 33, +1.5dB*/
184         0x50800142, /* 34, +2.0dB*/
185         0x55400155, /* 35, +2.5dB*/
186         0x5a400169, /* 36, +3.0dB*/
187         0x5fc0017f, /* 37, +3.5dB*/
188         0x65400195, /* 38, +4.0dB*/
189         0x6b8001ae, /* 39, +4.5dB*/
190         0x71c001c7, /* 40, +5.0dB*/
191         0x788001e2, /* 41, +5.5dB*/
192         0x7f8001fe  /* 42, +6.0dB*/
193 };
194
195 u8 cck_swing_table_ch1_ch14_88f[CCK_TABLE_SIZE_88F][16] = {
196         {0x44, 0x42, 0x3C, 0x33, 0x28, 0x1C, 0x13, 0x0B, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-16dB*/
197         {0x48, 0x46, 0x3F, 0x36, 0x2A, 0x1E, 0x14, 0x0B, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-15.5dB*/
198         {0x4D, 0x4A, 0x43, 0x39, 0x2C, 0x20, 0x15, 0x0C, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-15dB*/
199         {0x51, 0x4F, 0x47, 0x3C, 0x2F, 0x22, 0x16, 0x0D, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-14.5dB*/
200         {0x56, 0x53, 0x4B, 0x40, 0x32, 0x24, 0x17, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-14dB*/
201         {0x5B, 0x58, 0x50, 0x43, 0x35, 0x26, 0x19, 0x0E, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-13.5dB*/
202         {0x60, 0x5D, 0x54, 0x47, 0x38, 0x28, 0x1A, 0x0F, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-13dB*/
203         {0x66, 0x63, 0x59, 0x4C, 0x3B, 0x2B, 0x1C, 0x10, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-12.5dB*/
204         {0x6C, 0x69, 0x5F, 0x50, 0x3F, 0x2D, 0x1E, 0x11, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-12dB*/
205         {0x73, 0x6F, 0x64, 0x55, 0x42, 0x30, 0x1F, 0x12, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-11.5dB*/
206         {0x79, 0x76, 0x6A, 0x5A, 0x46, 0x33, 0x21, 0x13, 0x09, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-11dB*/
207         {0x81, 0x7C, 0x71, 0x5F, 0x4A, 0x36, 0x23, 0x14, 0x0A, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-10.5dB*/
208         {0x88, 0x84, 0x77, 0x65, 0x4F, 0x39, 0x25, 0x15, 0x0A, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-10dB*/
209         {0x90, 0x8C, 0x7E, 0x6B, 0x54, 0x3C, 0x27, 0x17, 0x0B, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-9.5dB*/
210         {0x99, 0x94, 0x86, 0x71, 0x58, 0x40, 0x2A, 0x18, 0x0B, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-9dB*/
211         {0xA2, 0x9D, 0x8E, 0x78, 0x5E, 0x43, 0x2C, 0x19, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-8.5dB*/
212         {0xAC, 0xA6, 0x96, 0x7F, 0x63, 0x47, 0x2F, 0x1B, 0x0D, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-8dB*/
213         {0xB6, 0xB0, 0x9F, 0x87, 0x69, 0x4C, 0x32, 0x1D, 0x0D, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-7.5dB*/
214         {0xC1, 0xBA, 0xA8, 0x8F, 0x6F, 0x50, 0x35, 0x1E, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-7dB*/
215         {0xCC, 0xC5, 0xB2, 0x97, 0x76, 0x55, 0x38, 0x20, 0x0F, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-6.5dB*/
216         {0xD8, 0xD1, 0xBD, 0xA0, 0x7D, 0x5A, 0x3B, 0x22, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}     /*-6dB*/
217 };
218
219 u8 cck_swing_table_ch1_ch13_88f[CCK_TABLE_SIZE_88F][16] = {
220         {0x44, 0x42, 0x3C, 0x33, 0x28, 0x1C, 0x13, 0x0B, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-16dB*/
221         {0x48, 0x46, 0x3F, 0x36, 0x2A, 0x1E, 0x14, 0x0B, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-15.5dB*/
222         {0x4D, 0x4A, 0x43, 0x39, 0x2C, 0x20, 0x15, 0x0C, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-15dB*/
223         {0x51, 0x4F, 0x47, 0x3C, 0x2F, 0x22, 0x16, 0x0D, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-14.5dB*/
224         {0x56, 0x53, 0x4B, 0x40, 0x32, 0x24, 0x17, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-14dB*/
225         {0x5B, 0x58, 0x50, 0x43, 0x35, 0x26, 0x19, 0x0E, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-13.5dB*/
226         {0x60, 0x5D, 0x54, 0x47, 0x38, 0x28, 0x1A, 0x0F, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-13dB*/
227         {0x66, 0x63, 0x59, 0x4C, 0x3B, 0x2B, 0x1C, 0x10, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-12.5dB*/
228         {0x6C, 0x69, 0x5F, 0x50, 0x3F, 0x2D, 0x1E, 0x11, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-12dB*/
229         {0x73, 0x6F, 0x64, 0x55, 0x42, 0x30, 0x1F, 0x12, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-11.5dB*/
230         {0x79, 0x76, 0x6A, 0x5A, 0x46, 0x33, 0x21, 0x13, 0x09, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-11dB*/
231         {0x81, 0x7C, 0x71, 0x5F, 0x4A, 0x36, 0x23, 0x14, 0x0A, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-10.5dB*/
232         {0x88, 0x84, 0x77, 0x65, 0x4F, 0x39, 0x25, 0x15, 0x0A, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-10dB*/
233         {0x90, 0x8C, 0x7E, 0x6B, 0x54, 0x3C, 0x27, 0x17, 0x0B, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-9.5dB*/
234         {0x99, 0x94, 0x86, 0x71, 0x58, 0x40, 0x2A, 0x18, 0x0B, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-9dB*/
235         {0xA2, 0x9D, 0x8E, 0x78, 0x5E, 0x43, 0x2C, 0x19, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-8.5dB*/
236         {0xAC, 0xA6, 0x96, 0x7F, 0x63, 0x47, 0x2F, 0x1B, 0x0D, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-8dB*/
237         {0xB6, 0xB0, 0x9F, 0x87, 0x69, 0x4C, 0x32, 0x1D, 0x0D, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-7.5dB*/
238         {0xC1, 0xBA, 0xA8, 0x8F, 0x6F, 0x50, 0x35, 0x1E, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-7dB*/
239         {0xCC, 0xC5, 0xB2, 0x97, 0x76, 0x55, 0x38, 0x20, 0x0F, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-6.5dB*/
240         {0xD8, 0xD1, 0xBD, 0xA0, 0x7D, 0x5A, 0x3B, 0x22, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}     /*-6dB*/
241 };
242
243 u8 cck_swing_table_ch14_88f[CCK_TABLE_SIZE_88F][16] = {
244         {0x44,   0x42, 0x3C, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-16dB*/
245         {0x48, 0x46, 0x3F, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-15.5dB*/
246         {0x4D, 0x4A, 0x43, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-15dB*/
247         {0x51, 0x4F, 0x47, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},           /*-14.5dB*/
248         {0x56, 0x53, 0x4B, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-14dB*/
249         {0x5B, 0x58, 0x50, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-13.5dB*/
250         {0x60, 0x5D, 0x54, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-13dB*/
251         {0x66, 0x63, 0x59, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-12.5dB*/
252         {0x6C, 0x69, 0x5F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-12dB*/
253         {0x73, 0x6F, 0x64, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-11.5dB*/
254         {0x79, 0x76, 0x6A, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-11dB*/
255         {0x81, 0x7C, 0x71, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-10.5dB*/
256         {0x88, 0x84, 0x77, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-10dB*/
257         {0x90, 0x8C, 0x7E, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-9.5dB*/
258         {0x99, 0x94, 0x86, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-9dB*/
259         {0xA2, 0x9D, 0x8E, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-8.5dB*/
260         {0xAC, 0xA6, 0x96, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-8dB*/
261         {0xB6, 0xB0, 0x9F, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-7.5dB*/
262         {0xC1, 0xBA, 0xA8, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-7dB*/
263         {0xCC, 0xC5, 0xB2, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},    /*-6.5dB*/
264         {0xD8, 0xD1, 0xBD, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}     /*-6dB*/
265 };
266
267 u8 cck_swing_table_ch1_ch13_new[CCK_TABLE_SIZE][8] = {
268         {0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01},       /*  0, -16.0dB*/
269         {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01},       /*   1, -15.5dB*/
270         {0x0a, 0x09, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01},       /*  2, -15.0dB*/
271         {0x0a, 0x0a, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01},       /*   3, -14.5dB*/
272         {0x0b, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01},       /*   4, -14.0dB*/
273         {0x0b, 0x0b, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x01},       /*   5, -13.5dB*/
274         {0x0c, 0x0c, 0x0a, 0x09, 0x06, 0x04, 0x02, 0x01},       /*   6, -13.0dB*/
275         {0x0d, 0x0c, 0x0b, 0x09, 0x07, 0x04, 0x02, 0x01},       /*   7, -12.5dB*/
276         {0x0d, 0x0d, 0x0c, 0x0a, 0x07, 0x05, 0x02, 0x01},       /*  8, -12.0dB*/
277         {0x0e, 0x0e, 0x0c, 0x0a, 0x08, 0x05, 0x02, 0x01},       /*   9, -11.5dB*/
278         {0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01},       /*  10, -11.0dB*/
279         {0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01},       /*  11, -10.5dB*/
280         {0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01},       /*  12, -10.0dB*/
281         {0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01},       /*  13, -9.5dB*/
282         {0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01},       /*  14, -9.0dB */
283         {0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02},       /*  15, -8.5dB*/
284         {0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01},       /*  16, -8.0dB */
285         {0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02},       /*  17, -7.5dB*/
286         {0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02},       /*  18, -7.0dB */
287         {0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02},       /*  19, -6.5dB*/
288         {0x1b, 0x1a, 0x17, 0x13, 0x0e, 0x09, 0x04, 0x02},       /*20, -6.0dB */
289         {0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02},       /*  21, -5.5dB*/
290         {0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02},       /* 22, -5.0dB */
291         {0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02},       /*  23, -4.5dB*/
292         {0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02},       /*  24, -4.0dB */
293         {0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03},       /*  25, -3.5dB*/
294         {0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03},       /*  26, -3.0dB*/
295         {0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03},       /*  27, -2.5dB*/
296         {0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03},       /*  28, -2.0dB */
297         {0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03},       /*  29, -1.5dB*/
298         {0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03},       /*  30, -1.0dB*/
299         {0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04},       /*  31, -0.5dB*/
300         {0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04}        /*  32, +0dB*/
301 };
302
303 u8 cck_swing_table_ch14_new[CCK_TABLE_SIZE][8] = {
304         {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00},       /*  0, -16.0dB*/
305         {0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00},       /* 1, -15.5dB*/
306         {0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00},       /*  2, -15.0dB*/
307         {0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00},       /* 3, -14.5dB*/
308         {0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00},       /*  4, -14.0dB*/
309         {0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00},       /*5, -13.5dB*/
310         {0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00},       /* 6, -13.0dB*/
311         {0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00},       /*  7, -12.5dB*/
312         {0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00},       /* 8, -12.0dB*/
313         {0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00},       /* 9, -11.5dB*/
314         {0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00},       /* 10, -11.0dB*/
315         {0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00},       /*11, -10.5dB*/
316         {0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00},       /* 12, -10.0dB*/
317         {0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00},       /* 13, -9.5dB*/
318         {0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00},       /*14, -9.0dB */
319         {0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00},       /* 15, -8.5dB*/
320         {0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00},       /* 16, -8.0dB */
321         {0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00},       /* 17, -7.5dB*/
322         {0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00},       /* 18, -7.0dB */
323         {0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00},       /* 19, -6.5dB */
324         {0x1b, 0x1a, 0x17, 0x0e, 0x00, 0x00, 0x00, 0x00},       /* 20, -6.0dB */
325         {0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00},       /* 21, -5.5dB*/
326         {0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00},       /* 22, -5.0dB */
327         {0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00},       /*23, -4.5dB*/
328         {0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00},       /* 24, -4.0dB */
329         {0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00},       /* 25, -3.5dB */
330         {0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00},       /* 26, -3.0dB */
331         {0x28, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00},       /*27, -2.5dB*/
332         {0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00},       /* 28, -2.0dB */
333         {0x2d, 0x2d, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00},       /*29, -1.5dB*/
334         {0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00},       /* 30, -1.0dB */
335         {0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00},       /* 31, -0.5dB */
336         {0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00}        /* 32, +0dB     */
337 };
338
339 u32 cck_swing_table_ch1_ch14_8723d[CCK_TABLE_SIZE_8723D] = {
340         0x0CD,          /*0 ,    -20dB*/
341         0x0D9,
342         0x0E6,
343         0x0F3,
344         0x102,
345         0x111,
346         0x121,
347         0x132,
348         0x144,
349         0x158,
350         0x16C,
351         0x182,
352         0x198,
353         0x1B1,
354         0x1CA,
355         0x1E5,
356         0x202,
357         0x221,
358         0x241,
359         0x263,
360         0x287,
361         0x2AE,
362         0x2D6,
363         0x301,
364         0x32F,
365         0x35F,
366         0x392,
367         0x3C9,
368         0x402,
369         0x43F,
370         0x47F,
371         0x4C3,
372         0x50C,
373         0x558,
374         0x5A9,
375         0x5FF,
376         0x65A,
377         0x6BA,
378         0x720,
379         0x78C,
380         0x7FF,
381 };
382
383 /* JJ ADD 20161014 */
384 u32 cck_swing_table_ch1_ch14_8710b[CCK_TABLE_SIZE_8710B] = {
385         0x0CD,          /*0 ,    -20dB*/
386         0x0D9,
387         0x0E6,
388         0x0F3,
389         0x102,
390         0x111,
391         0x121,
392         0x132,
393         0x144,
394         0x158,
395         0x16C,
396         0x182,
397         0x198,
398         0x1B1,
399         0x1CA,
400         0x1E5,
401         0x202,
402         0x221,
403         0x241,
404         0x263,
405         0x287,
406         0x2AE,
407         0x2D6,
408         0x301,
409         0x32F,
410         0x35F,
411         0x392,
412         0x3C9,
413         0x402,
414         0x43F,
415         0x47F,
416         0x4C3,
417         0x50C,
418         0x558,
419         0x5A9,
420         0x5FF,
421         0x65A,
422         0x6BA,
423         0x720,
424         0x78C,
425         0x7FF,
426 };
427
428 /* Winnita ADD 20171116 PathA 0xAB4[10:0],PathB 0xAB4[21:11]*/
429 u32 cck_swing_table_ch1_ch14_8192f[CCK_TABLE_SIZE_8192F] = {
430         0x0CD,                   /*0 ,    -20dB*/
431         0x0D9,
432         0x0E6,
433         0x0F3,
434         0x102,
435         0x111,
436         0x121,
437         0x132,
438         0x144,
439         0x158,
440         0x16C,
441         0x182,
442         0x198,
443         0x1B1,
444         0x1CA,
445         0x1E5,
446         0x202,
447         0x221,
448         0x241,
449         0x263,          /*19*/
450         0x287,          /*20*/
451         0x2AE,          /*21*/
452         0x2D6,          /*22*/
453         0x301,          /*23*/
454         0x32F,          /*24*/
455         0x35F,          /*25*/
456         0x392,          /*26*/
457         0x3C9,          /*27*/
458         0x402,          /*28*/
459         0x43F,          /*29*/
460         0x47F,          /*30*/
461         0x4C3,          /*31*/
462         0x50C,          /*32*/
463         0x558,          /*33*/
464         0x5A9,          /*34*/
465         0x5FF,          /*35*/
466         0x65A,          /*36*/
467         0x6BA,
468         0x720,
469         0x78C,
470         0x7FF,
471 };
472
473 u32 tx_scaling_table_jaguar[TXSCALE_TABLE_SIZE] = {
474         0x081, /* 0,  -12.0dB*/
475         0x088, /* 1,  -11.5dB*/
476         0x090, /* 2,  -11.0dB*/
477         0x099, /* 3,  -10.5dB*/
478         0x0A2, /* 4,  -10.0dB*/
479         0x0AC, /* 5,  -9.5dB*/
480         0x0B6, /* 6,  -9.0dB*/
481         0x0C0, /*7,  -8.5dB*/
482         0x0CC, /* 8,  -8.0dB*/
483         0x0D8, /* 9,  -7.5dB*/
484         0x0E5, /* 10, -7.0dB*/
485         0x0F2, /* 11, -6.5dB*/
486         0x101, /* 12, -6.0dB*/
487         0x110, /* 13, -5.5dB*/
488         0x120, /* 14, -5.0dB*/
489         0x131, /* 15, -4.5dB*/
490         0x143, /* 16, -4.0dB*/
491         0x156, /* 17, -3.5dB*/
492         0x16A, /* 18, -3.0dB*/
493         0x180, /* 19, -2.5dB*/
494         0x197, /* 20, -2.0dB*/
495         0x1AF, /* 21, -1.5dB*/
496         0x1C8, /* 22, -1.0dB*/
497         0x1E3, /* 23, -0.5dB*/
498         0x200, /* 24, +0  dB*/
499         0x21E, /* 25, +0.5dB*/
500         0x23E, /* 26, +1.0dB*/
501         0x261, /* 27, +1.5dB*/
502         0x285,/* 28, +2.0dB*/
503         0x2AB, /* 29, +2.5dB*/
504         0x2D3, /*30, +3.0dB*/
505         0x2FE, /* 31, +3.5dB*/
506         0x32B, /* 32, +4.0dB*/
507         0x35C, /* 33, +4.5dB*/
508         0x38E, /* 34, +5.0dB*/
509         0x3C4, /* 35, +5.5dB*/
510         0x3FE  /* 36, +6.0dB    */
511 };
512
513 void
514 odm_txpowertracking_init(
515         void    *dm_void
516 )
517 {
518         struct dm_struct        *dm = (struct dm_struct *)dm_void;
519
520         odm_txpowertracking_thermal_meter_init(dm);
521 }
522
523 u8
524 get_swing_index(
525         void    *dm_void
526 )
527 {
528         struct dm_struct        *dm = (struct dm_struct *)dm_void;
529
530         u8      i = 0;
531         u32     bb_swing;
532         u32     swing_table_size;
533         u32     *swing_table;
534
535         if (dm->support_ic_type == ODM_RTL8195B) {
536                 bb_swing = odm_get_bb_reg(dm, R_0xc1c, 0xFFE00000);
537                 swing_table = tx_scaling_table_jaguar;
538                 swing_table_size = TXSCALE_TABLE_SIZE;
539         }
540
541         for (i = 0; i < swing_table_size; i++) {
542                 u32 table_value = swing_table[i];
543
544                 table_value = table_value;
545                 if (bb_swing == table_value)
546                         break;
547         }
548
549         return i;
550 }
551
552 u8
553 get_cck_swing_index(
554         void            *dm_void
555 )
556 {
557         struct dm_struct                *dm = (struct dm_struct *)dm_void;
558
559         u8                      i = 0;
560         u32                     bb_cck_swing;
561
562         if (dm->support_ic_type == ODM_RTL8188E || dm->support_ic_type == ODM_RTL8723B ||
563             dm->support_ic_type == ODM_RTL8192E) {
564                 bb_cck_swing = odm_read_1byte(dm, 0xa22);
565
566                 for (i = 0; i < CCK_TABLE_SIZE; i++) {
567                         if (bb_cck_swing == cck_swing_table_ch1_ch13_new[i][0])
568                                 break;
569                 }
570         } else if (dm->support_ic_type == ODM_RTL8703B) {
571                 bb_cck_swing = odm_read_1byte(dm, 0xa22);
572
573                 for (i = 0; i < CCK_TABLE_SIZE_88F; i++) {
574                         if (bb_cck_swing == cck_swing_table_ch1_ch14_88f[i][0])
575                                 break;
576                 }
577         }
578
579         return i;
580 }
581
582 void
583 odm_txpowertracking_thermal_meter_init(
584         void    *dm_void
585 )
586 {
587         struct dm_struct        *dm = (struct dm_struct *)dm_void;
588         u8 default_swing_index = get_swing_index(dm);
589         u8 p = 0;
590         struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info;
591         struct _hal_rf_ *rf = &dm->rf_table;
592
593         if (!(*dm->mp_mode))
594                 cali_info->txpowertrack_control = true;
595         else
596                 cali_info->txpowertrack_control = false;
597
598         RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "dm txpowertrack_control = %d\n", cali_info->txpowertrack_control);
599
600         /* dm->rf_calibrate_info.txpowertrack_control = true; */
601         cali_info->thermal_value = rf->eeprom_thermal;
602         cali_info->thermal_value_iqk = rf->eeprom_thermal;
603         cali_info->thermal_value_lck = rf->eeprom_thermal;
604
605         if (!cali_info->default_bb_swing_index_flag) {
606                 if (dm->support_ic_type == ODM_RTL8195B) {
607                         cali_info->default_ofdm_index = (default_swing_index >= TXSCALE_TABLE_SIZE) ? 24 : default_swing_index;
608                         cali_info->default_cck_index = 24;
609                 }
610                 cali_info->default_bb_swing_index_flag = true;
611         }
612
613         cali_info->bb_swing_idx_cck_base = cali_info->default_cck_index;
614         cali_info->CCK_index = cali_info->default_cck_index;
615
616         for (p = RF_PATH_A; p < MAX_RF_PATH; ++p) {
617                 cali_info->bb_swing_idx_ofdm_base[p] = cali_info->default_ofdm_index;
618                 cali_info->OFDM_index[p] = cali_info->default_ofdm_index;
619                 cali_info->delta_power_index[p] = 0;
620                 cali_info->delta_power_index_last[p] = 0;
621                 cali_info->power_index_offset[p] = 0;
622         }
623         cali_info->modify_tx_agc_value_ofdm = 0;
624         cali_info->modify_tx_agc_value_cck = 0;
625         cali_info->tm_trigger = 0;
626 }
627
628 void
629 odm_txpowertracking_check(
630         void    *dm_void
631 )
632 {
633         struct dm_struct        *dm = (struct dm_struct *)dm_void;
634
635         odm_txpowertracking_check_iot(dm);
636 }
637
638 void
639 odm_txpowertracking_check_iot(
640         void    *dm_void
641 )
642 {
643         struct dm_struct        *dm = (struct dm_struct *)dm_void;
644         struct _hal_rf_         *rf = &dm->rf_table;
645
646         if (!(rf->rf_supportability & HAL_RF_TX_PWR_TRACK))
647                 return;
648
649         if (!dm->rf_calibrate_info.tm_trigger) {
650                 if (dm->support_ic_type == ODM_RTL8195B)
651                         odm_set_rf_reg(dm, RF_PATH_A, RF_T_METER_NEW, (BIT(17) | BIT(16)), 0x03);
652
653                 dm->rf_calibrate_info.tm_trigger = 1;
654                 return;
655         }
656         odm_txpowertracking_callback_thermal_meter(dm);
657         dm->rf_calibrate_info.tm_trigger = 0;
658 }
659
660 void
661 odm_txpowertracking_check_mp(
662         void    *dm_void
663 )
664 {
665 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
666         struct dm_struct                *dm = (struct dm_struct *)dm_void;
667         void    *adapter = dm->adapter;
668
669         if (odm_check_power_status(adapter) == false) {
670                 RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, ("check_pow_status, return false\n"));
671                 return;
672         }
673
674         odm_txpowertracking_thermal_meter_check(adapter);
675 #endif
676 }
677
678 void
679 odm_txpowertracking_check_ap(
680         void    *dm_void
681 )
682 {
683 #if (DM_ODM_SUPPORT_TYPE == ODM_AP)
684         struct dm_struct                *dm = (struct dm_struct *)dm_void;
685         struct rtl8192cd_priv   *priv           = dm->priv;
686
687         return;
688
689 #endif
690 }