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