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