xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8822cs/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 || RTL8814C_SUPPORT == 1)
742 u32 tx_scaling_table_jaguar[TXSCALE_TABLE_SIZE] = {
743 	0x081, /* 0,  -12.0dB */
744 	0x088, /* 1,  -11.5dB */
745 	0x090, /* 2,  -11.0dB */
746 	0x099, /* 3,  -10.5dB */
747 	0x0A2, /* 4,  -10.0dB */
748 	0x0AC, /* 5,  -9.5dB */
749 	0x0B6, /* 6,  -9.0dB */
750 	0x0C0, /* 7,  -8.5dB */
751 	0x0CC, /* 8,  -8.0dB */
752 	0x0D8, /* 9,  -7.5dB */
753 	0x0E5, /* 10, -7.0dB */
754 	0x0F2, /* 11, -6.5dB */
755 	0x101, /* 12, -6.0dB */
756 	0x110, /* 13, -5.5dB */
757 	0x120, /* 14, -5.0dB */
758 	0x131, /* 15, -4.5dB */
759 	0x143, /* 16, -4.0dB */
760 	0x156, /* 17, -3.5dB */
761 	0x16A, /* 18, -3.0dB */
762 	0x180, /* 19, -2.5dB */
763 	0x197, /* 20, -2.0dB */
764 	0x1AF, /* 21, -1.5dB */
765 	0x1C8, /* 22, -1.0dB */
766 	0x1E3, /* 23, -0.5dB */
767 	0x200, /* 24, +0  dB */
768 	0x21E, /* 25, +0.5dB */
769 	0x23E, /* 26, +1.0dB */
770 	0x261, /* 27, +1.5dB */
771 	0x285, /* 28, +2.0dB */
772 	0x2AB, /* 29, +2.5dB */
773 	0x2D3, /* 30, +3.0dB */
774 	0x2FE, /* 31, +3.5dB */
775 	0x32B, /* 32, +4.0dB */
776 	0x35C, /* 33, +4.5dB */
777 	0x38E, /* 34, +5.0dB */
778 	0x3C4, /* 35, +5.5dB */
779 	0x3FE  /* 36, +6.0dB */
780 };
781 #elif(ODM_IC_11AC_SERIES_SUPPORT)
782 u32 ofdm_swing_table_8812[OFDM_TABLE_SIZE_8812] = {
783 	0x3FE, /* 0,  (6dB) */
784 	0x3C4, /* 1,  (5.5dB) */
785 	0x38E, /* 2,  (5dB) */
786 	0x35C, /* 3,  (4.5dB) */
787 	0x32B, /* 4,  (4dB) */
788 	0x2FE, /* 5,  (3.5dB) */
789 	0x2D3, /* 6,  (3dB) */
790 	0x2AB, /* 7,  (2.5dB) */
791 	0x285, /* 8,  (2dB) */
792 	0x261, /* 9,  (1.5dB */
793 	0x23E, /* 10, (1dB) */
794 	0x21E, /* 11, (0.5dB) */
795 	0x200, /* 12, (0dB)		8814 int PA 2G default */
796 	0x1E3, /* 13, (-0.5dB) */
797 	0x1C8, /* 14, (-1dB) */
798 	0x1AF, /* 15, (-1.5dB) */
799 	0x197, /* 16, (-2dB) */
800 	0x180, /* 17, (-2.5dB) */
801 	0x16A, /* 18, (-3dB)		8812 / 8814 int PA 5G / 8814 ext PA 2G5G default */
802 	0x156, /* 19, (-3.5dB) */
803 	0x143, /* 20, (-4dB)		8812 HP default */
804 	0x131, /* 21, (-4.5dB) */
805 	0x120, /* 22, (-5dB) */
806 	0x110, /* 23, (-5.5dB) */
807 	0x101, /* 24, (-6dB) */
808 	0x0F2, /* 25, (-6.5dB) */
809 	0x0E5, /* 26, (-7dB) */
810 	0x0D8, /* 27, (-7.5dB) */
811 	0x0CC, /* 28, (-8dB) */
812 	0x0C0, /* 29, (-8.5dB) */
813 	0x0B6, /* 30, (-9dB) */
814 	0x0AC, /* 31, (-9.5dB) */
815 	0x0A2, /* 32, (-10dB) */
816 	0x099, /* 33, (-10.5dB) */
817 	0x090, /* 34, (-11dB) */
818 	0x088, /* 35, (-11.5dB) */
819 	0x081, /* 36, (-12dB) */
820 	0x079, /* 37, (-12.5dB) */
821 	0x072, /* 38, (-13dB) */
822 	0x06c, /* 39, (-13.5dB) */
823 	0x066, /* 40, (-14dB) */
824 	0x060, /* 41, (-14.5dB) */
825 	0x05B  /* 42, (-15dB) */
826 };
827 #endif
828 
829 u32 cck_swing_table_ch1_ch14_8723d[CCK_TABLE_SIZE_8723D] = {
830 	0x0CD,
831 	0x0D9,
832 	0x0E6,
833 	0x0F3,
834 	0x102,
835 	0x111,
836 	0x121,
837 	0x132,
838 	0x144,
839 	0x158,
840 	0x16C,
841 	0x182,
842 	0x198,
843 	0x1B1,
844 	0x1CA,
845 	0x1E5,
846 	0x202,
847 	0x221,
848 	0x241,
849 	0x263,
850 	0x287,
851 	0x2AE,
852 	0x2D6,
853 	0x301,
854 	0x32F,
855 	0x35F,
856 	0x392,
857 	0x3C9,
858 	0x402,
859 	0x43F,
860 	0x47F,
861 	0x4C3,
862 	0x50C,
863 	0x558,
864 	0x5A9,
865 	0x5FF,
866 	0x65A,
867 	0x6BA,
868 	0x720,
869 	0x78C,
870 	0x7FF,
871 };
872 /* JJ ADD 20161014 */
873 u32 cck_swing_table_ch1_ch14_8710b[CCK_TABLE_SIZE_8710B] = {
874 	0x0CD,
875 	0x0D9,
876 	0x0E6,
877 	0x0F3,
878 	0x102,
879 	0x111,
880 	0x121,
881 	0x132,
882 	0x144,
883 	0x158,
884 	0x16C,
885 	0x182,
886 	0x198,
887 	0x1B1,
888 	0x1CA,
889 	0x1E5,
890 	0x202,
891 	0x221,
892 	0x241,
893 	0x263,
894 	0x287,
895 	0x2AE,
896 	0x2D6,
897 	0x301,
898 	0x32F,
899 	0x35F,
900 	0x392,
901 	0x3C9,
902 	0x402,
903 	0x43F,
904 	0x47F,
905 	0x4C3,
906 	0x50C,
907 	0x558,
908 	0x5A9,
909 	0x5FF,
910 	0x65A,
911 	0x6BA,
912 	0x720,
913 	0x78C,
914 	0x7FF,
915 };
916 
917 
918 /* #endif */
919 /* 3============================================================
920  * 3 Tx Power Tracking
921  * 3============================================================ */
922 
923 void
odm_txpowertracking_init(void * dm_void)924 odm_txpowertracking_init(
925 	void		*dm_void
926 )
927 {
928 	struct dm_struct		*dm = (struct dm_struct *)dm_void;
929 #if (DM_ODM_SUPPORT_TYPE & (ODM_AP))
930 	if (!(dm->support_ic_type & (ODM_RTL8814A | ODM_RTL8822B |
931 		ODM_RTL8814B | ODM_RTL8814C | ODM_IC_11N_SERIES)))
932 		return;
933 #endif
934 
935 	odm_txpowertracking_thermal_meter_init(dm);
936 }
937 
938 
939 u8
get_swing_index(void * dm_void)940 get_swing_index(
941 	void		*dm_void
942 )
943 {
944 	struct dm_struct		*dm = (struct dm_struct *)dm_void;
945 	u8			i = 0, bb_swing_mask = 0;
946 	u32			bb_swing = 0;
947 	u32			swing_table_size = 0;
948 	u32			*swing_table = 0;
949 	struct rtl8192cd_priv	*priv = dm->priv;
950 
951 #if (RTL8197F_SUPPORT == 1)
952 	if (GET_CHIP_VER(priv) == VERSION_8197F) {
953 		bb_swing = phy_query_bb_reg(priv, REG_OFDM_0_XA_TX_IQ_IMBALANCE, MASKOFDM_D);
954 		swing_table = ofdm_swing_table_new;
955 		swing_table_size = OFDM_TABLE_SIZE_92D;
956 		bb_swing_mask = 22;
957 	}
958 #endif
959 
960 #if (RTL8192F_SUPPORT == 1)
961 	if (GET_CHIP_VER(priv) == VERSION_8192F) {
962 		bb_swing = phy_query_bb_reg(priv, REG_OFDM_0_XA_TX_IQ_IMBALANCE, MASKOFDM_D);
963 		swing_table = ofdm_swing_table_new;
964 		swing_table_size = OFDM_TABLE_SIZE_92D;
965 		bb_swing_mask = 22;
966 	}
967 #endif
968 
969 #if (RTL8822B_SUPPORT == 1)
970 	if (GET_CHIP_VER(priv) == VERSION_8822B) {
971 		bb_swing = phy_query_bb_reg(priv, REG_A_TX_SCALE_JAGUAR, 0xFFE00000);
972 		swing_table = tx_scaling_table_jaguar;
973 		swing_table_size = TXSCALE_TABLE_SIZE;
974 		bb_swing_mask = 0;
975 	}
976 #endif
977 
978 	for (i = 0; i < swing_table_size - 1; i++) {
979 		u32 table_value = swing_table[i] >> bb_swing_mask;
980 
981 		if (bb_swing == table_value)
982 			break;
983 	}
984 
985 	RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "bb_swing=0x%x bbswing_index=%d\n", bb_swing, i);
986 
987 
988 	return i;
989 }
990 
get_cck_swing_index(void * dm_void)991 u8 get_cck_swing_index(void *dm_void)
992 {
993 	struct dm_struct *dm = (struct dm_struct *)dm_void;
994 	struct rtl8192cd_priv *priv = dm->priv;
995 
996 	u8 i = 0;
997 	u32 bb_cck_swing;
998 
999 #if (RTL8192F_SUPPORT == 1)
1000 	if (GET_CHIP_VER(priv) == VERSION_8192F) {
1001 		bb_cck_swing = odm_get_bb_reg(dm, R_0xab4, 0x7ff);
1002 
1003 		for (i = 0; i < CCK_TABLE_SIZE; i++) {
1004 			if (bb_cck_swing == cck_swing_table_ch1_ch14_8192f[i])
1005 				break;
1006 		}
1007 	}
1008 #endif
1009 
1010 	return i;
1011 }
1012 
1013 s8
get_txagc_default_index(void * dm_void)1014 get_txagc_default_index(
1015 	void *dm_void
1016 )
1017 {
1018 	struct dm_struct *dm = (struct dm_struct *)dm_void;
1019 	s8 tmp;
1020 
1021 #if (RTL8814B_SUPPORT == 1 || RTL8814C_SUPPORT == 1)
1022 	if (dm->support_ic_type  & (ODM_RTL8814B | ODM_RTL8814C)) {
1023 		tmp = (s8)(odm_get_bb_reg(dm, R_0x18a0, 0x7f) & 0xff);
1024 		if (tmp & BIT(6))
1025 			tmp = tmp | 0x80;
1026 		return tmp;
1027 	} else
1028 		return 0;
1029 #endif
1030 }
1031 
1032 void
odm_txpowertracking_thermal_meter_init(void * dm_void)1033 odm_txpowertracking_thermal_meter_init(
1034 	void		*dm_void
1035 )
1036 {
1037 	struct dm_struct		*dm = (struct dm_struct *)dm_void;
1038 	struct dm_rf_calibration_struct	*cali_info = &(dm->rf_calibrate_info);
1039 	struct _hal_rf_ *rf = &dm->rf_table;
1040 	struct _halrf_tssi_data *tssi = &rf->halrf_tssi_data;
1041 	struct rtl8192cd_priv		*priv = dm->priv;
1042 	u8 p;
1043 	u8 default_swing_index;
1044 	u8 default_cckswing_idx;
1045 	u8 i;
1046 #if (RTL8197F_SUPPORT == 1 || RTL8822B_SUPPORT == 1 || RTL8192F_SUPPORT == 1)
1047 	if ((GET_CHIP_VER(priv) == VERSION_8197F) || (GET_CHIP_VER(priv) == VERSION_8822B) ||(GET_CHIP_VER(priv) == VERSION_8192F))
1048 		default_swing_index = get_swing_index(dm);
1049 	if (GET_CHIP_VER(priv) == VERSION_8192F)
1050 		default_cckswing_idx = get_cck_swing_index(dm);
1051 #endif
1052 
1053 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
1054 	void		*adapter = dm->adapter;
1055 	PMGNT_INFO	mgnt_info = &adapter->MgntInfo;
1056 	HAL_DATA_TYPE		*hal_data = GET_HAL_DATA(((PADAPTER)adapter));
1057 
1058 	mgnt_info->is_txpowertracking = true;
1059 	hal_data->tx_powercount       = 0;
1060 	hal_data->is_txpowertracking_init = false;
1061 
1062 	if (*(dm->mp_mode) == false)
1063 		hal_data->txpowertrack_control = true;
1064 	RF_DBG(dm, COMP_POWER_TRACKING, "mgnt_info->is_txpowertracking = %d\n", mgnt_info->is_txpowertracking);
1065 #elif (DM_ODM_SUPPORT_TYPE == ODM_CE)
1066 #ifdef CONFIG_RTL8188E
1067 	{
1068 		dm->rf_calibrate_info.is_txpowertracking = true;
1069 		dm->rf_calibrate_info.tx_powercount = 0;
1070 		dm->rf_calibrate_info.is_txpowertracking_init = false;
1071 
1072 		if (*(dm->mp_mode) == false)
1073 			dm->rf_calibrate_info.txpowertrack_control = true;
1074 
1075 		MSG_8192C("dm txpowertrack_control = %d\n", dm->rf_calibrate_info.txpowertrack_control);
1076 	}
1077 #else
1078 	{
1079 		void		*adapter = dm->adapter;
1080 		HAL_DATA_TYPE	*hal_data = GET_HAL_DATA(((PADAPTER)adapter));
1081 		struct dm_priv	*pdmpriv = &hal_data->dmpriv;
1082 
1083 		pdmpriv->is_txpowertracking = true;
1084 		pdmpriv->tx_powercount = 0;
1085 		pdmpriv->is_txpowertracking_init = false;
1086 
1087 		if (*(dm->mp_mode) == false)		/* for mp driver, turn off txpwrtracking as default */
1088 			pdmpriv->txpowertrack_control = true;
1089 
1090 		MSG_8192C("pdmpriv->txpowertrack_control = %d\n", pdmpriv->txpowertrack_control);
1091 
1092 	}
1093 #endif/* endif (CONFIG_RTL8188E==1) */
1094 #elif (DM_ODM_SUPPORT_TYPE & (ODM_AP))
1095 
1096 #ifdef RTL8188E_SUPPORT
1097 	{
1098 		dm->rf_calibrate_info.is_txpowertracking = true;
1099 		dm->rf_calibrate_info.tx_powercount = 0;
1100 		dm->rf_calibrate_info.is_txpowertracking_init = false;
1101 		dm->rf_calibrate_info.txpowertrack_control = true;
1102 		dm->rf_calibrate_info.tm_trigger = 0;
1103 	}
1104 #endif
1105 #endif
1106 
1107 	dm->rf_calibrate_info.txpowertrack_control = true;
1108 	dm->rf_calibrate_info.delta_power_index = 0;
1109 	dm->rf_calibrate_info.delta_power_index_last = 0;
1110 	dm->rf_calibrate_info.power_index_offset = 0;
1111 	dm->rf_calibrate_info.thermal_value = 0;
1112 	cali_info->default_ofdm_index = 28;
1113 
1114 #if (RTL8197F_SUPPORT == 1)
1115 	if (GET_CHIP_VER(priv) == VERSION_8197F) {
1116 		cali_info->default_ofdm_index = (default_swing_index >= (OFDM_TABLE_SIZE_92D - 1)) ? 30 : default_swing_index;
1117 		cali_info->default_cck_index = 28;
1118 	}
1119 #endif
1120 
1121 #if (RTL8192F_SUPPORT == 1)
1122 	if (GET_CHIP_VER(priv) == VERSION_8192F) {
1123 		cali_info->default_ofdm_index = (default_swing_index >= (OFDM_TABLE_SIZE_92D - 1)) ? 30 : default_swing_index;
1124 		cali_info->default_cck_index = (default_cckswing_idx >= (CCK_TABLE_SIZE_8192F - 1)) ? 28 : default_cckswing_idx;
1125 	}
1126 #endif
1127 
1128 #if (RTL8822B_SUPPORT == 1)
1129 	if (GET_CHIP_VER(priv) == VERSION_8822B) {
1130 		cali_info->default_ofdm_index = (default_swing_index >= (TXSCALE_TABLE_SIZE - 1)) ? 24 : default_swing_index;
1131 		cali_info->default_cck_index = 20;
1132 	}
1133 #endif
1134 
1135 
1136 #if RTL8188E_SUPPORT
1137 	if (GET_CHIP_VER(priv) == VERSION_8188E) {
1138 		cali_info->default_cck_index = 20;	/* -6 dB */
1139 	}
1140 #endif
1141 
1142 #if RTL8192E_SUPPORT
1143 	if (GET_CHIP_VER(priv) == VERSION_8192E) {
1144 		cali_info->default_cck_index = 8;	/* -12 dB */
1145 	}
1146 #endif
1147 
1148 #if (RTL8814B_SUPPORT == 1 || RTL8814C_SUPPORT == 1)
1149 	if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8814C)) {
1150 		cali_info->default_txagc_index = get_txagc_default_index(dm);
1151 
1152 		for (i = 0; i < MAX_PATH_NUM_8814B; i++)
1153 			tssi->tssi_trk_txagc_offset[i] =
1154 				cali_info->default_txagc_index;
1155 	}
1156 #endif
1157 
1158 	cali_info->bb_swing_idx_ofdm_base = cali_info->default_ofdm_index;
1159 	cali_info->bb_swing_idx_cck_base = cali_info->default_cck_index;
1160 	dm->rf_calibrate_info.CCK_index = cali_info->default_cck_index;
1161 
1162 	for (p = 0; p < MAX_RF_PATH; p++) {
1163 		dm->rf_calibrate_info.OFDM_index[p] = cali_info->default_ofdm_index;
1164 		cali_info->bb_swing_idx_ofdm[p] = cali_info->default_ofdm_index;
1165 		cali_info->kfree_offset[p] = 0;	/* for 8814 kfree*/
1166 	}
1167 	cali_info->bb_swing_idx_cck = cali_info->default_cck_index;
1168 
1169 	RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "cali_info->default_ofdm_index=%d cali_info->default_cck_index=%d\n", cali_info->default_ofdm_index, cali_info->default_cck_index);
1170 
1171 	cali_info->tm_trigger = 0;
1172 }
1173 
1174 
1175 void
odm_txpowertracking_check(void * dm_void)1176 odm_txpowertracking_check(
1177 	void		*dm_void
1178 )
1179 {
1180 	/*  */
1181 	/* For AP/ADSL use struct rtl8192cd_priv* */
1182 	/* For CE/NIC use struct void* */
1183 	/*  */
1184 	struct dm_struct		*dm = (struct dm_struct *)dm_void;
1185 	struct _hal_rf_				*rf = &(dm->rf_table);
1186 
1187 	if (!(rf->rf_supportability & HAL_RF_TX_PWR_TRACK))
1188 		return;
1189 
1190 	/*  */
1191 	/* 2011/09/29 MH In HW integration first stage, we provide 4 different handle to operate */
1192 	/* at the same time. In the stage2/3, we need to prive universal interface and merge all */
1193 	/* HW dynamic mechanism. */
1194 	/*  */
1195 	switch	(dm->support_platform) {
1196 	case	ODM_WIN:
1197 		odm_txpowertracking_check_mp(dm);
1198 		break;
1199 
1200 	case	ODM_CE:
1201 		odm_txpowertracking_check_ce(dm);
1202 		break;
1203 
1204 	case	ODM_AP:
1205 		odm_txpowertracking_check_ap(dm);
1206 		break;
1207 	}
1208 
1209 }
1210 
1211 void
odm_txpowertracking_check_ce(void * dm_void)1212 odm_txpowertracking_check_ce(
1213 	void		*dm_void
1214 )
1215 {
1216 #if (DM_ODM_SUPPORT_TYPE == ODM_CE)
1217 	struct dm_struct		*dm = (struct dm_struct *)dm_void;
1218 	void	*adapter = dm->adapter;
1219 	struct _hal_rf_				*rf = &(dm->rf_table);
1220 
1221 #if (RTL8188E_SUPPORT == 1)
1222 
1223 	/* if(!mgnt_info->is_txpowertracking || (!pdmpriv->txpowertrack_control && pdmpriv->is_ap_kdone)) */
1224 
1225 	if (!(rf->rf_supportability & HAL_RF_TX_PWR_TRACK))
1226 		return;
1227 
1228 	if (!dm->rf_calibrate_info.tm_trigger) {	/* at least delay 1 sec */
1229 		/* hal_data->TxPowerCheckCnt++;	 */ /* cosa add for debug */
1230 		odm_set_rf_reg(dm, RF_PATH_A, RF_T_METER, RFREGOFFSETMASK, 0x60);
1231 		/* DBG_8192C("Trigger 92C Thermal Meter!!\n"); */
1232 
1233 		dm->rf_calibrate_info.tm_trigger = 1;
1234 		return;
1235 
1236 	} else {
1237 		/* DBG_8192C("Schedule TxPowerTracking direct call!!\n"); */
1238 		odm_txpowertracking_callback_thermal_meter_8188e(adapter);
1239 		dm->rf_calibrate_info.tm_trigger = 0;
1240 	}
1241 #endif
1242 
1243 #endif
1244 }
1245 
1246 void
odm_txpowertracking_check_mp(void * dm_void)1247 odm_txpowertracking_check_mp(
1248 	void		*dm_void
1249 )
1250 {
1251 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
1252 	struct dm_struct		*dm = (struct dm_struct *)dm_void;
1253 	void	*adapter = dm->adapter;
1254 
1255 	if (odm_check_power_status(adapter) == false)
1256 		return;
1257 
1258 	if (!adapter->is_slave_of_dmsp || adapter->dual_mac_smart_concurrent == false)
1259 		odm_txpowertracking_thermal_meter_check(adapter);
1260 #endif
1261 
1262 }
1263 
1264 
1265 void
odm_txpowertracking_check_ap(void * dm_void)1266 odm_txpowertracking_check_ap(
1267 	void		*dm_void
1268 )
1269 {
1270 	struct dm_struct *dm = (struct dm_struct *)dm_void;
1271 	struct _hal_rf_ *rf = &dm->rf_table;
1272 	struct _halrf_tssi_data *tssi = &rf->halrf_tssi_data;
1273 
1274 #if ((RTL8188E_SUPPORT == 1) || (RTL8192E_SUPPORT == 1) || (RTL8812A_SUPPORT == 1) || (RTL8881A_SUPPORT == 1) || (RTL8814A_SUPPORT == 1) || (RTL8197F_SUPPORT == 1) || (RTL8192F_SUPPORT == 1) || (RTL8198F_SUPPORT == 1) || (RTL8814B_SUPPORT == 1) || (RTL8812F_SUPPORT == 1) || (RTL8197G_SUPPORT == 1) || (RTL8814C_SUPPORT == 1))
1275 	if (!dm->rf_calibrate_info.tm_trigger) {
1276 		if (dm->support_ic_type & (ODM_RTL8188E | ODM_RTL8192E | ODM_RTL8812 | ODM_RTL8881A | ODM_RTL8814A | ODM_RTL8197F | ODM_RTL8822B | ODM_RTL8821C | ODM_RTL8192F | ODM_RTL8198F)) {
1277 			odm_set_rf_reg(dm, RF_PATH_A, 0x42, (BIT(17) | BIT(16)), 0x3);
1278 		} else if (dm->support_ic_type & ODM_RTL8812F) {
1279 			odm_set_rf_reg(dm, RF_PATH_A, R_0x42, BIT(19), 0x01);
1280 			odm_set_rf_reg(dm, RF_PATH_A, R_0x42, BIT(19), 0x00);
1281 			odm_set_rf_reg(dm, RF_PATH_A, R_0x42, BIT(19), 0x01);
1282 
1283 			odm_set_rf_reg(dm, RF_PATH_B, R_0x42, BIT(19), 0x01);
1284 			odm_set_rf_reg(dm, RF_PATH_B, R_0x42, BIT(19), 0x00);
1285 			odm_set_rf_reg(dm, RF_PATH_B, R_0x42, BIT(19), 0x01);
1286 		} else if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8814C)) {
1287 			odm_set_rf_reg(dm, RF_PATH_A, 0x42, BIT(17), 0x1);
1288 			odm_set_rf_reg(dm, RF_PATH_B, 0x42, BIT(17), 0x1);
1289 			odm_set_rf_reg(dm, RF_PATH_C, 0x42, BIT(17), 0x1);
1290 			odm_set_rf_reg(dm, RF_PATH_D, 0x42, BIT(17), 0x1);
1291 		} else if (dm->support_ic_type & ODM_RTL8197G) {
1292 			odm_set_rf_reg(dm, RF_PATH_A, RF_0x42, BIT(17), 0x1);
1293 			odm_set_rf_reg(dm, RF_PATH_A, RF_0x42, BIT(17), 0x0);
1294 			odm_set_rf_reg(dm, RF_PATH_A, RF_0x42, BIT(17), 0x1);
1295 
1296 			odm_set_rf_reg(dm, RF_PATH_B, RF_0x42, BIT(17), 0x1);
1297 			odm_set_rf_reg(dm, RF_PATH_B, RF_0x42, BIT(17), 0x0);
1298 			odm_set_rf_reg(dm, RF_PATH_B, RF_0x42, BIT(17), 0x1);
1299 		}
1300 
1301 		if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8814C)) {
1302 			ODM_delay_us(300);
1303 			odm_txpowertracking_callback_thermal_meter(dm);
1304 			tssi->thermal_trigger = 1;
1305 		}
1306 
1307 		dm->rf_calibrate_info.tm_trigger = 1;
1308 	} else {
1309 		odm_txpowertracking_callback_thermal_meter(dm);
1310 		if (dm->support_ic_type & (ODM_RTL8814B | ODM_RTL8814C))
1311 			tssi->thermal_trigger = 0;
1312 		dm->rf_calibrate_info.tm_trigger = 0;
1313 	}
1314 #endif
1315 
1316 }
1317