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