1*7453645fSAndriy Voskoboinyk /*- 2*7453645fSAndriy Voskoboinyk * Copyright (c) 2016 Andriy Voskoboinyk <avos@FreeBSD.org> 3*7453645fSAndriy Voskoboinyk * All rights reserved. 4*7453645fSAndriy Voskoboinyk * 5*7453645fSAndriy Voskoboinyk * Redistribution and use in source and binary forms, with or without 6*7453645fSAndriy Voskoboinyk * modification, are permitted provided that the following conditions 7*7453645fSAndriy Voskoboinyk * are met: 8*7453645fSAndriy Voskoboinyk * 1. Redistributions of source code must retain the above copyright 9*7453645fSAndriy Voskoboinyk * notice, this list of conditions and the following disclaimer. 10*7453645fSAndriy Voskoboinyk * 2. Redistributions in binary form must reproduce the above copyright 11*7453645fSAndriy Voskoboinyk * notice, this list of conditions and the following disclaimer in the 12*7453645fSAndriy Voskoboinyk * documentation and/or other materials provided with the distribution. 13*7453645fSAndriy Voskoboinyk * 14*7453645fSAndriy Voskoboinyk * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15*7453645fSAndriy Voskoboinyk * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16*7453645fSAndriy Voskoboinyk * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17*7453645fSAndriy Voskoboinyk * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18*7453645fSAndriy Voskoboinyk * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19*7453645fSAndriy Voskoboinyk * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20*7453645fSAndriy Voskoboinyk * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21*7453645fSAndriy Voskoboinyk * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22*7453645fSAndriy Voskoboinyk * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23*7453645fSAndriy Voskoboinyk * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24*7453645fSAndriy Voskoboinyk * SUCH DAMAGE. 25*7453645fSAndriy Voskoboinyk */ 26*7453645fSAndriy Voskoboinyk 27*7453645fSAndriy Voskoboinyk #ifndef R21A_PRIV_H 28*7453645fSAndriy Voskoboinyk #define R21A_PRIV_H 29*7453645fSAndriy Voskoboinyk 30*7453645fSAndriy Voskoboinyk /* 31*7453645fSAndriy Voskoboinyk * MAC initialization values. 32*7453645fSAndriy Voskoboinyk */ 33*7453645fSAndriy Voskoboinyk static const struct rtwn_mac_prog rtl8821au_mac[] = { 34*7453645fSAndriy Voskoboinyk { 0x421, 0x0f }, { 0x428, 0x0a }, { 0x429, 0x10 }, { 0x430, 0x00 }, 35*7453645fSAndriy Voskoboinyk { 0x431, 0x00 }, { 0x432, 0x00 }, { 0x433, 0x01 }, { 0x434, 0x04 }, 36*7453645fSAndriy Voskoboinyk { 0x435, 0x05 }, { 0x436, 0x07 }, { 0x437, 0x08 }, { 0x43c, 0x04 }, 37*7453645fSAndriy Voskoboinyk { 0x43d, 0x05 }, { 0x43e, 0x07 }, { 0x43f, 0x08 }, { 0x440, 0x5d }, 38*7453645fSAndriy Voskoboinyk { 0x441, 0x01 }, { 0x442, 0x00 }, { 0x444, 0x10 }, { 0x445, 0x00 }, 39*7453645fSAndriy Voskoboinyk { 0x446, 0x00 }, { 0x447, 0x00 }, { 0x448, 0x00 }, { 0x449, 0xf0 }, 40*7453645fSAndriy Voskoboinyk { 0x44a, 0x0f }, { 0x44b, 0x3e }, { 0x44c, 0x10 }, { 0x44d, 0x00 }, 41*7453645fSAndriy Voskoboinyk { 0x44e, 0x00 }, { 0x44f, 0x00 }, { 0x450, 0x00 }, { 0x451, 0xf0 }, 42*7453645fSAndriy Voskoboinyk { 0x452, 0x0f }, { 0x453, 0x00 }, { 0x456, 0x5e }, { 0x460, 0x66 }, 43*7453645fSAndriy Voskoboinyk { 0x461, 0x66 }, { 0x4c8, 0x3f }, { 0x4c9, 0xff }, { 0x4cc, 0xff }, 44*7453645fSAndriy Voskoboinyk { 0x4cd, 0xff }, { 0x4ce, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 }, 45*7453645fSAndriy Voskoboinyk { 0x502, 0x2f }, { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 }, 46*7453645fSAndriy Voskoboinyk { 0x506, 0x5e }, { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 }, 47*7453645fSAndriy Voskoboinyk { 0x50a, 0x5e }, { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 }, 48*7453645fSAndriy Voskoboinyk { 0x50e, 0x00 }, { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a }, 49*7453645fSAndriy Voskoboinyk { 0x516, 0x0a }, { 0x525, 0x4f }, { 0x550, 0x10 }, { 0x551, 0x10 }, 50*7453645fSAndriy Voskoboinyk { 0x559, 0x02 }, { 0x55c, 0x50 }, { 0x55d, 0xff }, { 0x605, 0x30 }, 51*7453645fSAndriy Voskoboinyk { 0x607, 0x07 }, { 0x608, 0x0e }, { 0x609, 0x2a }, { 0x620, 0xff }, 52*7453645fSAndriy Voskoboinyk { 0x621, 0xff }, { 0x622, 0xff }, { 0x623, 0xff }, { 0x624, 0xff }, 53*7453645fSAndriy Voskoboinyk { 0x625, 0xff }, { 0x626, 0xff }, { 0x627, 0xff }, { 0x638, 0x50 }, 54*7453645fSAndriy Voskoboinyk { 0x63c, 0x0a }, { 0x63d, 0x0a }, { 0x63e, 0x0e }, { 0x63f, 0x0e }, 55*7453645fSAndriy Voskoboinyk { 0x640, 0x40 }, { 0x642, 0x40 }, { 0x643, 0x00 }, { 0x652, 0xc8 }, 56*7453645fSAndriy Voskoboinyk { 0x66e, 0x05 }, { 0x700, 0x21 }, { 0x701, 0x43 }, { 0x702, 0x65 }, 57*7453645fSAndriy Voskoboinyk { 0x703, 0x87 }, { 0x708, 0x21 }, { 0x709, 0x43 }, { 0x70a, 0x65 }, 58*7453645fSAndriy Voskoboinyk { 0x70b, 0x87 }, { 0x718, 0x40 } 59*7453645fSAndriy Voskoboinyk }; 60*7453645fSAndriy Voskoboinyk 61*7453645fSAndriy Voskoboinyk /* 62*7453645fSAndriy Voskoboinyk * Baseband initialization values. 63*7453645fSAndriy Voskoboinyk */ 64*7453645fSAndriy Voskoboinyk #define R21A_COND_EXT_PA_5G 0x01 65*7453645fSAndriy Voskoboinyk #define R21A_COND_EXT_LNA_5G 0x02 66*7453645fSAndriy Voskoboinyk #define R21A_COND_BOARD_DEF 0x04 67*7453645fSAndriy Voskoboinyk #define R21A_COND_BT 0x08 68*7453645fSAndriy Voskoboinyk 69*7453645fSAndriy Voskoboinyk static const uint16_t rtl8821au_bb_regs[] = { 70*7453645fSAndriy Voskoboinyk 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, 0x820, 0x824, 71*7453645fSAndriy Voskoboinyk 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, 0x840, 0x844, 0x848, 72*7453645fSAndriy Voskoboinyk 0x84c, 0x850, 0x854, 0x858, 0x85c, 0x860, 0x864, 0x868, 0x86c, 73*7453645fSAndriy Voskoboinyk 0x870, 0x874, 0x878, 0x87c, 0x8a0, 0x8a4, 0x8a8, 0x8ac, 0x8b4, 74*7453645fSAndriy Voskoboinyk 0x8b8, 0x8bc, 0x8c0, 0x8c4, 0x8c8, 0x8cc, 0x8d4, 0x8d8, 0x8f8, 75*7453645fSAndriy Voskoboinyk 0x8fc, 0x900, 0x90c, 0x910, 0x914, 0x918, 0x91c, 0x920, 0x924, 76*7453645fSAndriy Voskoboinyk 0x928, 0x92c, 0x930, 0x934, 0x960, 0x964, 0x968, 0x96c, 0x970, 77*7453645fSAndriy Voskoboinyk 0x974, 0x978, 0x97c, 0x980, 0x984, 0x988, 0x990, 0x994, 0x998, 78*7453645fSAndriy Voskoboinyk 0x99c, 0x9a0, 0x9a4, 0x9a8, 0x9ac, 0x9b0, 0x9b4, 0x9b8, 0x9bc, 79*7453645fSAndriy Voskoboinyk 0x9d0, 0x9d4, 0x9d8, 0x9dc, 0x9e0, 0x9e4, 0x9e8, 0xa00, 0xa04, 80*7453645fSAndriy Voskoboinyk 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c, 0xa20, 0xa24, 0xa28, 81*7453645fSAndriy Voskoboinyk 0xa2c, 0xa70, 0xa74, 0xa78, 0xa7c, 0xa80, 0xa84, 0xb00, 0xb04, 82*7453645fSAndriy Voskoboinyk 0xb08, 0xb0c, 0xb10, 0xb14, 0xb18, 0xb1c, 0xb20, 0xb24, 0xb28, 83*7453645fSAndriy Voskoboinyk 0xb2c, 0xb30, 0xb34, 0xb38, 0xb3c, 0xb40, 0xb44, 0xb48, 0xb4c, 84*7453645fSAndriy Voskoboinyk 0xb50, 0xb54, 0xb58, 0xb5c, 0xc00, 0xc04, 0xc08, 0xc0c, 0xc10, 85*7453645fSAndriy Voskoboinyk 0xc14, 0xc1c, 0xc20, 0xc24, 0xc28, 0xc2c, 0xc30, 0xc34, 0xc38, 86*7453645fSAndriy Voskoboinyk 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, 0xc54, 0xc58, 0xc5c, 87*7453645fSAndriy Voskoboinyk 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, 0xc74, 0xc78, 0xc7c, 0xc80, 88*7453645fSAndriy Voskoboinyk 0xc84, 0xc94, 0xc98, 0xc9c, 0xca0, 0xca4, 0xca8, 0xcb0, 0xcb4, 89*7453645fSAndriy Voskoboinyk 0xcb8 90*7453645fSAndriy Voskoboinyk }; 91*7453645fSAndriy Voskoboinyk 92*7453645fSAndriy Voskoboinyk static const uint32_t rtl8821au_bb_vals[] = { 93*7453645fSAndriy Voskoboinyk 0x0020d090, 0x080112e0, 0x0e028211, 0x92131111, 0x20101261, 94*7453645fSAndriy Voskoboinyk 0x020c3d10, 0x03a00385, 0x00000000, 0x00030fe0, 0x00000000, 95*7453645fSAndriy Voskoboinyk 0x002081dd, 0x2aaaeec8, 0x0037a706, 0x06489b44, 0x0000095b, 96*7453645fSAndriy Voskoboinyk 0xc0000001, 0x40003cde, 0x62103f8b, 0x6cfdffb8, 0x28874706, 97*7453645fSAndriy Voskoboinyk 0x0001520c, 0x8060e000, 0x74210168, 0x6929c321, 0x79727432, 98*7453645fSAndriy Voskoboinyk 0x8ca7a314, 0x888c2878, 0x08888888, 0x31612c2e, 0x00000152, 99*7453645fSAndriy Voskoboinyk 0x000fd000, 0x00000013, 0x7f7f7f7f, 0xa2000338, 0x0ff0fa0a, 100*7453645fSAndriy Voskoboinyk 0x000fc080, 0x6c10d7ff, 0x0ca52090, 0x1bf00020, 0x00000000, 101*7453645fSAndriy Voskoboinyk 0x00013169, 0x08248492, 0x940008a0, 0x290b5612, 0x400002c0, 102*7453645fSAndriy Voskoboinyk 0x00000000, 0x00000700, 0x00000000, 0x0000fc00, 0x00000404, 103*7453645fSAndriy Voskoboinyk 0x1c1028c0, 0x64b11a1c, 0xe0767233, 0x055aa500, 0x00000004, 104*7453645fSAndriy Voskoboinyk 0xfffe0000, 0xfffffffe, 0x001fffff, 0x00000000, 0x00000000, 105*7453645fSAndriy Voskoboinyk 0x00000000, 0x00000000, 0x801fffff, 0x000003ff, 0x00000000, 106*7453645fSAndriy Voskoboinyk 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x27100000, 107*7453645fSAndriy Voskoboinyk 0xffff0100, 0xffffff5c, 0xffffffff, 0x000000ff, 0x00480080, 108*7453645fSAndriy Voskoboinyk 0x00000000, 0x00000000, 0x81081008, 0x01081008, 0x01081008, 109*7453645fSAndriy Voskoboinyk 0x01081008, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 110*7453645fSAndriy Voskoboinyk 0x00005d00, 0x00000003, 0x00000001, 0x00d047c8, 0x01ff800c, 111*7453645fSAndriy Voskoboinyk 0x8c8a8300, 0x2e68000f, 0x9500bb78, 0x11144028, 0x00881117, 112*7453645fSAndriy Voskoboinyk 0x89140f00, 0x1a1b0000, 0x090e1317, 0x00000204, 0x00900000, 113*7453645fSAndriy Voskoboinyk 0x101fff00, 0x00000008, 0x00000900, 0x225b0606, 0x21805490, 114*7453645fSAndriy Voskoboinyk 0x001f0000, 0x03100040, 0x0000b000, 0xae0201eb, 0x01003207, 115*7453645fSAndriy Voskoboinyk 0x00009807, 0x01000000, 0x00000002, 0x00000002, 0x0000001f, 116*7453645fSAndriy Voskoboinyk 0x03020100, 0x07060504, 0x0b0a0908, 0x0f0e0d0c, 0x13121110, 117*7453645fSAndriy Voskoboinyk 0x17161514, 0x0000003a, 0x00000000, 0x00000000, 0x13000032, 118*7453645fSAndriy Voskoboinyk 0x48080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 119*7453645fSAndriy Voskoboinyk 0x00000007, 0x00042020, 0x80410231, 0x00000000, 0x00000100, 120*7453645fSAndriy Voskoboinyk 0x01000000, 0x40000003, 0x2c2c2c2c, 0x30303030, 0x30303030, 121*7453645fSAndriy Voskoboinyk 0x2c2c2c2c, 0x2c2c2c2c, 0x2c2c2c2c, 0x2c2c2c2c, 0x2a2a2a2a, 122*7453645fSAndriy Voskoboinyk 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000020, 123*7453645fSAndriy Voskoboinyk 0x001c1208, 0x30000c1c, 0x00000058, 0x34344443, 0x07003333, 124*7453645fSAndriy Voskoboinyk 0x19791979, 0x19791979, 0x19791979, 0x19791979, 0x19791979, 125*7453645fSAndriy Voskoboinyk 0x19791979, 0x19791979, 0x19791979, 0x0100005c, 0x00000000, 126*7453645fSAndriy Voskoboinyk 0x00000000, 0x00000029, 0x08040201, 0x80402010, 0x77775747, 127*7453645fSAndriy Voskoboinyk 0x10000077, 0x00508240 128*7453645fSAndriy Voskoboinyk }; 129*7453645fSAndriy Voskoboinyk 130*7453645fSAndriy Voskoboinyk static const struct rtwn_bb_prog rtl8821au_bb[] = { 131*7453645fSAndriy Voskoboinyk { 132*7453645fSAndriy Voskoboinyk nitems(rtl8821au_bb_regs), 133*7453645fSAndriy Voskoboinyk rtl8821au_bb_regs, 134*7453645fSAndriy Voskoboinyk rtl8821au_bb_vals, 135*7453645fSAndriy Voskoboinyk { 0 }, 136*7453645fSAndriy Voskoboinyk NULL 137*7453645fSAndriy Voskoboinyk } 138*7453645fSAndriy Voskoboinyk }; 139*7453645fSAndriy Voskoboinyk 140*7453645fSAndriy Voskoboinyk static const uint32_t rtl8821au_agc_vals0[] = { 141*7453645fSAndriy Voskoboinyk 0xbf000001, 0xbf020001, 0xbf040001, 0xbf060001, 0xbe080001, 142*7453645fSAndriy Voskoboinyk 0xbd0a0001, 0xbc0c0001, 0xba0e0001, 0xb9100001, 0xb8120001, 143*7453645fSAndriy Voskoboinyk 0xb7140001, 0xb6160001, 0xb5180001, 0xb41a0001, 0xb31c0001, 144*7453645fSAndriy Voskoboinyk 0xb21e0001, 0xb1200001, 0xb0220001, 0xaf240001, 0xae260001, 145*7453645fSAndriy Voskoboinyk 0xad280001, 0xac2a0001, 0xab2c0001, 0xaa2e0001, 0xa9300001, 146*7453645fSAndriy Voskoboinyk 0xa8320001, 0xa7340001, 0xa6360001, 0xa5380001, 0xa43a0001, 147*7453645fSAndriy Voskoboinyk 0x683c0001, 0x673e0001, 0x66400001, 0x65420001, 0x64440001, 148*7453645fSAndriy Voskoboinyk 0x63460001, 0x62480001, 0x614a0001, 0x474c0001, 0x464e0001, 149*7453645fSAndriy Voskoboinyk 0x45500001, 0x44520001, 0x43540001, 0x42560001, 0x41580001, 150*7453645fSAndriy Voskoboinyk 0x285a0001, 0x275c0001, 0x265e0001, 0x25600001, 0x24620001, 151*7453645fSAndriy Voskoboinyk 0x0a640001, 0x09660001, 0x08680001, 0x076a0001, 0x066c0001, 152*7453645fSAndriy Voskoboinyk 0x056e0001, 0x04700001, 0x03720001, 0x02740001, 0x01760001, 153*7453645fSAndriy Voskoboinyk 0x01780001, 0x017a0001, 0x017c0001, 0x017e0001 154*7453645fSAndriy Voskoboinyk }, rtl8821au_agc_vals1_pa_lna_5g[] = { 155*7453645fSAndriy Voskoboinyk 0xfb000101, 0xfa020101, 0xf9040101, 0xf8060101, 0xf7080101, 156*7453645fSAndriy Voskoboinyk 0xf60a0101, 0xf50c0101, 0xf40e0101, 0xf3100101, 0xf2120101, 157*7453645fSAndriy Voskoboinyk 0xf1140101, 0xf0160101, 0xef180101, 0xee1a0101, 0xed1c0101, 158*7453645fSAndriy Voskoboinyk 0xec1e0101, 0xeb200101, 0xea220101, 0xe9240101, 0xe8260101, 159*7453645fSAndriy Voskoboinyk 0xe7280101, 0xe62a0101, 0xe52c0101, 0xe42e0101, 0xe3300101, 160*7453645fSAndriy Voskoboinyk 0xa5320101, 0xa4340101, 0xa3360101, 0x87380101, 0x863a0101, 161*7453645fSAndriy Voskoboinyk 0x853c0101, 0x843e0101, 0x69400101, 0x68420101, 0x67440101, 162*7453645fSAndriy Voskoboinyk 0x66460101, 0x49480101, 0x484a0101, 0x474c0101, 0x2a4e0101, 163*7453645fSAndriy Voskoboinyk 0x29500101, 0x28520101, 0x27540101, 0x26560101, 0x25580101, 164*7453645fSAndriy Voskoboinyk 0x245a0101, 0x235c0101, 0x055e0101, 0x04600101, 0x03620101, 165*7453645fSAndriy Voskoboinyk 0x02640101, 0x01660101, 0x01680101, 0x016a0101, 0x016c0101, 166*7453645fSAndriy Voskoboinyk 0x016e0101, 0x01700101, 0x01720101 167*7453645fSAndriy Voskoboinyk }, rtl8821au_agc_vals1[] = { 168*7453645fSAndriy Voskoboinyk 0xff000101, 0xff020101, 0xfe040101, 0xfd060101, 0xfc080101, 169*7453645fSAndriy Voskoboinyk 0xfd0a0101, 0xfc0c0101, 0xfb0e0101, 0xfa100101, 0xf9120101, 170*7453645fSAndriy Voskoboinyk 0xf8140101, 0xf7160101, 0xf6180101, 0xf51a0101, 0xf41c0101, 171*7453645fSAndriy Voskoboinyk 0xf31e0101, 0xf2200101, 0xf1220101, 0xf0240101, 0xef260101, 172*7453645fSAndriy Voskoboinyk 0xee280101, 0xed2a0101, 0xec2c0101, 0xeb2e0101, 0xea300101, 173*7453645fSAndriy Voskoboinyk 0xe9320101, 0xe8340101, 0xe7360101, 0xe6380101, 0xe53a0101, 174*7453645fSAndriy Voskoboinyk 0xe43c0101, 0xe33e0101, 0xa5400101, 0xa4420101, 0xa3440101, 175*7453645fSAndriy Voskoboinyk 0x87460101, 0x86480101, 0x854a0101, 0x844c0101, 0x694e0101, 176*7453645fSAndriy Voskoboinyk 0x68500101, 0x67520101, 0x66540101, 0x49560101, 0x48580101, 177*7453645fSAndriy Voskoboinyk 0x475a0101, 0x2a5c0101, 0x295e0101, 0x28600101, 0x27620101, 178*7453645fSAndriy Voskoboinyk 0x26640101, 0x25660101, 0x24680101, 0x236a0101, 0x056c0101, 179*7453645fSAndriy Voskoboinyk 0x046e0101, 0x03700101, 0x02720101 180*7453645fSAndriy Voskoboinyk }, rtl8821au_agc_vals2[] = { 181*7453645fSAndriy Voskoboinyk 0x01740101, 0x01760101, 0x01780101, 0x017a0101, 0x017c0101, 182*7453645fSAndriy Voskoboinyk 0x017e0101 183*7453645fSAndriy Voskoboinyk }; 184*7453645fSAndriy Voskoboinyk 185*7453645fSAndriy Voskoboinyk static const struct rtwn_agc_prog rtl8821au_agc[] = { 186*7453645fSAndriy Voskoboinyk { 187*7453645fSAndriy Voskoboinyk nitems(rtl8821au_agc_vals0), 188*7453645fSAndriy Voskoboinyk rtl8821au_agc_vals0, 189*7453645fSAndriy Voskoboinyk { 0 }, 190*7453645fSAndriy Voskoboinyk NULL 191*7453645fSAndriy Voskoboinyk }, 192*7453645fSAndriy Voskoboinyk /* 193*7453645fSAndriy Voskoboinyk * For devices with external 5GHz PA / LNA. 194*7453645fSAndriy Voskoboinyk */ 195*7453645fSAndriy Voskoboinyk { 196*7453645fSAndriy Voskoboinyk nitems(rtl8821au_agc_vals1_pa_lna_5g), 197*7453645fSAndriy Voskoboinyk rtl8821au_agc_vals1_pa_lna_5g, 198*7453645fSAndriy Voskoboinyk { R21A_COND_EXT_PA_5G | R21A_COND_EXT_LNA_5G, 0 }, 199*7453645fSAndriy Voskoboinyk /* 200*7453645fSAndriy Voskoboinyk * Others. 201*7453645fSAndriy Voskoboinyk */ 202*7453645fSAndriy Voskoboinyk &(const struct rtwn_agc_prog){ 203*7453645fSAndriy Voskoboinyk nitems(rtl8821au_agc_vals1), 204*7453645fSAndriy Voskoboinyk rtl8821au_agc_vals1, 205*7453645fSAndriy Voskoboinyk { 0 }, 206*7453645fSAndriy Voskoboinyk NULL 207*7453645fSAndriy Voskoboinyk } 208*7453645fSAndriy Voskoboinyk }, 209*7453645fSAndriy Voskoboinyk { 210*7453645fSAndriy Voskoboinyk nitems(rtl8821au_agc_vals2), 211*7453645fSAndriy Voskoboinyk rtl8821au_agc_vals2, 212*7453645fSAndriy Voskoboinyk { 0 }, 213*7453645fSAndriy Voskoboinyk NULL 214*7453645fSAndriy Voskoboinyk } 215*7453645fSAndriy Voskoboinyk }; 216*7453645fSAndriy Voskoboinyk 217*7453645fSAndriy Voskoboinyk /* 218*7453645fSAndriy Voskoboinyk * RF initialization values. 219*7453645fSAndriy Voskoboinyk */ 220*7453645fSAndriy Voskoboinyk static const uint8_t rtl8821au_rf_regs0[] = { 221*7453645fSAndriy Voskoboinyk 0x18, 0x56, 0x66, 0x00, 0x1e, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 222*7453645fSAndriy Voskoboinyk 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0xef, 0x3e, 0x3f, 223*7453645fSAndriy Voskoboinyk 0x3e, 0x3f, 0x3e, 0x3f, 0x3e, 0x3f, 0xef, 0x18, 0x89, 0x8b, 0xef, 224*7453645fSAndriy Voskoboinyk 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 225*7453645fSAndriy Voskoboinyk 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 226*7453645fSAndriy Voskoboinyk 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 227*7453645fSAndriy Voskoboinyk 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 228*7453645fSAndriy Voskoboinyk 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 229*7453645fSAndriy Voskoboinyk 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0xef, 0xef 230*7453645fSAndriy Voskoboinyk }, rtl8821au_rf_regs1[] = { 231*7453645fSAndriy Voskoboinyk 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 232*7453645fSAndriy Voskoboinyk 0x34, 0x34 233*7453645fSAndriy Voskoboinyk }, rtl8821au_rf_regs2[] = { 234*7453645fSAndriy Voskoboinyk 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 235*7453645fSAndriy Voskoboinyk 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0xef, 0x18, 236*7453645fSAndriy Voskoboinyk 0xef 237*7453645fSAndriy Voskoboinyk }, rtl8821au_rf_regs3[] = { 238*7453645fSAndriy Voskoboinyk 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0xef, 0x18, 239*7453645fSAndriy Voskoboinyk 0xef, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 240*7453645fSAndriy Voskoboinyk 0x36, 0x36, 0xef, 0xef, 0x3c, 0x3c 241*7453645fSAndriy Voskoboinyk }, rtl8821au_rf_regs4[] = { 242*7453645fSAndriy Voskoboinyk 0x3c, 0xef, 0x18, 0xef, 0x08, 0xef, 0xdf, 0x1f, 0x58, 0x59, 0x61, 243*7453645fSAndriy Voskoboinyk 0x62, 0x63, 0x64, 0x65 244*7453645fSAndriy Voskoboinyk }, rtl8821au_rf_regs5[] = { 245*7453645fSAndriy Voskoboinyk 0x18, 0xef, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 246*7453645fSAndriy Voskoboinyk 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xef, 0xef, 0x34, 0x34, 247*7453645fSAndriy Voskoboinyk 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0xef, 0xed, 248*7453645fSAndriy Voskoboinyk 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 249*7453645fSAndriy Voskoboinyk 0xed, 0xed, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xed, 250*7453645fSAndriy Voskoboinyk 0xef, 0xdf, 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0xef, 0x51, 251*7453645fSAndriy Voskoboinyk 0x52, 0x53, 0x54, 0x56, 0x51, 0x52, 0x53, 0x70, 0x71, 0x72, 0x74, 252*7453645fSAndriy Voskoboinyk 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0xed, 0x45, 0x45, 0x45, 253*7453645fSAndriy Voskoboinyk 0x46, 0x46, 0x46, 0x46, 0xdf, 0xb3, 0xb4, 0xb7, 0x1c, 0xc4, 0x18, 254*7453645fSAndriy Voskoboinyk 0xfe, 0xfe, 0x18, 255*7453645fSAndriy Voskoboinyk }; 256*7453645fSAndriy Voskoboinyk 257*7453645fSAndriy Voskoboinyk static const uint32_t rtl8821au_rf_vals0[] = { 258*7453645fSAndriy Voskoboinyk 0x1712a, 0x51cf2, 0x40000, 0x10000, 0x80000, 0x00830, 0x21800, 259*7453645fSAndriy Voskoboinyk 0x28000, 0x48000, 0x94838, 0x44980, 0x48000, 0x0d480, 0x42240, 260*7453645fSAndriy Voskoboinyk 0xf0380, 0x90000, 0x22852, 0x65540, 0x88001, 0x20000, 0x00380, 261*7453645fSAndriy Voskoboinyk 0x90018, 0x20380, 0xa0018, 0x40308, 0xa0018, 0x60018, 0xa0018, 262*7453645fSAndriy Voskoboinyk 0x00000, 0x1712a, 0x00080, 0x80180, 0x01000, 0x00244, 0x38027, 263*7453645fSAndriy Voskoboinyk 0x82000, 0x00244, 0x30113, 0x82000, 0x0014c, 0x28027, 0x82000, 264*7453645fSAndriy Voskoboinyk 0x000cc, 0x27027, 0x42000, 0x0014c, 0x1f913, 0x42000, 0x0010c, 265*7453645fSAndriy Voskoboinyk 0x17f10, 0x12000, 0x000d0, 0x08027, 0xca000, 0x00244, 0x78027, 266*7453645fSAndriy Voskoboinyk 0x82000, 0x00244, 0x70113, 0x82000, 0x0014c, 0x68027, 0x82000, 267*7453645fSAndriy Voskoboinyk 0x000cc, 0x67027, 0x42000, 0x0014c, 0x5f913, 0x42000, 0x0010c, 268*7453645fSAndriy Voskoboinyk 0x57f10, 0x12000, 0x000d0, 0x48027, 0xca000, 0x00244, 0xb8027, 269*7453645fSAndriy Voskoboinyk 0x82000, 0x00244, 0xb0113, 0x82000, 0x0014c, 0xa8027, 0x82000, 270*7453645fSAndriy Voskoboinyk 0x000cc, 0xa7027, 0x42000, 0x0014c, 0x9f913, 0x42000, 0x0010c, 271*7453645fSAndriy Voskoboinyk 0x97f10, 0x12000, 0x000d0, 0x88027, 0xca000, 0x00000, 0x01100 272*7453645fSAndriy Voskoboinyk }, rtl8821au_rf_vals1_def_or_bt[] = { 273*7453645fSAndriy Voskoboinyk 0x4adf5, 0x49df2, 0x48def, 0x47dec, 0x46de9, 0x45ccb, 0x4488d, 274*7453645fSAndriy Voskoboinyk 0x4348d, 0x4248a, 0x4108d, 0x4008a, 0x2adf4, 0x29df1 275*7453645fSAndriy Voskoboinyk }, rtl8821au_rf_vals1_ext_5g[] = { 276*7453645fSAndriy Voskoboinyk 0x4a0f3, 0x490b1, 0x480ae, 0x470ab, 0x4608b, 0x45069, 0x44048, 277*7453645fSAndriy Voskoboinyk 0x43045, 0x42026, 0x41023, 0x40002, 0x2a0f3, 0x290f0 278*7453645fSAndriy Voskoboinyk }, rtl8821au_rf_vals1[] = { 279*7453645fSAndriy Voskoboinyk 0x4adf7, 0x49df3, 0x48def, 0x47dec, 0x46de9, 0x45ccb, 0x4488d, 280*7453645fSAndriy Voskoboinyk 0x4348d, 0x4248a, 0x4108d, 0x4008a, 0x2adf7, 0x29df2 281*7453645fSAndriy Voskoboinyk }, rtl8821au_rf_vals2_ext_5g[] = { 282*7453645fSAndriy Voskoboinyk 0x280af, 0x270ac, 0x2608b, 0x25069, 0x24048, 0x23045, 0x22026, 283*7453645fSAndriy Voskoboinyk 0x21023, 0x20002, 0x0a0d7, 0x090d3, 0x080b1, 0x070ae, 0x0608d, 284*7453645fSAndriy Voskoboinyk 0x0506b, 0x0404a, 0x03047, 0x02044, 0x01025, 0x00004, 0x00000, 285*7453645fSAndriy Voskoboinyk 0x1712a, 0x00040 286*7453645fSAndriy Voskoboinyk }, rtl8821au_rf_vals2[] = { 287*7453645fSAndriy Voskoboinyk 0x28dee, 0x27deb, 0x26ccd, 0x25cca, 0x2488c, 0x2384c, 0x22849, 288*7453645fSAndriy Voskoboinyk 0x21449, 0x2004d, 0x0adf7, 0x09df4, 0x08df1, 0x07dee, 0x06dcd, 289*7453645fSAndriy Voskoboinyk 0x05ccd, 0x04cca, 0x0388c, 0x02888, 0x01488, 0x00486, 0x00000, 290*7453645fSAndriy Voskoboinyk 0x1712a, 0x00040 291*7453645fSAndriy Voskoboinyk }, rtl8821au_rf_vals3_def_or_bt[] = { 292*7453645fSAndriy Voskoboinyk 0x00128, 0x08128, 0x10128, 0x201c8, 0x281c8, 0x301c8, 0x401c8, 293*7453645fSAndriy Voskoboinyk 0x481c8, 0x501c8, 0x00000, 0x1712a, 0x00010, 0x063b5, 0x0e3b5, 294*7453645fSAndriy Voskoboinyk 0x163b5, 0x1e3b5, 0x263b5, 0x2e3b5, 0x363b5, 0x3e3b5, 0x463b5, 295*7453645fSAndriy Voskoboinyk 0x4e3b5, 0x563b5, 0x5e3b5, 0x00000, 0x00008, 0x001b6, 0x00492 296*7453645fSAndriy Voskoboinyk }, rtl8821au_rf_vals3[] = { 297*7453645fSAndriy Voskoboinyk 0x00145, 0x08145, 0x10145, 0x20196, 0x28196, 0x30196, 0x401c7, 298*7453645fSAndriy Voskoboinyk 0x481c7, 0x501c7, 0x00000, 0x1712a, 0x00010, 0x056b3, 0x0d6b3, 299*7453645fSAndriy Voskoboinyk 0x156b3, 0x1d6b3, 0x26634, 0x2e634, 0x36634, 0x3e634, 0x467b4, 300*7453645fSAndriy Voskoboinyk 0x4e7b4, 0x567b4, 0x5e7b4, 0x00000, 0x00008, 0x0022a, 0x00594 301*7453645fSAndriy Voskoboinyk }, rtl8821au_rf_vals4_def_or_bt[] = { 302*7453645fSAndriy Voskoboinyk 0x00800, 0x00000, 0x1712a, 0x00002, 0x02000, 0x00000, 0x000c0, 303*7453645fSAndriy Voskoboinyk 0x00064, 0x81184, 0x6016c, 0xefd83, 0x93fcc, 0x110eb, 0x1c27c, 304*7453645fSAndriy Voskoboinyk 0x93016 305*7453645fSAndriy Voskoboinyk }, rtl8821au_rf_vals4_ext_5g[] = { 306*7453645fSAndriy Voskoboinyk 0x00820, 0x00000, 0x1712a, 0x00002, 0x02000, 0x00000, 0x000c0, 307*7453645fSAndriy Voskoboinyk 0x00064, 0x81184, 0x6016c, 0xead53, 0x93bc4, 0x110e9, 0x1c67c, 308*7453645fSAndriy Voskoboinyk 0x93015 309*7453645fSAndriy Voskoboinyk }, rtl8821au_rf_vals4[] = { 310*7453645fSAndriy Voskoboinyk 0x00900, 0x00000, 0x1712a, 0x00002, 0x02000, 0x00000, 0x000c0, 311*7453645fSAndriy Voskoboinyk 0x00064, 0x81184, 0x6016c, 0xead53, 0x93bc4, 0x714e9, 0x1c67c, 312*7453645fSAndriy Voskoboinyk 0x91016 313*7453645fSAndriy Voskoboinyk }, rtl8821au_rf_vals5[] = { 314*7453645fSAndriy Voskoboinyk 0x00006, 0x02000, 0x3824b, 0x3024b, 0x2844b, 0x20f4b, 0x18f4b, 315*7453645fSAndriy Voskoboinyk 0x104b2, 0x08049, 0x00148, 0x7824b, 0x7024b, 0x6824b, 0x60f4b, 316*7453645fSAndriy Voskoboinyk 0x58f4b, 0x504b2, 0x48049, 0x40148, 0x00000, 0x00100, 0x0adf3, 317*7453645fSAndriy Voskoboinyk 0x09df0, 0x08d70, 0x07d6d, 0x06cee, 0x05ccc, 0x044ec, 0x034ac, 318*7453645fSAndriy Voskoboinyk 0x0246d, 0x0106f, 0x0006c, 0x00000, 0x00010, 0x0adf2, 0x09def, 319*7453645fSAndriy Voskoboinyk 0x08dec, 0x07de9, 0x06cec, 0x05ce9, 0x044ec, 0x034e9, 0x0246c, 320*7453645fSAndriy Voskoboinyk 0x01469, 0x0006c, 0x00000, 0x00001, 0x38da7, 0x300c2, 0x288e2, 321*7453645fSAndriy Voskoboinyk 0x200b8, 0x188a5, 0x10fbc, 0x08f71, 0x00240, 0x00000, 0x020a2, 322*7453645fSAndriy Voskoboinyk 0x00080, 0x00120, 0x08120, 0x10120, 0x00085, 0x08085, 0x10085, 323*7453645fSAndriy Voskoboinyk 0x18085, 0x00000, 0x00c31, 0x00622, 0xfc70b, 0x0017e, 0x51df3, 324*7453645fSAndriy Voskoboinyk 0x00c01, 0x006d6, 0xfc649, 0x49661, 0x7843e, 0x00382, 0x51400, 325*7453645fSAndriy Voskoboinyk 0x00160, 0x08160, 0x10160, 0x00124, 0x08124, 0x10124, 0x18124, 326*7453645fSAndriy Voskoboinyk 0x0000c, 0x00140, 0x08140, 0x10140, 0x00124, 0x08124, 0x10124, 327*7453645fSAndriy Voskoboinyk 0x18124, 0x00088, 0xf0e18, 0x1214c, 0x3000c, 0x539d2, 0xafe00, 328*7453645fSAndriy Voskoboinyk 0x1f12a, 0x0c350, 0x0c350, 0x1712a, 329*7453645fSAndriy Voskoboinyk }; 330*7453645fSAndriy Voskoboinyk 331*7453645fSAndriy Voskoboinyk static const struct rtwn_rf_prog rtl8821au_rf[] = { 332*7453645fSAndriy Voskoboinyk /* RF chain 0. */ 333*7453645fSAndriy Voskoboinyk { 334*7453645fSAndriy Voskoboinyk nitems(rtl8821au_rf_regs0), 335*7453645fSAndriy Voskoboinyk rtl8821au_rf_regs0, 336*7453645fSAndriy Voskoboinyk rtl8821au_rf_vals0, 337*7453645fSAndriy Voskoboinyk { 0 }, 338*7453645fSAndriy Voskoboinyk NULL 339*7453645fSAndriy Voskoboinyk }, 340*7453645fSAndriy Voskoboinyk /* 341*7453645fSAndriy Voskoboinyk * No external PA/LNA; with or without BT. 342*7453645fSAndriy Voskoboinyk */ 343*7453645fSAndriy Voskoboinyk { 344*7453645fSAndriy Voskoboinyk nitems(rtl8821au_rf_regs1), 345*7453645fSAndriy Voskoboinyk rtl8821au_rf_regs1, 346*7453645fSAndriy Voskoboinyk rtl8821au_rf_vals1_def_or_bt, 347*7453645fSAndriy Voskoboinyk { R21A_COND_BOARD_DEF, R21A_COND_BT, 0 }, 348*7453645fSAndriy Voskoboinyk /* 349*7453645fSAndriy Voskoboinyk * With external 5GHz PA and LNA. 350*7453645fSAndriy Voskoboinyk */ 351*7453645fSAndriy Voskoboinyk &(const struct rtwn_rf_prog){ 352*7453645fSAndriy Voskoboinyk nitems(rtl8821au_rf_regs1), 353*7453645fSAndriy Voskoboinyk rtl8821au_rf_regs1, 354*7453645fSAndriy Voskoboinyk rtl8821au_rf_vals1_ext_5g, 355*7453645fSAndriy Voskoboinyk { R21A_COND_EXT_PA_5G | R21A_COND_EXT_LNA_5G, 0 }, 356*7453645fSAndriy Voskoboinyk /* 357*7453645fSAndriy Voskoboinyk * Others. 358*7453645fSAndriy Voskoboinyk */ 359*7453645fSAndriy Voskoboinyk &(const struct rtwn_rf_prog){ 360*7453645fSAndriy Voskoboinyk nitems(rtl8821au_rf_regs1), 361*7453645fSAndriy Voskoboinyk rtl8821au_rf_regs1, 362*7453645fSAndriy Voskoboinyk rtl8821au_rf_vals1, 363*7453645fSAndriy Voskoboinyk { 0 }, 364*7453645fSAndriy Voskoboinyk NULL 365*7453645fSAndriy Voskoboinyk } 366*7453645fSAndriy Voskoboinyk } 367*7453645fSAndriy Voskoboinyk }, 368*7453645fSAndriy Voskoboinyk /* 369*7453645fSAndriy Voskoboinyk * With external 5GHz PA and LNA. 370*7453645fSAndriy Voskoboinyk */ 371*7453645fSAndriy Voskoboinyk { 372*7453645fSAndriy Voskoboinyk nitems(rtl8821au_rf_regs2), 373*7453645fSAndriy Voskoboinyk rtl8821au_rf_regs2, 374*7453645fSAndriy Voskoboinyk rtl8821au_rf_vals2_ext_5g, 375*7453645fSAndriy Voskoboinyk { R21A_COND_EXT_PA_5G | R21A_COND_EXT_LNA_5G, 0 }, 376*7453645fSAndriy Voskoboinyk /* 377*7453645fSAndriy Voskoboinyk * Others. 378*7453645fSAndriy Voskoboinyk */ 379*7453645fSAndriy Voskoboinyk &(const struct rtwn_rf_prog){ 380*7453645fSAndriy Voskoboinyk nitems(rtl8821au_rf_regs2), 381*7453645fSAndriy Voskoboinyk rtl8821au_rf_regs2, 382*7453645fSAndriy Voskoboinyk rtl8821au_rf_vals2, 383*7453645fSAndriy Voskoboinyk { 0 }, 384*7453645fSAndriy Voskoboinyk NULL 385*7453645fSAndriy Voskoboinyk } 386*7453645fSAndriy Voskoboinyk }, 387*7453645fSAndriy Voskoboinyk /* 388*7453645fSAndriy Voskoboinyk * No external PA/LNA; with or without BT. 389*7453645fSAndriy Voskoboinyk */ 390*7453645fSAndriy Voskoboinyk { 391*7453645fSAndriy Voskoboinyk nitems(rtl8821au_rf_regs3), 392*7453645fSAndriy Voskoboinyk rtl8821au_rf_regs3, 393*7453645fSAndriy Voskoboinyk rtl8821au_rf_vals3_def_or_bt, 394*7453645fSAndriy Voskoboinyk { R21A_COND_BOARD_DEF, R21A_COND_BT, 0 }, 395*7453645fSAndriy Voskoboinyk /* 396*7453645fSAndriy Voskoboinyk * Others. 397*7453645fSAndriy Voskoboinyk */ 398*7453645fSAndriy Voskoboinyk &(const struct rtwn_rf_prog){ 399*7453645fSAndriy Voskoboinyk nitems(rtl8821au_rf_regs3), 400*7453645fSAndriy Voskoboinyk rtl8821au_rf_regs3, 401*7453645fSAndriy Voskoboinyk rtl8821au_rf_vals3, 402*7453645fSAndriy Voskoboinyk { 0 }, 403*7453645fSAndriy Voskoboinyk NULL 404*7453645fSAndriy Voskoboinyk } 405*7453645fSAndriy Voskoboinyk }, 406*7453645fSAndriy Voskoboinyk /* 407*7453645fSAndriy Voskoboinyk * No external PA/LNA; with or without BT. 408*7453645fSAndriy Voskoboinyk */ 409*7453645fSAndriy Voskoboinyk { 410*7453645fSAndriy Voskoboinyk nitems(rtl8821au_rf_regs4), 411*7453645fSAndriy Voskoboinyk rtl8821au_rf_regs4, 412*7453645fSAndriy Voskoboinyk rtl8821au_rf_vals4_def_or_bt, 413*7453645fSAndriy Voskoboinyk { R21A_COND_BOARD_DEF, R21A_COND_BT, 0 }, 414*7453645fSAndriy Voskoboinyk /* 415*7453645fSAndriy Voskoboinyk * With external 5GHz PA and LNA. 416*7453645fSAndriy Voskoboinyk */ 417*7453645fSAndriy Voskoboinyk &(const struct rtwn_rf_prog){ 418*7453645fSAndriy Voskoboinyk nitems(rtl8821au_rf_regs4), 419*7453645fSAndriy Voskoboinyk rtl8821au_rf_regs4, 420*7453645fSAndriy Voskoboinyk rtl8821au_rf_vals4_ext_5g, 421*7453645fSAndriy Voskoboinyk { R21A_COND_EXT_PA_5G | R21A_COND_EXT_LNA_5G, 0 }, 422*7453645fSAndriy Voskoboinyk /* 423*7453645fSAndriy Voskoboinyk * Others. 424*7453645fSAndriy Voskoboinyk */ 425*7453645fSAndriy Voskoboinyk &(const struct rtwn_rf_prog){ 426*7453645fSAndriy Voskoboinyk nitems(rtl8821au_rf_regs4), 427*7453645fSAndriy Voskoboinyk rtl8821au_rf_regs4, 428*7453645fSAndriy Voskoboinyk rtl8821au_rf_vals4, 429*7453645fSAndriy Voskoboinyk { 0 }, 430*7453645fSAndriy Voskoboinyk NULL 431*7453645fSAndriy Voskoboinyk } 432*7453645fSAndriy Voskoboinyk } 433*7453645fSAndriy Voskoboinyk }, 434*7453645fSAndriy Voskoboinyk { 435*7453645fSAndriy Voskoboinyk nitems(rtl8821au_rf_regs5), 436*7453645fSAndriy Voskoboinyk rtl8821au_rf_regs5, 437*7453645fSAndriy Voskoboinyk rtl8821au_rf_vals5, 438*7453645fSAndriy Voskoboinyk { 0 }, 439*7453645fSAndriy Voskoboinyk NULL 440*7453645fSAndriy Voskoboinyk }, 441*7453645fSAndriy Voskoboinyk { 0, NULL, NULL, { 0 }, NULL } 442*7453645fSAndriy Voskoboinyk }; 443*7453645fSAndriy Voskoboinyk 444*7453645fSAndriy Voskoboinyk /* 445*7453645fSAndriy Voskoboinyk * Registers to save before IQ calibration. 446*7453645fSAndriy Voskoboinyk */ 447*7453645fSAndriy Voskoboinyk static const uint16_t r21a_iq_bb_regs[] = { 448*7453645fSAndriy Voskoboinyk 0x520, 0x550, 0x808, 0xa04, 0x90c, 0xc00, 0x838, 0x82c 449*7453645fSAndriy Voskoboinyk }; 450*7453645fSAndriy Voskoboinyk 451*7453645fSAndriy Voskoboinyk static const uint16_t r21a_iq_afe_regs[] = { 452*7453645fSAndriy Voskoboinyk 0xc5c, 0xc60, 0xc64, 0xc68 453*7453645fSAndriy Voskoboinyk }; 454*7453645fSAndriy Voskoboinyk 455*7453645fSAndriy Voskoboinyk static const uint8_t r21a_iq_rf_regs[] = { 456*7453645fSAndriy Voskoboinyk 0x65, 0x8f, 0x0 457*7453645fSAndriy Voskoboinyk }; 458*7453645fSAndriy Voskoboinyk 459*7453645fSAndriy Voskoboinyk #endif /* R21A_PRIV_H */ 460