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