The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/rtwn/rtl8821a/r21a_priv.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

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

Cache object: 0e716f56f9a8c474dad60ad78bf0af19


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.