Home | History | Annotate | Line # | Download | only in ar5416
      1 /*
      2  * Copyright (c) 2002-2008 Sam Leffler, Errno Consulting
      3  * Copyright (c) 2002-2008 Atheros Communications, Inc.
      4  *
      5  * Permission to use, copy, modify, and/or distribute this software for any
      6  * purpose with or without fee is hereby granted, provided that the above
      7  * copyright notice and this permission notice appear in all copies.
      8  *
      9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     10  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     11  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     12  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     13  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     14  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     15  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     16  *
     17  * $Id: ar5416.ini,v 1.2 2011/02/20 11:21:04 jmcneill Exp $
     18  */
     19 /* Auto Generated PCI Register Writes.  Created: 09/20/06 */
     20 
     21 static const uint32_t ar5416Modes[][6] = {
     22    /* Register    A           A-20/40     G-20/40     G           G-Turbo    */
     23     { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 },
     24     { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 },
     25     { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 },
     26     { 0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008 },
     27     { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801080, 0x08400840, 0x06e006e0 },
     28     { 0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf },
     29     { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 },
     30     { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 },
     31     { 0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e },
     32     { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 },
     33     { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e },
     34     { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 },
     35     { 0x00009844, 0x1372161e, 0x13721c1e, 0x13721c30, 0x137216a4, 0x13721c25 },
     36     { 0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 },
     37     { 0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 },
     38     { 0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 },
     39     { 0x00009850, 0x6c28b4e0, 0x6c28b4e0, 0x6d68b0de, 0x6d68b0de, 0x6c28b0de },
     40     { 0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e },
     41     { 0x0000985c, 0x313a5d5e, 0x313a5d5e, 0x313a605e, 0x313a605e, 0x313a5d5e },
     42     { 0x00009860, 0x00049d10, 0x00049d10, 0x00049d20, 0x00049d20, 0x00049d10 },
     43     { 0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 },
     44     { 0x00009868, 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190 },
     45     { 0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081 },
     46     { 0x00009914, 0x000007d0, 0x000007d0, 0x00000898, 0x00000898, 0x000007d0 },
     47     { 0x00009918, 0x000001b8, 0x00000370, 0x00000268, 0x00000134, 0x00000370 },
     48     { 0x00009924, 0xd0058a0b, 0xd0058a0b, 0xd0058a19, 0xd0058a13, 0xd0058a0b },
     49     { 0x00009944, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0xdfb81020 },
     50 #ifdef TB243
     51     { 0x00009960, 0x00000900, 0x00000900, 0x00009b40, 0x00009b40, 0x00012d80 },
     52     { 0x0000a960, 0x00000900, 0x00000900, 0x00009b40, 0x00009b40, 0x00012d80 },
     53     { 0x0000b960, 0x00000900, 0x00000900, 0x00009b40, 0x00009b40, 0x00012d80 },
     54     { 0x00009964, 0x00000000, 0x00000000, 0x00002210, 0x00002210, 0x00001120 },
     55 #else
     56     { 0x00009960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80 },
     57     { 0x0000a960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80 },
     58     { 0x0000b960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80 },
     59 #ifdef __LINUX_ARM_ARCH__
     60     { 0x00009964, 0x00000000, 0x00000000, 0x00001120, 0x00001120, 0x00001120 },
     61 #else
     62     { 0x00009964, 0x00000000, 0x00000000, 0x00001120, 0x00001120, 0x00001120 },
     63 #endif
     64 #endif
     65     { 0x0000c9bc, 0x001a0a00, 0x001a0a00, 0x001a0a00, 0x001a0a00, 0x001a0a00 },
     66     { 0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be },
     67     { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 },
     68     { 0x000099c8, 0x60f6532c, 0x60f6532c, 0x60f6532c, 0x60f6532c, 0x60f6532c },
     69     { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 },
     70     { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 },
     71     { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
     72     { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
     73     { 0x0000a204, 0x00000440, 0x00000440, 0x00000440, 0x00000440, 0x00000440 },
     74     { 0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788 },
     75     { 0x0000a20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120 },
     76     { 0x0000b20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120 },
     77     { 0x0000c20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120 },
     78     { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a },
     79     { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 },
     80     { 0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa },
     81     { 0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000 },
     82     { 0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402 },
     83     { 0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06 },
     84     { 0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b },
     85     { 0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b },
     86     { 0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a },
     87     { 0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf },
     88     { 0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f },
     89     { 0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f },
     90     { 0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f },
     91     { 0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000 },
     92     { 0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
     93     { 0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
     94     { 0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
     95 };
     96 
     97 static const uint32_t ar5416Common[][2] = {
     98     { 0x0000000c, 0x00000000 },
     99     { 0x00000030, 0x00020015 },
    100     { 0x00000034, 0x00000005 },
    101     { 0x00000040, 0x00000000 },
    102     { 0x00000044, 0x00000008 },
    103     { 0x00000048, 0x00000008 },
    104     { 0x0000004c, 0x00000010 },
    105     { 0x00000050, 0x00000000 },
    106     { 0x00000054, 0x0000001f },
    107     { 0x00000800, 0x00000000 },
    108     { 0x00000804, 0x00000000 },
    109     { 0x00000808, 0x00000000 },
    110     { 0x0000080c, 0x00000000 },
    111     { 0x00000810, 0x00000000 },
    112     { 0x00000814, 0x00000000 },
    113     { 0x00000818, 0x00000000 },
    114     { 0x0000081c, 0x00000000 },
    115     { 0x00000820, 0x00000000 },
    116     { 0x00000824, 0x00000000 },
    117     { 0x00001040, 0x002ffc0f },
    118     { 0x00001044, 0x002ffc0f },
    119     { 0x00001048, 0x002ffc0f },
    120     { 0x0000104c, 0x002ffc0f },
    121     { 0x00001050, 0x002ffc0f },
    122     { 0x00001054, 0x002ffc0f },
    123     { 0x00001058, 0x002ffc0f },
    124     { 0x0000105c, 0x002ffc0f },
    125     { 0x00001060, 0x002ffc0f },
    126     { 0x00001064, 0x002ffc0f },
    127     { 0x00001230, 0x00000000 },
    128     { 0x00001270, 0x00000000 },
    129     { 0x00001038, 0x00000000 },
    130     { 0x00001078, 0x00000000 },
    131     { 0x000010b8, 0x00000000 },
    132     { 0x000010f8, 0x00000000 },
    133     { 0x00001138, 0x00000000 },
    134     { 0x00001178, 0x00000000 },
    135     { 0x000011b8, 0x00000000 },
    136     { 0x000011f8, 0x00000000 },
    137     { 0x00001238, 0x00000000 },
    138     { 0x00001278, 0x00000000 },
    139     { 0x000012b8, 0x00000000 },
    140     { 0x000012f8, 0x00000000 },
    141     { 0x00001338, 0x00000000 },
    142     { 0x00001378, 0x00000000 },
    143     { 0x000013b8, 0x00000000 },
    144     { 0x000013f8, 0x00000000 },
    145     { 0x00001438, 0x00000000 },
    146     { 0x00001478, 0x00000000 },
    147     { 0x000014b8, 0x00000000 },
    148     { 0x000014f8, 0x00000000 },
    149     { 0x00001538, 0x00000000 },
    150     { 0x00001578, 0x00000000 },
    151     { 0x000015b8, 0x00000000 },
    152     { 0x000015f8, 0x00000000 },
    153     { 0x00001638, 0x00000000 },
    154     { 0x00001678, 0x00000000 },
    155     { 0x000016b8, 0x00000000 },
    156     { 0x000016f8, 0x00000000 },
    157     { 0x00001738, 0x00000000 },
    158     { 0x00001778, 0x00000000 },
    159     { 0x000017b8, 0x00000000 },
    160     { 0x000017f8, 0x00000000 },
    161     { 0x0000103c, 0x00000000 },
    162     { 0x0000107c, 0x00000000 },
    163     { 0x000010bc, 0x00000000 },
    164     { 0x000010fc, 0x00000000 },
    165     { 0x0000113c, 0x00000000 },
    166     { 0x0000117c, 0x00000000 },
    167     { 0x000011bc, 0x00000000 },
    168     { 0x000011fc, 0x00000000 },
    169     { 0x0000123c, 0x00000000 },
    170     { 0x0000127c, 0x00000000 },
    171     { 0x000012bc, 0x00000000 },
    172     { 0x000012fc, 0x00000000 },
    173     { 0x0000133c, 0x00000000 },
    174     { 0x0000137c, 0x00000000 },
    175     { 0x000013bc, 0x00000000 },
    176     { 0x000013fc, 0x00000000 },
    177     { 0x0000143c, 0x00000000 },
    178     { 0x0000147c, 0x00000000 },
    179     { 0x00004030, 0x00000002 },
    180     { 0x0000403c, 0x00000002 },
    181 #ifdef AR9100
    182     { 0x00020010, 0x00000000 },
    183 #else
    184     { 0x00007010, 0x00000000 },
    185 #endif
    186     { 0x00007038, 0x000004c2 },
    187     { 0x00008004, 0x00000000 },
    188     { 0x00008008, 0x00000000 },
    189     { 0x0000800c, 0x00000000 },
    190     { 0x00008018, 0x00000700 },
    191     { 0x00008020, 0x00000000 },
    192     { 0x00008038, 0x00000000 },
    193     { 0x0000803c, 0x00000000 },
    194     { 0x00008048, 0x40000000 },
    195     { 0x00008054, 0x00000000 },
    196     { 0x00008058, 0x00000000 },
    197     { 0x0000805c, 0x000fc78f },
    198     { 0x00008060, 0x0000000f },
    199     { 0x00008064, 0x00000000 },
    200     { 0x000080c0, 0x2a82301a },
    201     { 0x000080c4, 0x05dc01e0 },
    202     { 0x000080c8, 0x1f402710 },
    203     { 0x000080cc, 0x01f40000 },
    204     { 0x000080d0, 0x00001e00 },
    205     { 0x000080d4, 0x00000000 },
    206     { 0x000080d8, 0x00400000 },
    207     { 0x000080e0, 0xffffffff },
    208     { 0x000080e4, 0x0000ffff },
    209     { 0x000080e8, 0x003f3f3f },
    210     { 0x000080ec, 0x00000000 },
    211     { 0x000080f0, 0x00000000 },
    212     { 0x000080f4, 0x00000000 },
    213     { 0x000080f8, 0x00000000 },
    214     { 0x000080fc, 0x00020000 },
    215     { 0x00008100, 0x00020000 },
    216     { 0x00008104, 0x00000001 },
    217     { 0x00008108, 0x00000052 },
    218     { 0x0000810c, 0x00000000 },
    219     { 0x00008110, 0x00000168 },
    220     { 0x00008118, 0x000100aa },
    221     { 0x0000811c, 0x00003210 },
    222     { 0x00008120, 0x08f04800 },
    223     { 0x00008124, 0x00000000 },
    224     { 0x00008128, 0x00000000 },
    225     { 0x0000812c, 0x00000000 },
    226     { 0x00008130, 0x00000000 },
    227     { 0x00008134, 0x00000000 },
    228     { 0x00008138, 0x00000000 },
    229     { 0x0000813c, 0x00000000 },
    230     { 0x00008144, 0x00000000 },
    231     { 0x00008168, 0x00000000 },
    232     { 0x0000816c, 0x00000000 },
    233     { 0x00008170, 0x32143320 },
    234     { 0x00008174, 0xfaa4fa50 },
    235     { 0x00008178, 0x00000100 },
    236     { 0x0000817c, 0x00000000 },
    237     { 0x000081c4, 0x00000000 },
    238     { 0x000081d0, 0x00003210 },
    239     { 0x000081ec, 0x00000000 },
    240     { 0x000081f0, 0x00000000 },
    241     { 0x000081f4, 0x00000000 },
    242     { 0x000081f8, 0x00000000 },
    243     { 0x000081fc, 0x00000000 },
    244     { 0x00008200, 0x00000000 },
    245     { 0x00008204, 0x00000000 },
    246     { 0x00008208, 0x00000000 },
    247     { 0x0000820c, 0x00000000 },
    248     { 0x00008210, 0x00000000 },
    249     { 0x00008214, 0x00000000 },
    250     { 0x00008218, 0x00000000 },
    251     { 0x0000821c, 0x00000000 },
    252     { 0x00008220, 0x00000000 },
    253     { 0x00008224, 0x00000000 },
    254     { 0x00008228, 0x00000000 },
    255     { 0x0000822c, 0x00000000 },
    256     { 0x00008230, 0x00000000 },
    257     { 0x00008234, 0x00000000 },
    258     { 0x00008238, 0x00000000 },
    259     { 0x0000823c, 0x00000000 },
    260     { 0x00008240, 0x00100000 },
    261     { 0x00008244, 0x0010f400 },
    262     { 0x00008248, 0x00000100 },
    263     { 0x0000824c, 0x0001e800 },
    264     { 0x00008250, 0x00000000 },
    265     { 0x00008254, 0x00000000 },
    266     { 0x00008258, 0x00000000 },
    267     { 0x0000825c, 0x400000ff },
    268     { 0x00008260, 0x00080922 },
    269     { 0x00008270, 0x00000000 },
    270     { 0x00008274, 0x40000000 },
    271     { 0x00008278, 0x003e4180 },
    272     { 0x0000827c, 0x00000000 },
    273     { 0x00008284, 0x0000002c },
    274     { 0x00008288, 0x0000002c },
    275     { 0x0000828c, 0x00000000 },
    276     { 0x00008294, 0x00000000 },
    277     { 0x00008298, 0x00000000 },
    278     { 0x00008300, 0x00000000 },
    279     { 0x00008304, 0x00000000 },
    280     { 0x00008308, 0x00000000 },
    281     { 0x0000830c, 0x00000000 },
    282     { 0x00008310, 0x00000000 },
    283     { 0x00008314, 0x00000000 },
    284     { 0x00008318, 0x00000000 },
    285     { 0x00008328, 0x00000000 },
    286     { 0x0000832c, 0x00000007 },
    287     { 0x00008330, 0x00000302 },
    288     { 0x00008334, 0x00000e00 },
    289     { 0x00008338, 0x00000000 },
    290     { 0x0000833c, 0x00000000 },
    291     { 0x00008340, 0x000107ff },
    292     { 0x00009808, 0x00000000 },
    293     { 0x0000980c, 0xad848e19 },
    294     { 0x00009810, 0x7d14e000 },
    295     { 0x00009814, 0x9c0a9f6b },
    296     { 0x0000981c, 0x00000000 },
    297     { 0x0000982c, 0x0000a000 },
    298     { 0x00009830, 0x00000000 },
    299     { 0x0000983c, 0x00200400 },
    300     { 0x00009840, 0x206a016e },
    301     { 0x0000984c, 0x1284233c },
    302     { 0x00009854, 0x00000859 },
    303     { 0x00009900, 0x00000000 },
    304     { 0x00009904, 0x00000000 },
    305     { 0x00009908, 0x00000000 },
    306     { 0x0000990c, 0x00000000 },
    307     { 0x0000991c, 0x10000fff },
    308     { 0x00009920, 0x05100000 },
    309     { 0x0000a920, 0x05100000 },
    310     { 0x0000b920, 0x05100000 },
    311     { 0x00009928, 0x00000001 },
    312     { 0x0000992c, 0x00000004 },
    313     { 0x00009934, 0x1e1f2022 },
    314     { 0x00009938, 0x0a0b0c0d },
    315     { 0x0000993c, 0x00000000 },
    316     { 0x00009948, 0x9280b212 },
    317     { 0x0000994c, 0x00020028 },
    318     { 0x00009954, 0x5d50e188 },
    319     { 0x00009958, 0x00081fff },
    320     { 0x0000c95c, 0x004b6a8e },
    321     { 0x0000c968, 0x000003ce },
    322     { 0x00009970, 0x190c0514 },
    323     { 0x00009974, 0x00000000 },
    324     { 0x00009978, 0x00000001 },
    325     { 0x0000997c, 0x00000000 },
    326     { 0x00009980, 0x00000000 },
    327     { 0x00009984, 0x00000000 },
    328     { 0x00009988, 0x00000000 },
    329     { 0x0000998c, 0x00000000 },
    330     { 0x00009990, 0x00000000 },
    331     { 0x00009994, 0x00000000 },
    332     { 0x00009998, 0x00000000 },
    333     { 0x0000999c, 0x00000000 },
    334     { 0x000099a0, 0x00000000 },
    335     { 0x000099a4, 0x00000001 },
    336     { 0x000099a8, 0x001fff00 },
    337     { 0x000099ac, 0x000000c4 },
    338     { 0x000099b0, 0x03051000 },
    339     { 0x000099dc, 0x00000000 },
    340     { 0x000099e0, 0x00000200 },
    341     { 0x000099e4, 0xaaaaaaaa },
    342     { 0x000099e8, 0x3c466478 },
    343     { 0x000099ec, 0x000000aa },
    344     { 0x000099fc, 0x00001042 },
    345     { 0x00009b00, 0x00000000 },
    346     { 0x00009b04, 0x00000001 },
    347     { 0x00009b08, 0x00000002 },
    348     { 0x00009b0c, 0x00000003 },
    349     { 0x00009b10, 0x00000004 },
    350     { 0x00009b14, 0x00000005 },
    351     { 0x00009b18, 0x00000008 },
    352     { 0x00009b1c, 0x00000009 },
    353     { 0x00009b20, 0x0000000a },
    354     { 0x00009b24, 0x0000000b },
    355     { 0x00009b28, 0x0000000c },
    356     { 0x00009b2c, 0x0000000d },
    357     { 0x00009b30, 0x00000010 },
    358     { 0x00009b34, 0x00000011 },
    359     { 0x00009b38, 0x00000012 },
    360     { 0x00009b3c, 0x00000013 },
    361     { 0x00009b40, 0x00000014 },
    362     { 0x00009b44, 0x00000015 },
    363     { 0x00009b48, 0x00000018 },
    364     { 0x00009b4c, 0x00000019 },
    365     { 0x00009b50, 0x0000001a },
    366     { 0x00009b54, 0x0000001b },
    367     { 0x00009b58, 0x0000001c },
    368     { 0x00009b5c, 0x0000001d },
    369     { 0x00009b60, 0x00000020 },
    370     { 0x00009b64, 0x00000021 },
    371     { 0x00009b68, 0x00000022 },
    372     { 0x00009b6c, 0x00000023 },
    373     { 0x00009b70, 0x00000024 },
    374     { 0x00009b74, 0x00000025 },
    375     { 0x00009b78, 0x00000028 },
    376     { 0x00009b7c, 0x00000029 },
    377     { 0x00009b80, 0x0000002a },
    378     { 0x00009b84, 0x0000002b },
    379     { 0x00009b88, 0x0000002c },
    380     { 0x00009b8c, 0x0000002d },
    381     { 0x00009b90, 0x00000030 },
    382     { 0x00009b94, 0x00000031 },
    383     { 0x00009b98, 0x00000032 },
    384     { 0x00009b9c, 0x00000033 },
    385     { 0x00009ba0, 0x00000034 },
    386     { 0x00009ba4, 0x00000035 },
    387     { 0x00009ba8, 0x00000035 },
    388     { 0x00009bac, 0x00000035 },
    389     { 0x00009bb0, 0x00000035 },
    390     { 0x00009bb4, 0x00000035 },
    391     { 0x00009bb8, 0x00000035 },
    392     { 0x00009bbc, 0x00000035 },
    393     { 0x00009bc0, 0x00000035 },
    394     { 0x00009bc4, 0x00000035 },
    395     { 0x00009bc8, 0x00000035 },
    396     { 0x00009bcc, 0x00000035 },
    397     { 0x00009bd0, 0x00000035 },
    398     { 0x00009bd4, 0x00000035 },
    399     { 0x00009bd8, 0x00000035 },
    400     { 0x00009bdc, 0x00000035 },
    401     { 0x00009be0, 0x00000035 },
    402     { 0x00009be4, 0x00000035 },
    403     { 0x00009be8, 0x00000035 },
    404     { 0x00009bec, 0x00000035 },
    405     { 0x00009bf0, 0x00000035 },
    406     { 0x00009bf4, 0x00000035 },
    407     { 0x00009bf8, 0x00000010 },
    408     { 0x00009bfc, 0x0000001a },
    409     { 0x0000a210, 0x40806333 },
    410     { 0x0000a214, 0x00106c10 },
    411     { 0x0000a218, 0x009c4060 },
    412     { 0x0000a220, 0x018830c6 },
    413     { 0x0000a224, 0x00000400 },
    414     { 0x0000a228, 0x00000bb5 },
    415     { 0x0000a22c, 0x00000011 },
    416     { 0x0000a234, 0x20202020 },
    417     { 0x0000a238, 0x20202020 },
    418     { 0x0000a23c, 0x13c889af },
    419     { 0x0000a240, 0x38490a20 },
    420     { 0x0000a244, 0x00007bb6 },
    421     { 0x0000a248, 0x0fff3ffc },
    422     { 0x0000a24c, 0x00000001 },
    423     { 0x0000a250, 0x0000a000 },
    424     { 0x0000a254, 0x00000000 },
    425     { 0x0000a258, 0x0cc75380 },
    426     { 0x0000a25c, 0x0f0f0f01 },
    427     { 0x0000a260, 0xdfa91f01 },
    428     { 0x0000a268, 0x00000000 },
    429     { 0x0000a26c, 0x0ebae9c6 },
    430     { 0x0000b26c, 0x0ebae9c6 },
    431     { 0x0000c26c, 0x0ebae9c6 },
    432     { 0x0000d270, 0x00820820 },
    433     { 0x0000a278, 0x1ce739ce },
    434     { 0x0000a27c, 0x051701ce },
    435     { 0x0000a338, 0x00000000 },
    436     { 0x0000a33c, 0x00000000 },
    437     { 0x0000a340, 0x00000000 },
    438     { 0x0000a344, 0x00000000 },
    439     { 0x0000a348, 0x3fffffff },
    440     { 0x0000a34c, 0x3fffffff },
    441     { 0x0000a350, 0x3fffffff },
    442     { 0x0000a354, 0x0003ffff },
    443     { 0x0000a358, 0x79a8aa1f },
    444     { 0x0000d35c, 0x066c420f },
    445     { 0x0000d360, 0x0f282207 },
    446     { 0x0000d364, 0x17601685 },
    447     { 0x0000d368, 0x1f801104 },
    448     { 0x0000d36c, 0x37a00c03 },
    449     { 0x0000d370, 0x3fc40883 },
    450     { 0x0000d374, 0x57c00803 },
    451     { 0x0000d378, 0x5fd80682 },
    452     { 0x0000d37c, 0x7fe00482 },
    453     { 0x0000d380, 0x7f3c7bba },
    454     { 0x0000d384, 0xf3307ff0 },
    455     { 0x0000a388, 0x08000000 },
    456     { 0x0000a38c, 0x20202020 },
    457     { 0x0000a390, 0x20202020 },
    458     { 0x0000a394, 0x1ce739ce },
    459     { 0x0000a398, 0x000001ce },
    460     { 0x0000a39c, 0x00000001 },
    461     { 0x0000a3a0, 0x00000000 },
    462     { 0x0000a3a4, 0x00000000 },
    463     { 0x0000a3a8, 0x00000000 },
    464     { 0x0000a3ac, 0x00000000 },
    465     { 0x0000a3b0, 0x00000000 },
    466     { 0x0000a3b4, 0x00000000 },
    467     { 0x0000a3b8, 0x00000000 },
    468     { 0x0000a3bc, 0x00000000 },
    469     { 0x0000a3c0, 0x00000000 },
    470     { 0x0000a3c4, 0x00000000 },
    471     { 0x0000a3c8, 0x00000246 },
    472     { 0x0000a3cc, 0x20202020 },
    473     { 0x0000a3d0, 0x20202020 },
    474     { 0x0000a3d4, 0x20202020 },
    475     { 0x0000a3dc, 0x1ce739ce },
    476     { 0x0000a3e0, 0x000001ce },
    477 };
    478 
    479 static const uint32_t ar5416Bank0[][2] = {
    480     { 0x000098b0, 0x1e5795e5 },
    481     { 0x000098e0, 0x02008020 },
    482 };
    483 
    484 static const uint32_t ar5416BB_RfGain[][3] = {
    485     { 0x00009a00, 0x00000000, 0x00000000 },
    486     { 0x00009a04, 0x00000040, 0x00000040 },
    487     { 0x00009a08, 0x00000080, 0x00000080 },
    488     { 0x00009a0c, 0x000001a1, 0x00000141 },
    489     { 0x00009a10, 0x000001e1, 0x00000181 },
    490     { 0x00009a14, 0x00000021, 0x000001c1 },
    491     { 0x00009a18, 0x00000061, 0x00000001 },
    492     { 0x00009a1c, 0x00000168, 0x00000041 },
    493     { 0x00009a20, 0x000001a8, 0x000001a8 },
    494     { 0x00009a24, 0x000001e8, 0x000001e8 },
    495     { 0x00009a28, 0x00000028, 0x00000028 },
    496     { 0x00009a2c, 0x00000068, 0x00000068 },
    497     { 0x00009a30, 0x00000189, 0x000000a8 },
    498     { 0x00009a34, 0x000001c9, 0x00000169 },
    499     { 0x00009a38, 0x00000009, 0x000001a9 },
    500     { 0x00009a3c, 0x00000049, 0x000001e9 },
    501     { 0x00009a40, 0x00000089, 0x00000029 },
    502     { 0x00009a44, 0x00000170, 0x00000069 },
    503     { 0x00009a48, 0x000001b0, 0x00000190 },
    504     { 0x00009a4c, 0x000001f0, 0x000001d0 },
    505     { 0x00009a50, 0x00000030, 0x00000010 },
    506     { 0x00009a54, 0x00000070, 0x00000050 },
    507     { 0x00009a58, 0x00000191, 0x00000090 },
    508     { 0x00009a5c, 0x000001d1, 0x00000151 },
    509     { 0x00009a60, 0x00000011, 0x00000191 },
    510     { 0x00009a64, 0x00000051, 0x000001d1 },
    511     { 0x00009a68, 0x00000091, 0x00000011 },
    512     { 0x00009a6c, 0x000001b8, 0x00000051 },
    513     { 0x00009a70, 0x000001f8, 0x00000198 },
    514     { 0x00009a74, 0x00000038, 0x000001d8 },
    515     { 0x00009a78, 0x00000078, 0x00000018 },
    516     { 0x00009a7c, 0x00000199, 0x00000058 },
    517     { 0x00009a80, 0x000001d9, 0x00000098 },
    518     { 0x00009a84, 0x00000019, 0x00000159 },
    519     { 0x00009a88, 0x00000059, 0x00000199 },
    520     { 0x00009a8c, 0x00000099, 0x000001d9 },
    521     { 0x00009a90, 0x000000d9, 0x00000019 },
    522     { 0x00009a94, 0x000000f9, 0x00000059 },
    523     { 0x00009a98, 0x000000f9, 0x00000099 },
    524     { 0x00009a9c, 0x000000f9, 0x000000d9 },
    525     { 0x00009aa0, 0x000000f9, 0x000000f9 },
    526     { 0x00009aa4, 0x000000f9, 0x000000f9 },
    527     { 0x00009aa8, 0x000000f9, 0x000000f9 },
    528     { 0x00009aac, 0x000000f9, 0x000000f9 },
    529     { 0x00009ab0, 0x000000f9, 0x000000f9 },
    530     { 0x00009ab4, 0x000000f9, 0x000000f9 },
    531     { 0x00009ab8, 0x000000f9, 0x000000f9 },
    532     { 0x00009abc, 0x000000f9, 0x000000f9 },
    533     { 0x00009ac0, 0x000000f9, 0x000000f9 },
    534     { 0x00009ac4, 0x000000f9, 0x000000f9 },
    535     { 0x00009ac8, 0x000000f9, 0x000000f9 },
    536     { 0x00009acc, 0x000000f9, 0x000000f9 },
    537     { 0x00009ad0, 0x000000f9, 0x000000f9 },
    538     { 0x00009ad4, 0x000000f9, 0x000000f9 },
    539     { 0x00009ad8, 0x000000f9, 0x000000f9 },
    540     { 0x00009adc, 0x000000f9, 0x000000f9 },
    541     { 0x00009ae0, 0x000000f9, 0x000000f9 },
    542     { 0x00009ae4, 0x000000f9, 0x000000f9 },
    543     { 0x00009ae8, 0x000000f9, 0x000000f9 },
    544     { 0x00009aec, 0x000000f9, 0x000000f9 },
    545     { 0x00009af0, 0x000000f9, 0x000000f9 },
    546     { 0x00009af4, 0x000000f9, 0x000000f9 },
    547     { 0x00009af8, 0x000000f9, 0x000000f9 },
    548     { 0x00009afc, 0x000000f9, 0x000000f9 },
    549 };
    550 
    551 static const uint32_t ar5416Bank1[][2] = {
    552     { 0x000098b0, 0x02108421 },
    553     { 0x000098ec, 0x00000008 },
    554 };
    555 
    556 static const uint32_t ar5416Bank2[][2] = {
    557     { 0x000098b0, 0x0e73ff17 },
    558     { 0x000098e0, 0x00000420 },
    559 };
    560 
    561 static const uint32_t ar5416Bank3[][3] = {
    562     { 0x000098f0, 0x01400018, 0x01c00018 },
    563 };
    564 
    565 #ifdef USE_NONTPC_BANK
    566 static const uint32_t ar5416Bank6[][3] = {
    567 /*    Reg      A            G            */
    568     { 0x0000989c, 0x00000000, 0x00000000 },
    569     { 0x0000989c, 0x00000000, 0x00000000 },
    570     { 0x0000989c, 0x00000000, 0x00000000 },
    571     { 0x0000989c, 0x00e00000, 0x00e00000 },
    572     { 0x0000989c, 0x005e0000, 0x005e0000 },
    573     { 0x0000989c, 0x00120000, 0x00120000 },
    574     { 0x0000989c, 0x00620000, 0x00620000 },
    575     { 0x0000989c, 0x00020000, 0x00020000 },
    576     { 0x0000989c, 0x00ff0000, 0x00ff0000 },
    577     { 0x0000989c, 0x00ff0000, 0x00ff0000 },
    578     { 0x0000989c, 0x00ff0000, 0x00ff0000 },
    579     { 0x0000989c, 0x40ff0000, 0x40ff0000 },
    580     { 0x0000989c, 0x005f0000, 0x005f0000 },
    581     { 0x0000989c, 0x00870000, 0x00870000 },
    582     { 0x0000989c, 0x00f90000, 0x00f90000 },
    583     { 0x0000989c, 0x007b0000, 0x007b0000 },
    584     { 0x0000989c, 0x00ff0000, 0x00ff0000 },
    585     { 0x0000989c, 0x00f50000, 0x00f50000 },
    586     { 0x0000989c, 0x00dc0000, 0x00dc0000 },
    587     { 0x0000989c, 0x00110000, 0x00110000 },
    588     { 0x0000989c, 0x006100a8, 0x006100a8 },
    589     { 0x0000989c, 0x004210a2, 0x004210a2 },
    590     { 0x0000989c, 0x0014008f, 0x0014008f },
    591     { 0x0000989c, 0x00c40003, 0x00c40003 },
    592     { 0x0000989c, 0x003000f2, 0x003000f2 },
    593     { 0x0000989c, 0x00440016, 0x00440016 },
    594     { 0x0000989c, 0x00410040, 0x00410040 },
    595     { 0x0000989c, 0x0001805e, 0x0001805e },
    596     { 0x0000989c, 0x0000c0ab, 0x0000c0ab },
    597     { 0x0000989c, 0x000000f1, 0x000000f1 },
    598     { 0x0000989c, 0x00002081, 0x00002081 },
    599     { 0x0000989c, 0x000000d4, 0x000000d4 },
    600     { 0x000098d0, 0x0000000f, 0x0010000f },
    601 };
    602 
    603 #else
    604 /* TPC bank */
    605 static const uint32_t ar5416Bank6[][3] = {
    606 /*    Reg      A            G            */
    607     { 0x0000989c, 0x00000000, 0x00000000 },
    608     { 0x0000989c, 0x00000000, 0x00000000 },
    609     { 0x0000989c, 0x00000000, 0x00000000 },
    610     { 0x0000989c, 0x00e00000, 0x00e00000 },
    611     { 0x0000989c, 0x005e0000, 0x005e0000 },
    612     { 0x0000989c, 0x00120000, 0x00120000 },
    613     { 0x0000989c, 0x00620000, 0x00620000 },
    614     { 0x0000989c, 0x00020000, 0x00020000 },
    615     { 0x0000989c, 0x00ff0000, 0x00ff0000 },
    616     { 0x0000989c, 0x00ff0000, 0x00ff0000 },
    617     { 0x0000989c, 0x00ff0000, 0x00ff0000 },
    618     { 0x0000989c, 0x40ff0000, 0x40ff0000 },
    619     { 0x0000989c, 0x005f0000, 0x005f0000 },
    620     { 0x0000989c, 0x00870000, 0x00870000 },
    621     { 0x0000989c, 0x00f90000, 0x00f90000 },
    622     { 0x0000989c, 0x007b0000, 0x007b0000 },
    623     { 0x0000989c, 0x00ff0000, 0x00ff0000 },
    624     { 0x0000989c, 0x00f50000, 0x00f50000 },
    625     { 0x0000989c, 0x00dc0000, 0x00dc0000 },
    626     { 0x0000989c, 0x00110000, 0x00110000 },
    627     { 0x0000989c, 0x006100a8, 0x006100a8 },
    628     { 0x0000989c, 0x00421022, 0x00421022 },
    629     { 0x0000989c, 0x001400df, 0x001400df },
    630     { 0x0000989c, 0x00c40002, 0x00c40002 },
    631     { 0x0000989c, 0x003000f2, 0x003000f2 },
    632     { 0x0000989c, 0x00440016, 0x00440016 },
    633     { 0x0000989c, 0x00410040, 0x00410040 },
    634     { 0x0000989c, 0x0001805e, 0x0001805e },
    635     { 0x0000989c, 0x0000c0ab, 0x0000c0ab },
    636     { 0x0000989c, 0x000000e1, 0x000000e1 },
    637     { 0x0000989c, 0x00002081, 0x00002081 },
    638     { 0x0000989c, 0x000000d4, 0x000000d4 },
    639     { 0x000098d0, 0x0000000f, 0x0010000f },
    640 };
    641 
    642 #endif
    643 
    644 static const uint32_t ar5416Bank7[][2] = {
    645     { 0x0000989c, 0x00000500 },
    646     { 0x0000989c, 0x00000800 },
    647     { 0x000098cc, 0x0000000e },
    648 };
    649 
    650 static const uint32_t ar5416Addac[][2] = {
    651     {0x0989c,  0x00000000 },
    652     {0x0989c,  0x00000003 },
    653     {0x0989c,  0x00000000 },
    654     {0x0989c,  0x0000000c },
    655     {0x0989c,  0x00000000 },
    656     {0x0989c,  0x00000030 },
    657     {0x0989c,  0x00000000 },
    658     {0x0989c,  0x00000000 },
    659     {0x0989c,  0x00000000 },
    660     {0x0989c,  0x00000000 },
    661     {0x0989c,  0x00000000 },
    662     {0x0989c,  0x00000000 },
    663     {0x0989c,  0x00000000 },
    664     {0x0989c,  0x00000000 },
    665     {0x0989c,  0x00000000 },
    666     {0x0989c,  0x00000000 },
    667     {0x0989c,  0x00000000 },
    668     {0x0989c,  0x00000000 },
    669     {0x0989c,  0x00000060 },
    670     {0x0989c,  0x00000000 },
    671     {0x0989c,  0x00000000 },
    672     {0x0989c,  0x00000000 },
    673     {0x0989c,  0x00000000 },
    674     {0x0989c,  0x00000000 },
    675     {0x0989c,  0x00000000 },
    676     {0x0989c,  0x00000000 },
    677     {0x0989c,  0x00000000 },
    678     {0x0989c,  0x00000000 },
    679     {0x0989c,  0x00000000 },
    680     {0x0989c,  0x00000000 },
    681     {0x0989c,  0x00000000 },
    682     {0x0989c,  0x00000058 },
    683     {0x0989c,  0x00000000 },
    684     {0x0989c,  0x00000000 },
    685     {0x0989c,  0x00000000 },
    686     {0x0989c,  0x00000000 },
    687     {0x098c4,  0x00000000 },
    688 };
    689 
    690 /* hand-crafted from code that does explicit register writes */
    691 static const uint32_t ar5416PciePhy[][2] = {
    692     { AR_PCIE_SERDES,  0x9248fc00 },
    693     { AR_PCIE_SERDES,  0x24924924 },
    694     { AR_PCIE_SERDES,  0x28000039 },
    695     { AR_PCIE_SERDES,  0x53160824 },
    696     { AR_PCIE_SERDES,  0xe5980579 },
    697     { AR_PCIE_SERDES,  0x001defff },
    698     { AR_PCIE_SERDES,  0x1aaabe40 },
    699     { AR_PCIE_SERDES,  0xbe105554 },
    700     { AR_PCIE_SERDES,  0x000e3007 },
    701     { AR_PCIE_SERDES2, 0x00000000 },
    702 };
    703