Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nu11secur1ty
GitHub Repository: nu11secur1ty/Kali-Linux
Path: blob/master/ALFA-W1F1/RTL8814AU/hal/phydm/halrf/halrf_powertracking_iot.c
1308 views
1
/******************************************************************************
2
*
3
* Copyright(c) 2007 - 2017 Realtek Corporation.
4
*
5
* This program is free software; you can redistribute it and/or modify it
6
* under the terms of version 2 of the GNU General Public License as
7
* published by the Free Software Foundation.
8
*
9
* This program is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12
* more details.
13
*
14
* The full GNU General Public License is included in this distribution in the
15
* file called LICENSE.
16
*
17
* Contact Information:
18
* wlanfae <[email protected]>
19
* Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
20
* Hsinchu 300, Taiwan.
21
*
22
* Larry Finger <[email protected]>
23
*
24
*****************************************************************************/
25
26
/*============================================================ */
27
/* include files */
28
/*============================================================ */
29
#include "mp_precomp.h"
30
#include "phydm_precomp.h"
31
32
/* ************************************************************
33
* Global var
34
* ************************************************************
35
*/
36
37
u32 ofdm_swing_table[OFDM_TABLE_SIZE] = {
38
0x7f8001fe, /* 0, +6.0dB */
39
0x788001e2, /* 1, +5.5dB */
40
0x71c001c7, /* 2, +5.0dB*/
41
0x6b8001ae, /* 3, +4.5dB*/
42
0x65400195, /* 4, +4.0dB*/
43
0x5fc0017f, /* 5, +3.5dB*/
44
0x5a400169, /* 6, +3.0dB*/
45
0x55400155, /* 7, +2.5dB*/
46
0x50800142, /* 8, +2.0dB*/
47
0x4c000130, /* 9, +1.5dB*/
48
0x47c0011f, /* 10, +1.0dB*/
49
0x43c0010f, /* 11, +0.5dB*/
50
0x40000100, /* 12, +0dB*/
51
0x3c8000f2, /* 13, -0.5dB*/
52
0x390000e4, /* 14, -1.0dB*/
53
0x35c000d7, /* 15, -1.5dB*/
54
0x32c000cb, /* 16, -2.0dB*/
55
0x300000c0, /* 17, -2.5dB*/
56
0x2d4000b5, /* 18, -3.0dB*/
57
0x2ac000ab, /* 19, -3.5dB*/
58
0x288000a2, /* 20, -4.0dB*/
59
0x26000098, /* 21, -4.5dB*/
60
0x24000090, /* 22, -5.0dB*/
61
0x22000088, /* 23, -5.5dB*/
62
0x20000080, /* 24, -6.0dB*/
63
0x1e400079, /* 25, -6.5dB*/
64
0x1c800072, /* 26, -7.0dB*/
65
0x1b00006c, /* 27. -7.5dB*/
66
0x19800066, /* 28, -8.0dB*/
67
0x18000060, /* 29, -8.5dB*/
68
0x16c0005b, /* 30, -9.0dB*/
69
0x15800056, /* 31, -9.5dB*/
70
0x14400051, /* 32, -10.0dB*/
71
0x1300004c, /* 33, -10.5dB*/
72
0x12000048, /* 34, -11.0dB*/
73
0x11000044, /* 35, -11.5dB*/
74
0x10000040, /* 36, -12.0dB*/
75
};
76
77
u8 cck_swing_table_ch1_ch13[CCK_TABLE_SIZE][8] = {
78
{0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04}, /* 0, +0dB */
79
{0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04}, /* 1, -0.5dB */
80
{0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03}, /* 2, -1.0dB*/
81
{0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03}, /* 3, -1.5dB*/
82
{0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03}, /* 4, -2.0dB */
83
{0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03}, /* 5, -2.5dB*/
84
{0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03}, /* 6, -3.0dB*/
85
{0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03}, /* 7, -3.5dB*/
86
{0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02}, /* 8, -4.0dB */
87
{0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02}, /* 9, -4.5dB*/
88
{0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02}, /* 10, -5.0dB */
89
{0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02}, /* 11, -5.5dB*/
90
{0x1b, 0x1a, 0x17, 0x13, 0x0e, 0x09, 0x04, 0x02}, /* 12, -6.0dB <== default */
91
{0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02}, /* 13, -6.5dB*/
92
{0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02}, /* 14, -7.0dB */
93
{0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02}, /* 15, -7.5dB*/
94
{0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01}, /* 16, -8.0dB */
95
{0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02}, /* 17, -8.5dB*/
96
{0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01}, /* 18, -9.0dB */
97
{0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 19, -9.5dB*/
98
{0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 20, -10.0dB*/
99
{0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 21, -10.5dB*/
100
{0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 22, -11.0dB*/
101
{0x0e, 0x0e, 0x0c, 0x0a, 0x08, 0x05, 0x02, 0x01}, /* 23, -11.5dB*/
102
{0x0d, 0x0d, 0x0c, 0x0a, 0x07, 0x05, 0x02, 0x01}, /* 24, -12.0dB*/
103
{0x0d, 0x0c, 0x0b, 0x09, 0x07, 0x04, 0x02, 0x01}, /* 25, -12.5dB*/
104
{0x0c, 0x0c, 0x0a, 0x09, 0x06, 0x04, 0x02, 0x01}, /* 26, -13.0dB*/
105
{0x0b, 0x0b, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 27, -13.5dB*/
106
{0x0b, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 28, -14.0dB*/
107
{0x0a, 0x0a, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 29, -14.5dB*/
108
{0x0a, 0x09, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 30, -15.0dB*/
109
{0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01}, /* 31, -15.5dB*/
110
{0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01} /* 32, -16.0dB*/
111
};
112
113
u8 cck_swing_table_ch14[CCK_TABLE_SIZE][8] = {
114
{0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00}, /* 0, +0dB */
115
{0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00}, /* 1, -0.5dB */
116
{0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00}, /* 2, -1.0dB */
117
{0x2d, 0x2d, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00}, /* 3, -1.5dB*/
118
{0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00}, /* 4, -2.0dB */
119
{0x28, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00}, /* 5, -2.5dB*/
120
{0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00}, /* 6, -3.0dB */
121
{0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00}, /* 7, -3.5dB */
122
{0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00}, /* 8, -4.0dB */
123
{0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00}, /* 9, -4.5dB*/
124
{0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00}, /* 10, -5.0dB */
125
{0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 11, -5.5dB*/
126
{0x1b, 0x1a, 0x17, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 12, -6.0dB <== default*/
127
{0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00}, /* 13, -6.5dB */
128
{0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00}, /* 14, -7.0dB */
129
{0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 15, -7.5dB*/
130
{0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 16, -8.0dB */
131
{0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 17, -8.5dB*/
132
{0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 18, -9.0dB */
133
{0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 19, -9.5dB*/
134
{0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 20, -10.0dB*/
135
{0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 21, -10.5dB*/
136
{0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 22, -11.0dB*/
137
{0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 23, -11.5dB*/
138
{0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 24, -12.0dB*/
139
{0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 25, -12.5dB*/
140
{0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 26, -13.0dB*/
141
{0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 27, -13.5dB*/
142
{0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 28, -14.0dB*/
143
{0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 29, -14.5dB*/
144
{0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 30, -15.0dB*/
145
{0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 31, -15.5dB*/
146
{0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00} /* 32, -16.0dB*/
147
};
148
149
u32 ofdm_swing_table_new[OFDM_TABLE_SIZE] = {
150
0x0b40002d, /* 0, -15.0dB */
151
0x0c000030, /* 1, -14.5dB*/
152
0x0cc00033, /* 2, -14.0dB*/
153
0x0d800036, /* 3, -13.5dB*/
154
0x0e400039, /* 4, -13.0dB */
155
0x0f00003c, /* 5, -12.5dB*/
156
0x10000040, /* 6, -12.0dB*/
157
0x11000044, /* 7, -11.5dB*/
158
0x12000048, /* 8, -11.0dB*/
159
0x1300004c, /* 9, -10.5dB*/
160
0x14400051, /* 10, -10.0dB*/
161
0x15800056, /* 11, -9.5dB*/
162
0x16c0005b, /* 12, -9.0dB*/
163
0x18000060, /* 13, -8.5dB*/
164
0x19800066, /* 14, -8.0dB*/
165
0x1b00006c, /* 15, -7.5dB*/
166
0x1c800072, /* 16, -7.0dB*/
167
0x1e400079, /* 17, -6.5dB*/
168
0x20000080, /* 18, -6.0dB*/
169
0x22000088, /* 19, -5.5dB*/
170
0x24000090, /* 20, -5.0dB*/
171
0x26000098, /* 21, -4.5dB*/
172
0x288000a2, /* 22, -4.0dB*/
173
0x2ac000ab, /* 23, -3.5dB*/
174
0x2d4000b5, /* 24, -3.0dB*/
175
0x300000c0, /* 25, -2.5dB*/
176
0x32c000cb, /* 26, -2.0dB*/
177
0x35c000d7, /* 27, -1.5dB*/
178
0x390000e4, /* 28, -1.0dB*/
179
0x3c8000f2, /* 29, -0.5dB*/
180
0x40000100, /* 30, +0dB*/
181
0x43c0010f, /* 31, +0.5dB*/
182
0x47c0011f, /* 32, +1.0dB*/
183
0x4c000130, /* 33, +1.5dB*/
184
0x50800142, /* 34, +2.0dB*/
185
0x55400155, /* 35, +2.5dB*/
186
0x5a400169, /* 36, +3.0dB*/
187
0x5fc0017f, /* 37, +3.5dB*/
188
0x65400195, /* 38, +4.0dB*/
189
0x6b8001ae, /* 39, +4.5dB*/
190
0x71c001c7, /* 40, +5.0dB*/
191
0x788001e2, /* 41, +5.5dB*/
192
0x7f8001fe /* 42, +6.0dB*/
193
};
194
195
u8 cck_swing_table_ch1_ch14_88f[CCK_TABLE_SIZE_88F][16] = {
196
{0x44, 0x42, 0x3C, 0x33, 0x28, 0x1C, 0x13, 0x0B, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-16dB*/
197
{0x48, 0x46, 0x3F, 0x36, 0x2A, 0x1E, 0x14, 0x0B, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-15.5dB*/
198
{0x4D, 0x4A, 0x43, 0x39, 0x2C, 0x20, 0x15, 0x0C, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-15dB*/
199
{0x51, 0x4F, 0x47, 0x3C, 0x2F, 0x22, 0x16, 0x0D, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-14.5dB*/
200
{0x56, 0x53, 0x4B, 0x40, 0x32, 0x24, 0x17, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-14dB*/
201
{0x5B, 0x58, 0x50, 0x43, 0x35, 0x26, 0x19, 0x0E, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-13.5dB*/
202
{0x60, 0x5D, 0x54, 0x47, 0x38, 0x28, 0x1A, 0x0F, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-13dB*/
203
{0x66, 0x63, 0x59, 0x4C, 0x3B, 0x2B, 0x1C, 0x10, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-12.5dB*/
204
{0x6C, 0x69, 0x5F, 0x50, 0x3F, 0x2D, 0x1E, 0x11, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-12dB*/
205
{0x73, 0x6F, 0x64, 0x55, 0x42, 0x30, 0x1F, 0x12, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-11.5dB*/
206
{0x79, 0x76, 0x6A, 0x5A, 0x46, 0x33, 0x21, 0x13, 0x09, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-11dB*/
207
{0x81, 0x7C, 0x71, 0x5F, 0x4A, 0x36, 0x23, 0x14, 0x0A, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-10.5dB*/
208
{0x88, 0x84, 0x77, 0x65, 0x4F, 0x39, 0x25, 0x15, 0x0A, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-10dB*/
209
{0x90, 0x8C, 0x7E, 0x6B, 0x54, 0x3C, 0x27, 0x17, 0x0B, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-9.5dB*/
210
{0x99, 0x94, 0x86, 0x71, 0x58, 0x40, 0x2A, 0x18, 0x0B, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-9dB*/
211
{0xA2, 0x9D, 0x8E, 0x78, 0x5E, 0x43, 0x2C, 0x19, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-8.5dB*/
212
{0xAC, 0xA6, 0x96, 0x7F, 0x63, 0x47, 0x2F, 0x1B, 0x0D, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-8dB*/
213
{0xB6, 0xB0, 0x9F, 0x87, 0x69, 0x4C, 0x32, 0x1D, 0x0D, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-7.5dB*/
214
{0xC1, 0xBA, 0xA8, 0x8F, 0x6F, 0x50, 0x35, 0x1E, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-7dB*/
215
{0xCC, 0xC5, 0xB2, 0x97, 0x76, 0x55, 0x38, 0x20, 0x0F, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-6.5dB*/
216
{0xD8, 0xD1, 0xBD, 0xA0, 0x7D, 0x5A, 0x3B, 0x22, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} /*-6dB*/
217
};
218
219
u8 cck_swing_table_ch1_ch13_88f[CCK_TABLE_SIZE_88F][16] = {
220
{0x44, 0x42, 0x3C, 0x33, 0x28, 0x1C, 0x13, 0x0B, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-16dB*/
221
{0x48, 0x46, 0x3F, 0x36, 0x2A, 0x1E, 0x14, 0x0B, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-15.5dB*/
222
{0x4D, 0x4A, 0x43, 0x39, 0x2C, 0x20, 0x15, 0x0C, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-15dB*/
223
{0x51, 0x4F, 0x47, 0x3C, 0x2F, 0x22, 0x16, 0x0D, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-14.5dB*/
224
{0x56, 0x53, 0x4B, 0x40, 0x32, 0x24, 0x17, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-14dB*/
225
{0x5B, 0x58, 0x50, 0x43, 0x35, 0x26, 0x19, 0x0E, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-13.5dB*/
226
{0x60, 0x5D, 0x54, 0x47, 0x38, 0x28, 0x1A, 0x0F, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-13dB*/
227
{0x66, 0x63, 0x59, 0x4C, 0x3B, 0x2B, 0x1C, 0x10, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-12.5dB*/
228
{0x6C, 0x69, 0x5F, 0x50, 0x3F, 0x2D, 0x1E, 0x11, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-12dB*/
229
{0x73, 0x6F, 0x64, 0x55, 0x42, 0x30, 0x1F, 0x12, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-11.5dB*/
230
{0x79, 0x76, 0x6A, 0x5A, 0x46, 0x33, 0x21, 0x13, 0x09, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-11dB*/
231
{0x81, 0x7C, 0x71, 0x5F, 0x4A, 0x36, 0x23, 0x14, 0x0A, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-10.5dB*/
232
{0x88, 0x84, 0x77, 0x65, 0x4F, 0x39, 0x25, 0x15, 0x0A, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-10dB*/
233
{0x90, 0x8C, 0x7E, 0x6B, 0x54, 0x3C, 0x27, 0x17, 0x0B, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-9.5dB*/
234
{0x99, 0x94, 0x86, 0x71, 0x58, 0x40, 0x2A, 0x18, 0x0B, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-9dB*/
235
{0xA2, 0x9D, 0x8E, 0x78, 0x5E, 0x43, 0x2C, 0x19, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-8.5dB*/
236
{0xAC, 0xA6, 0x96, 0x7F, 0x63, 0x47, 0x2F, 0x1B, 0x0D, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-8dB*/
237
{0xB6, 0xB0, 0x9F, 0x87, 0x69, 0x4C, 0x32, 0x1D, 0x0D, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-7.5dB*/
238
{0xC1, 0xBA, 0xA8, 0x8F, 0x6F, 0x50, 0x35, 0x1E, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-7dB*/
239
{0xCC, 0xC5, 0xB2, 0x97, 0x76, 0x55, 0x38, 0x20, 0x0F, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-6.5dB*/
240
{0xD8, 0xD1, 0xBD, 0xA0, 0x7D, 0x5A, 0x3B, 0x22, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} /*-6dB*/
241
};
242
243
u8 cck_swing_table_ch14_88f[CCK_TABLE_SIZE_88F][16] = {
244
{0x44, 0x42, 0x3C, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-16dB*/
245
{0x48, 0x46, 0x3F, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-15.5dB*/
246
{0x4D, 0x4A, 0x43, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-15dB*/
247
{0x51, 0x4F, 0x47, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-14.5dB*/
248
{0x56, 0x53, 0x4B, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-14dB*/
249
{0x5B, 0x58, 0x50, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-13.5dB*/
250
{0x60, 0x5D, 0x54, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-13dB*/
251
{0x66, 0x63, 0x59, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-12.5dB*/
252
{0x6C, 0x69, 0x5F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-12dB*/
253
{0x73, 0x6F, 0x64, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-11.5dB*/
254
{0x79, 0x76, 0x6A, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-11dB*/
255
{0x81, 0x7C, 0x71, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-10.5dB*/
256
{0x88, 0x84, 0x77, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-10dB*/
257
{0x90, 0x8C, 0x7E, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-9.5dB*/
258
{0x99, 0x94, 0x86, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-9dB*/
259
{0xA2, 0x9D, 0x8E, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-8.5dB*/
260
{0xAC, 0xA6, 0x96, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-8dB*/
261
{0xB6, 0xB0, 0x9F, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-7.5dB*/
262
{0xC1, 0xBA, 0xA8, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-7dB*/
263
{0xCC, 0xC5, 0xB2, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-6.5dB*/
264
{0xD8, 0xD1, 0xBD, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} /*-6dB*/
265
};
266
267
u8 cck_swing_table_ch1_ch13_new[CCK_TABLE_SIZE][8] = {
268
{0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01}, /* 0, -16.0dB*/
269
{0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01}, /* 1, -15.5dB*/
270
{0x0a, 0x09, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 2, -15.0dB*/
271
{0x0a, 0x0a, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 3, -14.5dB*/
272
{0x0b, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 4, -14.0dB*/
273
{0x0b, 0x0b, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 5, -13.5dB*/
274
{0x0c, 0x0c, 0x0a, 0x09, 0x06, 0x04, 0x02, 0x01}, /* 6, -13.0dB*/
275
{0x0d, 0x0c, 0x0b, 0x09, 0x07, 0x04, 0x02, 0x01}, /* 7, -12.5dB*/
276
{0x0d, 0x0d, 0x0c, 0x0a, 0x07, 0x05, 0x02, 0x01}, /* 8, -12.0dB*/
277
{0x0e, 0x0e, 0x0c, 0x0a, 0x08, 0x05, 0x02, 0x01}, /* 9, -11.5dB*/
278
{0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 10, -11.0dB*/
279
{0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 11, -10.5dB*/
280
{0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 12, -10.0dB*/
281
{0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 13, -9.5dB*/
282
{0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01}, /* 14, -9.0dB */
283
{0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02}, /* 15, -8.5dB*/
284
{0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01}, /* 16, -8.0dB */
285
{0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02}, /* 17, -7.5dB*/
286
{0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02}, /* 18, -7.0dB */
287
{0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02}, /* 19, -6.5dB*/
288
{0x1b, 0x1a, 0x17, 0x13, 0x0e, 0x09, 0x04, 0x02}, /*20, -6.0dB */
289
{0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02}, /* 21, -5.5dB*/
290
{0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02}, /* 22, -5.0dB */
291
{0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02}, /* 23, -4.5dB*/
292
{0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02}, /* 24, -4.0dB */
293
{0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03}, /* 25, -3.5dB*/
294
{0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03}, /* 26, -3.0dB*/
295
{0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03}, /* 27, -2.5dB*/
296
{0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03}, /* 28, -2.0dB */
297
{0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03}, /* 29, -1.5dB*/
298
{0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03}, /* 30, -1.0dB*/
299
{0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04}, /* 31, -0.5dB*/
300
{0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04} /* 32, +0dB*/
301
};
302
303
u8 cck_swing_table_ch14_new[CCK_TABLE_SIZE][8] = {
304
{0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00}, /* 0, -16.0dB*/
305
{0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 1, -15.5dB*/
306
{0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 2, -15.0dB*/
307
{0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 3, -14.5dB*/
308
{0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 4, -14.0dB*/
309
{0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /*5, -13.5dB*/
310
{0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 6, -13.0dB*/
311
{0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 7, -12.5dB*/
312
{0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 8, -12.0dB*/
313
{0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 9, -11.5dB*/
314
{0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 10, -11.0dB*/
315
{0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00}, /*11, -10.5dB*/
316
{0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 12, -10.0dB*/
317
{0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 13, -9.5dB*/
318
{0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00}, /*14, -9.0dB */
319
{0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 15, -8.5dB*/
320
{0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 16, -8.0dB */
321
{0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 17, -7.5dB*/
322
{0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00}, /* 18, -7.0dB */
323
{0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00}, /* 19, -6.5dB */
324
{0x1b, 0x1a, 0x17, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 20, -6.0dB */
325
{0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 21, -5.5dB*/
326
{0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00}, /* 22, -5.0dB */
327
{0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00}, /*23, -4.5dB*/
328
{0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00}, /* 24, -4.0dB */
329
{0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00}, /* 25, -3.5dB */
330
{0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00}, /* 26, -3.0dB */
331
{0x28, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00}, /*27, -2.5dB*/
332
{0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00}, /* 28, -2.0dB */
333
{0x2d, 0x2d, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00}, /*29, -1.5dB*/
334
{0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00}, /* 30, -1.0dB */
335
{0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00}, /* 31, -0.5dB */
336
{0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00} /* 32, +0dB */
337
};
338
339
u32 cck_swing_table_ch1_ch14_8723d[CCK_TABLE_SIZE_8723D] = {
340
0x0CD, /*0 , -20dB*/
341
0x0D9,
342
0x0E6,
343
0x0F3,
344
0x102,
345
0x111,
346
0x121,
347
0x132,
348
0x144,
349
0x158,
350
0x16C,
351
0x182,
352
0x198,
353
0x1B1,
354
0x1CA,
355
0x1E5,
356
0x202,
357
0x221,
358
0x241,
359
0x263,
360
0x287,
361
0x2AE,
362
0x2D6,
363
0x301,
364
0x32F,
365
0x35F,
366
0x392,
367
0x3C9,
368
0x402,
369
0x43F,
370
0x47F,
371
0x4C3,
372
0x50C,
373
0x558,
374
0x5A9,
375
0x5FF,
376
0x65A,
377
0x6BA,
378
0x720,
379
0x78C,
380
0x7FF,
381
};
382
383
/* JJ ADD 20161014 */
384
u32 cck_swing_table_ch1_ch14_8710b[CCK_TABLE_SIZE_8710B] = {
385
0x0CD, /*0 , -20dB*/
386
0x0D9,
387
0x0E6,
388
0x0F3,
389
0x102,
390
0x111,
391
0x121,
392
0x132,
393
0x144,
394
0x158,
395
0x16C,
396
0x182,
397
0x198,
398
0x1B1,
399
0x1CA,
400
0x1E5,
401
0x202,
402
0x221,
403
0x241,
404
0x263,
405
0x287,
406
0x2AE,
407
0x2D6,
408
0x301,
409
0x32F,
410
0x35F,
411
0x392,
412
0x3C9,
413
0x402,
414
0x43F,
415
0x47F,
416
0x4C3,
417
0x50C,
418
0x558,
419
0x5A9,
420
0x5FF,
421
0x65A,
422
0x6BA,
423
0x720,
424
0x78C,
425
0x7FF,
426
};
427
428
/* Winnita ADD 20171116 PathA 0xAB4[10:0],PathB 0xAB4[21:11]*/
429
u32 cck_swing_table_ch1_ch14_8192f[CCK_TABLE_SIZE_8192F] = {
430
0x0CD, /*0 , -20dB*/
431
0x0D9,
432
0x0E6,
433
0x0F3,
434
0x102,
435
0x111,
436
0x121,
437
0x132,
438
0x144,
439
0x158,
440
0x16C,
441
0x182,
442
0x198,
443
0x1B1,
444
0x1CA,
445
0x1E5,
446
0x202,
447
0x221,
448
0x241,
449
0x263, /*19*/
450
0x287, /*20*/
451
0x2AE, /*21*/
452
0x2D6, /*22*/
453
0x301, /*23*/
454
0x32F, /*24*/
455
0x35F, /*25*/
456
0x392, /*26*/
457
0x3C9, /*27*/
458
0x402, /*28*/
459
0x43F, /*29*/
460
0x47F, /*30*/
461
0x4C3, /*31*/
462
0x50C, /*32*/
463
0x558, /*33*/
464
0x5A9, /*34*/
465
0x5FF, /*35*/
466
0x65A, /*36*/
467
0x6BA,
468
0x720,
469
0x78C,
470
0x7FF,
471
};
472
473
/* Winnita ADD 201805 PathA 0xAB4[10:0]*/
474
u32 cck_swing_table_ch1_ch14_8721d[CCK_TABLE_SIZE_8721D] = {
475
0x0CD, /*0 , -20dB*/
476
0x0D9,
477
0x0E6,
478
0x0F3,
479
0x102,
480
0x111,
481
0x121,
482
0x132,
483
0x144,
484
0x158,
485
0x16C,
486
0x182,
487
0x198,
488
0x1B1,
489
0x1CA,
490
0x1E5,
491
0x202,
492
0x221,
493
0x241,
494
0x263, /*19*/
495
0x287, /*20*/
496
0x2AE, /*21*/
497
0x2D6, /*22*/
498
0x301, /*23*/
499
0x32F, /*24*/
500
0x35F, /*25*/
501
0x392, /*26*/
502
0x3C9, /*27*/
503
0x402, /*28*/
504
0x43F, /*29*/
505
0x47F, /*30*/
506
0x4C3, /*31*/
507
0x50C, /*32*/
508
0x558, /*33*/
509
0x5A9, /*34*/
510
0x5FF, /*35*/
511
0x65A, /*36*/
512
0x6BA,
513
0x720,
514
0x78C,
515
0x7FF,
516
};
517
518
u32 cck_swing_table_ch1_ch14_8710c[CCK_TABLE_SIZE_8710C] = {
519
0x0CD, /*0 , -20dB*/
520
0x0D9,
521
0x0E6,
522
0x0F3,
523
0x102,
524
0x111,
525
0x121,
526
0x132,
527
0x144,
528
0x158,
529
0x16C,
530
0x182,
531
0x198,
532
0x1B1,
533
0x1CA,
534
0x1E5,
535
0x202,
536
0x221,
537
0x241,
538
0x263,
539
0x287,
540
0x2AE,
541
0x2D6,
542
0x301,
543
0x32F,
544
0x35F,
545
0x392,
546
0x3C9,
547
0x402,
548
0x43F,
549
0x47F,
550
0x4C3,
551
0x50C,
552
0x558,
553
0x5A9,
554
0x5FF,
555
0x65A,
556
0x6BA,
557
0x720,
558
0x78C,
559
0x7FF,
560
};
561
562
u32 cck_swing_table_03db_ch1_ch14_8710c[CCK_03DB_TABLE_SIZE_8710C] = {
563
0x143, /*0 , -4dB*/
564
0x14C, /*1 , -3.75dB*/
565
0x156, /*2 , -3.5dB*/
566
0x160,
567
0x16A,
568
0x175,
569
0x17F,
570
0x18B,
571
0x196,
572
0x1A2,
573
0x1AE,
574
0x1BB,
575
0x1C8,
576
0x1D5,
577
0x1E3,
578
0x1F1,
579
0x200,
580
0x20F,
581
0x21E,
582
0x22F,
583
0x23F,
584
0x250,
585
0x261,
586
0x273,
587
0x285,
588
0x298,
589
0x2AB,
590
0x2BF,
591
0x2D6,
592
0x2E9,
593
0x2FF,
594
0x315,
595
0x32C,
596
0x344,
597
0x35C,
598
0x375,
599
0x390,
600
0x3AA,
601
0x3C5,
602
0x3E1,
603
0x402, /*40 , +6dB default*/
604
0x41C,
605
0x43B,
606
0x45A,
607
0x47C,
608
0x49C,
609
0x4BF,
610
0x4E2,
611
0x510,
612
0x52C,
613
0x553,
614
0x57B,
615
0x5A5,
616
0x5CE,
617
0x5F9,
618
0x626,
619
0x655,
620
0x683,
621
0x6B5,
622
0x6E6,
623
0x71E,
624
0x74E,
625
0x786,
626
0x7BD,
627
0x7F9,
628
0x832,
629
0x871,
630
0x8AF,
631
0x8F2,
632
0x932,
633
0x977,
634
0x9BE,
635
0xA0E,
636
0xA52,
637
0xAA1,
638
0xAEE,
639
0xB54,
640
0xB95,
641
0xBEB,
642
0xC43,
643
0xCA3 /*80 , +16dB*/
644
};
645
646
u32 ofdm_swing_table_03DB_8710c[OFDM_03DB_TABLE_SIZE_8710C] = {
647
0xE4, /*0 , -7dB*/
648
0xEB, /*1 , -6.75dB*/
649
0xF2, /*2 , -6.5dB*/
650
0xF9,
651
0x100,
652
0x108,
653
0x110,
654
0x118,
655
0x11F,
656
0x128,
657
0x131,
658
0x13A,
659
0x143,
660
0x14C,
661
0x156,
662
0x160,
663
0x16A,
664
0x175,
665
0x180,
666
0x18B,
667
0x196,
668
0x1A2,
669
0x1AE,
670
0x1BB,
671
0x1C8,
672
0x1D5,
673
0x1E3,
674
0x1F1,
675
0x200,
676
0x20F,
677
0x21F,
678
0x22F,
679
0x23F,
680
0x250,
681
0x261,
682
0x273,
683
0x286,
684
0x298,
685
0x2AB,
686
0x2BF,
687
0x2D6, /*40 , +3dB default*/
688
0x2E9,
689
0x2FF,
690
0x315,
691
0x32C,
692
0x344,
693
0x35C,
694
0x375,
695
0x390,
696
0x3AA,
697
0x3C5,
698
0x3E1,
699
0x3FF,
700
0x41C,
701
0x43B,
702
0x45A,
703
0x47B,
704
0x49C,
705
0x4BF,
706
0x4E2,
707
0x507,
708
0x52C,
709
0x553,
710
0x57B,
711
0x5A4,
712
0x5CE,
713
0x5F9,
714
0x626,
715
0x654,
716
0x683,
717
0x6B4,
718
0x6E6,
719
0x71B,
720
0x74E,
721
0x785,
722
0x7BD,
723
0x7F7,
724
0x832,
725
0x870,
726
0x8AF,
727
0x8F0 /*80 , +13dB*/
728
};
729
730
731
732
u32 tx_scaling_table_jaguar[TXSCALE_TABLE_SIZE] = {
733
0x081, /* 0, -12.0dB*/
734
0x088, /* 1, -11.5dB*/
735
0x090, /* 2, -11.0dB*/
736
0x099, /* 3, -10.5dB*/
737
0x0A2, /* 4, -10.0dB*/
738
0x0AC, /* 5, -9.5dB*/
739
0x0B6, /* 6, -9.0dB*/
740
0x0C0, /*7, -8.5dB*/
741
0x0CC, /* 8, -8.0dB*/
742
0x0D8, /* 9, -7.5dB*/
743
0x0E5, /* 10, -7.0dB*/
744
0x0F2, /* 11, -6.5dB*/
745
0x101, /* 12, -6.0dB*/
746
0x110, /* 13, -5.5dB*/
747
0x120, /* 14, -5.0dB*/
748
0x131, /* 15, -4.5dB*/
749
0x143, /* 16, -4.0dB*/
750
0x156, /* 17, -3.5dB*/
751
0x16A, /* 18, -3.0dB*/
752
0x180, /* 19, -2.5dB*/
753
0x197, /* 20, -2.0dB*/
754
0x1AF, /* 21, -1.5dB*/
755
0x1C8, /* 22, -1.0dB*/
756
0x1E3, /* 23, -0.5dB*/
757
0x200, /* 24, +0 dB*/
758
0x21E, /* 25, +0.5dB*/
759
0x23E, /* 26, +1.0dB*/
760
0x261, /* 27, +1.5dB*/
761
0x285,/* 28, +2.0dB*/
762
0x2AB, /* 29, +2.5dB*/
763
0x2D3, /*30, +3.0dB*/
764
0x2FE, /* 31, +3.5dB*/
765
0x32B, /* 32, +4.0dB*/
766
0x35C, /* 33, +4.5dB*/
767
0x38E, /* 34, +5.0dB*/
768
0x3C4, /* 35, +5.5dB*/
769
0x3FE /* 36, +6.0dB */
770
};
771
772
void
773
odm_txpowertracking_init(
774
void *dm_void
775
)
776
{
777
struct dm_struct *dm = (struct dm_struct *)dm_void;
778
779
odm_txpowertracking_thermal_meter_init(dm);
780
}
781
782
u8
783
get_swing_index(
784
void *dm_void
785
)
786
{
787
struct dm_struct *dm = (struct dm_struct *)dm_void;
788
789
u8 i = 0;
790
u32 bb_swing;
791
u32 swing_table_size;
792
u32 *swing_table;
793
u32 table_value;
794
795
if (dm->support_ic_type == ODM_RTL8710C) {
796
bb_swing = odm_get_bb_reg(dm, R_0xcc8, 0x000007ff);
797
798
for (i = 0; i < OFDM_03DB_TABLE_SIZE_8710C; i++) {
799
if (bb_swing == ofdm_swing_table_03DB_8710c[i])
800
break;
801
}
802
}
803
804
if (dm->support_ic_type == ODM_RTL8195B) {
805
bb_swing = odm_get_bb_reg(dm, R_0xc1c, 0xFFE00000);
806
swing_table = tx_scaling_table_jaguar;
807
swing_table_size = TXSCALE_TABLE_SIZE;
808
809
for (i = 0; i < swing_table_size; i++) {
810
table_value = swing_table[i];
811
812
table_value = table_value;
813
if (bb_swing == table_value)
814
break;
815
}
816
}
817
818
return i;
819
}
820
821
u8
822
get_cck_swing_index(
823
void *dm_void
824
)
825
{
826
struct dm_struct *dm = (struct dm_struct *)dm_void;
827
828
u8 i = 0;
829
u32 bb_cck_swing;
830
831
if (dm->support_ic_type == ODM_RTL8188E || dm->support_ic_type == ODM_RTL8723B ||
832
dm->support_ic_type == ODM_RTL8192E) {
833
bb_cck_swing = odm_read_1byte(dm, 0xa22);
834
835
for (i = 0; i < CCK_TABLE_SIZE; i++) {
836
if (bb_cck_swing == cck_swing_table_ch1_ch13_new[i][0])
837
break;
838
}
839
} else if (dm->support_ic_type == ODM_RTL8703B) {
840
bb_cck_swing = odm_read_1byte(dm, 0xa22);
841
842
for (i = 0; i < CCK_TABLE_SIZE_88F; i++) {
843
if (bb_cck_swing == cck_swing_table_ch1_ch14_88f[i][0])
844
break;
845
}
846
} else if (dm->support_ic_type == ODM_RTL8710C) {
847
bb_cck_swing = odm_get_bb_reg(dm, R_0xab4, 0x7ff);
848
849
RF_DBG(dm, DBG_RF_TX_PWR_TRACK,
850
"bb_cck_swing = 0x%x\n", bb_cck_swing);
851
852
for (i = 0; i < CCK_03DB_TABLE_SIZE_8710C; i++) {
853
if (bb_cck_swing == cck_swing_table_03db_ch1_ch14_8710c[i])
854
break;
855
}
856
}
857
858
return i;
859
}
860
861
void
862
odm_txpowertracking_thermal_meter_init(
863
void *dm_void
864
)
865
{
866
struct dm_struct *dm = (struct dm_struct *)dm_void;
867
u8 default_swing_index;
868
u8 p = 0;
869
struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info;
870
struct _hal_rf_ *rf = &dm->rf_table;
871
872
if (!(*dm->mp_mode))
873
cali_info->txpowertrack_control = true;
874
else
875
cali_info->txpowertrack_control = false;
876
877
RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "dm txpowertrack_control = %d\n", cali_info->txpowertrack_control);
878
879
/* dm->rf_calibrate_info.txpowertrack_control = true; */
880
cali_info->thermal_value = rf->eeprom_thermal;
881
cali_info->thermal_value_iqk = rf->eeprom_thermal;
882
cali_info->thermal_value_lck = rf->eeprom_thermal;
883
884
if (!cali_info->default_bb_swing_index_flag) {
885
if (dm->support_ic_type == ODM_RTL8195B) {
886
default_swing_index = get_swing_index(dm);
887
cali_info->default_ofdm_index = (default_swing_index >= TXSCALE_TABLE_SIZE) ? 24 : default_swing_index;
888
cali_info->default_cck_index = 24;
889
} else if (dm->support_ic_type == ODM_RTL8721D) {
890
cali_info->default_ofdm_index = 28; /*OFDM: -1dB*/
891
cali_info->default_cck_index = 28; /*CCK: -6dB*/
892
} else if (dm->support_ic_type == ODM_RTL8710C) {
893
cali_info->default_ofdm_index = get_swing_index(dm);
894
cali_info->default_cck_index = get_cck_swing_index(dm);
895
}
896
cali_info->default_bb_swing_index_flag = true;
897
}
898
899
cali_info->bb_swing_idx_cck_base = cali_info->default_cck_index;
900
cali_info->CCK_index = cali_info->default_cck_index;
901
902
for (p = RF_PATH_A; p < MAX_RF_PATH; ++p) {
903
cali_info->bb_swing_idx_ofdm_base[p] = cali_info->default_ofdm_index;
904
cali_info->OFDM_index[p] = cali_info->default_ofdm_index;
905
cali_info->delta_power_index[p] = 0;
906
cali_info->delta_power_index_last[p] = 0;
907
cali_info->power_index_offset[p] = 0;
908
}
909
cali_info->modify_tx_agc_value_ofdm = 0;
910
cali_info->modify_tx_agc_value_cck = 0;
911
cali_info->tm_trigger = 0;
912
}
913
914
void
915
odm_txpowertracking_check(
916
void *dm_void
917
)
918
{
919
struct dm_struct *dm = (struct dm_struct *)dm_void;
920
921
odm_txpowertracking_check_iot(dm);
922
}
923
924
void
925
odm_txpowertracking_check_iot(
926
void *dm_void
927
)
928
{
929
struct dm_struct *dm = (struct dm_struct *)dm_void;
930
struct _hal_rf_ *rf = &dm->rf_table;
931
932
if (!(rf->rf_supportability & HAL_RF_TX_PWR_TRACK))
933
return;
934
935
if (!dm->rf_calibrate_info.tm_trigger) {
936
if (dm->support_ic_type == ODM_RTL8195B)
937
odm_set_rf_reg(dm, RF_PATH_A, RF_T_METER_NEW, (BIT(17) | BIT(16)), 0x03);
938
else if (dm->support_ic_type == ODM_RTL8721D ||
939
dm->support_ic_type == ODM_RTL8710C)
940
odm_set_rf_reg(dm, RF_PATH_A, RF_T_METER_NEW,
941
(BIT(12) | BIT(11)), 0x03);
942
943
dm->rf_calibrate_info.tm_trigger = 1;
944
return;
945
}
946
odm_txpowertracking_callback_thermal_meter(dm);
947
dm->rf_calibrate_info.tm_trigger = 0;
948
}
949
950
void
951
odm_txpowertracking_check_mp(
952
void *dm_void
953
)
954
{
955
#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
956
struct dm_struct *dm = (struct dm_struct *)dm_void;
957
void *adapter = dm->adapter;
958
959
if (odm_check_power_status(adapter) == false) {
960
RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, ("check_pow_status, return false\n"));
961
return;
962
}
963
964
odm_txpowertracking_thermal_meter_check(adapter);
965
#endif
966
}
967
968
void
969
odm_txpowertracking_check_ap(
970
void *dm_void
971
)
972
{
973
#if (DM_ODM_SUPPORT_TYPE == ODM_AP)
974
struct dm_struct *dm = (struct dm_struct *)dm_void;
975
struct rtl8192cd_priv *priv = dm->priv;
976
977
return;
978
979
#endif
980
}
981
982