xref: /freebsd/sys/dev/rtwn/rtl8812a/r12a_priv.h (revision 12bc23415846191d4fc7ccf3e791e90f0c288ccf)
17453645fSAndriy Voskoboinyk /*-
27453645fSAndriy Voskoboinyk  * Copyright (c) 2016 Andriy Voskoboinyk <avos@FreeBSD.org>
37453645fSAndriy Voskoboinyk  * All rights reserved.
47453645fSAndriy Voskoboinyk  *
57453645fSAndriy Voskoboinyk  * Redistribution and use in source and binary forms, with or without
67453645fSAndriy Voskoboinyk  * modification, are permitted provided that the following conditions
77453645fSAndriy Voskoboinyk  * are met:
87453645fSAndriy Voskoboinyk  * 1. Redistributions of source code must retain the above copyright
97453645fSAndriy Voskoboinyk  *    notice, this list of conditions and the following disclaimer.
107453645fSAndriy Voskoboinyk  * 2. Redistributions in binary form must reproduce the above copyright
117453645fSAndriy Voskoboinyk  *    notice, this list of conditions and the following disclaimer in the
127453645fSAndriy Voskoboinyk  *    documentation and/or other materials provided with the distribution.
137453645fSAndriy Voskoboinyk  *
147453645fSAndriy Voskoboinyk  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
157453645fSAndriy Voskoboinyk  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
167453645fSAndriy Voskoboinyk  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
177453645fSAndriy Voskoboinyk  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
187453645fSAndriy Voskoboinyk  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
197453645fSAndriy Voskoboinyk  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
207453645fSAndriy Voskoboinyk  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
217453645fSAndriy Voskoboinyk  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
227453645fSAndriy Voskoboinyk  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
237453645fSAndriy Voskoboinyk  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
247453645fSAndriy Voskoboinyk  * SUCH DAMAGE.
257453645fSAndriy Voskoboinyk  *
267453645fSAndriy Voskoboinyk  * $FreeBSD$
277453645fSAndriy Voskoboinyk  */
287453645fSAndriy Voskoboinyk 
297453645fSAndriy Voskoboinyk #ifndef R12A_PRIV_H
307453645fSAndriy Voskoboinyk #define R12A_PRIV_H
317453645fSAndriy Voskoboinyk 
327453645fSAndriy Voskoboinyk /*
337453645fSAndriy Voskoboinyk  * MAC initialization values.
347453645fSAndriy Voskoboinyk  */
357453645fSAndriy Voskoboinyk #define RTL8812AU_MAC_PROG_START \
367453645fSAndriy Voskoboinyk 	{ 0x010, 0x0c },
377453645fSAndriy Voskoboinyk 
387453645fSAndriy Voskoboinyk #define RTL8812AU_MAC_PROG_END \
397453645fSAndriy Voskoboinyk 	{ 0x025, 0x0f }, { 0x072, 0x00 }, { 0x420, 0x80 }, { 0x428, 0x0a }, \
407453645fSAndriy Voskoboinyk 	{ 0x429, 0x10 }, { 0x430, 0x00 }, { 0x431, 0x00 }, { 0x432, 0x00 }, \
417453645fSAndriy Voskoboinyk 	{ 0x433, 0x01 }, { 0x434, 0x04 }, { 0x435, 0x05 }, { 0x436, 0x07 }, \
427453645fSAndriy Voskoboinyk 	{ 0x437, 0x08 }, { 0x43c, 0x04 }, { 0x43d, 0x05 }, { 0x43e, 0x07 }, \
437453645fSAndriy Voskoboinyk 	{ 0x43f, 0x08 }, { 0x440, 0x5d }, { 0x441, 0x01 }, { 0x442, 0x00 }, \
447453645fSAndriy Voskoboinyk 	{ 0x444, 0x10 }, { 0x445, 0x00 }, { 0x446, 0x00 }, { 0x447, 0x00 }, \
457453645fSAndriy Voskoboinyk 	{ 0x448, 0x00 }, { 0x449, 0xf0 }, { 0x44a, 0x0f }, { 0x44b, 0x3e }, \
467453645fSAndriy Voskoboinyk 	{ 0x44c, 0x10 }, { 0x44d, 0x00 }, { 0x44e, 0x00 }, { 0x44f, 0x00 }, \
477453645fSAndriy Voskoboinyk 	{ 0x450, 0x00 }, { 0x451, 0xf0 }, { 0x452, 0x0f }, { 0x453, 0x00 }, \
487453645fSAndriy Voskoboinyk 	{ 0x45b, 0x80 }, { 0x460, 0x66 }, { 0x461, 0x66 }, { 0x4c8, 0xff }, \
497453645fSAndriy Voskoboinyk 	{ 0x4c9, 0x08 }, { 0x4cc, 0xff }, { 0x4cd, 0xff }, { 0x4ce, 0x01 }, \
507453645fSAndriy Voskoboinyk 	{ 0x500, 0x26 }, { 0x501, 0xa2 }, { 0x502, 0x2f }, { 0x503, 0x00 }, \
517453645fSAndriy Voskoboinyk 	{ 0x504, 0x28 }, { 0x505, 0xa3 }, { 0x506, 0x5e }, { 0x507, 0x00 }, \
527453645fSAndriy Voskoboinyk 	{ 0x508, 0x2b }, { 0x509, 0xa4 }, { 0x50a, 0x5e }, { 0x50b, 0x00 }, \
537453645fSAndriy Voskoboinyk 	{ 0x50c, 0x4f }, { 0x50d, 0xa4 }, { 0x50e, 0x00 }, { 0x50f, 0x00 }, \
547453645fSAndriy Voskoboinyk 	{ 0x512, 0x1c }, { 0x514, 0x0a }, { 0x516, 0x0a }, { 0x525, 0x4f }, \
557453645fSAndriy Voskoboinyk 	{ 0x550, 0x10 }, { 0x551, 0x10 }, { 0x559, 0x02 }, { 0x55c, 0x50 }, \
567453645fSAndriy Voskoboinyk 	{ 0x55d, 0xff }, { 0x604, 0x09 }, { 0x605, 0x30 }, { 0x607, 0x03 }, \
577453645fSAndriy Voskoboinyk 	{ 0x608, 0x0e }, { 0x609, 0x2a }, { 0x620, 0xff }, { 0x621, 0xff }, \
587453645fSAndriy Voskoboinyk 	{ 0x622, 0xff }, { 0x623, 0xff }, { 0x624, 0xff }, { 0x625, 0xff }, \
597453645fSAndriy Voskoboinyk 	{ 0x626, 0xff }, { 0x627, 0xff }, { 0x638, 0x50 }, { 0x63c, 0x0a }, \
607453645fSAndriy Voskoboinyk 	{ 0x63d, 0x0a }, { 0x63e, 0x0e }, { 0x63f, 0x0e }, { 0x640, 0x80 }, \
617453645fSAndriy Voskoboinyk 	{ 0x642, 0x40 }, { 0x643, 0x00 }, { 0x652, 0xc8 }, { 0x66e, 0x05 }, \
627453645fSAndriy Voskoboinyk 	{ 0x700, 0x21 }, { 0x701, 0x43 }, { 0x702, 0x65 }, { 0x703, 0x87 }, \
637453645fSAndriy Voskoboinyk 	{ 0x708, 0x21 }, { 0x709, 0x43 }, { 0x70a, 0x65 }, { 0x70b, 0x87 }, \
647453645fSAndriy Voskoboinyk 	{ 0x718, 0x40 }
657453645fSAndriy Voskoboinyk 
667453645fSAndriy Voskoboinyk static const struct rtwn_mac_prog rtl8812au_mac_no_ext_pa_lna[] = {
677453645fSAndriy Voskoboinyk 	RTL8812AU_MAC_PROG_START
687453645fSAndriy Voskoboinyk 	{ 0x11, 0x66 },
697453645fSAndriy Voskoboinyk 	RTL8812AU_MAC_PROG_END
707453645fSAndriy Voskoboinyk }, rtl8812au_mac[] = {
717453645fSAndriy Voskoboinyk 	RTL8812AU_MAC_PROG_START
727453645fSAndriy Voskoboinyk 	{ 0x11, 0x5a },
737453645fSAndriy Voskoboinyk 	RTL8812AU_MAC_PROG_END
747453645fSAndriy Voskoboinyk };
757453645fSAndriy Voskoboinyk 
767453645fSAndriy Voskoboinyk 
777453645fSAndriy Voskoboinyk /*
787453645fSAndriy Voskoboinyk  * Baseband initialization values.
797453645fSAndriy Voskoboinyk  */
807453645fSAndriy Voskoboinyk #define R12A_COND_GPA		0x01
817453645fSAndriy Voskoboinyk #define R12A_COND_APA		0x02
827453645fSAndriy Voskoboinyk #define R12A_COND_GLNA		0x04
837453645fSAndriy Voskoboinyk #define R12A_COND_ALNA		0x08
847453645fSAndriy Voskoboinyk #define R12A_COND_TYPE(t)	((t) << 4)
857453645fSAndriy Voskoboinyk 
867453645fSAndriy Voskoboinyk static const uint16_t rtl8812au_bb_regs0[] = {
877453645fSAndriy Voskoboinyk 	0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, 0x820, 0x824,
887453645fSAndriy Voskoboinyk 	0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, 0x840, 0x844, 0x848,
897453645fSAndriy Voskoboinyk 	0x84c, 0x850, 0x854, 0x858, 0x85c, 0x860, 0x864, 0x868, 0x86c,
907453645fSAndriy Voskoboinyk 	0x870, 0x874, 0x878, 0x87c, 0x8a0, 0x8a4, 0x8a8, 0x8ac, 0x8b0,
917453645fSAndriy Voskoboinyk 	0x8b4, 0x8b8, 0x8bc, 0x8c0, 0x8c4, 0x8c8, 0x8cc, 0x8d0, 0x8dc,
927453645fSAndriy Voskoboinyk 	0x8d4, 0x8d8, 0x8f8, 0x8fc, 0x900, 0x90c, 0x910, 0x914, 0x918,
937453645fSAndriy Voskoboinyk 	0x91c, 0x920, 0x924, 0x928, 0x92c, 0x930, 0x934, 0x960, 0x964,
947453645fSAndriy Voskoboinyk 	0x968, 0x96c, 0x970, 0x978, 0x97c, 0x980, 0x984, 0x988, 0x990,
957453645fSAndriy Voskoboinyk 	0x994, 0x998, 0x99c, 0x9a0, 0x9a4, 0x9a8, 0x9ac, 0x9b0, 0x9b4,
967453645fSAndriy Voskoboinyk 	0x9b8, 0x9bc, 0x9d0, 0x9d4, 0x9d8, 0x9dc, 0x9e4, 0x9e8, 0xa00,
977453645fSAndriy Voskoboinyk 	0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c, 0xa20, 0xa24,
987453645fSAndriy Voskoboinyk 	0xa28, 0xa2c, 0xa70, 0xa74, 0xa78, 0xa7c, 0xa80, 0xa84, 0xb00,
997453645fSAndriy Voskoboinyk 	0xb04, 0xb08, 0xb0c, 0xb10, 0xb14, 0xb18, 0xb1c, 0xb20, 0xb24,
1007453645fSAndriy Voskoboinyk 	0xb28, 0xb2c, 0xb30, 0xb34, 0xb38, 0xb3c, 0xb40, 0xb44, 0xb48,
1017453645fSAndriy Voskoboinyk 	0xb4c, 0xb50, 0xb54, 0xb58, 0xb5c, 0xc00, 0xc04, 0xc08, 0xc0c,
1027453645fSAndriy Voskoboinyk 	0xc10, 0xc14, 0xc1c, 0xc20, 0xc24, 0xc28, 0xc2c, 0xc30, 0xc34,
1037453645fSAndriy Voskoboinyk 	0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, 0xc54, 0xc58,
1047453645fSAndriy Voskoboinyk 	0xc5c, 0xc60, 0xc64
1057453645fSAndriy Voskoboinyk }, rtl8812au_bb_regs1[] = {
1067453645fSAndriy Voskoboinyk 	0xc68
1077453645fSAndriy Voskoboinyk }, rtl8812au_bb_regs2[] = {
1087453645fSAndriy Voskoboinyk 	0xc6c, 0xc70, 0xc74, 0xc78, 0xc7c, 0xc80, 0xc84, 0xc94, 0xc98,
1097453645fSAndriy Voskoboinyk 	0xc9c, 0xca0, 0xca4, 0xca8, 0xcb0, 0xcb4, 0xcb8, 0xe00, 0xe04,
1107453645fSAndriy Voskoboinyk 	0xe08, 0xe0c, 0xe10, 0xe14, 0xe1c, 0xe20, 0xe24, 0xe28, 0xe2c,
1117453645fSAndriy Voskoboinyk 	0xe30, 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44, 0xe48, 0xe4c, 0xe50,
1127453645fSAndriy Voskoboinyk 	0xe54, 0xe58, 0xe5c, 0xe60, 0xe64, 0xe68, 0xe6c, 0xe70, 0xe74,
1137453645fSAndriy Voskoboinyk 	0xe78, 0xe7c, 0xe80, 0xe84, 0xe94, 0xe98, 0xe9c, 0xea0, 0xea4,
1147453645fSAndriy Voskoboinyk 	0xea8, 0xeb0, 0xeb4, 0xeb8
1157453645fSAndriy Voskoboinyk };
1167453645fSAndriy Voskoboinyk 
1177453645fSAndriy Voskoboinyk static const uint32_t rtl8812au_bb_vals0[] = {
1187453645fSAndriy Voskoboinyk 	0x8020d010, 0x080112e0, 0x0e028233, 0x12131113, 0x20101263,
1197453645fSAndriy Voskoboinyk 	0x020c3d10, 0x03a00385, 0x00000000, 0x00030fe0, 0x00000000,
1207453645fSAndriy Voskoboinyk 	0x002083dd, 0x2eaaeeb8, 0x0037a706, 0x06c89b44, 0x0000095b,
1217453645fSAndriy Voskoboinyk 	0xc0000001, 0x40003cde, 0x6210ff8b, 0x6cfdffb8, 0x28874706,
1227453645fSAndriy Voskoboinyk 	0x0001520c, 0x8060e000, 0x74210168, 0x6929c321, 0x79727432,
1237453645fSAndriy Voskoboinyk 	0x8ca7a314, 0x338c2878, 0x03333333, 0x31602c2e, 0x00003152,
1247453645fSAndriy Voskoboinyk 	0x000fc000, 0x00000013, 0x7f7f7f7f, 0xa202033e, 0x0ff0fa0a,
1257453645fSAndriy Voskoboinyk 	0x00000600, 0x000fc080, 0x6c0057ff, 0x4ca520a3, 0x27f00020,
1267453645fSAndriy Voskoboinyk 	0x00000000, 0x00012d69, 0x08248492, 0x0000b800, 0x00000000,
1277453645fSAndriy Voskoboinyk 	0x940008a0, 0x290b5612, 0x400002c0, 0x00000000, 0x00000701,
1287453645fSAndriy Voskoboinyk 	0x00000000, 0x0000fc00, 0x00000404, 0x1c1028c0, 0x64b11a1c,
1297453645fSAndriy Voskoboinyk 	0xe0767233, 0x055aa500, 0x00000004, 0xfffe0000, 0xfffffffe,
1307453645fSAndriy Voskoboinyk 	0x001fffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1317453645fSAndriy Voskoboinyk 	0x801fffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1327453645fSAndriy Voskoboinyk 	0x00000000, 0x27100000, 0xffff0100, 0xffffff5c, 0xffffffff,
1337453645fSAndriy Voskoboinyk 	0x000000ff, 0x00080080, 0x00000000, 0x00000000, 0x81081008,
1347453645fSAndriy Voskoboinyk 	0x00000000, 0x01081008, 0x01081008, 0x00000000, 0x00000000,
1357453645fSAndriy Voskoboinyk 	0x00000000, 0x00000000, 0x00000003, 0x000002d5, 0x00d047c8,
1367453645fSAndriy Voskoboinyk 	0x01ff000c, 0x8c838300, 0x2e7f000f, 0x9500bb78, 0x11144028,
1377453645fSAndriy Voskoboinyk 	0x00881117, 0x89140f00, 0x1a1b0000, 0x090e1217, 0x00000305,
1387453645fSAndriy Voskoboinyk 	0x00900000, 0x101fff00, 0x00000008, 0x00000900, 0x225b0606,
1397453645fSAndriy Voskoboinyk 	0x218075b2, 0x001f8c80, 0x03100000, 0x0000b000, 0xae0201eb,
1407453645fSAndriy Voskoboinyk 	0x01003207, 0x00009807, 0x01000000, 0x00000002, 0x00000002,
1417453645fSAndriy Voskoboinyk 	0x0000001f, 0x03020100, 0x07060504, 0x0b0a0908, 0x0f0e0d0c,
1427453645fSAndriy Voskoboinyk 	0x13121110, 0x17161514, 0x0000003a, 0x00000000, 0x00000000,
1437453645fSAndriy Voskoboinyk 	0x13000032, 0x48080000, 0x00000000, 0x00000000, 0x00000000,
1447453645fSAndriy Voskoboinyk 	0x00000000, 0x00000007, 0x00042020, 0x80410231, 0x00000000,
1457453645fSAndriy Voskoboinyk 	0x00000100, 0x01000000, 0x40000003, 0x12121212, 0x12121212,
1467453645fSAndriy Voskoboinyk 	0x12121212, 0x12121212, 0x12121212, 0x12121212, 0x12121212,
1477453645fSAndriy Voskoboinyk 	0x12121212, 0x12121212, 0x12121212, 0x12121212, 0x12121212,
1487453645fSAndriy Voskoboinyk 	0x00000020, 0x0008121c, 0x30000c1c, 0x00000058, 0x34344443,
1497453645fSAndriy Voskoboinyk 	0x07003333
1507453645fSAndriy Voskoboinyk }, rtl8812au_bb_vals1_ext_pa_lna[] = {
1517453645fSAndriy Voskoboinyk 	0x59791979
1527453645fSAndriy Voskoboinyk }, rtl8812au_bb_vals1[] = {
1537453645fSAndriy Voskoboinyk 	0x59799979
1547453645fSAndriy Voskoboinyk }, rtl8812au_bb_vals2[] = {
1557453645fSAndriy Voskoboinyk 	0x59795979, 0x19795979, 0x19795979, 0x19791979, 0x19791979,
1567453645fSAndriy Voskoboinyk 	0x19791979, 0x19791979, 0x0100005c, 0x00000000, 0x00000000,
1577453645fSAndriy Voskoboinyk 	0x00000029, 0x08040201, 0x80402010, 0x77547777, 0x00000077,
1587453645fSAndriy Voskoboinyk 	0x00508242, 0x00000007, 0x00042020, 0x80410231, 0x00000000,
1597453645fSAndriy Voskoboinyk 	0x00000100, 0x01000000, 0x40000003, 0x12121212, 0x12121212,
1607453645fSAndriy Voskoboinyk 	0x12121212, 0x12121212, 0x12121212, 0x12121212, 0x12121212,
1617453645fSAndriy Voskoboinyk 	0x12121212, 0x12121212, 0x12121212, 0x12121212, 0x12121212,
1627453645fSAndriy Voskoboinyk 	0x00000020, 0x0008121c, 0x30000c1c, 0x00000058, 0x34344443,
1637453645fSAndriy Voskoboinyk 	0x07003333, 0x59791979, 0x59795979, 0x19795979, 0x19795979,
1647453645fSAndriy Voskoboinyk 	0x19791979, 0x19791979, 0x19791979, 0x19791979, 0x0100005c,
1657453645fSAndriy Voskoboinyk 	0x00000000, 0x00000000, 0x00000029, 0x08040201, 0x80402010,
1667453645fSAndriy Voskoboinyk 	0x77547777, 0x00000077, 0x00508242
1677453645fSAndriy Voskoboinyk };
1687453645fSAndriy Voskoboinyk 
1697453645fSAndriy Voskoboinyk static const struct rtwn_bb_prog rtl8812au_bb[] = {
1707453645fSAndriy Voskoboinyk 	{
1717453645fSAndriy Voskoboinyk 		nitems(rtl8812au_bb_regs0),
1727453645fSAndriy Voskoboinyk 		rtl8812au_bb_regs0,
1737453645fSAndriy Voskoboinyk 		rtl8812au_bb_vals0,
1747453645fSAndriy Voskoboinyk 		{ 0 },
1757453645fSAndriy Voskoboinyk 		NULL
1767453645fSAndriy Voskoboinyk 	},
1777453645fSAndriy Voskoboinyk 	/*
1787453645fSAndriy Voskoboinyk 	 * Devices with:
1797453645fSAndriy Voskoboinyk 	 * * External 2GHz PA, type 0;
1807453645fSAndriy Voskoboinyk 	 * * External 5GHz PA, type 0 or 5;
1817453645fSAndriy Voskoboinyk 	 * * External 2GHz LNA, type 0 or 5;
1827453645fSAndriy Voskoboinyk 	 * * External 5GHz LNA, type 0;
1837453645fSAndriy Voskoboinyk 	 */
1847453645fSAndriy Voskoboinyk 	{
1857453645fSAndriy Voskoboinyk 		nitems(rtl8812au_bb_regs1),
1867453645fSAndriy Voskoboinyk 		rtl8812au_bb_regs1,
1877453645fSAndriy Voskoboinyk 		rtl8812au_bb_vals1_ext_pa_lna,
1887453645fSAndriy Voskoboinyk 		{
1897453645fSAndriy Voskoboinyk 			R12A_COND_GPA | R12A_COND_GLNA |
1907453645fSAndriy Voskoboinyk 			R12A_COND_APA | R12A_COND_ALNA |
1917453645fSAndriy Voskoboinyk 			R12A_COND_TYPE(0x0),
1927453645fSAndriy Voskoboinyk 			R12A_COND_APA | R12A_COND_GLNA |
1937453645fSAndriy Voskoboinyk 			R12A_COND_TYPE(0x5), 0
1947453645fSAndriy Voskoboinyk 		},
1957453645fSAndriy Voskoboinyk 		/*
1967453645fSAndriy Voskoboinyk 		 * Others.
1977453645fSAndriy Voskoboinyk 		 */
1987453645fSAndriy Voskoboinyk 		&(const struct rtwn_bb_prog){
1997453645fSAndriy Voskoboinyk 			nitems(rtl8812au_bb_regs1),
2007453645fSAndriy Voskoboinyk 			rtl8812au_bb_regs1,
2017453645fSAndriy Voskoboinyk 			rtl8812au_bb_vals1,
2027453645fSAndriy Voskoboinyk 			{ 0 },
2037453645fSAndriy Voskoboinyk 			NULL
2047453645fSAndriy Voskoboinyk 		}
2057453645fSAndriy Voskoboinyk 	},
2067453645fSAndriy Voskoboinyk 	{
2077453645fSAndriy Voskoboinyk 		nitems(rtl8812au_bb_regs2),
2087453645fSAndriy Voskoboinyk 		rtl8812au_bb_regs2,
2097453645fSAndriy Voskoboinyk 		rtl8812au_bb_vals2,
2107453645fSAndriy Voskoboinyk 		{ 0 },
2117453645fSAndriy Voskoboinyk 		NULL
2127453645fSAndriy Voskoboinyk 	}
2137453645fSAndriy Voskoboinyk };
2147453645fSAndriy Voskoboinyk 
2157453645fSAndriy Voskoboinyk 
2167453645fSAndriy Voskoboinyk static const uint32_t rtl8812au_agc_vals0_lna_g0[] = {
2177453645fSAndriy Voskoboinyk 	0xfc000001, 0xfb020001, 0xfa040001, 0xf9060001, 0xf8080001,
2187453645fSAndriy Voskoboinyk 	0xf70a0001, 0xf60c0001, 0xf50e0001, 0xf4100001, 0xf3120001,
2197453645fSAndriy Voskoboinyk 	0xf2140001, 0xf1160001, 0xf0180001, 0xef1a0001, 0xee1c0001,
2207453645fSAndriy Voskoboinyk 	0xed1e0001, 0xec200001, 0xeb220001, 0xea240001, 0xcd260001,
2217453645fSAndriy Voskoboinyk 	0xcc280001, 0xcb2a0001, 0xca2c0001, 0xc92e0001, 0xc8300001,
2227453645fSAndriy Voskoboinyk 	0xa6320001, 0xa5340001, 0xa4360001, 0xa3380001, 0xa23a0001,
2237453645fSAndriy Voskoboinyk 	0x883c0001, 0x873e0001, 0x86400001, 0x85420001, 0x84440001,
2247453645fSAndriy Voskoboinyk 	0x83460001, 0x82480001, 0x814a0001, 0x484c0001, 0x474e0001,
2257453645fSAndriy Voskoboinyk 	0x46500001, 0x45520001, 0x44540001, 0x43560001, 0x42580001,
2267453645fSAndriy Voskoboinyk 	0x415a0001, 0x255c0001, 0x245e0001, 0x23600001, 0x22620001,
2277453645fSAndriy Voskoboinyk 	0x21640001, 0x21660001, 0x21680001, 0x216a0001, 0x216c0001,
2287453645fSAndriy Voskoboinyk 	0x216e0001, 0x21700001, 0x21720001, 0x21740001, 0x21760001,
2297453645fSAndriy Voskoboinyk 	0x21780001, 0x217a0001, 0x217c0001, 0x217e0001
2307453645fSAndriy Voskoboinyk }, rtl8812au_agc_vals0_lna_g5[] = {
2317453645fSAndriy Voskoboinyk 	0xf9000001, 0xf8020001, 0xf7040001, 0xf6060001, 0xf5080001,
2327453645fSAndriy Voskoboinyk 	0xf40a0001, 0xf30c0001, 0xf20e0001, 0xf1100001, 0xf0120001,
2337453645fSAndriy Voskoboinyk 	0xef140001, 0xee160001, 0xed180001, 0xec1a0001, 0xeb1c0001,
2347453645fSAndriy Voskoboinyk 	0xea1e0001, 0xcd200001, 0xcc220001, 0xcb240001, 0xca260001,
2357453645fSAndriy Voskoboinyk 	0xc9280001, 0xc82a0001, 0xc72c0001, 0xc62e0001, 0xa5300001,
2367453645fSAndriy Voskoboinyk 	0xa4320001, 0xa3340001, 0xa2360001, 0x88380001, 0x873a0001,
2377453645fSAndriy Voskoboinyk 	0x863c0001, 0x853e0001, 0x84400001, 0x83420001, 0x82440001,
2387453645fSAndriy Voskoboinyk 	0x81460001, 0x48480001, 0x474a0001, 0x464c0001, 0x454e0001,
2397453645fSAndriy Voskoboinyk 	0x44500001, 0x43520001, 0x42540001, 0x41560001, 0x25580001,
2407453645fSAndriy Voskoboinyk 	0x245a0001, 0x235c0001, 0x225e0001, 0x21600001, 0x21620001,
2417453645fSAndriy Voskoboinyk 	0x21640001, 0x21660001, 0x21680001, 0x216a0001, 0x236c0001,
2427453645fSAndriy Voskoboinyk 	0x226e0001, 0x21700001, 0x21720001, 0x21740001, 0x21760001,
2437453645fSAndriy Voskoboinyk 	0x21780001, 0x217a0001, 0x217c0001, 0x217e0001
2447453645fSAndriy Voskoboinyk }, rtl8812au_agc_vals0[] = {
2457453645fSAndriy Voskoboinyk 	0xff000001, 0xff020001, 0xff040001, 0xff060001, 0xff080001,
2467453645fSAndriy Voskoboinyk 	0xfe0a0001, 0xfd0c0001, 0xfc0e0001, 0xfb100001, 0xfa120001,
2477453645fSAndriy Voskoboinyk 	0xf9140001, 0xf8160001, 0xf7180001, 0xf61a0001, 0xf51c0001,
2487453645fSAndriy Voskoboinyk 	0xf41e0001, 0xf3200001, 0xf2220001, 0xf1240001, 0xf0260001,
2497453645fSAndriy Voskoboinyk 	0xef280001, 0xee2a0001, 0xed2c0001, 0xec2e0001, 0xeb300001,
2507453645fSAndriy Voskoboinyk 	0xea320001, 0xe9340001, 0xe8360001, 0xe7380001, 0xe63a0001,
2517453645fSAndriy Voskoboinyk 	0xe53c0001, 0xc73e0001, 0xc6400001, 0xc5420001, 0xc4440001,
2527453645fSAndriy Voskoboinyk 	0xc3460001, 0xc2480001, 0xc14a0001, 0xa74c0001, 0xa64e0001,
2537453645fSAndriy Voskoboinyk 	0xa5500001, 0xa4520001, 0xa3540001, 0xa2560001, 0xa1580001,
2547453645fSAndriy Voskoboinyk 	0x675a0001, 0x665c0001, 0x655e0001, 0x64600001, 0x63620001,
2557453645fSAndriy Voskoboinyk 	0x48640001, 0x47660001, 0x46680001, 0x456a0001, 0x446c0001,
2567453645fSAndriy Voskoboinyk 	0x436e0001, 0x42700001, 0x41720001, 0x41740001, 0x41760001,
2577453645fSAndriy Voskoboinyk 	0x41780001, 0x417a0001, 0x417c0001, 0x417e0001
2587453645fSAndriy Voskoboinyk }, rtl8812au_agc_vals1_lna_a0[] = {
2597453645fSAndriy Voskoboinyk 	0xfc800001, 0xfb820001, 0xfa840001, 0xf9860001, 0xf8880001,
2607453645fSAndriy Voskoboinyk 	0xf78a0001, 0xf68c0001, 0xf58e0001, 0xf4900001, 0xf3920001,
2617453645fSAndriy Voskoboinyk 	0xf2940001, 0xf1960001, 0xf0980001, 0xef9a0001, 0xee9c0001,
2627453645fSAndriy Voskoboinyk 	0xed9e0001, 0xeca00001, 0xeba20001, 0xeaa40001, 0xe9a60001,
2637453645fSAndriy Voskoboinyk 	0xe8a80001, 0xe7aa0001, 0xe6ac0001, 0xe5ae0001, 0xe4b00001,
2647453645fSAndriy Voskoboinyk 	0xe3b20001, 0xa8b40001, 0xa7b60001, 0xa6b80001, 0xa5ba0001,
2657453645fSAndriy Voskoboinyk 	0xa4bc0001, 0xa3be0001, 0xa2c00001, 0xa1c20001, 0x68c40001,
2667453645fSAndriy Voskoboinyk 	0x67c60001, 0x66c80001, 0x65ca0001, 0x64cc0001, 0x47ce0001,
2677453645fSAndriy Voskoboinyk 	0x46d00001, 0x45d20001, 0x44d40001, 0x43d60001, 0x42d80001,
2687453645fSAndriy Voskoboinyk 	0x08da0001, 0x07dc0001, 0x06de0001, 0x05e00001, 0x04e20001,
2697453645fSAndriy Voskoboinyk 	0x03e40001, 0x02e60001, 0x01e80001, 0x01ea0001, 0x01ec0001,
2707453645fSAndriy Voskoboinyk 	0x01ee0001, 0x01f00001, 0x01f20001, 0x01f40001, 0x01f60001,
2717453645fSAndriy Voskoboinyk 	0x01f80001, 0x01fa0001, 0x01fc0001, 0x01fe0001
2727453645fSAndriy Voskoboinyk }, rtl8812au_agc_vals1[] = {
2737453645fSAndriy Voskoboinyk 	0xff800001, 0xff820001, 0xff840001, 0xfe860001, 0xfd880001,
2747453645fSAndriy Voskoboinyk 	0xfc8a0001, 0xfb8c0001, 0xfa8e0001, 0xf9900001, 0xf8920001,
2757453645fSAndriy Voskoboinyk 	0xf7940001, 0xf6960001, 0xf5980001, 0xf49a0001, 0xf39c0001,
2767453645fSAndriy Voskoboinyk 	0xf29e0001, 0xf1a00001, 0xf0a20001, 0xefa40001, 0xeea60001,
2777453645fSAndriy Voskoboinyk 	0xeda80001, 0xecaa0001, 0xebac0001, 0xeaae0001, 0xe9b00001,
2787453645fSAndriy Voskoboinyk 	0xe8b20001, 0xe7b40001, 0xe6b60001, 0xe5b80001, 0xe4ba0001,
2797453645fSAndriy Voskoboinyk 	0xe3bc0001, 0xa8be0001, 0xa7c00001, 0xa6c20001, 0xa5c40001,
2807453645fSAndriy Voskoboinyk 	0xa4c60001, 0xa3c80001, 0xa2ca0001, 0xa1cc0001, 0x68ce0001,
2817453645fSAndriy Voskoboinyk 	0x67d00001, 0x66d20001, 0x65d40001, 0x64d60001, 0x47d80001,
2827453645fSAndriy Voskoboinyk 	0x46da0001, 0x45dc0001, 0x44de0001, 0x43e00001, 0x42e20001,
2837453645fSAndriy Voskoboinyk 	0x08e40001, 0x07e60001, 0x06e80001, 0x05ea0001, 0x04ec0001,
2847453645fSAndriy Voskoboinyk 	0x03ee0001, 0x02f00001, 0x01f20001, 0x01f40001, 0x01f60001,
2857453645fSAndriy Voskoboinyk 	0x01f80001, 0x01fa0001, 0x01fc0001, 0x01fe0001
2867453645fSAndriy Voskoboinyk };
2877453645fSAndriy Voskoboinyk 
2887453645fSAndriy Voskoboinyk static const struct rtwn_agc_prog rtl8812au_agc[] = {
2897453645fSAndriy Voskoboinyk 	/*
2907453645fSAndriy Voskoboinyk 	 * External 2GHz LNA (type 0).
2917453645fSAndriy Voskoboinyk 	 */
2927453645fSAndriy Voskoboinyk 	{
2937453645fSAndriy Voskoboinyk 		nitems(rtl8812au_agc_vals0_lna_g0),
2947453645fSAndriy Voskoboinyk 		rtl8812au_agc_vals0_lna_g0,
2957453645fSAndriy Voskoboinyk 		{ R12A_COND_GLNA | R12A_COND_TYPE(0x0), 0 },
2967453645fSAndriy Voskoboinyk 		/*
2977453645fSAndriy Voskoboinyk 		 * External 2GHz LNA (type 5).
2987453645fSAndriy Voskoboinyk 		 */
2997453645fSAndriy Voskoboinyk 		&(const struct rtwn_agc_prog){
3007453645fSAndriy Voskoboinyk 			nitems(rtl8812au_agc_vals0_lna_g5),
3017453645fSAndriy Voskoboinyk 			rtl8812au_agc_vals0_lna_g5,
3027453645fSAndriy Voskoboinyk 			{ R12A_COND_GLNA | R12A_COND_TYPE(0x5), 0 },
3037453645fSAndriy Voskoboinyk 			/*
3047453645fSAndriy Voskoboinyk 			 * Others.
3057453645fSAndriy Voskoboinyk 			 */
3067453645fSAndriy Voskoboinyk 			&(const struct rtwn_agc_prog){
3077453645fSAndriy Voskoboinyk 				nitems(rtl8812au_agc_vals0),
3087453645fSAndriy Voskoboinyk 				rtl8812au_agc_vals0,
3097453645fSAndriy Voskoboinyk 				{ 0 },
3107453645fSAndriy Voskoboinyk 				NULL
3117453645fSAndriy Voskoboinyk 			}
3127453645fSAndriy Voskoboinyk 		}
3137453645fSAndriy Voskoboinyk 	},
3147453645fSAndriy Voskoboinyk 	/*
3157453645fSAndriy Voskoboinyk 	 * External 5GHz LNA (type 0).
3167453645fSAndriy Voskoboinyk 	 */
3177453645fSAndriy Voskoboinyk 	{
3187453645fSAndriy Voskoboinyk 		nitems(rtl8812au_agc_vals1_lna_a0),
3197453645fSAndriy Voskoboinyk 		rtl8812au_agc_vals1_lna_a0,
3207453645fSAndriy Voskoboinyk 		{ R12A_COND_ALNA | R12A_COND_TYPE(0x0), 0 },
3217453645fSAndriy Voskoboinyk 		/*
3227453645fSAndriy Voskoboinyk 		 * Others.
3237453645fSAndriy Voskoboinyk 		 */
3247453645fSAndriy Voskoboinyk 		&(const struct rtwn_agc_prog){
3257453645fSAndriy Voskoboinyk 			nitems(rtl8812au_agc_vals1),
3267453645fSAndriy Voskoboinyk 			rtl8812au_agc_vals1,
3277453645fSAndriy Voskoboinyk 			{ 0 },
3287453645fSAndriy Voskoboinyk 			NULL
3297453645fSAndriy Voskoboinyk 		}
3307453645fSAndriy Voskoboinyk 	}
3317453645fSAndriy Voskoboinyk };
3327453645fSAndriy Voskoboinyk 
3337453645fSAndriy Voskoboinyk /*
3347453645fSAndriy Voskoboinyk  * RF initialization values.
3357453645fSAndriy Voskoboinyk  */
3367453645fSAndriy Voskoboinyk static const uint8_t rtl8812au_rf0_regs0[] = {
3377453645fSAndriy Voskoboinyk 	0x00, 0x18, 0x56, 0x66, 0x1e, 0x89
3387453645fSAndriy Voskoboinyk }, rtl8812au_rf0_regs1[] = {
3397453645fSAndriy Voskoboinyk 	0x86
3407453645fSAndriy Voskoboinyk }, rtl8812au_rf0_regs2[] = {
3417453645fSAndriy Voskoboinyk 	0x8b
3427453645fSAndriy Voskoboinyk }, rtl8812au_rf0_regs3[] = {
3437453645fSAndriy Voskoboinyk 	0xb1, 0xb3, 0xb4, 0xba,	0x18, 0xef
3447453645fSAndriy Voskoboinyk }, rtl8812au_rf0_regs4[] = {
3457453645fSAndriy Voskoboinyk 	0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b
3467453645fSAndriy Voskoboinyk }, rtl8812au_rf0_regs5[] = {
3477453645fSAndriy Voskoboinyk 	0xef, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
3487453645fSAndriy Voskoboinyk 	0x34
3497453645fSAndriy Voskoboinyk }, rtl8812au_rf0_regs6[] = {
3507453645fSAndriy Voskoboinyk 	0xef, 0xef, 0xdf, 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0xef,
3517453645fSAndriy Voskoboinyk 	0x51, 0x52, 0x53, 0x54, 0xef, 0x08, 0x18, 0xef, 0x3a, 0x3b, 0x3c,
3527453645fSAndriy Voskoboinyk 	0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b,
3537453645fSAndriy Voskoboinyk 	0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a,
3547453645fSAndriy Voskoboinyk 	0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c,
3557453645fSAndriy Voskoboinyk 	0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b,
3567453645fSAndriy Voskoboinyk 	0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a,
3577453645fSAndriy Voskoboinyk 	0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c,
3587453645fSAndriy Voskoboinyk 	0x3a, 0x3b, 0x3c, 0xef
3597453645fSAndriy Voskoboinyk }, rtl8812au_rf0_regs7[] = {
3607453645fSAndriy Voskoboinyk 	0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
3617453645fSAndriy Voskoboinyk 	0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
3627453645fSAndriy Voskoboinyk 	0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34
3637453645fSAndriy Voskoboinyk }, rtl8812au_rf0_regs8[] = {
3647453645fSAndriy Voskoboinyk 	0xef, 0x18, 0xef, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3657453645fSAndriy Voskoboinyk 	0x35, 0xef, 0x18, 0xef, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
3667453645fSAndriy Voskoboinyk 	0x36, 0x36, 0x36, 0x36, 0x36, 0xef, 0xef, 0x3c, 0x3c, 0x3c,
3677453645fSAndriy Voskoboinyk }, rtl8812au_rf0_regs9[] = {
3687453645fSAndriy Voskoboinyk 	0xef, 0x18, 0xef, 0xdf, 0x1f
3697453645fSAndriy Voskoboinyk }, rtl8812au_rf0_regs10[] = {
3707453645fSAndriy Voskoboinyk 	0x61, 0x62, 0x63, 0x64, 0x65
3717453645fSAndriy Voskoboinyk }, rtl8812au_rf0_regs11[] = {
3727453645fSAndriy Voskoboinyk 	0x08, 0x1c, 0xb4, 0x18, 0xfe, 0xfe, 0xfe, 0xfe, 0xb4, 0x18
3737453645fSAndriy Voskoboinyk }, rtl8812au_rf1_regs0[] = {
3747453645fSAndriy Voskoboinyk 	0x56, 0x66, 0x89
3757453645fSAndriy Voskoboinyk }, rtl8812au_rf1_regs3[] = {
3767453645fSAndriy Voskoboinyk 	0xb1, 0xb3, 0xb4, 0xba, 0x18, 0xef
3777453645fSAndriy Voskoboinyk };
3787453645fSAndriy Voskoboinyk 
3797453645fSAndriy Voskoboinyk static const uint32_t rtl8812au_rf0_vals0[] = {
3807453645fSAndriy Voskoboinyk 	0x10000, 0x1712a, 0x51cf2, 0x40000, 0x80000, 0x00080
3817453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals1_lna_g0_g5[] = {
3827453645fSAndriy Voskoboinyk 	0x14b3a
3837453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals1[] = {
3847453645fSAndriy Voskoboinyk 	0x14b38
3857453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals2_lna_a0[] = {
3867453645fSAndriy Voskoboinyk 	0x80180
3877453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals2[] = {
3887453645fSAndriy Voskoboinyk 	0x87180
3897453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals3[] = {
3907453645fSAndriy Voskoboinyk 	0x1fc1a, 0xf0810, 0x1a78d, 0x86180, 0x00006, 0x02000
3917453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals4_lna_g0_g5[] = {
3927453645fSAndriy Voskoboinyk 	0x3f218, 0x30a58, 0x2fa58, 0x22590, 0x1fa50, 0x10248, 0x08240
3937453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals4[] = {
3947453645fSAndriy Voskoboinyk 	0x38a58, 0x37a58, 0x2a590, 0x27a50, 0x18248, 0x10240, 0x08240
3957453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals5_pa_g0[] = {
3967453645fSAndriy Voskoboinyk 	0x00100, 0x0a4ee, 0x09076, 0x08073, 0x07070, 0x0606d, 0x0506a,
3977453645fSAndriy Voskoboinyk 	0x04049, 0x03046, 0x02028, 0x01025, 0x00022
3987453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals5[] = {
3997453645fSAndriy Voskoboinyk 	0x00100, 0x0adf4, 0x09df1, 0x08dee, 0x07deb, 0x06de8, 0x05de5,
4007453645fSAndriy Voskoboinyk 	0x04de2, 0x03ce6, 0x024e7, 0x014e4, 0x004e1
4017453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals6[] = {
4027453645fSAndriy Voskoboinyk 	0x00000, 0x020a2, 0x00080, 0x00192, 0x08192, 0x10192, 0x00024,
4037453645fSAndriy Voskoboinyk 	0x08024, 0x10024, 0x18024, 0x00000, 0x00c21, 0x006d9, 0xfc649,
4047453645fSAndriy Voskoboinyk 	0x0017e, 0x00002, 0x08400, 0x1712a, 0x01000, 0x00080, 0x3a02c,
4057453645fSAndriy Voskoboinyk 	0x04000, 0x00400, 0x3202c, 0x10000, 0x000a0, 0x2b064, 0x04000,
4067453645fSAndriy Voskoboinyk 	0x000d8, 0x23070, 0x04000, 0x00468, 0x1b870, 0x10000, 0x00098,
4077453645fSAndriy Voskoboinyk 	0x12085, 0xe4000, 0x00418, 0x0a080, 0xf0000, 0x00418, 0x02080,
4087453645fSAndriy Voskoboinyk 	0x10000, 0x00080, 0x7a02c, 0x04000, 0x00400, 0x7202c, 0x10000,
4097453645fSAndriy Voskoboinyk 	0x000a0, 0x6b064, 0x04000, 0x000d8, 0x63070, 0x04000, 0x00468,
4107453645fSAndriy Voskoboinyk 	0x5b870, 0x10000, 0x00098, 0x52085, 0xe4000, 0x00418, 0x4a080,
4117453645fSAndriy Voskoboinyk 	0xf0000, 0x00418, 0x42080, 0x10000, 0x00080, 0xba02c, 0x04000,
4127453645fSAndriy Voskoboinyk 	0x00400, 0xb202c, 0x10000, 0x000a0, 0xab064, 0x04000, 0x000d8,
4137453645fSAndriy Voskoboinyk 	0xa3070, 0x04000, 0x00468, 0x9b870, 0x10000, 0x00098, 0x92085,
4147453645fSAndriy Voskoboinyk 	0xe4000, 0x00418, 0x8a080, 0xf0000, 0x00418, 0x82080, 0x10000,
4157453645fSAndriy Voskoboinyk 	0x01100
4167453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals7_pa_a0[] = {
4177453645fSAndriy Voskoboinyk 	0x4a0b2, 0x490af, 0x48070, 0x4706d, 0x46050, 0x4504d, 0x4404a,
4187453645fSAndriy Voskoboinyk 	0x43047, 0x4200a, 0x41007, 0x40004, 0x2a0b2, 0x290af, 0x28070,
4197453645fSAndriy Voskoboinyk 	0x2706d, 0x26050, 0x2504d, 0x2404a, 0x23047, 0x2200a, 0x21007,
4207453645fSAndriy Voskoboinyk 	0x20004, 0x0a0b2, 0x090af, 0x08070, 0x0706d, 0x06050, 0x0504d,
4217453645fSAndriy Voskoboinyk 	0x0404a, 0x03047, 0x0200a, 0x01007, 0x00004
4227453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals7_pa_a5[] = {
4237453645fSAndriy Voskoboinyk 	0x4a0b2, 0x490af, 0x48070, 0x4706d, 0x4604d, 0x4504a, 0x44047,
4247453645fSAndriy Voskoboinyk 	0x43044, 0x42007, 0x41004, 0x40001, 0x2a0b4, 0x290b1, 0x28072,
4257453645fSAndriy Voskoboinyk 	0x2706f, 0x2604f, 0x2504c, 0x24049, 0x23046, 0x22009, 0x21006,
4267453645fSAndriy Voskoboinyk 	0x20003, 0x0a0b2, 0x090af, 0x08070, 0x0706d, 0x0604d, 0x0504a,
4277453645fSAndriy Voskoboinyk 	0x04047, 0x03044, 0x02007, 0x01004, 0x00001
4287453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals7[] = {
4297453645fSAndriy Voskoboinyk 	0x4adf5, 0x49df2, 0x48def, 0x47dec, 0x46de9, 0x45de6, 0x44de3,
4307453645fSAndriy Voskoboinyk 	0x438c8, 0x428c5, 0x418c2, 0x408c0, 0x2adf5, 0x29df2, 0x28def,
4317453645fSAndriy Voskoboinyk 	0x27dec, 0x26de9, 0x25de6, 0x24de3, 0x238c8, 0x228c5, 0x218c2,
4327453645fSAndriy Voskoboinyk 	0x208c0, 0x0aff7, 0x09df7, 0x08df4, 0x07df1, 0x06dee, 0x05deb,
4337453645fSAndriy Voskoboinyk 	0x04de8, 0x038cc, 0x028c9, 0x018c6, 0x008c3
4347453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals8_pa_a0_a5[] = {
4357453645fSAndriy Voskoboinyk 	0x00000, 0x1712a, 0x00040, 0x001d4, 0x081d4, 0x101d4, 0x201b4,
4367453645fSAndriy Voskoboinyk 	0x281b4, 0x301b4, 0x401b4, 0x481b4, 0x501b4, 0x00000, 0x1712a,
4377453645fSAndriy Voskoboinyk 	0x00010, 0x04bfb, 0x0cbfb, 0x14bfb, 0x1cbfb, 0x24f4b, 0x2cf4b,
4387453645fSAndriy Voskoboinyk 	0x34f4b, 0x3cf4b, 0x44f4b, 0x4cf4b, 0x54f4b, 0x5cf4b, 0x00000,
4397453645fSAndriy Voskoboinyk 	0x00008, 0x002cc, 0x00522, 0x00902
4407453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals8[] = {
4417453645fSAndriy Voskoboinyk 	0x00000, 0x1712a, 0x00040, 0x00188, 0x08147, 0x10147, 0x201d7,
4427453645fSAndriy Voskoboinyk 	0x281d7, 0x301d7, 0x401d8, 0x481d8, 0x501d8, 0x00000, 0x1712a,
4437453645fSAndriy Voskoboinyk 	0x00010, 0x84eb4, 0x8cc35, 0x94c35, 0x9cc35, 0xa4c35, 0xacc35,
4447453645fSAndriy Voskoboinyk 	0xb4c35, 0xbcc35, 0xc4c34, 0xccc35, 0xd4c35, 0xdcc35, 0x00000,
4457453645fSAndriy Voskoboinyk 	0x00008, 0x002a8, 0x005a2, 0x00880
4467453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals9[] = {
4477453645fSAndriy Voskoboinyk 	0x00000, 0x1712a, 0x00002, 0x00080, 0x00064
4487453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals10_pa_a0[] = {
4497453645fSAndriy Voskoboinyk 	0xfdd43, 0x38f4b, 0x32117, 0x194ac, 0x931d1
4507453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals10_pa_a5[] = {
4517453645fSAndriy Voskoboinyk 	0xfdd43, 0x38f4b, 0x32117, 0x194ac, 0x931d2
4527453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals10[] = {
4537453645fSAndriy Voskoboinyk 	0xe5d53, 0x38fcd, 0x114eb, 0x196ac, 0x911d7
4547453645fSAndriy Voskoboinyk }, rtl8812au_rf0_vals11[] = {
4557453645fSAndriy Voskoboinyk 	0x08400, 0x739d2, 0x1e78d, 0x1f12a, 0x0c350, 0x0c350, 0x0c350,
4567453645fSAndriy Voskoboinyk 	0x0c350, 0x1a78d, 0x1712a
4577453645fSAndriy Voskoboinyk }, rtl8812au_rf1_vals0[] = {
4587453645fSAndriy Voskoboinyk 	0x51cf2, 0x40000, 0x00080
4597453645fSAndriy Voskoboinyk }, rtl8812au_rf1_vals3[] = {
4607453645fSAndriy Voskoboinyk 	0x1fc1a, 0xf0810, 0x1a78d, 0x86180, 0x00006, 0x02000
4617453645fSAndriy Voskoboinyk }, rtl8812au_rf1_vals6[] = {
4627453645fSAndriy Voskoboinyk 	0x00000, 0x020a2, 0x00080, 0x00192, 0x08192, 0x10192, 0x00024,
4637453645fSAndriy Voskoboinyk 	0x08024, 0x10024, 0x18024, 0x00000, 0x00c21, 0x006d9, 0xfc649,
4647453645fSAndriy Voskoboinyk 	0x0017e, 0x00002, 0x08400, 0x1712a, 0x01000, 0x00080, 0x3a02c,
4657453645fSAndriy Voskoboinyk 	0x04000, 0x00400, 0x3202c, 0x10000, 0x000a0, 0x2b064, 0x04000,
4667453645fSAndriy Voskoboinyk 	0x000d8, 0x23070, 0x04000, 0x00468, 0x1b870, 0x10000, 0x00098,
4677453645fSAndriy Voskoboinyk 	0x12085, 0xe4000, 0x00418, 0x0a080, 0xf0000, 0x00418, 0x02080,
4687453645fSAndriy Voskoboinyk 	0x10000, 0x00080, 0x7a02c, 0x04000, 0x00400, 0x7202c, 0x10000,
4697453645fSAndriy Voskoboinyk 	0x000a0, 0x6b064, 0x04000, 0x000d8, 0x63070, 0x04000, 0x00468,
4707453645fSAndriy Voskoboinyk 	0x5b870, 0x10000, 0x00098, 0x52085, 0xe4000, 0x00418, 0x4a080,
4717453645fSAndriy Voskoboinyk 	0xf0000, 0x00418, 0x42080, 0x10000, 0x00080, 0xba02c, 0x04000,
4727453645fSAndriy Voskoboinyk 	0x00400, 0xb202c, 0x10000, 0x000a0, 0xab064, 0x04000, 0x000d8,
4737453645fSAndriy Voskoboinyk 	0xa3070, 0x04000, 0x00468, 0x9b870, 0x10000, 0x00098, 0x92085,
4747453645fSAndriy Voskoboinyk 	0xe4000, 0x00418, 0x8a080, 0xf0000, 0x00418, 0x82080, 0x10000,
4757453645fSAndriy Voskoboinyk 	0x01100
4767453645fSAndriy Voskoboinyk }, rtl8812au_rf1_vals7_pa_a5[] = {
4777453645fSAndriy Voskoboinyk 	0x4a0b1, 0x490ae, 0x4806f, 0x4706c, 0x4604c, 0x45049, 0x44046,
4787453645fSAndriy Voskoboinyk 	0x43043, 0x42006, 0x41003, 0x40000, 0x2a0b3, 0x290b0, 0x28071,
4797453645fSAndriy Voskoboinyk 	0x2706e, 0x2604e, 0x2504b, 0x24048, 0x23045, 0x22008, 0x21005,
4807453645fSAndriy Voskoboinyk 	0x20002, 0x0a0b3, 0x090b0, 0x08070, 0x0706d, 0x0604d, 0x0504a,
4817453645fSAndriy Voskoboinyk 	0x04047, 0x03044, 0x02007, 0x01004, 0x00001
4827453645fSAndriy Voskoboinyk }, rtl8812au_rf1_vals8_pa_a0_a5[] = {
4837453645fSAndriy Voskoboinyk 	0x00000, 0x1712a, 0x00040, 0x001c5, 0x081c5, 0x101c5, 0x20174,
4847453645fSAndriy Voskoboinyk 	0x28174, 0x30174, 0x40185, 0x48185, 0x50185, 0x00000, 0x1712a,
4857453645fSAndriy Voskoboinyk 	0x00010, 0x05b8b, 0x0db8b, 0x15b8b, 0x1db8b, 0x262db, 0x2e2db,
4867453645fSAndriy Voskoboinyk 	0x362db, 0x3e2db, 0x4553b, 0x4d53b, 0x5553b, 0x5d53b, 0x00000,
4877453645fSAndriy Voskoboinyk 	0x00008, 0x002dc, 0x00524, 0x00902
4887453645fSAndriy Voskoboinyk }, rtl8812au_rf1_vals10_pa_g0_a0[] = {
4897453645fSAndriy Voskoboinyk 	0xeac43, 0x38f47, 0x31157, 0x1c4ac, 0x931d1
4907453645fSAndriy Voskoboinyk }, rtl8812au_rf1_vals10_pa_a5[] = {
4917453645fSAndriy Voskoboinyk 	0xeac43, 0x38f47, 0x31157, 0x1c4ac, 0x931d2
4927453645fSAndriy Voskoboinyk };
4937453645fSAndriy Voskoboinyk 
4947453645fSAndriy Voskoboinyk static const struct rtwn_rf_prog rtl8812au_rf[] = {
4957453645fSAndriy Voskoboinyk 	/* RF chain 0. */
4967453645fSAndriy Voskoboinyk 	{
4977453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs0),
4987453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs0,
4997453645fSAndriy Voskoboinyk 		rtl8812au_rf0_vals0,
5007453645fSAndriy Voskoboinyk 		{ 0 },
5017453645fSAndriy Voskoboinyk 		NULL
5027453645fSAndriy Voskoboinyk 	},
5037453645fSAndriy Voskoboinyk 	/* External 2GHz LNA, type 0 or 5. */
5047453645fSAndriy Voskoboinyk 	{
5057453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs1),
5067453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs1,
5077453645fSAndriy Voskoboinyk 		rtl8812au_rf0_vals1_lna_g0_g5,
5087453645fSAndriy Voskoboinyk 		{
5097453645fSAndriy Voskoboinyk 			R12A_COND_GLNA | R12A_COND_TYPE(0x0),
5107453645fSAndriy Voskoboinyk 			R12A_COND_GLNA | R12A_COND_TYPE(0x5), 0
5117453645fSAndriy Voskoboinyk 		},
5127453645fSAndriy Voskoboinyk 		/* Others. */
5137453645fSAndriy Voskoboinyk 		&(const struct rtwn_rf_prog){
5147453645fSAndriy Voskoboinyk 			nitems(rtl8812au_rf0_regs1),
5157453645fSAndriy Voskoboinyk 			rtl8812au_rf0_regs1,
5167453645fSAndriy Voskoboinyk 			rtl8812au_rf0_vals1,
5177453645fSAndriy Voskoboinyk 			{ 0 },
5187453645fSAndriy Voskoboinyk 			NULL
5197453645fSAndriy Voskoboinyk 		}
5207453645fSAndriy Voskoboinyk 	},
5217453645fSAndriy Voskoboinyk 	/* External 5GHz LNA, type 0. */
5227453645fSAndriy Voskoboinyk 	{
5237453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs2),
5247453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs2,
5257453645fSAndriy Voskoboinyk 		rtl8812au_rf0_vals2_lna_a0,
5267453645fSAndriy Voskoboinyk 		{ R12A_COND_ALNA | R12A_COND_TYPE(0x0), 0 },
5277453645fSAndriy Voskoboinyk 		/* Others. */
5287453645fSAndriy Voskoboinyk 		&(const struct rtwn_rf_prog){
5297453645fSAndriy Voskoboinyk 			nitems(rtl8812au_rf0_regs2),
5307453645fSAndriy Voskoboinyk 			rtl8812au_rf0_regs2,
5317453645fSAndriy Voskoboinyk 			rtl8812au_rf0_vals2,
5327453645fSAndriy Voskoboinyk 			{ 0 },
5337453645fSAndriy Voskoboinyk 			NULL
5347453645fSAndriy Voskoboinyk 		}
5357453645fSAndriy Voskoboinyk 	},
5367453645fSAndriy Voskoboinyk 	{
5377453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs3),
5387453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs3,
5397453645fSAndriy Voskoboinyk 		rtl8812au_rf0_vals3,
5407453645fSAndriy Voskoboinyk 		{ 0 },
5417453645fSAndriy Voskoboinyk 		NULL
5427453645fSAndriy Voskoboinyk 	},
5437453645fSAndriy Voskoboinyk 	/* External 2GHz LNA, type 0 or 5. */
5447453645fSAndriy Voskoboinyk 	{
5457453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs4),
5467453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs4,
5477453645fSAndriy Voskoboinyk 		rtl8812au_rf0_vals4_lna_g0_g5,
5487453645fSAndriy Voskoboinyk 		{
5497453645fSAndriy Voskoboinyk 			R12A_COND_GLNA | R12A_COND_TYPE(0x0),
5507453645fSAndriy Voskoboinyk 			R12A_COND_GLNA | R12A_COND_TYPE(0x5), 0
5517453645fSAndriy Voskoboinyk 		},
5527453645fSAndriy Voskoboinyk 		/* Others */
5537453645fSAndriy Voskoboinyk 		&(const struct rtwn_rf_prog){
5547453645fSAndriy Voskoboinyk 			nitems(rtl8812au_rf0_regs4),
5557453645fSAndriy Voskoboinyk 			rtl8812au_rf0_regs4,
5567453645fSAndriy Voskoboinyk 			rtl8812au_rf0_vals4,
5577453645fSAndriy Voskoboinyk 			{ 0 },
5587453645fSAndriy Voskoboinyk 			NULL
5597453645fSAndriy Voskoboinyk 		}
5607453645fSAndriy Voskoboinyk 	},
5617453645fSAndriy Voskoboinyk 	/* External 2GHz PA, type 0. */
5627453645fSAndriy Voskoboinyk 	{
5637453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs5),
5647453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs5,
5657453645fSAndriy Voskoboinyk 		rtl8812au_rf0_vals5_pa_g0,
5667453645fSAndriy Voskoboinyk 		{ R12A_COND_GPA | R12A_COND_TYPE(0x0), 0 },
5677453645fSAndriy Voskoboinyk 		/* Others. */
5687453645fSAndriy Voskoboinyk 		&(const struct rtwn_rf_prog){
5697453645fSAndriy Voskoboinyk 			nitems(rtl8812au_rf0_regs5),
5707453645fSAndriy Voskoboinyk 			rtl8812au_rf0_regs5,
5717453645fSAndriy Voskoboinyk 			rtl8812au_rf0_vals5,
5727453645fSAndriy Voskoboinyk 			{ 0 },
5737453645fSAndriy Voskoboinyk 			NULL
5747453645fSAndriy Voskoboinyk 		}
5757453645fSAndriy Voskoboinyk 	},
5767453645fSAndriy Voskoboinyk 	{
5777453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs6),
5787453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs6,
5797453645fSAndriy Voskoboinyk 		rtl8812au_rf0_vals6,
5807453645fSAndriy Voskoboinyk 		{ 0 },
5817453645fSAndriy Voskoboinyk 		NULL
5827453645fSAndriy Voskoboinyk 	},
5837453645fSAndriy Voskoboinyk 	/* External 5GHz PA, type 0. */
5847453645fSAndriy Voskoboinyk 	{
5857453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs7),
5867453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs7,
5877453645fSAndriy Voskoboinyk 		rtl8812au_rf0_vals7_pa_a0,
5887453645fSAndriy Voskoboinyk 		{ R12A_COND_APA | R12A_COND_TYPE(0x0), 0 },
5897453645fSAndriy Voskoboinyk 		/* External 5GHz PA, type 5. */
5907453645fSAndriy Voskoboinyk 		&(const struct rtwn_rf_prog){
5917453645fSAndriy Voskoboinyk 			nitems(rtl8812au_rf0_regs7),
5927453645fSAndriy Voskoboinyk 			rtl8812au_rf0_regs7,
5937453645fSAndriy Voskoboinyk 			rtl8812au_rf0_vals7_pa_a5,
5947453645fSAndriy Voskoboinyk 			{ R12A_COND_APA | R12A_COND_TYPE(0x5), 0 },
5957453645fSAndriy Voskoboinyk 			/* Others. */
5967453645fSAndriy Voskoboinyk 			&(const struct rtwn_rf_prog){
5977453645fSAndriy Voskoboinyk 				nitems(rtl8812au_rf0_regs7),
5987453645fSAndriy Voskoboinyk 				rtl8812au_rf0_regs7,
5997453645fSAndriy Voskoboinyk 				rtl8812au_rf0_vals7,
6007453645fSAndriy Voskoboinyk 				{ 0 },
6017453645fSAndriy Voskoboinyk 				NULL
6027453645fSAndriy Voskoboinyk 			}
6037453645fSAndriy Voskoboinyk 		}
6047453645fSAndriy Voskoboinyk 	},
6057453645fSAndriy Voskoboinyk 	/* External 5GHz PA, type 0 or 5. */
6067453645fSAndriy Voskoboinyk 	{
6077453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs8),
6087453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs8,
6097453645fSAndriy Voskoboinyk 		rtl8812au_rf0_vals8_pa_a0_a5,
6107453645fSAndriy Voskoboinyk 		{
6117453645fSAndriy Voskoboinyk 			R12A_COND_APA | R12A_COND_TYPE(0x0),
6127453645fSAndriy Voskoboinyk 			R12A_COND_APA | R12A_COND_TYPE(0x5), 0
6137453645fSAndriy Voskoboinyk 		},
6147453645fSAndriy Voskoboinyk 		/* Others. */
6157453645fSAndriy Voskoboinyk 		&(const struct rtwn_rf_prog){
6167453645fSAndriy Voskoboinyk 			nitems(rtl8812au_rf0_regs8),
6177453645fSAndriy Voskoboinyk 			rtl8812au_rf0_regs8,
6187453645fSAndriy Voskoboinyk 			rtl8812au_rf0_vals8,
6197453645fSAndriy Voskoboinyk 			{ 0 },
6207453645fSAndriy Voskoboinyk 			NULL
6217453645fSAndriy Voskoboinyk 		}
6227453645fSAndriy Voskoboinyk 	},
6237453645fSAndriy Voskoboinyk 	{
6247453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs9),
6257453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs9,
6267453645fSAndriy Voskoboinyk 		rtl8812au_rf0_vals9,
6277453645fSAndriy Voskoboinyk 		{ 0 },
6287453645fSAndriy Voskoboinyk 		NULL
6297453645fSAndriy Voskoboinyk 	},
6307453645fSAndriy Voskoboinyk 	/* External 5GHz PA, type 0. */
6317453645fSAndriy Voskoboinyk 	{
6327453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs10),
6337453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs10,
6347453645fSAndriy Voskoboinyk 		rtl8812au_rf0_vals10_pa_a0,
6357453645fSAndriy Voskoboinyk 		{ R12A_COND_APA | R12A_COND_TYPE(0x0), 0 },
6367453645fSAndriy Voskoboinyk 		/* External 5GHz PA, type 5. */
6377453645fSAndriy Voskoboinyk 		&(const struct rtwn_rf_prog){
6387453645fSAndriy Voskoboinyk 			nitems(rtl8812au_rf0_regs10),
6397453645fSAndriy Voskoboinyk 			rtl8812au_rf0_regs10,
6407453645fSAndriy Voskoboinyk 			rtl8812au_rf0_vals10_pa_a5,
6417453645fSAndriy Voskoboinyk 			{ R12A_COND_APA | R12A_COND_TYPE(0x5), 0 },
6427453645fSAndriy Voskoboinyk 			/* Others. */
6437453645fSAndriy Voskoboinyk 			&(const struct rtwn_rf_prog){
6447453645fSAndriy Voskoboinyk 				nitems(rtl8812au_rf0_regs10),
6457453645fSAndriy Voskoboinyk 				rtl8812au_rf0_regs10,
6467453645fSAndriy Voskoboinyk 				rtl8812au_rf0_vals10,
6477453645fSAndriy Voskoboinyk 				{ 0 },
6487453645fSAndriy Voskoboinyk 				NULL
6497453645fSAndriy Voskoboinyk 			}
6507453645fSAndriy Voskoboinyk 		}
6517453645fSAndriy Voskoboinyk 	},
6527453645fSAndriy Voskoboinyk 	{
6537453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs11),
6547453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs11,
6557453645fSAndriy Voskoboinyk 		rtl8812au_rf0_vals11,
6567453645fSAndriy Voskoboinyk 		{ 0 },
6577453645fSAndriy Voskoboinyk 		NULL
6587453645fSAndriy Voskoboinyk 	},
6597453645fSAndriy Voskoboinyk 	{ 0, NULL, NULL, { 0 },	NULL },
660*12bc2341SKevin Lo 	/* RF chain 1. */
6617453645fSAndriy Voskoboinyk 	{
6627453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf1_regs0),
6637453645fSAndriy Voskoboinyk 		rtl8812au_rf1_regs0,
6647453645fSAndriy Voskoboinyk 		rtl8812au_rf1_vals0,
6657453645fSAndriy Voskoboinyk 		{ 0 },
6667453645fSAndriy Voskoboinyk 		NULL
6677453645fSAndriy Voskoboinyk 	},
6687453645fSAndriy Voskoboinyk 	/* rtl8812au_rf[1] */
6697453645fSAndriy Voskoboinyk 	/* External 2GHz LNA, type 0 or 5. */
6707453645fSAndriy Voskoboinyk 	{
6717453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs1),
6727453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs1,
6737453645fSAndriy Voskoboinyk 		rtl8812au_rf0_vals1_lna_g0_g5,
6747453645fSAndriy Voskoboinyk 		{
6757453645fSAndriy Voskoboinyk 			R12A_COND_GLNA | R12A_COND_TYPE(0x0),
6767453645fSAndriy Voskoboinyk 			R12A_COND_GLNA | R12A_COND_TYPE(0x5), 0
6777453645fSAndriy Voskoboinyk 		},
6787453645fSAndriy Voskoboinyk 		/* Others. */
6797453645fSAndriy Voskoboinyk 		&(const struct rtwn_rf_prog){
6807453645fSAndriy Voskoboinyk 			nitems(rtl8812au_rf0_regs1),
6817453645fSAndriy Voskoboinyk 			rtl8812au_rf0_regs1,
6827453645fSAndriy Voskoboinyk 			rtl8812au_rf0_vals1,
6837453645fSAndriy Voskoboinyk 			{ 0 },
6847453645fSAndriy Voskoboinyk 			NULL
6857453645fSAndriy Voskoboinyk 		}
6867453645fSAndriy Voskoboinyk 	},
6877453645fSAndriy Voskoboinyk 	/* rtl8812au_rf[2] */
6887453645fSAndriy Voskoboinyk 	/* External 5GHz LNA, type 0. */
6897453645fSAndriy Voskoboinyk 	{
6907453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs2),
6917453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs2,
6927453645fSAndriy Voskoboinyk 		rtl8812au_rf0_vals2_lna_a0,
6937453645fSAndriy Voskoboinyk 		{ R12A_COND_ALNA | R12A_COND_TYPE(0x0), 0 },
6947453645fSAndriy Voskoboinyk 		/* Others. */
6957453645fSAndriy Voskoboinyk 		&(const struct rtwn_rf_prog){
6967453645fSAndriy Voskoboinyk 			nitems(rtl8812au_rf0_regs2),
6977453645fSAndriy Voskoboinyk 			rtl8812au_rf0_regs2,
6987453645fSAndriy Voskoboinyk 			rtl8812au_rf0_vals2,
6997453645fSAndriy Voskoboinyk 			{ 0 },
7007453645fSAndriy Voskoboinyk 			NULL
7017453645fSAndriy Voskoboinyk 		}
7027453645fSAndriy Voskoboinyk 	},
7037453645fSAndriy Voskoboinyk 	{
7047453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf1_regs3),
7057453645fSAndriy Voskoboinyk 		rtl8812au_rf1_regs3,
7067453645fSAndriy Voskoboinyk 		rtl8812au_rf1_vals3,
7077453645fSAndriy Voskoboinyk 		{ 0 },
7087453645fSAndriy Voskoboinyk 		NULL
7097453645fSAndriy Voskoboinyk 	},
7107453645fSAndriy Voskoboinyk 	/* rtl8812au_rf[4] */
7117453645fSAndriy Voskoboinyk 	/* External 2GHz LNA, type 0 or 5. */
7127453645fSAndriy Voskoboinyk 	{
7137453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs4),
7147453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs4,
7157453645fSAndriy Voskoboinyk 		rtl8812au_rf0_vals4_lna_g0_g5,
7167453645fSAndriy Voskoboinyk 		{
7177453645fSAndriy Voskoboinyk 			R12A_COND_GLNA | R12A_COND_TYPE(0x0),
7187453645fSAndriy Voskoboinyk 			R12A_COND_GLNA | R12A_COND_TYPE(0x5), 0
7197453645fSAndriy Voskoboinyk 		},
7207453645fSAndriy Voskoboinyk 		/* Others */
7217453645fSAndriy Voskoboinyk 		&(const struct rtwn_rf_prog){
7227453645fSAndriy Voskoboinyk 			nitems(rtl8812au_rf0_regs4),
7237453645fSAndriy Voskoboinyk 			rtl8812au_rf0_regs4,
7247453645fSAndriy Voskoboinyk 			rtl8812au_rf0_vals4,
7257453645fSAndriy Voskoboinyk 			{ 0 },
7267453645fSAndriy Voskoboinyk 			NULL
7277453645fSAndriy Voskoboinyk 		}
7287453645fSAndriy Voskoboinyk 	},
7297453645fSAndriy Voskoboinyk 	/* rtl8812au_rf[5] */
7307453645fSAndriy Voskoboinyk 	/* External 2GHz PA, type 0. */
7317453645fSAndriy Voskoboinyk 	{
7327453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs5),
7337453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs5,
7347453645fSAndriy Voskoboinyk 		rtl8812au_rf0_vals5_pa_g0,
7357453645fSAndriy Voskoboinyk 		{ R12A_COND_GPA | R12A_COND_TYPE(0x0), 0 },
7367453645fSAndriy Voskoboinyk 		/* Others. */
7377453645fSAndriy Voskoboinyk 		&(const struct rtwn_rf_prog){
7387453645fSAndriy Voskoboinyk 			nitems(rtl8812au_rf0_regs5),
7397453645fSAndriy Voskoboinyk 			rtl8812au_rf0_regs5,
7407453645fSAndriy Voskoboinyk 			rtl8812au_rf0_vals5,
7417453645fSAndriy Voskoboinyk 			{ 0 },
7427453645fSAndriy Voskoboinyk 			NULL
7437453645fSAndriy Voskoboinyk 		}
7447453645fSAndriy Voskoboinyk 	},
7457453645fSAndriy Voskoboinyk 	{
7467453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs6),
7477453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs6,
7487453645fSAndriy Voskoboinyk 		rtl8812au_rf1_vals6,
7497453645fSAndriy Voskoboinyk 		{ 0 },
7507453645fSAndriy Voskoboinyk 		NULL
7517453645fSAndriy Voskoboinyk 	},
7527453645fSAndriy Voskoboinyk 	/* External 5GHz PA, type 0. */
7537453645fSAndriy Voskoboinyk 	{
7547453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs7),
7557453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs7,
7567453645fSAndriy Voskoboinyk 		rtl8812au_rf0_vals7_pa_a0,
7577453645fSAndriy Voskoboinyk 		{ R12A_COND_APA | R12A_COND_TYPE(0x0), 0 },
7587453645fSAndriy Voskoboinyk 		/* External 5GHz PA, type 5. */
7597453645fSAndriy Voskoboinyk 		&(const struct rtwn_rf_prog){
7607453645fSAndriy Voskoboinyk 			nitems(rtl8812au_rf0_regs7),
7617453645fSAndriy Voskoboinyk 			rtl8812au_rf0_regs7,
7627453645fSAndriy Voskoboinyk 			rtl8812au_rf1_vals7_pa_a5,
7637453645fSAndriy Voskoboinyk 			{ R12A_COND_APA | R12A_COND_TYPE(0x5), 0 },
7647453645fSAndriy Voskoboinyk 			/* Others. */
7657453645fSAndriy Voskoboinyk 			&(const struct rtwn_rf_prog){
7667453645fSAndriy Voskoboinyk 				nitems(rtl8812au_rf0_regs7),
7677453645fSAndriy Voskoboinyk 				rtl8812au_rf0_regs7,
7687453645fSAndriy Voskoboinyk 				rtl8812au_rf0_vals7,
7697453645fSAndriy Voskoboinyk 				{ 0 },
7707453645fSAndriy Voskoboinyk 				NULL
7717453645fSAndriy Voskoboinyk 			}
7727453645fSAndriy Voskoboinyk 		}
7737453645fSAndriy Voskoboinyk 	},
7747453645fSAndriy Voskoboinyk 	/* External 5GHz PA, type 0 or 5. */
7757453645fSAndriy Voskoboinyk 	{
7767453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs8),
7777453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs8,
7787453645fSAndriy Voskoboinyk 		rtl8812au_rf1_vals8_pa_a0_a5,
7797453645fSAndriy Voskoboinyk 		{
7807453645fSAndriy Voskoboinyk 			R12A_COND_APA | R12A_COND_TYPE(0x0),
7817453645fSAndriy Voskoboinyk 			R12A_COND_APA | R12A_COND_TYPE(0x5), 0
7827453645fSAndriy Voskoboinyk 		},
7837453645fSAndriy Voskoboinyk 		/* Others. */
7847453645fSAndriy Voskoboinyk 		&(const struct rtwn_rf_prog){
7857453645fSAndriy Voskoboinyk 			nitems(rtl8812au_rf0_regs8),
7867453645fSAndriy Voskoboinyk 			rtl8812au_rf0_regs8,
7877453645fSAndriy Voskoboinyk 			rtl8812au_rf0_vals8,
7887453645fSAndriy Voskoboinyk 			{ 0 },
7897453645fSAndriy Voskoboinyk 			NULL
7907453645fSAndriy Voskoboinyk 		}
7917453645fSAndriy Voskoboinyk 	},
7927453645fSAndriy Voskoboinyk 	{
7937453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs9) - 1,
7947453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs9,
7957453645fSAndriy Voskoboinyk 		rtl8812au_rf0_vals9,
7967453645fSAndriy Voskoboinyk 		{ 0 },
7977453645fSAndriy Voskoboinyk 		NULL
7987453645fSAndriy Voskoboinyk 	},
7997453645fSAndriy Voskoboinyk 
8007453645fSAndriy Voskoboinyk 	/* External 2GHz or 5GHz PA, type 0. */
8017453645fSAndriy Voskoboinyk 	{
8027453645fSAndriy Voskoboinyk 		nitems(rtl8812au_rf0_regs10),
8037453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs10,
8047453645fSAndriy Voskoboinyk 		rtl8812au_rf1_vals10_pa_g0_a0,
8057453645fSAndriy Voskoboinyk 		{
8067453645fSAndriy Voskoboinyk 			R12A_COND_GPA | R12A_COND_TYPE(0x0),
8077453645fSAndriy Voskoboinyk 			R12A_COND_APA | R12A_COND_TYPE(0x0), 0
8087453645fSAndriy Voskoboinyk 		},
8097453645fSAndriy Voskoboinyk 		/* External 5GHz PA, type 5. */
8107453645fSAndriy Voskoboinyk 		&(const struct rtwn_rf_prog){
8117453645fSAndriy Voskoboinyk 			nitems(rtl8812au_rf0_regs10),
8127453645fSAndriy Voskoboinyk 			rtl8812au_rf0_regs10,
8137453645fSAndriy Voskoboinyk 			rtl8812au_rf1_vals10_pa_a5,
8147453645fSAndriy Voskoboinyk 			{ R12A_COND_APA | R12A_COND_TYPE(0x5), 0 },
8157453645fSAndriy Voskoboinyk 			/* Others. */
8167453645fSAndriy Voskoboinyk 			&(const struct rtwn_rf_prog){
8177453645fSAndriy Voskoboinyk 				nitems(rtl8812au_rf0_regs10),
8187453645fSAndriy Voskoboinyk 				rtl8812au_rf0_regs10,
8197453645fSAndriy Voskoboinyk 				rtl8812au_rf0_vals10,
8207453645fSAndriy Voskoboinyk 				{ 0 },
8217453645fSAndriy Voskoboinyk 				NULL
8227453645fSAndriy Voskoboinyk 			}
8237453645fSAndriy Voskoboinyk 		}
8247453645fSAndriy Voskoboinyk 	},
8257453645fSAndriy Voskoboinyk 	{
8267453645fSAndriy Voskoboinyk 		1,
8277453645fSAndriy Voskoboinyk 		rtl8812au_rf0_regs11,
8287453645fSAndriy Voskoboinyk 		rtl8812au_rf0_vals11,
8297453645fSAndriy Voskoboinyk 		{ 0 },
8307453645fSAndriy Voskoboinyk 		NULL
8317453645fSAndriy Voskoboinyk 	},
8327453645fSAndriy Voskoboinyk 	{ 0, NULL, NULL, { 0 }, NULL }
8337453645fSAndriy Voskoboinyk };
8347453645fSAndriy Voskoboinyk 
8357453645fSAndriy Voskoboinyk 
8367453645fSAndriy Voskoboinyk /*
8377453645fSAndriy Voskoboinyk  * Registers to save before IQ calibration.
8387453645fSAndriy Voskoboinyk  */
8397453645fSAndriy Voskoboinyk static const uint16_t r12a_iq_bb_regs[] = {
8407453645fSAndriy Voskoboinyk 	0x520, 0x550, 0x808, 0xa04, 0x90c, 0xc00, 0xe00, 0x838, 0x82c
8417453645fSAndriy Voskoboinyk };
8427453645fSAndriy Voskoboinyk 
8437453645fSAndriy Voskoboinyk static const uint16_t r12a_iq_afe_regs[] = {
8447453645fSAndriy Voskoboinyk 	0xc5c, 0xc60, 0xc64, 0xc68, 0xcb0, 0xcb4, 0xe5c, 0xe60, 0xe64,
8457453645fSAndriy Voskoboinyk 	0xe68, 0xeb0, 0xeb4
8467453645fSAndriy Voskoboinyk };
8477453645fSAndriy Voskoboinyk 
8487453645fSAndriy Voskoboinyk static const uint8_t r12a_iq_rf_regs[] = {
8497453645fSAndriy Voskoboinyk 	0x65, 0x8f, 0x0
8507453645fSAndriy Voskoboinyk };
8517453645fSAndriy Voskoboinyk 
8527453645fSAndriy Voskoboinyk #endif	/* R12A_PRIV_H */
853