1 | /*- |
---|
2 | * Copyright (c) 2016 Andriy Voskoboinyk <avos@FreeBSD.org> |
---|
3 | * All rights reserved. |
---|
4 | * |
---|
5 | * Redistribution and use in source and binary forms, with or without |
---|
6 | * modification, are permitted provided that the following conditions |
---|
7 | * are met: |
---|
8 | * 1. Redistributions of source code must retain the above copyright |
---|
9 | * notice, this list of conditions and the following disclaimer. |
---|
10 | * 2. Redistributions in binary form must reproduce the above copyright |
---|
11 | * notice, this list of conditions and the following disclaimer in the |
---|
12 | * documentation and/or other materials provided with the distribution. |
---|
13 | * |
---|
14 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND |
---|
15 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
---|
16 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
---|
17 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE |
---|
18 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
---|
19 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
---|
20 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
---|
21 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
---|
22 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
---|
23 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
---|
24 | * SUCH DAMAGE. |
---|
25 | * |
---|
26 | * $FreeBSD$ |
---|
27 | */ |
---|
28 | |
---|
29 | #ifndef R12A_PRIV_H |
---|
30 | #define R12A_PRIV_H |
---|
31 | |
---|
32 | /* |
---|
33 | * MAC initialization values. |
---|
34 | */ |
---|
35 | #define RTL8812AU_MAC_PROG_START \ |
---|
36 | { 0x010, 0x0c }, |
---|
37 | |
---|
38 | #define RTL8812AU_MAC_PROG_END \ |
---|
39 | { 0x025, 0x0f }, { 0x072, 0x00 }, { 0x420, 0x80 }, { 0x428, 0x0a }, \ |
---|
40 | { 0x429, 0x10 }, { 0x430, 0x00 }, { 0x431, 0x00 }, { 0x432, 0x00 }, \ |
---|
41 | { 0x433, 0x01 }, { 0x434, 0x04 }, { 0x435, 0x05 }, { 0x436, 0x07 }, \ |
---|
42 | { 0x437, 0x08 }, { 0x43c, 0x04 }, { 0x43d, 0x05 }, { 0x43e, 0x07 }, \ |
---|
43 | { 0x43f, 0x08 }, { 0x440, 0x5d }, { 0x441, 0x01 }, { 0x442, 0x00 }, \ |
---|
44 | { 0x444, 0x10 }, { 0x445, 0x00 }, { 0x446, 0x00 }, { 0x447, 0x00 }, \ |
---|
45 | { 0x448, 0x00 }, { 0x449, 0xf0 }, { 0x44a, 0x0f }, { 0x44b, 0x3e }, \ |
---|
46 | { 0x44c, 0x10 }, { 0x44d, 0x00 }, { 0x44e, 0x00 }, { 0x44f, 0x00 }, \ |
---|
47 | { 0x450, 0x00 }, { 0x451, 0xf0 }, { 0x452, 0x0f }, { 0x453, 0x00 }, \ |
---|
48 | { 0x45b, 0x80 }, { 0x460, 0x66 }, { 0x461, 0x66 }, { 0x4c8, 0xff }, \ |
---|
49 | { 0x4c9, 0x08 }, { 0x4cc, 0xff }, { 0x4cd, 0xff }, { 0x4ce, 0x01 }, \ |
---|
50 | { 0x500, 0x26 }, { 0x501, 0xa2 }, { 0x502, 0x2f }, { 0x503, 0x00 }, \ |
---|
51 | { 0x504, 0x28 }, { 0x505, 0xa3 }, { 0x506, 0x5e }, { 0x507, 0x00 }, \ |
---|
52 | { 0x508, 0x2b }, { 0x509, 0xa4 }, { 0x50a, 0x5e }, { 0x50b, 0x00 }, \ |
---|
53 | { 0x50c, 0x4f }, { 0x50d, 0xa4 }, { 0x50e, 0x00 }, { 0x50f, 0x00 }, \ |
---|
54 | { 0x512, 0x1c }, { 0x514, 0x0a }, { 0x516, 0x0a }, { 0x525, 0x4f }, \ |
---|
55 | { 0x550, 0x10 }, { 0x551, 0x10 }, { 0x559, 0x02 }, { 0x55c, 0x50 }, \ |
---|
56 | { 0x55d, 0xff }, { 0x604, 0x09 }, { 0x605, 0x30 }, { 0x607, 0x03 }, \ |
---|
57 | { 0x608, 0x0e }, { 0x609, 0x2a }, { 0x620, 0xff }, { 0x621, 0xff }, \ |
---|
58 | { 0x622, 0xff }, { 0x623, 0xff }, { 0x624, 0xff }, { 0x625, 0xff }, \ |
---|
59 | { 0x626, 0xff }, { 0x627, 0xff }, { 0x638, 0x50 }, { 0x63c, 0x0a }, \ |
---|
60 | { 0x63d, 0x0a }, { 0x63e, 0x0e }, { 0x63f, 0x0e }, { 0x640, 0x80 }, \ |
---|
61 | { 0x642, 0x40 }, { 0x643, 0x00 }, { 0x652, 0xc8 }, { 0x66e, 0x05 }, \ |
---|
62 | { 0x700, 0x21 }, { 0x701, 0x43 }, { 0x702, 0x65 }, { 0x703, 0x87 }, \ |
---|
63 | { 0x708, 0x21 }, { 0x709, 0x43 }, { 0x70a, 0x65 }, { 0x70b, 0x87 }, \ |
---|
64 | { 0x718, 0x40 } |
---|
65 | |
---|
66 | static const struct rtwn_mac_prog rtl8812au_mac_no_ext_pa_lna[] = { |
---|
67 | RTL8812AU_MAC_PROG_START |
---|
68 | { 0x11, 0x66 }, |
---|
69 | RTL8812AU_MAC_PROG_END |
---|
70 | }, rtl8812au_mac[] = { |
---|
71 | RTL8812AU_MAC_PROG_START |
---|
72 | { 0x11, 0x5a }, |
---|
73 | RTL8812AU_MAC_PROG_END |
---|
74 | }; |
---|
75 | |
---|
76 | |
---|
77 | /* |
---|
78 | * Baseband initialization values. |
---|
79 | */ |
---|
80 | #define R12A_COND_GPA 0x01 |
---|
81 | #define R12A_COND_APA 0x02 |
---|
82 | #define R12A_COND_GLNA 0x04 |
---|
83 | #define R12A_COND_ALNA 0x08 |
---|
84 | #define R12A_COND_TYPE(t) ((t) << 4) |
---|
85 | |
---|
86 | static const uint16_t rtl8812au_bb_regs0[] = { |
---|
87 | 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, 0x820, 0x824, |
---|
88 | 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, 0x840, 0x844, 0x848, |
---|
89 | 0x84c, 0x850, 0x854, 0x858, 0x85c, 0x860, 0x864, 0x868, 0x86c, |
---|
90 | 0x870, 0x874, 0x878, 0x87c, 0x8a0, 0x8a4, 0x8a8, 0x8ac, 0x8b0, |
---|
91 | 0x8b4, 0x8b8, 0x8bc, 0x8c0, 0x8c4, 0x8c8, 0x8cc, 0x8d0, 0x8dc, |
---|
92 | 0x8d4, 0x8d8, 0x8f8, 0x8fc, 0x900, 0x90c, 0x910, 0x914, 0x918, |
---|
93 | 0x91c, 0x920, 0x924, 0x928, 0x92c, 0x930, 0x934, 0x960, 0x964, |
---|
94 | 0x968, 0x96c, 0x970, 0x978, 0x97c, 0x980, 0x984, 0x988, 0x990, |
---|
95 | 0x994, 0x998, 0x99c, 0x9a0, 0x9a4, 0x9a8, 0x9ac, 0x9b0, 0x9b4, |
---|
96 | 0x9b8, 0x9bc, 0x9d0, 0x9d4, 0x9d8, 0x9dc, 0x9e4, 0x9e8, 0xa00, |
---|
97 | 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c, 0xa20, 0xa24, |
---|
98 | 0xa28, 0xa2c, 0xa70, 0xa74, 0xa78, 0xa7c, 0xa80, 0xa84, 0xb00, |
---|
99 | 0xb04, 0xb08, 0xb0c, 0xb10, 0xb14, 0xb18, 0xb1c, 0xb20, 0xb24, |
---|
100 | 0xb28, 0xb2c, 0xb30, 0xb34, 0xb38, 0xb3c, 0xb40, 0xb44, 0xb48, |
---|
101 | 0xb4c, 0xb50, 0xb54, 0xb58, 0xb5c, 0xc00, 0xc04, 0xc08, 0xc0c, |
---|
102 | 0xc10, 0xc14, 0xc1c, 0xc20, 0xc24, 0xc28, 0xc2c, 0xc30, 0xc34, |
---|
103 | 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, 0xc54, 0xc58, |
---|
104 | 0xc5c, 0xc60, 0xc64 |
---|
105 | }, rtl8812au_bb_regs1[] = { |
---|
106 | 0xc68 |
---|
107 | }, rtl8812au_bb_regs2[] = { |
---|
108 | 0xc6c, 0xc70, 0xc74, 0xc78, 0xc7c, 0xc80, 0xc84, 0xc94, 0xc98, |
---|
109 | 0xc9c, 0xca0, 0xca4, 0xca8, 0xcb0, 0xcb4, 0xcb8, 0xe00, 0xe04, |
---|
110 | 0xe08, 0xe0c, 0xe10, 0xe14, 0xe1c, 0xe20, 0xe24, 0xe28, 0xe2c, |
---|
111 | 0xe30, 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44, 0xe48, 0xe4c, 0xe50, |
---|
112 | 0xe54, 0xe58, 0xe5c, 0xe60, 0xe64, 0xe68, 0xe6c, 0xe70, 0xe74, |
---|
113 | 0xe78, 0xe7c, 0xe80, 0xe84, 0xe94, 0xe98, 0xe9c, 0xea0, 0xea4, |
---|
114 | 0xea8, 0xeb0, 0xeb4, 0xeb8 |
---|
115 | }; |
---|
116 | |
---|
117 | static const uint32_t rtl8812au_bb_vals0[] = { |
---|
118 | 0x8020d010, 0x080112e0, 0x0e028233, 0x12131113, 0x20101263, |
---|
119 | 0x020c3d10, 0x03a00385, 0x00000000, 0x00030fe0, 0x00000000, |
---|
120 | 0x002083dd, 0x2eaaeeb8, 0x0037a706, 0x06c89b44, 0x0000095b, |
---|
121 | 0xc0000001, 0x40003cde, 0x6210ff8b, 0x6cfdffb8, 0x28874706, |
---|
122 | 0x0001520c, 0x8060e000, 0x74210168, 0x6929c321, 0x79727432, |
---|
123 | 0x8ca7a314, 0x338c2878, 0x03333333, 0x31602c2e, 0x00003152, |
---|
124 | 0x000fc000, 0x00000013, 0x7f7f7f7f, 0xa202033e, 0x0ff0fa0a, |
---|
125 | 0x00000600, 0x000fc080, 0x6c0057ff, 0x4ca520a3, 0x27f00020, |
---|
126 | 0x00000000, 0x00012d69, 0x08248492, 0x0000b800, 0x00000000, |
---|
127 | 0x940008a0, 0x290b5612, 0x400002c0, 0x00000000, 0x00000701, |
---|
128 | 0x00000000, 0x0000fc00, 0x00000404, 0x1c1028c0, 0x64b11a1c, |
---|
129 | 0xe0767233, 0x055aa500, 0x00000004, 0xfffe0000, 0xfffffffe, |
---|
130 | 0x001fffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, |
---|
131 | 0x801fffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, |
---|
132 | 0x00000000, 0x27100000, 0xffff0100, 0xffffff5c, 0xffffffff, |
---|
133 | 0x000000ff, 0x00080080, 0x00000000, 0x00000000, 0x81081008, |
---|
134 | 0x00000000, 0x01081008, 0x01081008, 0x00000000, 0x00000000, |
---|
135 | 0x00000000, 0x00000000, 0x00000003, 0x000002d5, 0x00d047c8, |
---|
136 | 0x01ff000c, 0x8c838300, 0x2e7f000f, 0x9500bb78, 0x11144028, |
---|
137 | 0x00881117, 0x89140f00, 0x1a1b0000, 0x090e1217, 0x00000305, |
---|
138 | 0x00900000, 0x101fff00, 0x00000008, 0x00000900, 0x225b0606, |
---|
139 | 0x218075b2, 0x001f8c80, 0x03100000, 0x0000b000, 0xae0201eb, |
---|
140 | 0x01003207, 0x00009807, 0x01000000, 0x00000002, 0x00000002, |
---|
141 | 0x0000001f, 0x03020100, 0x07060504, 0x0b0a0908, 0x0f0e0d0c, |
---|
142 | 0x13121110, 0x17161514, 0x0000003a, 0x00000000, 0x00000000, |
---|
143 | 0x13000032, 0x48080000, 0x00000000, 0x00000000, 0x00000000, |
---|
144 | 0x00000000, 0x00000007, 0x00042020, 0x80410231, 0x00000000, |
---|
145 | 0x00000100, 0x01000000, 0x40000003, 0x12121212, 0x12121212, |
---|
146 | 0x12121212, 0x12121212, 0x12121212, 0x12121212, 0x12121212, |
---|
147 | 0x12121212, 0x12121212, 0x12121212, 0x12121212, 0x12121212, |
---|
148 | 0x00000020, 0x0008121c, 0x30000c1c, 0x00000058, 0x34344443, |
---|
149 | 0x07003333 |
---|
150 | }, rtl8812au_bb_vals1_ext_pa_lna[] = { |
---|
151 | 0x59791979 |
---|
152 | }, rtl8812au_bb_vals1[] = { |
---|
153 | 0x59799979 |
---|
154 | }, rtl8812au_bb_vals2[] = { |
---|
155 | 0x59795979, 0x19795979, 0x19795979, 0x19791979, 0x19791979, |
---|
156 | 0x19791979, 0x19791979, 0x0100005c, 0x00000000, 0x00000000, |
---|
157 | 0x00000029, 0x08040201, 0x80402010, 0x77547777, 0x00000077, |
---|
158 | 0x00508242, 0x00000007, 0x00042020, 0x80410231, 0x00000000, |
---|
159 | 0x00000100, 0x01000000, 0x40000003, 0x12121212, 0x12121212, |
---|
160 | 0x12121212, 0x12121212, 0x12121212, 0x12121212, 0x12121212, |
---|
161 | 0x12121212, 0x12121212, 0x12121212, 0x12121212, 0x12121212, |
---|
162 | 0x00000020, 0x0008121c, 0x30000c1c, 0x00000058, 0x34344443, |
---|
163 | 0x07003333, 0x59791979, 0x59795979, 0x19795979, 0x19795979, |
---|
164 | 0x19791979, 0x19791979, 0x19791979, 0x19791979, 0x0100005c, |
---|
165 | 0x00000000, 0x00000000, 0x00000029, 0x08040201, 0x80402010, |
---|
166 | 0x77547777, 0x00000077, 0x00508242 |
---|
167 | }; |
---|
168 | |
---|
169 | static const struct rtwn_bb_prog rtl8812au_bb[] = { |
---|
170 | { |
---|
171 | nitems(rtl8812au_bb_regs0), |
---|
172 | rtl8812au_bb_regs0, |
---|
173 | rtl8812au_bb_vals0, |
---|
174 | { 0 }, |
---|
175 | NULL |
---|
176 | }, |
---|
177 | /* |
---|
178 | * Devices with: |
---|
179 | * * External 2GHz PA, type 0; |
---|
180 | * * External 5GHz PA, type 0 or 5; |
---|
181 | * * External 2GHz LNA, type 0 or 5; |
---|
182 | * * External 5GHz LNA, type 0; |
---|
183 | */ |
---|
184 | { |
---|
185 | nitems(rtl8812au_bb_regs1), |
---|
186 | rtl8812au_bb_regs1, |
---|
187 | rtl8812au_bb_vals1_ext_pa_lna, |
---|
188 | { |
---|
189 | R12A_COND_GPA | R12A_COND_GLNA | |
---|
190 | R12A_COND_APA | R12A_COND_ALNA | |
---|
191 | R12A_COND_TYPE(0x0), |
---|
192 | R12A_COND_APA | R12A_COND_GLNA | |
---|
193 | R12A_COND_TYPE(0x5), 0 |
---|
194 | }, |
---|
195 | /* |
---|
196 | * Others. |
---|
197 | */ |
---|
198 | &(const struct rtwn_bb_prog){ |
---|
199 | nitems(rtl8812au_bb_regs1), |
---|
200 | rtl8812au_bb_regs1, |
---|
201 | rtl8812au_bb_vals1, |
---|
202 | { 0 }, |
---|
203 | NULL |
---|
204 | } |
---|
205 | }, |
---|
206 | { |
---|
207 | nitems(rtl8812au_bb_regs2), |
---|
208 | rtl8812au_bb_regs2, |
---|
209 | rtl8812au_bb_vals2, |
---|
210 | { 0 }, |
---|
211 | NULL |
---|
212 | } |
---|
213 | }; |
---|
214 | |
---|
215 | |
---|
216 | static const uint32_t rtl8812au_agc_vals0_lna_g0[] = { |
---|
217 | 0xfc000001, 0xfb020001, 0xfa040001, 0xf9060001, 0xf8080001, |
---|
218 | 0xf70a0001, 0xf60c0001, 0xf50e0001, 0xf4100001, 0xf3120001, |
---|
219 | 0xf2140001, 0xf1160001, 0xf0180001, 0xef1a0001, 0xee1c0001, |
---|
220 | 0xed1e0001, 0xec200001, 0xeb220001, 0xea240001, 0xcd260001, |
---|
221 | 0xcc280001, 0xcb2a0001, 0xca2c0001, 0xc92e0001, 0xc8300001, |
---|
222 | 0xa6320001, 0xa5340001, 0xa4360001, 0xa3380001, 0xa23a0001, |
---|
223 | 0x883c0001, 0x873e0001, 0x86400001, 0x85420001, 0x84440001, |
---|
224 | 0x83460001, 0x82480001, 0x814a0001, 0x484c0001, 0x474e0001, |
---|
225 | 0x46500001, 0x45520001, 0x44540001, 0x43560001, 0x42580001, |
---|
226 | 0x415a0001, 0x255c0001, 0x245e0001, 0x23600001, 0x22620001, |
---|
227 | 0x21640001, 0x21660001, 0x21680001, 0x216a0001, 0x216c0001, |
---|
228 | 0x216e0001, 0x21700001, 0x21720001, 0x21740001, 0x21760001, |
---|
229 | 0x21780001, 0x217a0001, 0x217c0001, 0x217e0001 |
---|
230 | }, rtl8812au_agc_vals0_lna_g5[] = { |
---|
231 | 0xf9000001, 0xf8020001, 0xf7040001, 0xf6060001, 0xf5080001, |
---|
232 | 0xf40a0001, 0xf30c0001, 0xf20e0001, 0xf1100001, 0xf0120001, |
---|
233 | 0xef140001, 0xee160001, 0xed180001, 0xec1a0001, 0xeb1c0001, |
---|
234 | 0xea1e0001, 0xcd200001, 0xcc220001, 0xcb240001, 0xca260001, |
---|
235 | 0xc9280001, 0xc82a0001, 0xc72c0001, 0xc62e0001, 0xa5300001, |
---|
236 | 0xa4320001, 0xa3340001, 0xa2360001, 0x88380001, 0x873a0001, |
---|
237 | 0x863c0001, 0x853e0001, 0x84400001, 0x83420001, 0x82440001, |
---|
238 | 0x81460001, 0x48480001, 0x474a0001, 0x464c0001, 0x454e0001, |
---|
239 | 0x44500001, 0x43520001, 0x42540001, 0x41560001, 0x25580001, |
---|
240 | 0x245a0001, 0x235c0001, 0x225e0001, 0x21600001, 0x21620001, |
---|
241 | 0x21640001, 0x21660001, 0x21680001, 0x216a0001, 0x236c0001, |
---|
242 | 0x226e0001, 0x21700001, 0x21720001, 0x21740001, 0x21760001, |
---|
243 | 0x21780001, 0x217a0001, 0x217c0001, 0x217e0001 |
---|
244 | }, rtl8812au_agc_vals0[] = { |
---|
245 | 0xff000001, 0xff020001, 0xff040001, 0xff060001, 0xff080001, |
---|
246 | 0xfe0a0001, 0xfd0c0001, 0xfc0e0001, 0xfb100001, 0xfa120001, |
---|
247 | 0xf9140001, 0xf8160001, 0xf7180001, 0xf61a0001, 0xf51c0001, |
---|
248 | 0xf41e0001, 0xf3200001, 0xf2220001, 0xf1240001, 0xf0260001, |
---|
249 | 0xef280001, 0xee2a0001, 0xed2c0001, 0xec2e0001, 0xeb300001, |
---|
250 | 0xea320001, 0xe9340001, 0xe8360001, 0xe7380001, 0xe63a0001, |
---|
251 | 0xe53c0001, 0xc73e0001, 0xc6400001, 0xc5420001, 0xc4440001, |
---|
252 | 0xc3460001, 0xc2480001, 0xc14a0001, 0xa74c0001, 0xa64e0001, |
---|
253 | 0xa5500001, 0xa4520001, 0xa3540001, 0xa2560001, 0xa1580001, |
---|
254 | 0x675a0001, 0x665c0001, 0x655e0001, 0x64600001, 0x63620001, |
---|
255 | 0x48640001, 0x47660001, 0x46680001, 0x456a0001, 0x446c0001, |
---|
256 | 0x436e0001, 0x42700001, 0x41720001, 0x41740001, 0x41760001, |
---|
257 | 0x41780001, 0x417a0001, 0x417c0001, 0x417e0001 |
---|
258 | }, rtl8812au_agc_vals1_lna_a0[] = { |
---|
259 | 0xfc800001, 0xfb820001, 0xfa840001, 0xf9860001, 0xf8880001, |
---|
260 | 0xf78a0001, 0xf68c0001, 0xf58e0001, 0xf4900001, 0xf3920001, |
---|
261 | 0xf2940001, 0xf1960001, 0xf0980001, 0xef9a0001, 0xee9c0001, |
---|
262 | 0xed9e0001, 0xeca00001, 0xeba20001, 0xeaa40001, 0xe9a60001, |
---|
263 | 0xe8a80001, 0xe7aa0001, 0xe6ac0001, 0xe5ae0001, 0xe4b00001, |
---|
264 | 0xe3b20001, 0xa8b40001, 0xa7b60001, 0xa6b80001, 0xa5ba0001, |
---|
265 | 0xa4bc0001, 0xa3be0001, 0xa2c00001, 0xa1c20001, 0x68c40001, |
---|
266 | 0x67c60001, 0x66c80001, 0x65ca0001, 0x64cc0001, 0x47ce0001, |
---|
267 | 0x46d00001, 0x45d20001, 0x44d40001, 0x43d60001, 0x42d80001, |
---|
268 | 0x08da0001, 0x07dc0001, 0x06de0001, 0x05e00001, 0x04e20001, |
---|
269 | 0x03e40001, 0x02e60001, 0x01e80001, 0x01ea0001, 0x01ec0001, |
---|
270 | 0x01ee0001, 0x01f00001, 0x01f20001, 0x01f40001, 0x01f60001, |
---|
271 | 0x01f80001, 0x01fa0001, 0x01fc0001, 0x01fe0001 |
---|
272 | }, rtl8812au_agc_vals1[] = { |
---|
273 | 0xff800001, 0xff820001, 0xff840001, 0xfe860001, 0xfd880001, |
---|
274 | 0xfc8a0001, 0xfb8c0001, 0xfa8e0001, 0xf9900001, 0xf8920001, |
---|
275 | 0xf7940001, 0xf6960001, 0xf5980001, 0xf49a0001, 0xf39c0001, |
---|
276 | 0xf29e0001, 0xf1a00001, 0xf0a20001, 0xefa40001, 0xeea60001, |
---|
277 | 0xeda80001, 0xecaa0001, 0xebac0001, 0xeaae0001, 0xe9b00001, |
---|
278 | 0xe8b20001, 0xe7b40001, 0xe6b60001, 0xe5b80001, 0xe4ba0001, |
---|
279 | 0xe3bc0001, 0xa8be0001, 0xa7c00001, 0xa6c20001, 0xa5c40001, |
---|
280 | 0xa4c60001, 0xa3c80001, 0xa2ca0001, 0xa1cc0001, 0x68ce0001, |
---|
281 | 0x67d00001, 0x66d20001, 0x65d40001, 0x64d60001, 0x47d80001, |
---|
282 | 0x46da0001, 0x45dc0001, 0x44de0001, 0x43e00001, 0x42e20001, |
---|
283 | 0x08e40001, 0x07e60001, 0x06e80001, 0x05ea0001, 0x04ec0001, |
---|
284 | 0x03ee0001, 0x02f00001, 0x01f20001, 0x01f40001, 0x01f60001, |
---|
285 | 0x01f80001, 0x01fa0001, 0x01fc0001, 0x01fe0001 |
---|
286 | }; |
---|
287 | |
---|
288 | static const struct rtwn_agc_prog rtl8812au_agc[] = { |
---|
289 | /* |
---|
290 | * External 2GHz LNA (type 0). |
---|
291 | */ |
---|
292 | { |
---|
293 | nitems(rtl8812au_agc_vals0_lna_g0), |
---|
294 | rtl8812au_agc_vals0_lna_g0, |
---|
295 | { R12A_COND_GLNA | R12A_COND_TYPE(0x0), 0 }, |
---|
296 | /* |
---|
297 | * External 2GHz LNA (type 5). |
---|
298 | */ |
---|
299 | &(const struct rtwn_agc_prog){ |
---|
300 | nitems(rtl8812au_agc_vals0_lna_g5), |
---|
301 | rtl8812au_agc_vals0_lna_g5, |
---|
302 | { R12A_COND_GLNA | R12A_COND_TYPE(0x5), 0 }, |
---|
303 | /* |
---|
304 | * Others. |
---|
305 | */ |
---|
306 | &(const struct rtwn_agc_prog){ |
---|
307 | nitems(rtl8812au_agc_vals0), |
---|
308 | rtl8812au_agc_vals0, |
---|
309 | { 0 }, |
---|
310 | NULL |
---|
311 | } |
---|
312 | } |
---|
313 | }, |
---|
314 | /* |
---|
315 | * External 5GHz LNA (type 0). |
---|
316 | */ |
---|
317 | { |
---|
318 | nitems(rtl8812au_agc_vals1_lna_a0), |
---|
319 | rtl8812au_agc_vals1_lna_a0, |
---|
320 | { R12A_COND_ALNA | R12A_COND_TYPE(0x0), 0 }, |
---|
321 | /* |
---|
322 | * Others. |
---|
323 | */ |
---|
324 | &(const struct rtwn_agc_prog){ |
---|
325 | nitems(rtl8812au_agc_vals1), |
---|
326 | rtl8812au_agc_vals1, |
---|
327 | { 0 }, |
---|
328 | NULL |
---|
329 | } |
---|
330 | } |
---|
331 | }; |
---|
332 | |
---|
333 | /* |
---|
334 | * RF initialization values. |
---|
335 | */ |
---|
336 | static const uint8_t rtl8812au_rf0_regs0[] = { |
---|
337 | 0x00, 0x18, 0x56, 0x66, 0x1e, 0x89 |
---|
338 | }, rtl8812au_rf0_regs1[] = { |
---|
339 | 0x86 |
---|
340 | }, rtl8812au_rf0_regs2[] = { |
---|
341 | 0x8b |
---|
342 | }, rtl8812au_rf0_regs3[] = { |
---|
343 | 0xb1, 0xb3, 0xb4, 0xba, 0x18, 0xef |
---|
344 | }, rtl8812au_rf0_regs4[] = { |
---|
345 | 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b |
---|
346 | }, rtl8812au_rf0_regs5[] = { |
---|
347 | 0xef, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, |
---|
348 | 0x34 |
---|
349 | }, rtl8812au_rf0_regs6[] = { |
---|
350 | 0xef, 0xef, 0xdf, 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0xef, |
---|
351 | 0x51, 0x52, 0x53, 0x54, 0xef, 0x08, 0x18, 0xef, 0x3a, 0x3b, 0x3c, |
---|
352 | 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, |
---|
353 | 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, |
---|
354 | 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, |
---|
355 | 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, |
---|
356 | 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, |
---|
357 | 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, |
---|
358 | 0x3a, 0x3b, 0x3c, 0xef |
---|
359 | }, rtl8812au_rf0_regs7[] = { |
---|
360 | 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, |
---|
361 | 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, |
---|
362 | 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34 |
---|
363 | }, rtl8812au_rf0_regs8[] = { |
---|
364 | 0xef, 0x18, 0xef, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, |
---|
365 | 0x35, 0xef, 0x18, 0xef, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, |
---|
366 | 0x36, 0x36, 0x36, 0x36, 0x36, 0xef, 0xef, 0x3c, 0x3c, 0x3c, |
---|
367 | }, rtl8812au_rf0_regs9[] = { |
---|
368 | 0xef, 0x18, 0xef, 0xdf, 0x1f |
---|
369 | }, rtl8812au_rf0_regs10[] = { |
---|
370 | 0x61, 0x62, 0x63, 0x64, 0x65 |
---|
371 | }, rtl8812au_rf0_regs11[] = { |
---|
372 | 0x08, 0x1c, 0xb4, 0x18, 0xfe, 0xfe, 0xfe, 0xfe, 0xb4, 0x18 |
---|
373 | }, rtl8812au_rf1_regs0[] = { |
---|
374 | 0x56, 0x66, 0x89 |
---|
375 | }, rtl8812au_rf1_regs3[] = { |
---|
376 | 0xb1, 0xb3, 0xb4, 0xba, 0x18, 0xef |
---|
377 | }; |
---|
378 | |
---|
379 | static const uint32_t rtl8812au_rf0_vals0[] = { |
---|
380 | 0x10000, 0x1712a, 0x51cf2, 0x40000, 0x80000, 0x00080 |
---|
381 | }, rtl8812au_rf0_vals1_lna_g0_g5[] = { |
---|
382 | 0x14b3a |
---|
383 | }, rtl8812au_rf0_vals1[] = { |
---|
384 | 0x14b38 |
---|
385 | }, rtl8812au_rf0_vals2_lna_a0[] = { |
---|
386 | 0x80180 |
---|
387 | }, rtl8812au_rf0_vals2[] = { |
---|
388 | 0x87180 |
---|
389 | }, rtl8812au_rf0_vals3[] = { |
---|
390 | 0x1fc1a, 0xf0810, 0x1a78d, 0x86180, 0x00006, 0x02000 |
---|
391 | }, rtl8812au_rf0_vals4_lna_g0_g5[] = { |
---|
392 | 0x3f218, 0x30a58, 0x2fa58, 0x22590, 0x1fa50, 0x10248, 0x08240 |
---|
393 | }, rtl8812au_rf0_vals4[] = { |
---|
394 | 0x38a58, 0x37a58, 0x2a590, 0x27a50, 0x18248, 0x10240, 0x08240 |
---|
395 | }, rtl8812au_rf0_vals5_pa_g0[] = { |
---|
396 | 0x00100, 0x0a4ee, 0x09076, 0x08073, 0x07070, 0x0606d, 0x0506a, |
---|
397 | 0x04049, 0x03046, 0x02028, 0x01025, 0x00022 |
---|
398 | }, rtl8812au_rf0_vals5[] = { |
---|
399 | 0x00100, 0x0adf4, 0x09df1, 0x08dee, 0x07deb, 0x06de8, 0x05de5, |
---|
400 | 0x04de2, 0x03ce6, 0x024e7, 0x014e4, 0x004e1 |
---|
401 | }, rtl8812au_rf0_vals6[] = { |
---|
402 | 0x00000, 0x020a2, 0x00080, 0x00192, 0x08192, 0x10192, 0x00024, |
---|
403 | 0x08024, 0x10024, 0x18024, 0x00000, 0x00c21, 0x006d9, 0xfc649, |
---|
404 | 0x0017e, 0x00002, 0x08400, 0x1712a, 0x01000, 0x00080, 0x3a02c, |
---|
405 | 0x04000, 0x00400, 0x3202c, 0x10000, 0x000a0, 0x2b064, 0x04000, |
---|
406 | 0x000d8, 0x23070, 0x04000, 0x00468, 0x1b870, 0x10000, 0x00098, |
---|
407 | 0x12085, 0xe4000, 0x00418, 0x0a080, 0xf0000, 0x00418, 0x02080, |
---|
408 | 0x10000, 0x00080, 0x7a02c, 0x04000, 0x00400, 0x7202c, 0x10000, |
---|
409 | 0x000a0, 0x6b064, 0x04000, 0x000d8, 0x63070, 0x04000, 0x00468, |
---|
410 | 0x5b870, 0x10000, 0x00098, 0x52085, 0xe4000, 0x00418, 0x4a080, |
---|
411 | 0xf0000, 0x00418, 0x42080, 0x10000, 0x00080, 0xba02c, 0x04000, |
---|
412 | 0x00400, 0xb202c, 0x10000, 0x000a0, 0xab064, 0x04000, 0x000d8, |
---|
413 | 0xa3070, 0x04000, 0x00468, 0x9b870, 0x10000, 0x00098, 0x92085, |
---|
414 | 0xe4000, 0x00418, 0x8a080, 0xf0000, 0x00418, 0x82080, 0x10000, |
---|
415 | 0x01100 |
---|
416 | }, rtl8812au_rf0_vals7_pa_a0[] = { |
---|
417 | 0x4a0b2, 0x490af, 0x48070, 0x4706d, 0x46050, 0x4504d, 0x4404a, |
---|
418 | 0x43047, 0x4200a, 0x41007, 0x40004, 0x2a0b2, 0x290af, 0x28070, |
---|
419 | 0x2706d, 0x26050, 0x2504d, 0x2404a, 0x23047, 0x2200a, 0x21007, |
---|
420 | 0x20004, 0x0a0b2, 0x090af, 0x08070, 0x0706d, 0x06050, 0x0504d, |
---|
421 | 0x0404a, 0x03047, 0x0200a, 0x01007, 0x00004 |
---|
422 | }, rtl8812au_rf0_vals7_pa_a5[] = { |
---|
423 | 0x4a0b2, 0x490af, 0x48070, 0x4706d, 0x4604d, 0x4504a, 0x44047, |
---|
424 | 0x43044, 0x42007, 0x41004, 0x40001, 0x2a0b4, 0x290b1, 0x28072, |
---|
425 | 0x2706f, 0x2604f, 0x2504c, 0x24049, 0x23046, 0x22009, 0x21006, |
---|
426 | 0x20003, 0x0a0b2, 0x090af, 0x08070, 0x0706d, 0x0604d, 0x0504a, |
---|
427 | 0x04047, 0x03044, 0x02007, 0x01004, 0x00001 |
---|
428 | }, rtl8812au_rf0_vals7[] = { |
---|
429 | 0x4adf5, 0x49df2, 0x48def, 0x47dec, 0x46de9, 0x45de6, 0x44de3, |
---|
430 | 0x438c8, 0x428c5, 0x418c2, 0x408c0, 0x2adf5, 0x29df2, 0x28def, |
---|
431 | 0x27dec, 0x26de9, 0x25de6, 0x24de3, 0x238c8, 0x228c5, 0x218c2, |
---|
432 | 0x208c0, 0x0aff7, 0x09df7, 0x08df4, 0x07df1, 0x06dee, 0x05deb, |
---|
433 | 0x04de8, 0x038cc, 0x028c9, 0x018c6, 0x008c3 |
---|
434 | }, rtl8812au_rf0_vals8_pa_a0_a5[] = { |
---|
435 | 0x00000, 0x1712a, 0x00040, 0x001d4, 0x081d4, 0x101d4, 0x201b4, |
---|
436 | 0x281b4, 0x301b4, 0x401b4, 0x481b4, 0x501b4, 0x00000, 0x1712a, |
---|
437 | 0x00010, 0x04bfb, 0x0cbfb, 0x14bfb, 0x1cbfb, 0x24f4b, 0x2cf4b, |
---|
438 | 0x34f4b, 0x3cf4b, 0x44f4b, 0x4cf4b, 0x54f4b, 0x5cf4b, 0x00000, |
---|
439 | 0x00008, 0x002cc, 0x00522, 0x00902 |
---|
440 | }, rtl8812au_rf0_vals8[] = { |
---|
441 | 0x00000, 0x1712a, 0x00040, 0x00188, 0x08147, 0x10147, 0x201d7, |
---|
442 | 0x281d7, 0x301d7, 0x401d8, 0x481d8, 0x501d8, 0x00000, 0x1712a, |
---|
443 | 0x00010, 0x84eb4, 0x8cc35, 0x94c35, 0x9cc35, 0xa4c35, 0xacc35, |
---|
444 | 0xb4c35, 0xbcc35, 0xc4c34, 0xccc35, 0xd4c35, 0xdcc35, 0x00000, |
---|
445 | 0x00008, 0x002a8, 0x005a2, 0x00880 |
---|
446 | }, rtl8812au_rf0_vals9[] = { |
---|
447 | 0x00000, 0x1712a, 0x00002, 0x00080, 0x00064 |
---|
448 | }, rtl8812au_rf0_vals10_pa_a0[] = { |
---|
449 | 0xfdd43, 0x38f4b, 0x32117, 0x194ac, 0x931d1 |
---|
450 | }, rtl8812au_rf0_vals10_pa_a5[] = { |
---|
451 | 0xfdd43, 0x38f4b, 0x32117, 0x194ac, 0x931d2 |
---|
452 | }, rtl8812au_rf0_vals10[] = { |
---|
453 | 0xe5d53, 0x38fcd, 0x114eb, 0x196ac, 0x911d7 |
---|
454 | }, rtl8812au_rf0_vals11[] = { |
---|
455 | 0x08400, 0x739d2, 0x1e78d, 0x1f12a, 0x0c350, 0x0c350, 0x0c350, |
---|
456 | 0x0c350, 0x1a78d, 0x1712a |
---|
457 | }, rtl8812au_rf1_vals0[] = { |
---|
458 | 0x51cf2, 0x40000, 0x00080 |
---|
459 | }, rtl8812au_rf1_vals3[] = { |
---|
460 | 0x1fc1a, 0xf0810, 0x1a78d, 0x86180, 0x00006, 0x02000 |
---|
461 | }, rtl8812au_rf1_vals6[] = { |
---|
462 | 0x00000, 0x020a2, 0x00080, 0x00192, 0x08192, 0x10192, 0x00024, |
---|
463 | 0x08024, 0x10024, 0x18024, 0x00000, 0x00c21, 0x006d9, 0xfc649, |
---|
464 | 0x0017e, 0x00002, 0x08400, 0x1712a, 0x01000, 0x00080, 0x3a02c, |
---|
465 | 0x04000, 0x00400, 0x3202c, 0x10000, 0x000a0, 0x2b064, 0x04000, |
---|
466 | 0x000d8, 0x23070, 0x04000, 0x00468, 0x1b870, 0x10000, 0x00098, |
---|
467 | 0x12085, 0xe4000, 0x00418, 0x0a080, 0xf0000, 0x00418, 0x02080, |
---|
468 | 0x10000, 0x00080, 0x7a02c, 0x04000, 0x00400, 0x7202c, 0x10000, |
---|
469 | 0x000a0, 0x6b064, 0x04000, 0x000d8, 0x63070, 0x04000, 0x00468, |
---|
470 | 0x5b870, 0x10000, 0x00098, 0x52085, 0xe4000, 0x00418, 0x4a080, |
---|
471 | 0xf0000, 0x00418, 0x42080, 0x10000, 0x00080, 0xba02c, 0x04000, |
---|
472 | 0x00400, 0xb202c, 0x10000, 0x000a0, 0xab064, 0x04000, 0x000d8, |
---|
473 | 0xa3070, 0x04000, 0x00468, 0x9b870, 0x10000, 0x00098, 0x92085, |
---|
474 | 0xe4000, 0x00418, 0x8a080, 0xf0000, 0x00418, 0x82080, 0x10000, |
---|
475 | 0x01100 |
---|
476 | }, rtl8812au_rf1_vals7_pa_a5[] = { |
---|
477 | 0x4a0b1, 0x490ae, 0x4806f, 0x4706c, 0x4604c, 0x45049, 0x44046, |
---|
478 | 0x43043, 0x42006, 0x41003, 0x40000, 0x2a0b3, 0x290b0, 0x28071, |
---|
479 | 0x2706e, 0x2604e, 0x2504b, 0x24048, 0x23045, 0x22008, 0x21005, |
---|
480 | 0x20002, 0x0a0b3, 0x090b0, 0x08070, 0x0706d, 0x0604d, 0x0504a, |
---|
481 | 0x04047, 0x03044, 0x02007, 0x01004, 0x00001 |
---|
482 | }, rtl8812au_rf1_vals8_pa_a0_a5[] = { |
---|
483 | 0x00000, 0x1712a, 0x00040, 0x001c5, 0x081c5, 0x101c5, 0x20174, |
---|
484 | 0x28174, 0x30174, 0x40185, 0x48185, 0x50185, 0x00000, 0x1712a, |
---|
485 | 0x00010, 0x05b8b, 0x0db8b, 0x15b8b, 0x1db8b, 0x262db, 0x2e2db, |
---|
486 | 0x362db, 0x3e2db, 0x4553b, 0x4d53b, 0x5553b, 0x5d53b, 0x00000, |
---|
487 | 0x00008, 0x002dc, 0x00524, 0x00902 |
---|
488 | }, rtl8812au_rf1_vals10_pa_g0_a0[] = { |
---|
489 | 0xeac43, 0x38f47, 0x31157, 0x1c4ac, 0x931d1 |
---|
490 | }, rtl8812au_rf1_vals10_pa_a5[] = { |
---|
491 | 0xeac43, 0x38f47, 0x31157, 0x1c4ac, 0x931d2 |
---|
492 | }; |
---|
493 | |
---|
494 | static const struct rtwn_rf_prog rtl8812au_rf[] = { |
---|
495 | /* RF chain 0. */ |
---|
496 | { |
---|
497 | nitems(rtl8812au_rf0_regs0), |
---|
498 | rtl8812au_rf0_regs0, |
---|
499 | rtl8812au_rf0_vals0, |
---|
500 | { 0 }, |
---|
501 | NULL |
---|
502 | }, |
---|
503 | /* External 2GHz LNA, type 0 or 5. */ |
---|
504 | { |
---|
505 | nitems(rtl8812au_rf0_regs1), |
---|
506 | rtl8812au_rf0_regs1, |
---|
507 | rtl8812au_rf0_vals1_lna_g0_g5, |
---|
508 | { |
---|
509 | R12A_COND_GLNA | R12A_COND_TYPE(0x0), |
---|
510 | R12A_COND_GLNA | R12A_COND_TYPE(0x5), 0 |
---|
511 | }, |
---|
512 | /* Others. */ |
---|
513 | &(const struct rtwn_rf_prog){ |
---|
514 | nitems(rtl8812au_rf0_regs1), |
---|
515 | rtl8812au_rf0_regs1, |
---|
516 | rtl8812au_rf0_vals1, |
---|
517 | { 0 }, |
---|
518 | NULL |
---|
519 | } |
---|
520 | }, |
---|
521 | /* External 5GHz LNA, type 0. */ |
---|
522 | { |
---|
523 | nitems(rtl8812au_rf0_regs2), |
---|
524 | rtl8812au_rf0_regs2, |
---|
525 | rtl8812au_rf0_vals2_lna_a0, |
---|
526 | { R12A_COND_ALNA | R12A_COND_TYPE(0x0), 0 }, |
---|
527 | /* Others. */ |
---|
528 | &(const struct rtwn_rf_prog){ |
---|
529 | nitems(rtl8812au_rf0_regs2), |
---|
530 | rtl8812au_rf0_regs2, |
---|
531 | rtl8812au_rf0_vals2, |
---|
532 | { 0 }, |
---|
533 | NULL |
---|
534 | } |
---|
535 | }, |
---|
536 | { |
---|
537 | nitems(rtl8812au_rf0_regs3), |
---|
538 | rtl8812au_rf0_regs3, |
---|
539 | rtl8812au_rf0_vals3, |
---|
540 | { 0 }, |
---|
541 | NULL |
---|
542 | }, |
---|
543 | /* External 2GHz LNA, type 0 or 5. */ |
---|
544 | { |
---|
545 | nitems(rtl8812au_rf0_regs4), |
---|
546 | rtl8812au_rf0_regs4, |
---|
547 | rtl8812au_rf0_vals4_lna_g0_g5, |
---|
548 | { |
---|
549 | R12A_COND_GLNA | R12A_COND_TYPE(0x0), |
---|
550 | R12A_COND_GLNA | R12A_COND_TYPE(0x5), 0 |
---|
551 | }, |
---|
552 | /* Others */ |
---|
553 | &(const struct rtwn_rf_prog){ |
---|
554 | nitems(rtl8812au_rf0_regs4), |
---|
555 | rtl8812au_rf0_regs4, |
---|
556 | rtl8812au_rf0_vals4, |
---|
557 | { 0 }, |
---|
558 | NULL |
---|
559 | } |
---|
560 | }, |
---|
561 | /* External 2GHz PA, type 0. */ |
---|
562 | { |
---|
563 | nitems(rtl8812au_rf0_regs5), |
---|
564 | rtl8812au_rf0_regs5, |
---|
565 | rtl8812au_rf0_vals5_pa_g0, |
---|
566 | { R12A_COND_GPA | R12A_COND_TYPE(0x0), 0 }, |
---|
567 | /* Others. */ |
---|
568 | &(const struct rtwn_rf_prog){ |
---|
569 | nitems(rtl8812au_rf0_regs5), |
---|
570 | rtl8812au_rf0_regs5, |
---|
571 | rtl8812au_rf0_vals5, |
---|
572 | { 0 }, |
---|
573 | NULL |
---|
574 | } |
---|
575 | }, |
---|
576 | { |
---|
577 | nitems(rtl8812au_rf0_regs6), |
---|
578 | rtl8812au_rf0_regs6, |
---|
579 | rtl8812au_rf0_vals6, |
---|
580 | { 0 }, |
---|
581 | NULL |
---|
582 | }, |
---|
583 | /* External 5GHz PA, type 0. */ |
---|
584 | { |
---|
585 | nitems(rtl8812au_rf0_regs7), |
---|
586 | rtl8812au_rf0_regs7, |
---|
587 | rtl8812au_rf0_vals7_pa_a0, |
---|
588 | { R12A_COND_APA | R12A_COND_TYPE(0x0), 0 }, |
---|
589 | /* External 5GHz PA, type 5. */ |
---|
590 | &(const struct rtwn_rf_prog){ |
---|
591 | nitems(rtl8812au_rf0_regs7), |
---|
592 | rtl8812au_rf0_regs7, |
---|
593 | rtl8812au_rf0_vals7_pa_a5, |
---|
594 | { R12A_COND_APA | R12A_COND_TYPE(0x5), 0 }, |
---|
595 | /* Others. */ |
---|
596 | &(const struct rtwn_rf_prog){ |
---|
597 | nitems(rtl8812au_rf0_regs7), |
---|
598 | rtl8812au_rf0_regs7, |
---|
599 | rtl8812au_rf0_vals7, |
---|
600 | { 0 }, |
---|
601 | NULL |
---|
602 | } |
---|
603 | } |
---|
604 | }, |
---|
605 | /* External 5GHz PA, type 0 or 5. */ |
---|
606 | { |
---|
607 | nitems(rtl8812au_rf0_regs8), |
---|
608 | rtl8812au_rf0_regs8, |
---|
609 | rtl8812au_rf0_vals8_pa_a0_a5, |
---|
610 | { |
---|
611 | R12A_COND_APA | R12A_COND_TYPE(0x0), |
---|
612 | R12A_COND_APA | R12A_COND_TYPE(0x5), 0 |
---|
613 | }, |
---|
614 | /* Others. */ |
---|
615 | &(const struct rtwn_rf_prog){ |
---|
616 | nitems(rtl8812au_rf0_regs8), |
---|
617 | rtl8812au_rf0_regs8, |
---|
618 | rtl8812au_rf0_vals8, |
---|
619 | { 0 }, |
---|
620 | NULL |
---|
621 | } |
---|
622 | }, |
---|
623 | { |
---|
624 | nitems(rtl8812au_rf0_regs9), |
---|
625 | rtl8812au_rf0_regs9, |
---|
626 | rtl8812au_rf0_vals9, |
---|
627 | { 0 }, |
---|
628 | NULL |
---|
629 | }, |
---|
630 | /* External 5GHz PA, type 0. */ |
---|
631 | { |
---|
632 | nitems(rtl8812au_rf0_regs10), |
---|
633 | rtl8812au_rf0_regs10, |
---|
634 | rtl8812au_rf0_vals10_pa_a0, |
---|
635 | { R12A_COND_APA | R12A_COND_TYPE(0x0), 0 }, |
---|
636 | /* External 5GHz PA, type 5. */ |
---|
637 | &(const struct rtwn_rf_prog){ |
---|
638 | nitems(rtl8812au_rf0_regs10), |
---|
639 | rtl8812au_rf0_regs10, |
---|
640 | rtl8812au_rf0_vals10_pa_a5, |
---|
641 | { R12A_COND_APA | R12A_COND_TYPE(0x5), 0 }, |
---|
642 | /* Others. */ |
---|
643 | &(const struct rtwn_rf_prog){ |
---|
644 | nitems(rtl8812au_rf0_regs10), |
---|
645 | rtl8812au_rf0_regs10, |
---|
646 | rtl8812au_rf0_vals10, |
---|
647 | { 0 }, |
---|
648 | NULL |
---|
649 | } |
---|
650 | } |
---|
651 | }, |
---|
652 | { |
---|
653 | nitems(rtl8812au_rf0_regs11), |
---|
654 | rtl8812au_rf0_regs11, |
---|
655 | rtl8812au_rf0_vals11, |
---|
656 | { 0 }, |
---|
657 | NULL |
---|
658 | }, |
---|
659 | { 0, NULL, NULL, { 0 }, NULL }, |
---|
660 | /* RF chain 1. */ |
---|
661 | { |
---|
662 | nitems(rtl8812au_rf1_regs0), |
---|
663 | rtl8812au_rf1_regs0, |
---|
664 | rtl8812au_rf1_vals0, |
---|
665 | { 0 }, |
---|
666 | NULL |
---|
667 | }, |
---|
668 | /* rtl8812au_rf[1] */ |
---|
669 | /* External 2GHz LNA, type 0 or 5. */ |
---|
670 | { |
---|
671 | nitems(rtl8812au_rf0_regs1), |
---|
672 | rtl8812au_rf0_regs1, |
---|
673 | rtl8812au_rf0_vals1_lna_g0_g5, |
---|
674 | { |
---|
675 | R12A_COND_GLNA | R12A_COND_TYPE(0x0), |
---|
676 | R12A_COND_GLNA | R12A_COND_TYPE(0x5), 0 |
---|
677 | }, |
---|
678 | /* Others. */ |
---|
679 | &(const struct rtwn_rf_prog){ |
---|
680 | nitems(rtl8812au_rf0_regs1), |
---|
681 | rtl8812au_rf0_regs1, |
---|
682 | rtl8812au_rf0_vals1, |
---|
683 | { 0 }, |
---|
684 | NULL |
---|
685 | } |
---|
686 | }, |
---|
687 | /* rtl8812au_rf[2] */ |
---|
688 | /* External 5GHz LNA, type 0. */ |
---|
689 | { |
---|
690 | nitems(rtl8812au_rf0_regs2), |
---|
691 | rtl8812au_rf0_regs2, |
---|
692 | rtl8812au_rf0_vals2_lna_a0, |
---|
693 | { R12A_COND_ALNA | R12A_COND_TYPE(0x0), 0 }, |
---|
694 | /* Others. */ |
---|
695 | &(const struct rtwn_rf_prog){ |
---|
696 | nitems(rtl8812au_rf0_regs2), |
---|
697 | rtl8812au_rf0_regs2, |
---|
698 | rtl8812au_rf0_vals2, |
---|
699 | { 0 }, |
---|
700 | NULL |
---|
701 | } |
---|
702 | }, |
---|
703 | { |
---|
704 | nitems(rtl8812au_rf1_regs3), |
---|
705 | rtl8812au_rf1_regs3, |
---|
706 | rtl8812au_rf1_vals3, |
---|
707 | { 0 }, |
---|
708 | NULL |
---|
709 | }, |
---|
710 | /* rtl8812au_rf[4] */ |
---|
711 | /* External 2GHz LNA, type 0 or 5. */ |
---|
712 | { |
---|
713 | nitems(rtl8812au_rf0_regs4), |
---|
714 | rtl8812au_rf0_regs4, |
---|
715 | rtl8812au_rf0_vals4_lna_g0_g5, |
---|
716 | { |
---|
717 | R12A_COND_GLNA | R12A_COND_TYPE(0x0), |
---|
718 | R12A_COND_GLNA | R12A_COND_TYPE(0x5), 0 |
---|
719 | }, |
---|
720 | /* Others */ |
---|
721 | &(const struct rtwn_rf_prog){ |
---|
722 | nitems(rtl8812au_rf0_regs4), |
---|
723 | rtl8812au_rf0_regs4, |
---|
724 | rtl8812au_rf0_vals4, |
---|
725 | { 0 }, |
---|
726 | NULL |
---|
727 | } |
---|
728 | }, |
---|
729 | /* rtl8812au_rf[5] */ |
---|
730 | /* External 2GHz PA, type 0. */ |
---|
731 | { |
---|
732 | nitems(rtl8812au_rf0_regs5), |
---|
733 | rtl8812au_rf0_regs5, |
---|
734 | rtl8812au_rf0_vals5_pa_g0, |
---|
735 | { R12A_COND_GPA | R12A_COND_TYPE(0x0), 0 }, |
---|
736 | /* Others. */ |
---|
737 | &(const struct rtwn_rf_prog){ |
---|
738 | nitems(rtl8812au_rf0_regs5), |
---|
739 | rtl8812au_rf0_regs5, |
---|
740 | rtl8812au_rf0_vals5, |
---|
741 | { 0 }, |
---|
742 | NULL |
---|
743 | } |
---|
744 | }, |
---|
745 | { |
---|
746 | nitems(rtl8812au_rf0_regs6), |
---|
747 | rtl8812au_rf0_regs6, |
---|
748 | rtl8812au_rf1_vals6, |
---|
749 | { 0 }, |
---|
750 | NULL |
---|
751 | }, |
---|
752 | /* External 5GHz PA, type 0. */ |
---|
753 | { |
---|
754 | nitems(rtl8812au_rf0_regs7), |
---|
755 | rtl8812au_rf0_regs7, |
---|
756 | rtl8812au_rf0_vals7_pa_a0, |
---|
757 | { R12A_COND_APA | R12A_COND_TYPE(0x0), 0 }, |
---|
758 | /* External 5GHz PA, type 5. */ |
---|
759 | &(const struct rtwn_rf_prog){ |
---|
760 | nitems(rtl8812au_rf0_regs7), |
---|
761 | rtl8812au_rf0_regs7, |
---|
762 | rtl8812au_rf1_vals7_pa_a5, |
---|
763 | { R12A_COND_APA | R12A_COND_TYPE(0x5), 0 }, |
---|
764 | /* Others. */ |
---|
765 | &(const struct rtwn_rf_prog){ |
---|
766 | nitems(rtl8812au_rf0_regs7), |
---|
767 | rtl8812au_rf0_regs7, |
---|
768 | rtl8812au_rf0_vals7, |
---|
769 | { 0 }, |
---|
770 | NULL |
---|
771 | } |
---|
772 | } |
---|
773 | }, |
---|
774 | /* External 5GHz PA, type 0 or 5. */ |
---|
775 | { |
---|
776 | nitems(rtl8812au_rf0_regs8), |
---|
777 | rtl8812au_rf0_regs8, |
---|
778 | rtl8812au_rf1_vals8_pa_a0_a5, |
---|
779 | { |
---|
780 | R12A_COND_APA | R12A_COND_TYPE(0x0), |
---|
781 | R12A_COND_APA | R12A_COND_TYPE(0x5), 0 |
---|
782 | }, |
---|
783 | /* Others. */ |
---|
784 | &(const struct rtwn_rf_prog){ |
---|
785 | nitems(rtl8812au_rf0_regs8), |
---|
786 | rtl8812au_rf0_regs8, |
---|
787 | rtl8812au_rf0_vals8, |
---|
788 | { 0 }, |
---|
789 | NULL |
---|
790 | } |
---|
791 | }, |
---|
792 | { |
---|
793 | nitems(rtl8812au_rf0_regs9) - 1, |
---|
794 | rtl8812au_rf0_regs9, |
---|
795 | rtl8812au_rf0_vals9, |
---|
796 | { 0 }, |
---|
797 | NULL |
---|
798 | }, |
---|
799 | |
---|
800 | /* External 2GHz or 5GHz PA, type 0. */ |
---|
801 | { |
---|
802 | nitems(rtl8812au_rf0_regs10), |
---|
803 | rtl8812au_rf0_regs10, |
---|
804 | rtl8812au_rf1_vals10_pa_g0_a0, |
---|
805 | { |
---|
806 | R12A_COND_GPA | R12A_COND_TYPE(0x0), |
---|
807 | R12A_COND_APA | R12A_COND_TYPE(0x0), 0 |
---|
808 | }, |
---|
809 | /* External 5GHz PA, type 5. */ |
---|
810 | &(const struct rtwn_rf_prog){ |
---|
811 | nitems(rtl8812au_rf0_regs10), |
---|
812 | rtl8812au_rf0_regs10, |
---|
813 | rtl8812au_rf1_vals10_pa_a5, |
---|
814 | { R12A_COND_APA | R12A_COND_TYPE(0x5), 0 }, |
---|
815 | /* Others. */ |
---|
816 | &(const struct rtwn_rf_prog){ |
---|
817 | nitems(rtl8812au_rf0_regs10), |
---|
818 | rtl8812au_rf0_regs10, |
---|
819 | rtl8812au_rf0_vals10, |
---|
820 | { 0 }, |
---|
821 | NULL |
---|
822 | } |
---|
823 | } |
---|
824 | }, |
---|
825 | { |
---|
826 | 1, |
---|
827 | rtl8812au_rf0_regs11, |
---|
828 | rtl8812au_rf0_vals11, |
---|
829 | { 0 }, |
---|
830 | NULL |
---|
831 | }, |
---|
832 | { 0, NULL, NULL, { 0 }, NULL } |
---|
833 | }; |
---|
834 | |
---|
835 | |
---|
836 | /* |
---|
837 | * Registers to save before IQ calibration. |
---|
838 | */ |
---|
839 | static const uint16_t r12a_iq_bb_regs[] = { |
---|
840 | 0x520, 0x550, 0x808, 0xa04, 0x90c, 0xc00, 0xe00, 0x838, 0x82c |
---|
841 | }; |
---|
842 | |
---|
843 | static const uint16_t r12a_iq_afe_regs[] = { |
---|
844 | 0xc5c, 0xc60, 0xc64, 0xc68, 0xcb0, 0xcb4, 0xe5c, 0xe60, 0xe64, |
---|
845 | 0xe68, 0xeb0, 0xeb4 |
---|
846 | }; |
---|
847 | |
---|
848 | static const uint8_t r12a_iq_rf_regs[] = { |
---|
849 | 0x65, 0x8f, 0x0 |
---|
850 | }; |
---|
851 | |
---|
852 | #endif /* R12A_PRIV_H */ |
---|