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