linux/drivers/net/wireless/b43/tables_lpphy.c
<<
>>
Prefs
   1/*
   2
   3  Broadcom B43 wireless driver
   4  IEEE 802.11a/g LP-PHY and radio device data tables
   5
   6  Copyright (c) 2009 Michael Buesch <m@bues.ch>
   7  Copyright (c) 2009 Gábor Stefanik <netrolller.3d@gmail.com>
   8
   9  This program is free software; you can redistribute it and/or modify
  10  it under the terms of the GNU General Public License as published by
  11  the Free Software Foundation; either version 2 of the License, or
  12  (at your option) any later version.
  13
  14  This program is distributed in the hope that it will be useful,
  15  but WITHOUT ANY WARRANTY; without even the implied warranty of
  16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17  GNU General Public License for more details.
  18
  19  You should have received a copy of the GNU General Public License
  20  along with this program; see the file COPYING.  If not, write to
  21  the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor,
  22  Boston, MA 02110-1301, USA.
  23
  24*/
  25
  26#include "b43.h"
  27#include "tables_lpphy.h"
  28#include "phy_common.h"
  29#include "phy_lp.h"
  30
  31
  32/* Entry of the 2062/2063 radio init table */
  33struct b206x_init_tab_entry {
  34        u16 offset;
  35        u16 value_a;
  36        u16 value_g;
  37        u8 flags;
  38};
  39#define B206X_FLAG_A    0x01 /* Flag: Init in A mode */
  40#define B206X_FLAG_G    0x02 /* Flag: Init in G mode */
  41
  42static const struct b206x_init_tab_entry b2062_init_tab[] = {
  43        /* { .offset = B2062_N_COMM1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  44        /* { .offset = 0x0001, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  45        /* { .offset = B2062_N_COMM2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  46        /* { .offset = B2062_N_COMM3, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  47        { .offset = B2062_N_COMM4, .value_a = 0x0001, .value_g = 0x0000, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  48        /* { .offset = B2062_N_COMM5, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  49        /* { .offset = B2062_N_COMM6, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  50        /* { .offset = B2062_N_COMM7, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  51        /* { .offset = B2062_N_COMM8, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  52        /* { .offset = B2062_N_COMM9, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  53        /* { .offset = B2062_N_COMM10, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  54        /* { .offset = B2062_N_COMM11, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  55        /* { .offset = B2062_N_COMM12, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  56        /* { .offset = B2062_N_COMM13, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  57        /* { .offset = B2062_N_COMM14, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  58        /* { .offset = B2062_N_COMM15, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  59        /* { .offset = B2062_N_PDN_CTL0, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  60        { .offset = B2062_N_PDN_CTL1, .value_a = 0x0000, .value_g = 0x00CA, .flags = B206X_FLAG_G, },
  61        /* { .offset = B2062_N_PDN_CTL2, .value_a = 0x0018, .value_g = 0x0018, .flags = 0, }, */
  62        { .offset = B2062_N_PDN_CTL3, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  63        { .offset = B2062_N_PDN_CTL4, .value_a = 0x0015, .value_g = 0x002A, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  64        /* { .offset = B2062_N_GEN_CTL0, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  65        /* { .offset = B2062_N_IQ_CALIB, .value_a = 0x0001, .value_g = 0x0001, .flags = 0, }, */
  66        { .offset = B2062_N_LGENC, .value_a = 0x00DB, .value_g = 0x00FF, .flags = B206X_FLAG_A, },
  67        /* { .offset = B2062_N_LGENA_LPF, .value_a = 0x0001, .value_g = 0x0001, .flags = 0, }, */
  68        /* { .offset = B2062_N_LGENA_BIAS0, .value_a = 0x0041, .value_g = 0x0041, .flags = 0, }, */
  69        /* { .offset = B2062_N_LGNEA_BIAS1, .value_a = 0x0002, .value_g = 0x0002, .flags = 0, }, */
  70        /* { .offset = B2062_N_LGENA_CTL0, .value_a = 0x0032, .value_g = 0x0032, .flags = 0, }, */
  71        /* { .offset = B2062_N_LGENA_CTL1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  72        /* { .offset = B2062_N_LGENA_CTL2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  73        { .offset = B2062_N_LGENA_TUNE0, .value_a = 0x00DD, .value_g = 0x0000, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  74        /* { .offset = B2062_N_LGENA_TUNE1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  75        { .offset = B2062_N_LGENA_TUNE2, .value_a = 0x00DD, .value_g = 0x0000, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  76        { .offset = B2062_N_LGENA_TUNE3, .value_a = 0x0077, .value_g = 0x00B5, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  77        { .offset = B2062_N_LGENA_CTL3, .value_a = 0x0000, .value_g = 0x00FF, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  78        /* { .offset = B2062_N_LGENA_CTL4, .value_a = 0x001F, .value_g = 0x001F, .flags = 0, }, */
  79        /* { .offset = B2062_N_LGENA_CTL5, .value_a = 0x0032, .value_g = 0x0032, .flags = 0, }, */
  80        /* { .offset = B2062_N_LGENA_CTL6, .value_a = 0x0032, .value_g = 0x0032, .flags = 0, }, */
  81        { .offset = B2062_N_LGENA_CTL7, .value_a = 0x0033, .value_g = 0x0033, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  82        /* { .offset = B2062_N_RXA_CTL0, .value_a = 0x0009, .value_g = 0x0009, .flags = 0, }, */
  83        { .offset = B2062_N_RXA_CTL1, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
  84        /* { .offset = B2062_N_RXA_CTL2, .value_a = 0x0018, .value_g = 0x0018, .flags = 0, }, */
  85        /* { .offset = B2062_N_RXA_CTL3, .value_a = 0x0027, .value_g = 0x0027, .flags = 0, }, */
  86        /* { .offset = B2062_N_RXA_CTL4, .value_a = 0x0028, .value_g = 0x0028, .flags = 0, }, */
  87        /* { .offset = B2062_N_RXA_CTL5, .value_a = 0x0007, .value_g = 0x0007, .flags = 0, }, */
  88        /* { .offset = B2062_N_RXA_CTL6, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  89        /* { .offset = B2062_N_RXA_CTL7, .value_a = 0x0008, .value_g = 0x0008, .flags = 0, }, */
  90        { .offset = B2062_N_RXBB_CTL0, .value_a = 0x0082, .value_g = 0x0080, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  91        /* { .offset = B2062_N_RXBB_CTL1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  92        /* { .offset = B2062_N_RXBB_CTL2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  93        /* { .offset = B2062_N_RXBB_GAIN0, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
  94        { .offset = B2062_N_RXBB_GAIN1, .value_a = 0x0004, .value_g = 0x0004, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  95        { .offset = B2062_N_RXBB_GAIN2, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  96        /* { .offset = B2062_N_RXBB_GAIN3, .value_a = 0x0011, .value_g = 0x0011, .flags = 0, }, */
  97        /* { .offset = B2062_N_RXBB_RSSI0, .value_a = 0x0043, .value_g = 0x0043, .flags = 0, }, */
  98        /* { .offset = B2062_N_RXBB_RSSI1, .value_a = 0x0033, .value_g = 0x0033, .flags = 0, }, */
  99        /* { .offset = B2062_N_RXBB_CALIB0, .value_a = 0x0010, .value_g = 0x0010, .flags = 0, }, */
 100        /* { .offset = B2062_N_RXBB_CALIB1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 101        /* { .offset = B2062_N_RXBB_CALIB2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 102        /* { .offset = B2062_N_RXBB_BIAS0, .value_a = 0x0006, .value_g = 0x0006, .flags = 0, }, */
 103        /* { .offset = B2062_N_RXBB_BIAS1, .value_a = 0x002A, .value_g = 0x002A, .flags = 0, }, */
 104        /* { .offset = B2062_N_RXBB_BIAS2, .value_a = 0x00AA, .value_g = 0x00AA, .flags = 0, }, */
 105        /* { .offset = B2062_N_RXBB_BIAS3, .value_a = 0x0021, .value_g = 0x0021, .flags = 0, }, */
 106        /* { .offset = B2062_N_RXBB_BIAS4, .value_a = 0x00AA, .value_g = 0x00AA, .flags = 0, }, */
 107        /* { .offset = B2062_N_RXBB_BIAS5, .value_a = 0x0022, .value_g = 0x0022, .flags = 0, }, */
 108        /* { .offset = B2062_N_RXBB_RSSI2, .value_a = 0x0001, .value_g = 0x0001, .flags = 0, }, */
 109        /* { .offset = B2062_N_RXBB_RSSI3, .value_a = 0x0055, .value_g = 0x0055, .flags = 0, }, */
 110        /* { .offset = B2062_N_RXBB_RSSI4, .value_a = 0x0001, .value_g = 0x0001, .flags = 0, }, */
 111        /* { .offset = B2062_N_RXBB_RSSI5, .value_a = 0x0055, .value_g = 0x0055, .flags = 0, }, */
 112        /* { .offset = B2062_N_TX_CTL0, .value_a = 0x0001, .value_g = 0x0001, .flags = 0, }, */
 113        /* { .offset = B2062_N_TX_CTL1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 114        /* { .offset = B2062_N_TX_CTL2, .value_a = 0x0084, .value_g = 0x0084, .flags = 0, }, */
 115        /* { .offset = B2062_N_TX_CTL3, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 116        { .offset = B2062_N_TX_CTL4, .value_a = 0x0003, .value_g = 0x0003, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 117        { .offset = B2062_N_TX_CTL5, .value_a = 0x0002, .value_g = 0x0002, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 118        /* { .offset = B2062_N_TX_CTL6, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 119        /* { .offset = B2062_N_TX_CTL7, .value_a = 0x0058, .value_g = 0x0058, .flags = 0, }, */
 120        /* { .offset = B2062_N_TX_CTL8, .value_a = 0x0082, .value_g = 0x0082, .flags = 0, }, */
 121        /* { .offset = B2062_N_TX_CTL9, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 122        /* { .offset = B2062_N_TX_CTL_A, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 123        /* { .offset = B2062_N_TX_GC2G, .value_a = 0x00FF, .value_g = 0x00FF, .flags = 0, }, */
 124        /* { .offset = B2062_N_TX_GC5G, .value_a = 0x00FF, .value_g = 0x00FF, .flags = 0, }, */
 125        { .offset = B2062_N_TX_TUNE, .value_a = 0x0088, .value_g = 0x001B, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 126        /* { .offset = B2062_N_TX_PAD, .value_a = 0x0088, .value_g = 0x0088, .flags = 0, }, */
 127        /* { .offset = B2062_N_TX_PGA, .value_a = 0x0088, .value_g = 0x0088, .flags = 0, }, */
 128        /* { .offset = B2062_N_TX_PADAUX, .value_a = 0x0033, .value_g = 0x0033, .flags = 0, }, */
 129        /* { .offset = B2062_N_TX_PGAAUX, .value_a = 0x0033, .value_g = 0x0033, .flags = 0, }, */
 130        /* { .offset = B2062_N_TSSI_CTL0, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 131        /* { .offset = B2062_N_TSSI_CTL1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 132        /* { .offset = B2062_N_TSSI_CTL2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 133        /* { .offset = B2062_N_IQ_CALIB_CTL0, .value_a = 0x0033, .value_g = 0x0033, .flags = 0, }, */
 134        /* { .offset = B2062_N_IQ_CALIB_CTL1, .value_a = 0x0055, .value_g = 0x0055, .flags = 0, }, */
 135        /* { .offset = B2062_N_IQ_CALIB_CTL2, .value_a = 0x0032, .value_g = 0x0032, .flags = 0, }, */
 136        /* { .offset = B2062_N_CALIB_TS, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 137        /* { .offset = B2062_N_CALIB_CTL0, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 138        /* { .offset = B2062_N_CALIB_CTL1, .value_a = 0x0015, .value_g = 0x0015, .flags = 0, }, */
 139        /* { .offset = B2062_N_CALIB_CTL2, .value_a = 0x000F, .value_g = 0x000F, .flags = 0, }, */
 140        /* { .offset = B2062_N_CALIB_CTL3, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 141        /* { .offset = B2062_N_CALIB_CTL4, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 142        /* { .offset = B2062_N_CALIB_DBG0, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 143        /* { .offset = B2062_N_CALIB_DBG1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 144        /* { .offset = B2062_N_CALIB_DBG2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 145        /* { .offset = B2062_N_CALIB_DBG3, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 146        /* { .offset = B2062_N_PSENSE_CTL0, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 147        /* { .offset = B2062_N_PSENSE_CTL1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 148        /* { .offset = B2062_N_PSENSE_CTL2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 149        /* { .offset = B2062_N_TEST_BUF0, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 150        /* { .offset = B2062_S_COMM1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 151        /* { .offset = B2062_S_RADIO_ID_CODE, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 152        /* { .offset = B2062_S_COMM2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 153        /* { .offset = B2062_S_COMM3, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 154        { .offset = B2062_S_COMM4, .value_a = 0x0001, .value_g = 0x0000, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 155        /* { .offset = B2062_S_COMM5, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 156        /* { .offset = B2062_S_COMM6, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 157        /* { .offset = B2062_S_COMM7, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 158        /* { .offset = B2062_S_COMM8, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 159        /* { .offset = B2062_S_COMM9, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 160        /* { .offset = B2062_S_COMM10, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 161        /* { .offset = B2062_S_COMM11, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 162        /* { .offset = B2062_S_COMM12, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 163        /* { .offset = B2062_S_COMM13, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 164        /* { .offset = B2062_S_COMM14, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 165        /* { .offset = B2062_S_COMM15, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 166        { .offset = B2062_S_PDS_CTL0, .value_a = 0x00FF, .value_g = 0x00FF, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 167        /* { .offset = B2062_S_PDS_CTL1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 168        /* { .offset = B2062_S_PDS_CTL2, .value_a = 0x008E, .value_g = 0x008E, .flags = 0, }, */
 169        /* { .offset = B2062_S_PDS_CTL3, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 170        /* { .offset = B2062_S_BG_CTL0, .value_a = 0x0006, .value_g = 0x0006, .flags = 0, }, */
 171        /* { .offset = B2062_S_BG_CTL1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 172        /* { .offset = B2062_S_BG_CTL2, .value_a = 0x0011, .value_g = 0x0011, .flags = 0, }, */
 173        { .offset = B2062_S_LGENG_CTL0, .value_a = 0x00F8, .value_g = 0x00D8, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 174        { .offset = B2062_S_LGENG_CTL1, .value_a = 0x003C, .value_g = 0x0024, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 175        /* { .offset = B2062_S_LGENG_CTL2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 176        /* { .offset = B2062_S_LGENG_CTL3, .value_a = 0x0041, .value_g = 0x0041, .flags = 0, }, */
 177        /* { .offset = B2062_S_LGENG_CTL4, .value_a = 0x0002, .value_g = 0x0002, .flags = 0, }, */
 178        /* { .offset = B2062_S_LGENG_CTL5, .value_a = 0x0033, .value_g = 0x0033, .flags = 0, }, */
 179        /* { .offset = B2062_S_LGENG_CTL6, .value_a = 0x0022, .value_g = 0x0022, .flags = 0, }, */
 180        /* { .offset = B2062_S_LGENG_CTL7, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 181        { .offset = B2062_S_LGENG_CTL8, .value_a = 0x0088, .value_g = 0x0080, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 182        /* { .offset = B2062_S_LGENG_CTL9, .value_a = 0x0088, .value_g = 0x0088, .flags = 0, }, */
 183        { .offset = B2062_S_LGENG_CTL10, .value_a = 0x0088, .value_g = 0x0080, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 184        /* { .offset = B2062_S_LGENG_CTL11, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 185        /* { .offset = B2062_S_REFPLL_CTL0, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 186        /* { .offset = B2062_S_REFPLL_CTL1, .value_a = 0x0007, .value_g = 0x0007, .flags = 0, }, */
 187        /* { .offset = B2062_S_REFPLL_CTL2, .value_a = 0x00AF, .value_g = 0x00AF, .flags = 0, }, */
 188        /* { .offset = B2062_S_REFPLL_CTL3, .value_a = 0x0012, .value_g = 0x0012, .flags = 0, }, */
 189        /* { .offset = B2062_S_REFPLL_CTL4, .value_a = 0x000B, .value_g = 0x000B, .flags = 0, }, */
 190        /* { .offset = B2062_S_REFPLL_CTL5, .value_a = 0x005F, .value_g = 0x005F, .flags = 0, }, */
 191        /* { .offset = B2062_S_REFPLL_CTL6, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 192        /* { .offset = B2062_S_REFPLL_CTL7, .value_a = 0x0040, .value_g = 0x0040, .flags = 0, }, */
 193        /* { .offset = B2062_S_REFPLL_CTL8, .value_a = 0x0052, .value_g = 0x0052, .flags = 0, }, */
 194        /* { .offset = B2062_S_REFPLL_CTL9, .value_a = 0x0026, .value_g = 0x0026, .flags = 0, }, */
 195        /* { .offset = B2062_S_REFPLL_CTL10, .value_a = 0x0003, .value_g = 0x0003, .flags = 0, }, */
 196        /* { .offset = B2062_S_REFPLL_CTL11, .value_a = 0x0036, .value_g = 0x0036, .flags = 0, }, */
 197        /* { .offset = B2062_S_REFPLL_CTL12, .value_a = 0x0057, .value_g = 0x0057, .flags = 0, }, */
 198        /* { .offset = B2062_S_REFPLL_CTL13, .value_a = 0x0011, .value_g = 0x0011, .flags = 0, }, */
 199        /* { .offset = B2062_S_REFPLL_CTL14, .value_a = 0x0075, .value_g = 0x0075, .flags = 0, }, */
 200        /* { .offset = B2062_S_REFPLL_CTL15, .value_a = 0x00B4, .value_g = 0x00B4, .flags = 0, }, */
 201        /* { .offset = B2062_S_REFPLL_CTL16, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 202        { .offset = B2062_S_RFPLL_CTL0, .value_a = 0x0098, .value_g = 0x0098, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 203        { .offset = B2062_S_RFPLL_CTL1, .value_a = 0x0010, .value_g = 0x0010, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 204        /* { .offset = B2062_S_RFPLL_CTL2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 205        /* { .offset = B2062_S_RFPLL_CTL3, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 206        /* { .offset = B2062_S_RFPLL_CTL4, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 207        { .offset = B2062_S_RFPLL_CTL5, .value_a = 0x0043, .value_g = 0x0043, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 208        { .offset = B2062_S_RFPLL_CTL6, .value_a = 0x0047, .value_g = 0x0047, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 209        { .offset = B2062_S_RFPLL_CTL7, .value_a = 0x000C, .value_g = 0x000C, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 210        { .offset = B2062_S_RFPLL_CTL8, .value_a = 0x0011, .value_g = 0x0011, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 211        { .offset = B2062_S_RFPLL_CTL9, .value_a = 0x0011, .value_g = 0x0011, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 212        { .offset = B2062_S_RFPLL_CTL10, .value_a = 0x000E, .value_g = 0x000E, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 213        { .offset = B2062_S_RFPLL_CTL11, .value_a = 0x0008, .value_g = 0x0008, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 214        { .offset = B2062_S_RFPLL_CTL12, .value_a = 0x0033, .value_g = 0x0033, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 215        { .offset = B2062_S_RFPLL_CTL13, .value_a = 0x000A, .value_g = 0x000A, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 216        { .offset = B2062_S_RFPLL_CTL14, .value_a = 0x0006, .value_g = 0x0006, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 217        /* { .offset = B2062_S_RFPLL_CTL15, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 218        /* { .offset = B2062_S_RFPLL_CTL16, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 219        /* { .offset = B2062_S_RFPLL_CTL17, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 220        { .offset = B2062_S_RFPLL_CTL18, .value_a = 0x003E, .value_g = 0x003E, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 221        { .offset = B2062_S_RFPLL_CTL19, .value_a = 0x0013, .value_g = 0x0013, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 222        /* { .offset = B2062_S_RFPLL_CTL20, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 223        { .offset = B2062_S_RFPLL_CTL21, .value_a = 0x0062, .value_g = 0x0062, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 224        { .offset = B2062_S_RFPLL_CTL22, .value_a = 0x0007, .value_g = 0x0007, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 225        { .offset = B2062_S_RFPLL_CTL23, .value_a = 0x0016, .value_g = 0x0016, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 226        { .offset = B2062_S_RFPLL_CTL24, .value_a = 0x005C, .value_g = 0x005C, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 227        { .offset = B2062_S_RFPLL_CTL25, .value_a = 0x0095, .value_g = 0x0095, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 228        /* { .offset = B2062_S_RFPLL_CTL26, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 229        /* { .offset = B2062_S_RFPLL_CTL27, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 230        /* { .offset = B2062_S_RFPLL_CTL28, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 231        /* { .offset = B2062_S_RFPLL_CTL29, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 232        { .offset = B2062_S_RFPLL_CTL30, .value_a = 0x00A0, .value_g = 0x00A0, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 233        { .offset = B2062_S_RFPLL_CTL31, .value_a = 0x0004, .value_g = 0x0004, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 234        /* { .offset = B2062_S_RFPLL_CTL32, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 235        { .offset = B2062_S_RFPLL_CTL33, .value_a = 0x00CC, .value_g = 0x00CC, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 236        { .offset = B2062_S_RFPLL_CTL34, .value_a = 0x0007, .value_g = 0x0007, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 237        /* { .offset = B2062_S_RXG_CNT0, .value_a = 0x0010, .value_g = 0x0010, .flags = 0, }, */
 238        /* { .offset = B2062_S_RXG_CNT1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 239        /* { .offset = B2062_S_RXG_CNT2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 240        /* { .offset = B2062_S_RXG_CNT3, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 241        /* { .offset = B2062_S_RXG_CNT4, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 242        /* { .offset = B2062_S_RXG_CNT5, .value_a = 0x0055, .value_g = 0x0055, .flags = 0, }, */
 243        /* { .offset = B2062_S_RXG_CNT6, .value_a = 0x0055, .value_g = 0x0055, .flags = 0, }, */
 244        /* { .offset = B2062_S_RXG_CNT7, .value_a = 0x0005, .value_g = 0x0005, .flags = 0, }, */
 245        { .offset = B2062_S_RXG_CNT8, .value_a = 0x000F, .value_g = 0x000F, .flags = B206X_FLAG_A, },
 246        /* { .offset = B2062_S_RXG_CNT9, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 247        /* { .offset = B2062_S_RXG_CNT10, .value_a = 0x0055, .value_g = 0x0055, .flags = 0, }, */
 248        /* { .offset = B2062_S_RXG_CNT11, .value_a = 0x0066, .value_g = 0x0066, .flags = 0, }, */
 249        /* { .offset = B2062_S_RXG_CNT12, .value_a = 0x0055, .value_g = 0x0055, .flags = 0, }, */
 250        /* { .offset = B2062_S_RXG_CNT13, .value_a = 0x0044, .value_g = 0x0044, .flags = 0, }, */
 251        /* { .offset = B2062_S_RXG_CNT14, .value_a = 0x00A0, .value_g = 0x00A0, .flags = 0, }, */
 252        /* { .offset = B2062_S_RXG_CNT15, .value_a = 0x0004, .value_g = 0x0004, .flags = 0, }, */
 253        /* { .offset = B2062_S_RXG_CNT16, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 254        /* { .offset = B2062_S_RXG_CNT17, .value_a = 0x0055, .value_g = 0x0055, .flags = 0, }, */
 255};
 256
 257static const struct b206x_init_tab_entry b2063_init_tab[] = {
 258        { .offset = B2063_COMM1, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 259        /* { .offset = B2063_COMM2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 260        /* { .offset = B2063_COMM3, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 261        /* { .offset = B2063_COMM4, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 262        /* { .offset = B2063_COMM5, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 263        /* { .offset = B2063_COMM6, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 264        /* { .offset = B2063_COMM7, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 265        /* { .offset = B2063_COMM8, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 266        /* { .offset = B2063_COMM9, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 267        { .offset = B2063_COMM10, .value_a = 0x0001, .value_g = 0x0000, .flags = B206X_FLAG_A, },
 268        /* { .offset = B2063_COMM11, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 269        /* { .offset = B2063_COMM12, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 270        /* { .offset = B2063_COMM13, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 271        /* { .offset = B2063_COMM14, .value_a = 0x0006, .value_g = 0x0006, .flags = 0, }, */
 272        /* { .offset = B2063_COMM15, .value_a = 0x000f, .value_g = 0x000f, .flags = 0, }, */
 273        { .offset = B2063_COMM16, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 274        { .offset = B2063_COMM17, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 275        { .offset = B2063_COMM18, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 276        { .offset = B2063_COMM19, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 277        { .offset = B2063_COMM20, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 278        { .offset = B2063_COMM21, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 279        { .offset = B2063_COMM22, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 280        { .offset = B2063_COMM23, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 281        { .offset = B2063_COMM24, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 282        /* { .offset = B2063_PWR_SWITCH_CTL, .value_a = 0x007f, .value_g = 0x007f, .flags = 0, }, */
 283        /* { .offset = B2063_PLL_SP1, .value_a = 0x003f, .value_g = 0x003f, .flags = 0, }, */
 284        /* { .offset = B2063_PLL_SP2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 285        { .offset = B2063_LOGEN_SP1, .value_a = 0x00e8, .value_g = 0x00d4, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 286        { .offset = B2063_LOGEN_SP2, .value_a = 0x00a7, .value_g = 0x0053, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 287        /* { .offset = B2063_LOGEN_SP3, .value_a = 0x00ff, .value_g = 0x00ff, .flags = 0, }, */
 288        { .offset = B2063_LOGEN_SP4, .value_a = 0x00f0, .value_g = 0x000f, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 289        /* { .offset = B2063_LOGEN_SP5, .value_a = 0x0001, .value_g = 0x0001, .flags = 0, }, */
 290        { .offset = B2063_G_RX_SP1, .value_a = 0x001f, .value_g = 0x005e, .flags = B206X_FLAG_G, },
 291        { .offset = B2063_G_RX_SP2, .value_a = 0x007f, .value_g = 0x007e, .flags = B206X_FLAG_G, },
 292        { .offset = B2063_G_RX_SP3, .value_a = 0x0030, .value_g = 0x00f0, .flags = B206X_FLAG_G, },
 293        /* { .offset = B2063_G_RX_SP4, .value_a = 0x0035, .value_g = 0x0035, .flags = 0, }, */
 294        /* { .offset = B2063_G_RX_SP5, .value_a = 0x003f, .value_g = 0x003f, .flags = 0, }, */
 295        /* { .offset = B2063_G_RX_SP6, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 296        { .offset = B2063_G_RX_SP7, .value_a = 0x007f, .value_g = 0x007f, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 297        /* { .offset = B2063_G_RX_SP8, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 298        /* { .offset = B2063_G_RX_SP9, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 299        { .offset = B2063_G_RX_SP10, .value_a = 0x000c, .value_g = 0x000c, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 300        /* { .offset = B2063_G_RX_SP11, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 301        { .offset = B2063_A_RX_SP1, .value_a = 0x003c, .value_g = 0x003f, .flags = B206X_FLAG_A, },
 302        { .offset = B2063_A_RX_SP2, .value_a = 0x00fc, .value_g = 0x00fe, .flags = B206X_FLAG_A, },
 303        /* { .offset = B2063_A_RX_SP3, .value_a = 0x00ff, .value_g = 0x00ff, .flags = 0, }, */
 304        /* { .offset = B2063_A_RX_SP4, .value_a = 0x00ff, .value_g = 0x00ff, .flags = 0, }, */
 305        /* { .offset = B2063_A_RX_SP5, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 306        /* { .offset = B2063_A_RX_SP6, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 307        { .offset = B2063_A_RX_SP7, .value_a = 0x0008, .value_g = 0x0008, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 308        /* { .offset = B2063_RX_BB_SP1, .value_a = 0x000f, .value_g = 0x000f, .flags = 0, }, */
 309        /* { .offset = B2063_RX_BB_SP2, .value_a = 0x0022, .value_g = 0x0022, .flags = 0, }, */
 310        /* { .offset = B2063_RX_BB_SP3, .value_a = 0x00a8, .value_g = 0x00a8, .flags = 0, }, */
 311        { .offset = B2063_RX_BB_SP4, .value_a = 0x0060, .value_g = 0x0060, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 312        /* { .offset = B2063_RX_BB_SP5, .value_a = 0x0011, .value_g = 0x0011, .flags = 0, }, */
 313        /* { .offset = B2063_RX_BB_SP6, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 314        /* { .offset = B2063_RX_BB_SP7, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 315        { .offset = B2063_RX_BB_SP8, .value_a = 0x0030, .value_g = 0x0030, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 316        /* { .offset = B2063_TX_RF_SP1, .value_a = 0x0001, .value_g = 0x0001, .flags = 0, }, */
 317        /* { .offset = B2063_TX_RF_SP2, .value_a = 0x0003, .value_g = 0x0003, .flags = 0, }, */
 318        { .offset = B2063_TX_RF_SP3, .value_a = 0x000c, .value_g = 0x000b, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 319        { .offset = B2063_TX_RF_SP4, .value_a = 0x0010, .value_g = 0x000f, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 320        /* { .offset = B2063_TX_RF_SP5, .value_a = 0x000f, .value_g = 0x000f, .flags = 0, }, */
 321        /* { .offset = B2063_TX_RF_SP6, .value_a = 0x0080, .value_g = 0x0080, .flags = 0, }, */
 322        /* { .offset = B2063_TX_RF_SP7, .value_a = 0x0068, .value_g = 0x0068, .flags = 0, }, */
 323        /* { .offset = B2063_TX_RF_SP8, .value_a = 0x0068, .value_g = 0x0068, .flags = 0, }, */
 324        /* { .offset = B2063_TX_RF_SP9, .value_a = 0x0080, .value_g = 0x0080, .flags = 0, }, */
 325        /* { .offset = B2063_TX_RF_SP10, .value_a = 0x00ff, .value_g = 0x00ff, .flags = 0, }, */
 326        /* { .offset = B2063_TX_RF_SP11, .value_a = 0x0003, .value_g = 0x0003, .flags = 0, }, */
 327        /* { .offset = B2063_TX_RF_SP12, .value_a = 0x0038, .value_g = 0x0038, .flags = 0, }, */
 328        /* { .offset = B2063_TX_RF_SP13, .value_a = 0x00ff, .value_g = 0x00ff, .flags = 0, }, */
 329        /* { .offset = B2063_TX_RF_SP14, .value_a = 0x0038, .value_g = 0x0038, .flags = 0, }, */
 330        /* { .offset = B2063_TX_RF_SP15, .value_a = 0x00c0, .value_g = 0x00c0, .flags = 0, }, */
 331        /* { .offset = B2063_TX_RF_SP16, .value_a = 0x00ff, .value_g = 0x00ff, .flags = 0, }, */
 332        /* { .offset = B2063_TX_RF_SP17, .value_a = 0x00ff, .value_g = 0x00ff, .flags = 0, }, */
 333        { .offset = B2063_PA_SP1, .value_a = 0x003d, .value_g = 0x00fd, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 334        /* { .offset = B2063_PA_SP2, .value_a = 0x000c, .value_g = 0x000c, .flags = 0, }, */
 335        /* { .offset = B2063_PA_SP3, .value_a = 0x0096, .value_g = 0x0096, .flags = 0, }, */
 336        /* { .offset = B2063_PA_SP4, .value_a = 0x005a, .value_g = 0x005a, .flags = 0, }, */
 337        /* { .offset = B2063_PA_SP5, .value_a = 0x007f, .value_g = 0x007f, .flags = 0, }, */
 338        /* { .offset = B2063_PA_SP6, .value_a = 0x007f, .value_g = 0x007f, .flags = 0, }, */
 339        /* { .offset = B2063_PA_SP7, .value_a = 0x0033, .value_g = 0x0033, .flags = 0, }, */
 340        { .offset = B2063_TX_BB_SP1, .value_a = 0x0002, .value_g = 0x0002, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 341        /* { .offset = B2063_TX_BB_SP2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 342        /* { .offset = B2063_TX_BB_SP3, .value_a = 0x0030, .value_g = 0x0030, .flags = 0, }, */
 343        /* { .offset = B2063_REG_SP1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 344        { .offset = B2063_BANDGAP_CTL1, .value_a = 0x0056, .value_g = 0x0056, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 345        /* { .offset = B2063_BANDGAP_CTL2, .value_a = 0x0006, .value_g = 0x0006, .flags = 0, }, */
 346        /* { .offset = B2063_LPO_CTL1, .value_a = 0x000e, .value_g = 0x000e, .flags = 0, }, */
 347        /* { .offset = B2063_RC_CALIB_CTL1, .value_a = 0x007e, .value_g = 0x007e, .flags = 0, }, */
 348        /* { .offset = B2063_RC_CALIB_CTL2, .value_a = 0x0015, .value_g = 0x0015, .flags = 0, }, */
 349        /* { .offset = B2063_RC_CALIB_CTL3, .value_a = 0x000f, .value_g = 0x000f, .flags = 0, }, */
 350        /* { .offset = B2063_RC_CALIB_CTL4, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 351        /* { .offset = B2063_RC_CALIB_CTL5, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 352        /* { .offset = B2063_RC_CALIB_CTL6, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 353        /* { .offset = B2063_RC_CALIB_CTL7, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 354        /* { .offset = B2063_RC_CALIB_CTL8, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 355        /* { .offset = B2063_RC_CALIB_CTL9, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 356        /* { .offset = B2063_RC_CALIB_CTL10, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 357        /* { .offset = B2063_PLL_JTAG_CALNRST, .value_a = 0x0004, .value_g = 0x0004, .flags = 0, }, */
 358        /* { .offset = B2063_PLL_JTAG_IN_PLL1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 359        /* { .offset = B2063_PLL_JTAG_IN_PLL2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 360        /* { .offset = B2063_PLL_JTAG_PLL_CP1, .value_a = 0x00cf, .value_g = 0x00cf, .flags = 0, }, */
 361        /* { .offset = B2063_PLL_JTAG_PLL_CP2, .value_a = 0x0059, .value_g = 0x0059, .flags = 0, }, */
 362        /* { .offset = B2063_PLL_JTAG_PLL_CP3, .value_a = 0x0007, .value_g = 0x0007, .flags = 0, }, */
 363        /* { .offset = B2063_PLL_JTAG_PLL_CP4, .value_a = 0x0042, .value_g = 0x0042, .flags = 0, }, */
 364        /* { .offset = B2063_PLL_JTAG_PLL_CTL1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 365        /* { .offset = B2063_PLL_JTAG_PLL_LF1, .value_a = 0x00db, .value_g = 0x00db, .flags = 0, }, */
 366        /* { .offset = B2063_PLL_JTAG_PLL_LF2, .value_a = 0x0094, .value_g = 0x0094, .flags = 0, }, */
 367        /* { .offset = B2063_PLL_JTAG_PLL_LF3, .value_a = 0x0028, .value_g = 0x0028, .flags = 0, }, */
 368        /* { .offset = B2063_PLL_JTAG_PLL_LF4, .value_a = 0x0063, .value_g = 0x0063, .flags = 0, }, */
 369        /* { .offset = B2063_PLL_JTAG_PLL_SG1, .value_a = 0x0007, .value_g = 0x0007, .flags = 0, }, */
 370        /* { .offset = B2063_PLL_JTAG_PLL_SG2, .value_a = 0x00d3, .value_g = 0x00d3, .flags = 0, }, */
 371        /* { .offset = B2063_PLL_JTAG_PLL_SG3, .value_a = 0x00b1, .value_g = 0x00b1, .flags = 0, }, */
 372        /* { .offset = B2063_PLL_JTAG_PLL_SG4, .value_a = 0x003b, .value_g = 0x003b, .flags = 0, }, */
 373        /* { .offset = B2063_PLL_JTAG_PLL_SG5, .value_a = 0x0006, .value_g = 0x0006, .flags = 0, }, */
 374        /* { .offset = B2063_PLL_JTAG_PLL_VCO1, .value_a = 0x0058, .value_g = 0x0058, .flags = 0, }, */
 375        { .offset = B2063_PLL_JTAG_PLL_VCO2, .value_a = 0x00f7, .value_g = 0x00f7, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 376        /* { .offset = B2063_PLL_JTAG_PLL_VCO_CALIB1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 377        /* { .offset = B2063_PLL_JTAG_PLL_VCO_CALIB2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 378        /* { .offset = B2063_PLL_JTAG_PLL_VCO_CALIB3, .value_a = 0x0002, .value_g = 0x0002, .flags = 0, }, */
 379        /* { .offset = B2063_PLL_JTAG_PLL_VCO_CALIB4, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 380        /* { .offset = B2063_PLL_JTAG_PLL_VCO_CALIB5, .value_a = 0x0009, .value_g = 0x0009, .flags = 0, }, */
 381        /* { .offset = B2063_PLL_JTAG_PLL_VCO_CALIB6, .value_a = 0x0005, .value_g = 0x0005, .flags = 0, }, */
 382        /* { .offset = B2063_PLL_JTAG_PLL_VCO_CALIB7, .value_a = 0x0016, .value_g = 0x0016, .flags = 0, }, */
 383        /* { .offset = B2063_PLL_JTAG_PLL_VCO_CALIB8, .value_a = 0x006b, .value_g = 0x006b, .flags = 0, }, */
 384        /* { .offset = B2063_PLL_JTAG_PLL_VCO_CALIB9, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 385        /* { .offset = B2063_PLL_JTAG_PLL_VCO_CALIB10, .value_a = 0x00b3, .value_g = 0x00b3, .flags = 0, }, */
 386        /* { .offset = B2063_PLL_JTAG_PLL_XTAL_12, .value_a = 0x0004, .value_g = 0x0004, .flags = 0, }, */
 387        /* { .offset = B2063_PLL_JTAG_PLL_XTAL3, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 388        /* { .offset = B2063_LOGEN_ACL1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 389        /* { .offset = B2063_LOGEN_ACL2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 390        /* { .offset = B2063_LOGEN_ACL3, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 391        /* { .offset = B2063_LOGEN_ACL4, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 392        /* { .offset = B2063_LOGEN_ACL5, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 393        /* { .offset = B2063_LO_CALIB_INPUTS, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 394        /* { .offset = B2063_LO_CALIB_CTL1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 395        /* { .offset = B2063_LO_CALIB_CTL2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 396        /* { .offset = B2063_LO_CALIB_CTL3, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 397        /* { .offset = B2063_LO_CALIB_WAITCNT, .value_a = 0x0002, .value_g = 0x0002, .flags = 0, }, */
 398        /* { .offset = B2063_LO_CALIB_OVR1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 399        /* { .offset = B2063_LO_CALIB_OVR2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 400        /* { .offset = B2063_LO_CALIB_OVAL1, .value_a = 0x0066, .value_g = 0x0066, .flags = 0, }, */
 401        /* { .offset = B2063_LO_CALIB_OVAL2, .value_a = 0x0066, .value_g = 0x0066, .flags = 0, }, */
 402        /* { .offset = B2063_LO_CALIB_OVAL3, .value_a = 0x0066, .value_g = 0x0066, .flags = 0, }, */
 403        /* { .offset = B2063_LO_CALIB_OVAL4, .value_a = 0x0066, .value_g = 0x0066, .flags = 0, }, */
 404        /* { .offset = B2063_LO_CALIB_OVAL5, .value_a = 0x0066, .value_g = 0x0066, .flags = 0, }, */
 405        /* { .offset = B2063_LO_CALIB_OVAL6, .value_a = 0x0066, .value_g = 0x0066, .flags = 0, }, */
 406        /* { .offset = B2063_LO_CALIB_OVAL7, .value_a = 0x0066, .value_g = 0x0066, .flags = 0, }, */
 407        /* { .offset = B2063_LO_CALIB_CALVLD1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 408        /* { .offset = B2063_LO_CALIB_CALVLD2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 409        /* { .offset = B2063_LO_CALIB_CVAL1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 410        /* { .offset = B2063_LO_CALIB_CVAL2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 411        /* { .offset = B2063_LO_CALIB_CVAL3, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 412        /* { .offset = B2063_LO_CALIB_CVAL4, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 413        /* { .offset = B2063_LO_CALIB_CVAL5, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 414        /* { .offset = B2063_LO_CALIB_CVAL6, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 415        /* { .offset = B2063_LO_CALIB_CVAL7, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 416        /* { .offset = B2063_LOGEN_CALIB_EN, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 417        /* { .offset = B2063_LOGEN_PEAKDET1, .value_a = 0x00ff, .value_g = 0x00ff, .flags = 0, }, */
 418        /* { .offset = B2063_LOGEN_RCCR1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 419        /* { .offset = B2063_LOGEN_VCOBUF1, .value_a = 0x0060, .value_g = 0x0060, .flags = 0, }, */
 420        /* { .offset = B2063_LOGEN_MIXER1, .value_a = 0x0066, .value_g = 0x0066, .flags = 0, }, */
 421        /* { .offset = B2063_LOGEN_MIXER2, .value_a = 0x000c, .value_g = 0x000c, .flags = 0, }, */
 422        /* { .offset = B2063_LOGEN_BUF1, .value_a = 0x0066, .value_g = 0x0066, .flags = 0, }, */
 423        /* { .offset = B2063_LOGEN_BUF2, .value_a = 0x000c, .value_g = 0x000c, .flags = 0, }, */
 424        /* { .offset = B2063_LOGEN_DIV1, .value_a = 0x0001, .value_g = 0x0001, .flags = 0, }, */
 425        /* { .offset = B2063_LOGEN_DIV2, .value_a = 0x0066, .value_g = 0x0066, .flags = 0, }, */
 426        /* { .offset = B2063_LOGEN_DIV3, .value_a = 0x0066, .value_g = 0x0066, .flags = 0, }, */
 427        /* { .offset = B2063_LOGEN_CBUFRX1, .value_a = 0x0066, .value_g = 0x0066, .flags = 0, }, */
 428        /* { .offset = B2063_LOGEN_CBUFRX2, .value_a = 0x0066, .value_g = 0x0066, .flags = 0, }, */
 429        /* { .offset = B2063_LOGEN_CBUFTX1, .value_a = 0x0066, .value_g = 0x0066, .flags = 0, }, */
 430        /* { .offset = B2063_LOGEN_CBUFTX2, .value_a = 0x0066, .value_g = 0x0066, .flags = 0, }, */
 431        /* { .offset = B2063_LOGEN_IDAC1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 432        /* { .offset = B2063_LOGEN_SPARE1, .value_a = 0x0001, .value_g = 0x0001, .flags = 0, }, */
 433        /* { .offset = B2063_LOGEN_SPARE2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 434        /* { .offset = B2063_LOGEN_SPARE3, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 435        /* { .offset = B2063_G_RX_1ST1, .value_a = 0x0033, .value_g = 0x0033, .flags = 0, }, */
 436        /* { .offset = B2063_G_RX_1ST2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 437        /* { .offset = B2063_G_RX_1ST3, .value_a = 0x0005, .value_g = 0x0005, .flags = 0, }, */
 438        /* { .offset = B2063_G_RX_2ND1, .value_a = 0x0030, .value_g = 0x0030, .flags = 0, }, */
 439        /* { .offset = B2063_G_RX_2ND2, .value_a = 0x0055, .value_g = 0x0055, .flags = 0, }, */
 440        /* { .offset = B2063_G_RX_2ND3, .value_a = 0x0033, .value_g = 0x0033, .flags = 0, }, */
 441        /* { .offset = B2063_G_RX_2ND4, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 442        /* { .offset = B2063_G_RX_2ND5, .value_a = 0x0033, .value_g = 0x0033, .flags = 0, }, */
 443        /* { .offset = B2063_G_RX_2ND6, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 444        /* { .offset = B2063_G_RX_2ND7, .value_a = 0x0035, .value_g = 0x0035, .flags = 0, }, */
 445        /* { .offset = B2063_G_RX_2ND8, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 446        /* { .offset = B2063_G_RX_PS1, .value_a = 0x0033, .value_g = 0x0033, .flags = 0, }, */
 447        /* { .offset = B2063_G_RX_PS2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 448        /* { .offset = B2063_G_RX_PS3, .value_a = 0x0033, .value_g = 0x0033, .flags = 0, }, */
 449        /* { .offset = B2063_G_RX_PS4, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 450        /* { .offset = B2063_G_RX_PS5, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 451        /* { .offset = B2063_G_RX_MIX1, .value_a = 0x0044, .value_g = 0x0044, .flags = 0, }, */
 452        /* { .offset = B2063_G_RX_MIX2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 453        { .offset = B2063_G_RX_MIX3, .value_a = 0x0071, .value_g = 0x0071, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 454        { .offset = B2063_G_RX_MIX4, .value_a = 0x0071, .value_g = 0x0071, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 455        /* { .offset = B2063_G_RX_MIX5, .value_a = 0x0003, .value_g = 0x0003, .flags = 0, }, */
 456        /* { .offset = B2063_G_RX_MIX6, .value_a = 0x0088, .value_g = 0x0088, .flags = 0, }, */
 457        /* { .offset = B2063_G_RX_MIX7, .value_a = 0x0044, .value_g = 0x0044, .flags = 0, }, */
 458        /* { .offset = B2063_G_RX_MIX8, .value_a = 0x0001, .value_g = 0x0001, .flags = 0, }, */
 459        /* { .offset = B2063_G_RX_PDET1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 460        /* { .offset = B2063_G_RX_SPARES1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 461        /* { .offset = B2063_G_RX_SPARES2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 462        /* { .offset = B2063_G_RX_SPARES3, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 463        /* { .offset = B2063_A_RX_1ST1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 464        { .offset = B2063_A_RX_1ST2, .value_a = 0x00f0, .value_g = 0x0030, .flags = B206X_FLAG_A, },
 465        /* { .offset = B2063_A_RX_1ST3, .value_a = 0x0005, .value_g = 0x0005, .flags = 0, }, */
 466        /* { .offset = B2063_A_RX_1ST4, .value_a = 0x0033, .value_g = 0x0033, .flags = 0, }, */
 467        /* { .offset = B2063_A_RX_1ST5, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 468        /* { .offset = B2063_A_RX_2ND1, .value_a = 0x0005, .value_g = 0x0005, .flags = 0, }, */
 469        /* { .offset = B2063_A_RX_2ND2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 470        /* { .offset = B2063_A_RX_2ND3, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 471        /* { .offset = B2063_A_RX_2ND4, .value_a = 0x0005, .value_g = 0x0005, .flags = 0, }, */
 472        /* { .offset = B2063_A_RX_2ND5, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 473        /* { .offset = B2063_A_RX_2ND6, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 474        /* { .offset = B2063_A_RX_2ND7, .value_a = 0x0005, .value_g = 0x0005, .flags = 0, }, */
 475        /* { .offset = B2063_A_RX_PS1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 476        /* { .offset = B2063_A_RX_PS2, .value_a = 0x0033, .value_g = 0x0033, .flags = 0, }, */
 477        /* { .offset = B2063_A_RX_PS3, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 478        /* { .offset = B2063_A_RX_PS4, .value_a = 0x0033, .value_g = 0x0033, .flags = 0, }, */
 479        /* { .offset = B2063_A_RX_PS5, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 480        { .offset = B2063_A_RX_PS6, .value_a = 0x0077, .value_g = 0x0077, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 481        /* { .offset = B2063_A_RX_MIX1, .value_a = 0x0088, .value_g = 0x0088, .flags = 0, }, */
 482        /* { .offset = B2063_A_RX_MIX2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 483        /* { .offset = B2063_A_RX_MIX3, .value_a = 0x0044, .value_g = 0x0044, .flags = 0, }, */
 484        { .offset = B2063_A_RX_MIX4, .value_a = 0x0003, .value_g = 0x0003, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 485        { .offset = B2063_A_RX_MIX5, .value_a = 0x000f, .value_g = 0x000f, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 486        { .offset = B2063_A_RX_MIX6, .value_a = 0x000f, .value_g = 0x000f, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 487        /* { .offset = B2063_A_RX_MIX7, .value_a = 0x0044, .value_g = 0x0044, .flags = 0, }, */
 488        /* { .offset = B2063_A_RX_MIX8, .value_a = 0x0001, .value_g = 0x0001, .flags = 0, }, */
 489        /* { .offset = B2063_A_RX_PWRDET1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 490        /* { .offset = B2063_A_RX_SPARE1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 491        /* { .offset = B2063_A_RX_SPARE2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 492        /* { .offset = B2063_A_RX_SPARE3, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 493        { .offset = B2063_RX_TIA_CTL1, .value_a = 0x0077, .value_g = 0x0077, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 494        /* { .offset = B2063_RX_TIA_CTL2, .value_a = 0x0058, .value_g = 0x0058, .flags = 0, }, */
 495        { .offset = B2063_RX_TIA_CTL3, .value_a = 0x0077, .value_g = 0x0077, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 496        /* { .offset = B2063_RX_TIA_CTL4, .value_a = 0x0058, .value_g = 0x0058, .flags = 0, }, */
 497        /* { .offset = B2063_RX_TIA_CTL5, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 498        /* { .offset = B2063_RX_TIA_CTL6, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 499        /* { .offset = B2063_RX_BB_CTL1, .value_a = 0x0074, .value_g = 0x0074, .flags = 0, }, */
 500        { .offset = B2063_RX_BB_CTL2, .value_a = 0x0004, .value_g = 0x0004, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 501        /* { .offset = B2063_RX_BB_CTL3, .value_a = 0x00a2, .value_g = 0x00a2, .flags = 0, }, */
 502        /* { .offset = B2063_RX_BB_CTL4, .value_a = 0x00aa, .value_g = 0x00aa, .flags = 0, }, */
 503        /* { .offset = B2063_RX_BB_CTL5, .value_a = 0x0024, .value_g = 0x0024, .flags = 0, }, */
 504        /* { .offset = B2063_RX_BB_CTL6, .value_a = 0x00a9, .value_g = 0x00a9, .flags = 0, }, */
 505        /* { .offset = B2063_RX_BB_CTL7, .value_a = 0x0028, .value_g = 0x0028, .flags = 0, }, */
 506        /* { .offset = B2063_RX_BB_CTL8, .value_a = 0x0010, .value_g = 0x0010, .flags = 0, }, */
 507        /* { .offset = B2063_RX_BB_CTL9, .value_a = 0x0055, .value_g = 0x0055, .flags = 0, }, */
 508        /* { .offset = B2063_TX_RF_CTL1, .value_a = 0x0080, .value_g = 0x0080, .flags = 0, }, */
 509        /* { .offset = B2063_TX_RF_IDAC_LO_RF_I, .value_a = 0x0088, .value_g = 0x0088, .flags = 0, }, */
 510        /* { .offset = B2063_TX_RF_IDAC_LO_RF_Q, .value_a = 0x0088, .value_g = 0x0088, .flags = 0, }, */
 511        /* { .offset = B2063_TX_RF_IDAC_LO_BB_I, .value_a = 0x0088, .value_g = 0x0088, .flags = 0, }, */
 512        /* { .offset = B2063_TX_RF_IDAC_LO_BB_Q, .value_a = 0x0088, .value_g = 0x0088, .flags = 0, }, */
 513        /* { .offset = B2063_TX_RF_CTL2, .value_a = 0x0080, .value_g = 0x0080, .flags = 0, }, */
 514        /* { .offset = B2063_TX_RF_CTL3, .value_a = 0x0038, .value_g = 0x0038, .flags = 0, }, */
 515        /* { .offset = B2063_TX_RF_CTL4, .value_a = 0x00b8, .value_g = 0x00b8, .flags = 0, }, */
 516        /* { .offset = B2063_TX_RF_CTL5, .value_a = 0x0080, .value_g = 0x0080, .flags = 0, }, */
 517        /* { .offset = B2063_TX_RF_CTL6, .value_a = 0x0038, .value_g = 0x0038, .flags = 0, }, */
 518        /* { .offset = B2063_TX_RF_CTL7, .value_a = 0x0078, .value_g = 0x0078, .flags = 0, }, */
 519        /* { .offset = B2063_TX_RF_CTL8, .value_a = 0x00c0, .value_g = 0x00c0, .flags = 0, }, */
 520        /* { .offset = B2063_TX_RF_CTL9, .value_a = 0x0003, .value_g = 0x0003, .flags = 0, }, */
 521        /* { .offset = B2063_TX_RF_CTL10, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 522        /* { .offset = B2063_TX_RF_CTL14, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 523        /* { .offset = B2063_TX_RF_CTL15, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 524        { .offset = B2063_PA_CTL1, .value_a = 0x0000, .value_g = 0x0004, .flags = B206X_FLAG_A, },
 525        /* { .offset = B2063_PA_CTL2, .value_a = 0x000c, .value_g = 0x000c, .flags = 0, }, */
 526        /* { .offset = B2063_PA_CTL3, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 527        /* { .offset = B2063_PA_CTL4, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 528        /* { .offset = B2063_PA_CTL5, .value_a = 0x0096, .value_g = 0x0096, .flags = 0, }, */
 529        /* { .offset = B2063_PA_CTL6, .value_a = 0x0077, .value_g = 0x0077, .flags = 0, }, */
 530        /* { .offset = B2063_PA_CTL7, .value_a = 0x005a, .value_g = 0x005a, .flags = 0, }, */
 531        /* { .offset = B2063_PA_CTL8, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 532        /* { .offset = B2063_PA_CTL9, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 533        /* { .offset = B2063_PA_CTL10, .value_a = 0x0021, .value_g = 0x0021, .flags = 0, }, */
 534        /* { .offset = B2063_PA_CTL11, .value_a = 0x0070, .value_g = 0x0070, .flags = 0, }, */
 535        /* { .offset = B2063_PA_CTL12, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 536        /* { .offset = B2063_PA_CTL13, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 537        /* { .offset = B2063_TX_BB_CTL1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 538        /* { .offset = B2063_TX_BB_CTL2, .value_a = 0x00b3, .value_g = 0x00b3, .flags = 0, }, */
 539        /* { .offset = B2063_TX_BB_CTL3, .value_a = 0x0055, .value_g = 0x0055, .flags = 0, }, */
 540        /* { .offset = B2063_TX_BB_CTL4, .value_a = 0x000b, .value_g = 0x000b, .flags = 0, }, */
 541        /* { .offset = B2063_GPIO_CTL1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 542        { .offset = B2063_VREG_CTL1, .value_a = 0x0003, .value_g = 0x0003, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 543        /* { .offset = B2063_AMUX_CTL1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 544        /* { .offset = B2063_IQ_CALIB_GVAR, .value_a = 0x00b3, .value_g = 0x00b3, .flags = 0, }, */
 545        /* { .offset = B2063_IQ_CALIB_CTL1, .value_a = 0x0055, .value_g = 0x0055, .flags = 0, }, */
 546        /* { .offset = B2063_IQ_CALIB_CTL2, .value_a = 0x0030, .value_g = 0x0030, .flags = 0, }, */
 547        /* { .offset = B2063_TEMPSENSE_CTL1, .value_a = 0x0046, .value_g = 0x0046, .flags = 0, }, */
 548        /* { .offset = B2063_TEMPSENSE_CTL2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 549        /* { .offset = B2063_TX_RX_LOOPBACK1, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 550        /* { .offset = B2063_TX_RX_LOOPBACK2, .value_a = 0x0000, .value_g = 0x0000, .flags = 0, }, */
 551        /* { .offset = B2063_EXT_TSSI_CTL1, .value_a = 0x0021, .value_g = 0x0021, .flags = 0, }, */
 552        /* { .offset = B2063_EXT_TSSI_CTL2, .value_a = 0x0023, .value_g = 0x0023, .flags = 0, }, */
 553        /* { .offset = B2063_AFE_CTL , .value_a = 0x0002, .value_g = 0x0002, .flags = 0, }, */
 554};
 555
 556void b2062_upload_init_table(struct b43_wldev *dev)
 557{
 558        const struct b206x_init_tab_entry *e;
 559        unsigned int i;
 560
 561        for (i = 0; i < ARRAY_SIZE(b2062_init_tab); i++) {
 562                e = &b2062_init_tab[i];
 563                if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) {
 564                        if (!(e->flags & B206X_FLAG_G))
 565                                continue;
 566                        b43_radio_write(dev, e->offset, e->value_g);
 567                } else {
 568                        if (!(e->flags & B206X_FLAG_A))
 569                                continue;
 570                        b43_radio_write(dev, e->offset, e->value_a);
 571                }
 572        }
 573}
 574
 575void b2063_upload_init_table(struct b43_wldev *dev)
 576{
 577        const struct b206x_init_tab_entry *e;
 578        unsigned int i;
 579
 580        for (i = 0; i < ARRAY_SIZE(b2063_init_tab); i++) {
 581                e = &b2063_init_tab[i];
 582                if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) {
 583                        if (!(e->flags & B206X_FLAG_G))
 584                                continue;
 585                        b43_radio_write(dev, e->offset, e->value_g);
 586                } else {
 587                        if (!(e->flags & B206X_FLAG_A))
 588                                continue;
 589                        b43_radio_write(dev, e->offset, e->value_a);
 590                }
 591        }
 592}
 593
 594u32 b43_lptab_read(struct b43_wldev *dev, u32 offset)
 595{
 596        u32 type, value;
 597
 598        type = offset & B43_LPTAB_TYPEMASK;
 599        offset &= ~B43_LPTAB_TYPEMASK;
 600        B43_WARN_ON(offset > 0xFFFF);
 601
 602        switch (type) {
 603        case B43_LPTAB_8BIT:
 604                b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
 605                value = b43_phy_read(dev, B43_LPPHY_TABLEDATALO) & 0xFF;
 606                break;
 607        case B43_LPTAB_16BIT:
 608                b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
 609                value = b43_phy_read(dev, B43_LPPHY_TABLEDATALO);
 610                break;
 611        case B43_LPTAB_32BIT:
 612                b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
 613                value = b43_phy_read(dev, B43_LPPHY_TABLEDATAHI);
 614                value <<= 16;
 615                value |= b43_phy_read(dev, B43_LPPHY_TABLEDATALO);
 616                break;
 617        default:
 618                B43_WARN_ON(1);
 619                value = 0;
 620        }
 621
 622        return value;
 623}
 624
 625void b43_lptab_read_bulk(struct b43_wldev *dev, u32 offset,
 626                         unsigned int nr_elements, void *_data)
 627{
 628        u32 type;
 629        u8 *data = _data;
 630        unsigned int i;
 631
 632        type = offset & B43_LPTAB_TYPEMASK;
 633        offset &= ~B43_LPTAB_TYPEMASK;
 634        B43_WARN_ON(offset > 0xFFFF);
 635
 636        b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
 637
 638        for (i = 0; i < nr_elements; i++) {
 639                switch (type) {
 640                case B43_LPTAB_8BIT:
 641                        *data = b43_phy_read(dev, B43_LPPHY_TABLEDATALO) & 0xFF;
 642                        data++;
 643                        break;
 644                case B43_LPTAB_16BIT:
 645                        *((u16 *)data) = b43_phy_read(dev, B43_LPPHY_TABLEDATALO);
 646                        data += 2;
 647                        break;
 648                case B43_LPTAB_32BIT:
 649                        *((u32 *)data) = b43_phy_read(dev, B43_LPPHY_TABLEDATAHI);
 650                        *((u32 *)data) <<= 16;
 651                        *((u32 *)data) |= b43_phy_read(dev, B43_LPPHY_TABLEDATALO);
 652                        data += 4;
 653                        break;
 654                default:
 655                        B43_WARN_ON(1);
 656                }
 657        }
 658}
 659
 660void b43_lptab_write(struct b43_wldev *dev, u32 offset, u32 value)
 661{
 662        u32 type;
 663
 664        type = offset & B43_LPTAB_TYPEMASK;
 665        offset &= ~B43_LPTAB_TYPEMASK;
 666        B43_WARN_ON(offset > 0xFFFF);
 667
 668        switch (type) {
 669        case B43_LPTAB_8BIT:
 670                B43_WARN_ON(value & ~0xFF);
 671                b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
 672                b43_phy_write(dev, B43_LPPHY_TABLEDATALO, value);
 673                break;
 674        case B43_LPTAB_16BIT:
 675                B43_WARN_ON(value & ~0xFFFF);
 676                b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
 677                b43_phy_write(dev, B43_LPPHY_TABLEDATALO, value);
 678                break;
 679        case B43_LPTAB_32BIT:
 680                b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
 681                b43_phy_write(dev, B43_LPPHY_TABLEDATAHI, value >> 16);
 682                b43_phy_write(dev, B43_LPPHY_TABLEDATALO, value);
 683                break;
 684        default:
 685                B43_WARN_ON(1);
 686        }
 687}
 688
 689void b43_lptab_write_bulk(struct b43_wldev *dev, u32 offset,
 690                          unsigned int nr_elements, const void *_data)
 691{
 692        u32 type, value;
 693        const u8 *data = _data;
 694        unsigned int i;
 695
 696        type = offset & B43_LPTAB_TYPEMASK;
 697        offset &= ~B43_LPTAB_TYPEMASK;
 698        B43_WARN_ON(offset > 0xFFFF);
 699
 700        b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
 701
 702        for (i = 0; i < nr_elements; i++) {
 703                switch (type) {
 704                case B43_LPTAB_8BIT:
 705                        value = *data;
 706                        data++;
 707                        B43_WARN_ON(value & ~0xFF);
 708                        b43_phy_write(dev, B43_LPPHY_TABLEDATALO, value);
 709                        break;
 710                case B43_LPTAB_16BIT:
 711                        value = *((u16 *)data);
 712                        data += 2;
 713                        B43_WARN_ON(value & ~0xFFFF);
 714                        b43_phy_write(dev, B43_LPPHY_TABLEDATALO, value);
 715                        break;
 716                case B43_LPTAB_32BIT:
 717                        value = *((u32 *)data);
 718                        data += 4;
 719                        b43_phy_write(dev, B43_LPPHY_TABLEDATAHI, value >> 16);
 720                        b43_phy_write(dev, B43_LPPHY_TABLEDATALO, value);
 721                        break;
 722                default:
 723                        B43_WARN_ON(1);
 724                }
 725        }
 726}
 727
 728static const u8 lpphy_min_sig_sq_table[] = {
 729        0xde, 0xdc, 0xda, 0xd8, 0xd6, 0xd4, 0xd2, 0xcf, 0xcd,
 730        0xca, 0xc7, 0xc4, 0xc1, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
 731        0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0x00,
 732        0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
 733        0xbe, 0xbe, 0xbe, 0xbe, 0xc1, 0xc4, 0xc7, 0xca, 0xcd,
 734        0xcf, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde,
 735};
 736
 737static const u16 lpphy_rev01_noise_scale_table[] = {
 738        0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4,
 739        0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa400, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4,
 740        0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0x00a4,
 741        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c00, 0x2d36,
 742        0x0000, 0x0000, 0x4c00, 0x2d36,
 743};
 744
 745static const u16 lpphy_rev2plus_noise_scale_table[] = {
 746        0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4,
 747        0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4,
 748        0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x0000,
 749        0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4,
 750        0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4,
 751        0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4,
 752        0x00a4,
 753};
 754
 755static const u16 lpphy_crs_gain_nft_table[] = {
 756        0x0366, 0x036a, 0x036f, 0x0364, 0x0367, 0x036d, 0x0374, 0x037f, 0x036f,
 757        0x037b, 0x038a, 0x0378, 0x0367, 0x036d, 0x0375, 0x0381, 0x0374, 0x0381,
 758        0x0392, 0x03a9, 0x03c4, 0x03e1, 0x0001, 0x001f, 0x0040, 0x005e, 0x007f,
 759        0x009e, 0x00bd, 0x00dd, 0x00fd, 0x011d, 0x013d,
 760};
 761
 762static const u16 lpphy_rev01_filter_control_table[] = {
 763        0xa0fc, 0x10fc, 0x10db, 0x20b7, 0xff93, 0x10bf, 0x109b, 0x2077, 0xff53,
 764        0x0127,
 765};
 766
 767static const u32 lpphy_rev2plus_filter_control_table[] = {
 768        0x000141fc, 0x000021fc, 0x000021b7, 0x0000416f, 0x0001ff27, 0x0000217f,
 769        0x00002137, 0x000040ef, 0x0001fea7, 0x0000024f,
 770};
 771
 772static const u32 lpphy_rev01_ps_control_table[] = {
 773        0x00010000, 0x000000a0, 0x00040000, 0x00000048, 0x08080101, 0x00000080,
 774        0x08080101, 0x00000040, 0x08080101, 0x000000c0, 0x08a81501, 0x000000c0,
 775        0x0fe8fd01, 0x000000c0, 0x08300105, 0x000000c0, 0x08080201, 0x000000c0,
 776        0x08280205, 0x000000c0, 0xe80802fe, 0x000000c7, 0x28080206, 0x000000c0,
 777        0x08080202, 0x000000c0, 0x0ba87602, 0x000000c0, 0x1068013d, 0x000000c0,
 778        0x10280105, 0x000000c0, 0x08880102, 0x000000c0, 0x08280106, 0x000000c0,
 779        0xe80801fd, 0x000000c7, 0xa8080115, 0x000000c0,
 780};
 781
 782static const u32 lpphy_rev2plus_ps_control_table[] = {
 783        0x00e38e08, 0x00e08e38, 0x00000000, 0x00000000, 0x00000000, 0x00002080,
 784        0x00006180, 0x00003002, 0x00000040, 0x00002042, 0x00180047, 0x00080043,
 785        0x00000041, 0x000020c1, 0x00046006, 0x00042002, 0x00040000, 0x00002003,
 786        0x00180006, 0x00080002,
 787};
 788
 789static const u8 lpphy_pll_fraction_table[] = {
 790        0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80,
 791        0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
 792};
 793
 794static const u16 lpphy_iqlo_cal_table[] = {
 795        0x0200, 0x0300, 0x0400, 0x0600, 0x0800, 0x0b00, 0x1000, 0x1001, 0x1002,
 796        0x1003, 0x1004, 0x1005, 0x1006, 0x1007, 0x1707, 0x2007, 0x2d07, 0x4007,
 797        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 798        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x0300, 0x0400, 0x0600,
 799        0x0800, 0x0b00, 0x1000, 0x1001, 0x1002, 0x1003, 0x1004, 0x1005, 0x1006,
 800        0x1007, 0x1707, 0x2007, 0x2d07, 0x4007, 0x0000, 0x0000, 0x0000, 0x0000,
 801        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 802        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 803        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 804        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4000, 0x0000, 0x0000,
 805        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 806        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 807};
 808
 809static const u16 lpphy_rev0_ofdm_cck_gain_table[] = {
 810        0x0001, 0x0001, 0x0001, 0x0001, 0x1001, 0x2001, 0x3001, 0x4001, 0x5001,
 811        0x6001, 0x7001, 0x7011, 0x7021, 0x2035, 0x2045, 0x2055, 0x2065, 0x2075,
 812        0x006d, 0x007d, 0x014d, 0x015d, 0x115d, 0x035d, 0x135d, 0x055d, 0x155d,
 813        0x0d5d, 0x1d5d, 0x2d5d, 0x555d, 0x655d, 0x755d,
 814};
 815
 816static const u16 lpphy_rev1_ofdm_cck_gain_table[] = {
 817        0x5000, 0x6000, 0x7000, 0x0001, 0x1001, 0x2001, 0x3001, 0x4001, 0x5001,
 818        0x6001, 0x7001, 0x7011, 0x7021, 0x2035, 0x2045, 0x2055, 0x2065, 0x2075,
 819        0x006d, 0x007d, 0x014d, 0x015d, 0x115d, 0x035d, 0x135d, 0x055d, 0x155d,
 820        0x0d5d, 0x1d5d, 0x2d5d, 0x555d, 0x655d, 0x755d,
 821};
 822
 823static const u16 lpphy_gain_delta_table[] = {
 824        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 825};
 826
 827static const u32 lpphy_tx_power_control_table[] = {
 828        0x00000050, 0x0000004f, 0x0000004e, 0x0000004d, 0x0000004c, 0x0000004b,
 829        0x0000004a, 0x00000049, 0x00000048, 0x00000047, 0x00000046, 0x00000045,
 830        0x00000044, 0x00000043, 0x00000042, 0x00000041, 0x00000040, 0x0000003f,
 831        0x0000003e, 0x0000003d, 0x0000003c, 0x0000003b, 0x0000003a, 0x00000039,
 832        0x00000038, 0x00000037, 0x00000036, 0x00000035, 0x00000034, 0x00000033,
 833        0x00000032, 0x00000031, 0x00000030, 0x0000002f, 0x0000002e, 0x0000002d,
 834        0x0000002c, 0x0000002b, 0x0000002a, 0x00000029, 0x00000028, 0x00000027,
 835        0x00000026, 0x00000025, 0x00000024, 0x00000023, 0x00000022, 0x00000021,
 836        0x00000020, 0x0000001f, 0x0000001e, 0x0000001d, 0x0000001c, 0x0000001b,
 837        0x0000001a, 0x00000019, 0x00000018, 0x00000017, 0x00000016, 0x00000015,
 838        0x00000014, 0x00000013, 0x00000012, 0x00000011, 0x00000000, 0x00000000,
 839        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 840        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 841        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 842        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 843        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 844        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 845        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 846        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 847        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 848        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 849        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 850        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 851        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 852        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 853        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 854        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 855        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 856        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 857        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 858        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 859        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 860        0x000075a0, 0x000075a0, 0x000075a1, 0x000075a1, 0x000075a2, 0x000075a2,
 861        0x000075a3, 0x000075a3, 0x000074b0, 0x000074b0, 0x000074b1, 0x000074b1,
 862        0x000074b2, 0x000074b2, 0x000074b3, 0x000074b3, 0x00006d20, 0x00006d20,
 863        0x00006d21, 0x00006d21, 0x00006d22, 0x00006d22, 0x00006d23, 0x00006d23,
 864        0x00004660, 0x00004660, 0x00004661, 0x00004661, 0x00004662, 0x00004662,
 865        0x00004663, 0x00004663, 0x00003e60, 0x00003e60, 0x00003e61, 0x00003e61,
 866        0x00003e62, 0x00003e62, 0x00003e63, 0x00003e63, 0x00003660, 0x00003660,
 867        0x00003661, 0x00003661, 0x00003662, 0x00003662, 0x00003663, 0x00003663,
 868        0x00002e60, 0x00002e60, 0x00002e61, 0x00002e61, 0x00002e62, 0x00002e62,
 869        0x00002e63, 0x00002e63, 0x00002660, 0x00002660, 0x00002661, 0x00002661,
 870        0x00002662, 0x00002662, 0x00002663, 0x00002663, 0x000025e0, 0x000025e0,
 871        0x000025e1, 0x000025e1, 0x000025e2, 0x000025e2, 0x000025e3, 0x000025e3,
 872        0x00001de0, 0x00001de0, 0x00001de1, 0x00001de1, 0x00001de2, 0x00001de2,
 873        0x00001de3, 0x00001de3, 0x00001d60, 0x00001d60, 0x00001d61, 0x00001d61,
 874        0x00001d62, 0x00001d62, 0x00001d63, 0x00001d63, 0x00001560, 0x00001560,
 875        0x00001561, 0x00001561, 0x00001562, 0x00001562, 0x00001563, 0x00001563,
 876        0x00000d60, 0x00000d60, 0x00000d61, 0x00000d61, 0x00000d62, 0x00000d62,
 877        0x00000d63, 0x00000d63, 0x00000ce0, 0x00000ce0, 0x00000ce1, 0x00000ce1,
 878        0x00000ce2, 0x00000ce2, 0x00000ce3, 0x00000ce3, 0x00000e10, 0x00000e10,
 879        0x00000e11, 0x00000e11, 0x00000e12, 0x00000e12, 0x00000e13, 0x00000e13,
 880        0x00000bf0, 0x00000bf0, 0x00000bf1, 0x00000bf1, 0x00000bf2, 0x00000bf2,
 881        0x00000bf3, 0x00000bf3, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 882        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 883        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 884        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 885        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 886        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 887        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 888        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 889        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 890        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 891        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 892        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 893        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 894        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 895        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 896        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 897        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 898        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 899        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 900        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 901        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 902        0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x000000ff, 0x000002fc,
 903        0x0000fa08, 0x00000305, 0x00000206, 0x00000304, 0x0000fb04, 0x0000fcff,
 904        0x000005fb, 0x0000fd01, 0x00000401, 0x00000006, 0x0000ff03, 0x000007fc,
 905        0x0000fc08, 0x00000203, 0x0000fffb, 0x00000600, 0x0000fa01, 0x0000fc03,
 906        0x0000fe06, 0x0000fe00, 0x00000102, 0x000007fd, 0x000004fb, 0x000006ff,
 907        0x000004fd, 0x0000fdfa, 0x000007fb, 0x0000fdfa, 0x0000fa06, 0x00000500,
 908        0x0000f902, 0x000007fa, 0x0000fafa, 0x00000500, 0x000007fa, 0x00000700,
 909        0x00000305, 0x000004ff, 0x00000801, 0x00000503, 0x000005f9, 0x00000404,
 910        0x0000fb08, 0x000005fd, 0x00000501, 0x00000405, 0x0000fb03, 0x000007fc,
 911        0x00000403, 0x00000303, 0x00000402, 0x0000faff, 0x0000fe05, 0x000005fd,
 912        0x0000fe01, 0x000007fa, 0x00000202, 0x00000504, 0x00000102, 0x000008fe,
 913        0x0000fa04, 0x0000fafc, 0x0000fe08, 0x000000f9, 0x000002fa, 0x000003fe,
 914        0x00000304, 0x000004f9, 0x00000100, 0x0000fd06, 0x000008fc, 0x00000701,
 915        0x00000504, 0x0000fdfe, 0x0000fdfc, 0x000003fe, 0x00000704, 0x000002fc,
 916        0x000004f9, 0x0000fdfd, 0x0000fa07, 0x00000205, 0x000003fd, 0x000005fb,
 917        0x000004f9, 0x00000804, 0x0000fc06, 0x0000fcf9, 0x00000100, 0x0000fe05,
 918        0x00000408, 0x0000fb02, 0x00000304, 0x000006fe, 0x000004fa, 0x00000305,
 919        0x000008fc, 0x00000102, 0x000001fd, 0x000004fc, 0x0000fe03, 0x00000701,
 920        0x000001fb, 0x000001f9, 0x00000206, 0x000006fd, 0x00000508, 0x00000700,
 921        0x00000304, 0x000005fe, 0x000005ff, 0x0000fa04, 0x00000303, 0x0000fefb,
 922        0x000007f9, 0x0000fefc, 0x000004fd, 0x000005fc, 0x0000fffd, 0x0000fc08,
 923        0x0000fbf9, 0x0000fd07, 0x000008fb, 0x0000fe02, 0x000006fb, 0x00000702,
 924};
 925
 926static const u32 lpphy_gain_idx_table[] = {
 927        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 928        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 929        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 930        0x10000001, 0x00000000, 0x20000082, 0x00000000, 0x40000104, 0x00000000,
 931        0x60004207, 0x00000001, 0x7000838a, 0x00000001, 0xd021050d, 0x00000001,
 932        0xe041c683, 0x00000001, 0x50828805, 0x00000000, 0x80e34288, 0x00000000,
 933        0xb144040b, 0x00000000, 0xe1a6058e, 0x00000000, 0x12064711, 0x00000001,
 934        0xb0a18612, 0x00000010, 0xe1024794, 0x00000010, 0x11630915, 0x00000011,
 935        0x31c3ca1b, 0x00000011, 0xc1848a9c, 0x00000018, 0xf1e50da0, 0x00000018,
 936        0x22468e21, 0x00000019, 0x4286d023, 0x00000019, 0xa347d0a4, 0x00000019,
 937        0xb36811a6, 0x00000019, 0xf3e89227, 0x00000019, 0x0408d329, 0x0000001a,
 938        0x244953aa, 0x0000001a, 0x346994ab, 0x0000001a, 0x54aa152c, 0x0000001a,
 939        0x64ca55ad, 0x0000001a, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 940        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 941        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 942        0x00000000, 0x00000000, 0x10000001, 0x00000000, 0x20000082, 0x00000000,
 943        0x40000104, 0x00000000, 0x60004207, 0x00000001, 0x7000838a, 0x00000001,
 944        0xd021050d, 0x00000001, 0xe041c683, 0x00000001, 0x50828805, 0x00000000,
 945        0x80e34288, 0x00000000, 0xb144040b, 0x00000000, 0xe1a6058e, 0x00000000,
 946        0x12064711, 0x00000001, 0xb0a18612, 0x00000010, 0xe1024794, 0x00000010,
 947        0x11630915, 0x00000011, 0x31c3ca1b, 0x00000011, 0xc1848a9c, 0x00000018,
 948        0xf1e50da0, 0x00000018, 0x22468e21, 0x00000019, 0x4286d023, 0x00000019,
 949        0xa347d0a4, 0x00000019, 0xb36811a6, 0x00000019, 0xf3e89227, 0x00000019,
 950        0x0408d329, 0x0000001a, 0x244953aa, 0x0000001a, 0x346994ab, 0x0000001a,
 951        0x54aa152c, 0x0000001a, 0x64ca55ad, 0x0000001a,
 952};
 953
 954static const u16 lpphy_aux_gain_idx_table[] = {
 955        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 956        0x0001, 0x0002, 0x0004, 0x0016, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 957        0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0004, 0x0016,
 958};
 959
 960static const u32 lpphy_gain_value_table[] = {
 961        0x00000008, 0x0000000e, 0x00000014, 0x0000001a, 0x000000fb, 0x00000004,
 962        0x00000008, 0x0000000d, 0x00000001, 0x00000004, 0x00000007, 0x0000000a,
 963        0x0000000d, 0x00000010, 0x00000012, 0x00000015, 0x00000000, 0x00000006,
 964        0x0000000c, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000000,
 965        0x00000000, 0x00000000, 0x00000018, 0x00000000, 0x00000000, 0x00000000,
 966        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 967        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 968        0x0000001e, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 969        0x00000000, 0x00000003, 0x00000006, 0x00000009, 0x0000000c, 0x0000000f,
 970        0x00000012, 0x00000015, 0x00000018, 0x0000001b, 0x0000001e, 0x00000000,
 971        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000009, 0x000000f1,
 972        0x00000000, 0x00000000,
 973};
 974
 975static const u16 lpphy_gain_table[] = {
 976        0x0000, 0x0400, 0x0800, 0x0802, 0x0804, 0x0806, 0x0807, 0x0808, 0x080a,
 977        0x080b, 0x080c, 0x080e, 0x080f, 0x0810, 0x0812, 0x0813, 0x0814, 0x0816,
 978        0x0817, 0x081a, 0x081b, 0x081f, 0x0820, 0x0824, 0x0830, 0x0834, 0x0837,
 979        0x083b, 0x083f, 0x0840, 0x0844, 0x0857, 0x085b, 0x085f, 0x08d7, 0x08db,
 980        0x08df, 0x0957, 0x095b, 0x095f, 0x0b57, 0x0b5b, 0x0b5f, 0x0f5f, 0x135f,
 981        0x175f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 982        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 983        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 984        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 985        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 986        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 987};
 988
 989static const u32 lpphy_a0_gain_idx_table[] = {
 990        0x001111e0, 0x00652051, 0x00606055, 0x005b005a, 0x00555060, 0x00511065,
 991        0x004c806b, 0x0047d072, 0x00444078, 0x00400080, 0x003ca087, 0x0039408f,
 992        0x0035e098, 0x0032e0a1, 0x003030aa, 0x002d80b4, 0x002ae0bf, 0x002880ca,
 993        0x002640d6, 0x002410e3, 0x002220f0, 0x002020ff, 0x001e510e, 0x001ca11e,
 994        0x001b012f, 0x00199140, 0x00182153, 0x0016c168, 0x0015817d, 0x00145193,
 995        0x001321ab, 0x001211c5, 0x001111e0, 0x001021fc, 0x000f321a, 0x000e523a,
 996        0x000d925c, 0x000cd27f, 0x000c12a5, 0x000b62cd, 0x000ac2f8, 0x000a2325,
 997        0x00099355, 0x00091387, 0x000883bd, 0x000813f5, 0x0007a432, 0x00073471,
 998        0x0006c4b5, 0x000664fc, 0x00061547, 0x0005b598, 0x000565ec, 0x00051646,
 999        0x0004d6a5, 0x0004870a, 0x00044775, 0x000407e6, 0x0003d85e, 0x000398dd,
1000        0x00036963, 0x000339f2, 0x00030a89, 0x0002db28,
1001};
1002
1003static const u16 lpphy_a0_aux_gain_idx_table[] = {
1004        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1005        0x0000, 0x0000, 0x0002, 0x0014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1006        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0014,
1007};
1008
1009static const u32 lpphy_a0_gain_value_table[] = {
1010        0x00000008, 0x0000000e, 0x00000014, 0x0000001a, 0x000000fb, 0x00000004,
1011        0x00000008, 0x0000000d, 0x00000001, 0x00000004, 0x00000007, 0x0000000a,
1012        0x0000000d, 0x00000010, 0x00000012, 0x00000015, 0x00000000, 0x00000006,
1013        0x0000000c, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000000,
1014        0x00000000, 0x00000000, 0x00000018, 0x00000000, 0x00000000, 0x00000000,
1015        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1016        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1017        0x0000001e, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1018        0x00000000, 0x00000003, 0x00000006, 0x00000009, 0x0000000c, 0x0000000f,
1019        0x00000012, 0x00000015, 0x00000018, 0x0000001b, 0x0000001e, 0x00000000,
1020        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000f, 0x000000f7,
1021        0x00000000, 0x00000000,
1022};
1023
1024static const u16 lpphy_a0_gain_table[] = {
1025        0x0000, 0x0002, 0x0004, 0x0006, 0x0007, 0x0008, 0x000a, 0x000b, 0x000c,
1026        0x000e, 0x000f, 0x0010, 0x0012, 0x0013, 0x0014, 0x0016, 0x0017, 0x001a,
1027        0x001b, 0x001f, 0x0020, 0x0024, 0x0030, 0x0034, 0x0037, 0x003b, 0x003f,
1028        0x0040, 0x0044, 0x0057, 0x005b, 0x005f, 0x00d7, 0x00db, 0x00df, 0x0157,
1029        0x015b, 0x015f, 0x0357, 0x035b, 0x035f, 0x075f, 0x0b5f, 0x0f5f, 0x0000,
1030        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1031        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1032        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1033        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1034        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1035        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1036};
1037
1038static const u16 lpphy_sw_control_table[] = {
1039        0x0128, 0x0128, 0x0009, 0x0009, 0x0028, 0x0028, 0x0028, 0x0028, 0x0128,
1040        0x0128, 0x0009, 0x0009, 0x0028, 0x0028, 0x0028, 0x0028, 0x0009, 0x0009,
1041        0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0018, 0x0018, 0x0018,
1042        0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0128, 0x0128, 0x0009, 0x0009,
1043        0x0028, 0x0028, 0x0028, 0x0028, 0x0128, 0x0128, 0x0009, 0x0009, 0x0028,
1044        0x0028, 0x0028, 0x0028, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,
1045        0x0009, 0x0009, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
1046        0x0018,
1047};
1048
1049static const u8 lpphy_hf_table[] = {
1050        0x4b, 0x36, 0x24, 0x18, 0x49, 0x34, 0x23, 0x17, 0x48,
1051        0x33, 0x23, 0x17, 0x48, 0x33, 0x23, 0x17,
1052};
1053
1054static const u32 lpphy_papd_eps_table[] = {
1055        0x00000000, 0x00013ffc, 0x0001dff3, 0x0001bff0, 0x00023fe9, 0x00021fdf,
1056        0x00028fdf, 0x00033fd2, 0x00039fcb, 0x00043fc7, 0x0004efc2, 0x00055fb5,
1057        0x0005cfb0, 0x00063fa8, 0x00068fa3, 0x00071f98, 0x0007ef92, 0x00084f8b,
1058        0x0008df82, 0x00097f77, 0x0009df69, 0x000a3f62, 0x000adf57, 0x000b6f4c,
1059        0x000bff41, 0x000c9f39, 0x000cff30, 0x000dbf27, 0x000e4f1e, 0x000edf16,
1060        0x000f7f13, 0x00102f11, 0x00110f10, 0x0011df11, 0x0012ef15, 0x00143f1c,
1061        0x00158f27, 0x00172f35, 0x00193f47, 0x001baf5f, 0x001e6f7e, 0x0021cfa4,
1062        0x0025bfd2, 0x002a2008, 0x002fb047, 0x00360090, 0x003d40e0, 0x0045c135,
1063        0x004fb189, 0x005ae1d7, 0x0067221d, 0x0075025a, 0x007ff291, 0x007ff2bf,
1064        0x007ff2e3, 0x007ff2ff, 0x007ff315, 0x007ff329, 0x007ff33f, 0x007ff356,
1065        0x007ff36e, 0x007ff39c, 0x007ff441, 0x007ff506,
1066};
1067
1068static const u32 lpphy_papd_mult_table[] = {
1069        0x001111e0, 0x00652051, 0x00606055, 0x005b005a, 0x00555060, 0x00511065,
1070        0x004c806b, 0x0047d072, 0x00444078, 0x00400080, 0x003ca087, 0x0039408f,
1071        0x0035e098, 0x0032e0a1, 0x003030aa, 0x002d80b4, 0x002ae0bf, 0x002880ca,
1072        0x002640d6, 0x002410e3, 0x002220f0, 0x002020ff, 0x001e510e, 0x001ca11e,
1073        0x001b012f, 0x00199140, 0x00182153, 0x0016c168, 0x0015817d, 0x00145193,
1074        0x001321ab, 0x001211c5, 0x001111e0, 0x001021fc, 0x000f321a, 0x000e523a,
1075        0x000d925c, 0x000cd27f, 0x000c12a5, 0x000b62cd, 0x000ac2f8, 0x000a2325,
1076        0x00099355, 0x00091387, 0x000883bd, 0x000813f5, 0x0007a432, 0x00073471,
1077        0x0006c4b5, 0x000664fc, 0x00061547, 0x0005b598, 0x000565ec, 0x00051646,
1078        0x0004d6a5, 0x0004870a, 0x00044775, 0x000407e6, 0x0003d85e, 0x000398dd,
1079        0x00036963, 0x000339f2, 0x00030a89, 0x0002db28,
1080};
1081
1082static struct lpphy_tx_gain_table_entry lpphy_rev0_nopa_tx_gain_table[] = {
1083        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 152, },
1084        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 147, },
1085        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 143, },
1086        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 139, },
1087        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 135, },
1088        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 131, },
1089        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 128, },
1090        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 124, },
1091        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 121, },
1092        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 117, },
1093        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 114, },
1094        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 111, },
1095        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 107, },
1096        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 104, },
1097        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 101, },
1098        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 99, },
1099        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 96, },
1100        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 93, },
1101        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 90, },
1102        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 88, },
1103        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 85, },
1104        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 83, },
1105        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 81, },
1106        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 78, },
1107        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 76, },
1108        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 74, },
1109        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 72, },
1110        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 70, },
1111        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1112        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1113        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1114        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1115        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1116        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 59, },
1117        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 57, },
1118        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 72, },
1119        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 70, },
1120        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 68, },
1121        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 66, },
1122        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 64, },
1123        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 62, },
1124        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 60, },
1125        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 59, },
1126        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 57, },
1127        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 71, },
1128        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 69, },
1129        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 67, },
1130        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 65, },
1131        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 63, },
1132        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 62, },
1133        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 60, },
1134        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 58, },
1135        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 57, },
1136        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 70, },
1137        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 68, },
1138        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 66, },
1139        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 65, },
1140        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 63, },
1141        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 61, },
1142        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 59, },
1143        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 58, },
1144        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 71, },
1145        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 69, },
1146        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 67, },
1147        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 65, },
1148        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 63, },
1149        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 61, },
1150        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 60, },
1151        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 58, },
1152        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 56, },
1153        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1154        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1155        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1156        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1157        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1158        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 60, },
1159        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1160        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 72, },
1161        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 70, },
1162        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1163        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1164        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 64, },
1165        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 62, },
1166        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 60, },
1167        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1168        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 72, },
1169        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1170        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1171        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1172        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1173        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1174        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1175        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1176        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1177        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 72, },
1178        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1179        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1180        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1181        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1182        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1183        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1184        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1185        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 72, },
1186        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1187        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1188        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1189        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1190        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1191        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1192        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1193        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 73, },
1194        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 71, },
1195        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 69, },
1196        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 67, },
1197        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 65, },
1198        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 63, },
1199        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1200        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1201        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 72, },
1202        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1203        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1204        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1205        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 65, },
1206        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 63, },
1207        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1208        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1209        { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 73, },
1210        { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 71, },
1211};
1212
1213static struct lpphy_tx_gain_table_entry lpphy_rev0_2ghz_tx_gain_table[] = {
1214        { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1215        { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1216        { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 60, },
1217        { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1218        { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 72, },
1219        { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 70, },
1220        { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1221        { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1222        { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 64, },
1223        { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 62, },
1224        { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 60, },
1225        { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1226        { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 72, },
1227        { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1228        { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1229        { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1230        { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1231        { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1232        { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1233        { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1234        { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1235        { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 72, },
1236        { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1237        { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1238        { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1239        { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1240        { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1241        { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1242        { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1243        { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 72, },
1244        { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1245        { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1246        { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1247        { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1248        { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1249        { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1250        { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1251        { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 73, },
1252        { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 71, },
1253        { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 69, },
1254        { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 67, },
1255        { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 65, },
1256        { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 63, },
1257        { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1258        { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1259        { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 72, },
1260        { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1261        { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1262        { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1263        { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 65, },
1264        { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 63, },
1265        { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1266        { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1267        { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 73, },
1268        { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 71, },
1269        { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 69, },
1270        { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 67, },
1271        { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 65, },
1272        { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 63, },
1273        { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 61, },
1274        { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 60, },
1275        { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 72, },
1276        { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 70, },
1277        { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 68, },
1278        { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 66, },
1279        { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 64, },
1280        { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 62, },
1281        { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 60, },
1282        { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 59, },
1283        { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 72, },
1284        { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 70, },
1285        { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 68, },
1286        { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 66, },
1287        { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 64, },
1288        { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 62, },
1289        { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 60, },
1290        { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 59, },
1291        { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 70, },
1292        { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 68, },
1293        { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 66, },
1294        { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 64, },
1295        { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 63, },
1296        { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 61, },
1297        { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 59, },
1298        { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 71, },
1299        { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 69, },
1300        { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 67, },
1301        { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 65, },
1302        { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 63, },
1303        { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 62, },
1304        { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 60, },
1305        { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 58, },
1306        { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 70, },
1307        { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 68, },
1308        { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 66, },
1309        { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 65, },
1310        { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 63, },
1311        { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 61, },
1312        { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 59, },
1313        { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 68, },
1314        { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 66, },
1315        { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 64, },
1316        { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 62, },
1317        { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 61, },
1318        { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 59, },
1319        { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 67, },
1320        { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 65, },
1321        { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 63, },
1322        { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 62, },
1323        { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 60, },
1324        { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 65, },
1325        { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 63, },
1326        { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 61, },
1327        { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 60, },
1328        { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 58, },
1329        { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 68, },
1330        { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 66, },
1331        { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 64, },
1332        { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 62, },
1333        { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 60, },
1334        { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 59, },
1335        { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 57, },
1336        { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 83, },
1337        { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 81, },
1338        { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 78, },
1339        { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 76, },
1340        { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 74, },
1341        { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 72, },
1342};
1343
1344static struct lpphy_tx_gain_table_entry lpphy_rev0_5ghz_tx_gain_table[] = {
1345        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 99, },
1346        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 96, },
1347        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 93, },
1348        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 90, },
1349        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 88, },
1350        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 85, },
1351        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 83, },
1352        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 81, },
1353        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 78, },
1354        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 76, },
1355        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 74, },
1356        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 72, },
1357        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 70, },
1358        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 68, },
1359        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 66, },
1360        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 64, },
1361        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 62, },
1362        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 60, },
1363        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 59, },
1364        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 57, },
1365        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 55, },
1366        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 72, },
1367        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 70, },
1368        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1369        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1370        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1371        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1372        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1373        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 58, },
1374        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 56, },
1375        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 55, },
1376        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 71, },
1377        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 69, },
1378        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 67, },
1379        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 65, },
1380        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 63, },
1381        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 62, },
1382        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 60, },
1383        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 58, },
1384        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 56, },
1385        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 72, },
1386        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 70, },
1387        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 68, },
1388        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 66, },
1389        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 64, },
1390        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 62, },
1391        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 60, },
1392        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 59, },
1393        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 57, },
1394        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 73, },
1395        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 71, },
1396        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 69, },
1397        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 67, },
1398        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 65, },
1399        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 63, },
1400        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 61, },
1401        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 60, },
1402        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 58, },
1403        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 71, },
1404        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 69, },
1405        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 67, },
1406        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 65, },
1407        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 63, },
1408        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 61, },
1409        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 60, },
1410        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 58, },
1411        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1412        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1413        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1414        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1415        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1416        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 61, },
1417        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1418        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 57, },
1419        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 56, },
1420        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1421        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1422        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 65, },
1423        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 63, },
1424        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 61, },
1425        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1426        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 58, },
1427        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1428        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1429        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1430        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1431        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1432        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1433        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1434        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1435        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1436        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1437        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1438        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1439        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1440        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1441        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1442        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 57, },
1443        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1444        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1445        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1446        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1447        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1448        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1449        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1450        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 57, },
1451        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 70, },
1452        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 68, },
1453        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 66, },
1454        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 64, },
1455        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 62, },
1456        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1457        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1458        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 57, },
1459        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1460        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1461        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1462        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 64, },
1463        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 62, },
1464        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1465        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1466        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 57, },
1467        { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 69, },
1468        { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 67, },
1469        { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 65, },
1470        { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 63, },
1471        { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 62, },
1472        { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 60, },
1473};
1474
1475static struct lpphy_tx_gain_table_entry lpphy_rev1_nopa_tx_gain_table[] = {
1476        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 152, },
1477        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 147, },
1478        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 143, },
1479        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 139, },
1480        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 135, },
1481        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 131, },
1482        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 128, },
1483        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 124, },
1484        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 121, },
1485        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 117, },
1486        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 114, },
1487        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 111, },
1488        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 107, },
1489        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 104, },
1490        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 101, },
1491        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 99, },
1492        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 96, },
1493        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 93, },
1494        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 90, },
1495        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 88, },
1496        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 85, },
1497        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 83, },
1498        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 81, },
1499        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 78, },
1500        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 76, },
1501        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 74, },
1502        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 72, },
1503        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 70, },
1504        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1505        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1506        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1507        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1508        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1509        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 59, },
1510        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 57, },
1511        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 72, },
1512        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 70, },
1513        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1514        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1515        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1516        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1517        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1518        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 59, },
1519        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 57, },
1520        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 72, },
1521        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 70, },
1522        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 68, },
1523        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 66, },
1524        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 64, },
1525        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 62, },
1526        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 60, },
1527        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 59, },
1528        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 57, },
1529        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 71, },
1530        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 69, },
1531        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 67, },
1532        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 65, },
1533        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 63, },
1534        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 62, },
1535        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 60, },
1536        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 58, },
1537        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 57, },
1538        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 70, },
1539        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 68, },
1540        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 66, },
1541        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 65, },
1542        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 63, },
1543        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 61, },
1544        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 59, },
1545        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 58, },
1546        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 71, },
1547        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 69, },
1548        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 67, },
1549        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 65, },
1550        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 63, },
1551        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 61, },
1552        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 60, },
1553        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 58, },
1554        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 56, },
1555        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1556        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1557        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1558        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1559        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1560        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 60, },
1561        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1562        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 72, },
1563        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 70, },
1564        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1565        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1566        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 64, },
1567        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 62, },
1568        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 60, },
1569        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1570        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 72, },
1571        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1572        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1573        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1574        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1575        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1576        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1577        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1578        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1579        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 72, },
1580        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1581        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1582        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1583        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1584        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1585        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1586        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1587        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 72, },
1588        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1589        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1590        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1591        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1592        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1593        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1594        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1595        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 73, },
1596        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 71, },
1597        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 69, },
1598        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 67, },
1599        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 65, },
1600        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 63, },
1601        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1602        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1603        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 72, },
1604        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1605        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1606        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1607        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 65, },
1608        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 63, },
1609        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1610        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1611        { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 73, },
1612        { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 71, },
1613};
1614
1615static struct lpphy_tx_gain_table_entry lpphy_rev1_2ghz_tx_gain_table[] = {
1616        { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 90, },
1617        { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 88, },
1618        { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 85, },
1619        { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 83, },
1620        { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 81, },
1621        { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 78, },
1622        { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 76, },
1623        { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 74, },
1624        { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 72, },
1625        { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 70, },
1626        { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 68, },
1627        { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 66, },
1628        { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 64, },
1629        { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 62, },
1630        { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 60, },
1631        { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 59, },
1632        { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 72, },
1633        { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 70, },
1634        { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1635        { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1636        { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1637        { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1638        { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1639        { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 59, },
1640        { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 72, },
1641        { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 70, },
1642        { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 68, },
1643        { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 66, },
1644        { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 64, },
1645        { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 62, },
1646        { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 60, },
1647        { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 59, },
1648        { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 72, },
1649        { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 70, },
1650        { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 68, },
1651        { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 66, },
1652        { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 64, },
1653        { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 62, },
1654        { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 60, },
1655        { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 59, },
1656        { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 72, },
1657        { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 70, },
1658        { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 68, },
1659        { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 66, },
1660        { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 64, },
1661        { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 62, },
1662        { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 60, },
1663        { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 59, },
1664        { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 72, },
1665        { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 70, },
1666        { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 68, },
1667        { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 66, },
1668        { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 64, },
1669        { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 62, },
1670        { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 60, },
1671        { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 59, },
1672        { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 72, },
1673        { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1674        { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1675        { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1676        { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1677        { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1678        { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 60, },
1679        { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1680        { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 72, },
1681        { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 70, },
1682        { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1683        { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1684        { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 64, },
1685        { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 62, },
1686        { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 60, },
1687        { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1688        { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 72, },
1689        { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1690        { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1691        { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1692        { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1693        { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1694        { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1695        { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1696        { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1697        { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 72, },
1698        { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1699        { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1700        { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1701        { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1702        { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1703        { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1704        { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1705        { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 72, },
1706        { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1707        { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1708        { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1709        { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1710        { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1711        { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1712        { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1713        { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 73, },
1714        { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 71, },
1715        { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 69, },
1716        { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 67, },
1717        { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 65, },
1718        { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 63, },
1719        { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1720        { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1721        { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 72, },
1722        { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1723        { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1724        { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1725        { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 65, },
1726        { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 63, },
1727        { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1728        { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1729        { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 73, },
1730        { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 71, },
1731        { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 69, },
1732        { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 67, },
1733        { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 65, },
1734        { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 63, },
1735        { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 61, },
1736        { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 60, },
1737        { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 72, },
1738        { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 70, },
1739        { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 68, },
1740        { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 66, },
1741        { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 64, },
1742        { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 62, },
1743        { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 60, },
1744};
1745
1746static struct lpphy_tx_gain_table_entry lpphy_rev1_5ghz_tx_gain_table[] = {
1747        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 99, },
1748        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 96, },
1749        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 93, },
1750        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 90, },
1751        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 88, },
1752        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 85, },
1753        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 83, },
1754        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 81, },
1755        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 78, },
1756        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 76, },
1757        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 74, },
1758        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 72, },
1759        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 70, },
1760        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 68, },
1761        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 66, },
1762        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 64, },
1763        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 62, },
1764        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 60, },
1765        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 59, },
1766        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 57, },
1767        { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 55, },
1768        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 72, },
1769        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 70, },
1770        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1771        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1772        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1773        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1774        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1775        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 58, },
1776        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 56, },
1777        { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 55, },
1778        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 71, },
1779        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 69, },
1780        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 67, },
1781        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 65, },
1782        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 63, },
1783        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 62, },
1784        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 60, },
1785        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 58, },
1786        { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 56, },
1787        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 72, },
1788        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 70, },
1789        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 68, },
1790        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 66, },
1791        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 64, },
1792        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 62, },
1793        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 60, },
1794        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 59, },
1795        { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 57, },
1796        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 73, },
1797        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 71, },
1798        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 69, },
1799        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 67, },
1800        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 65, },
1801        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 63, },
1802        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 61, },
1803        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 60, },
1804        { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 58, },
1805        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 71, },
1806        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 69, },
1807        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 67, },
1808        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 65, },
1809        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 63, },
1810        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 61, },
1811        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 60, },
1812        { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 58, },
1813        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1814        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1815        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1816        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1817        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1818        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 61, },
1819        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1820        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 57, },
1821        { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 56, },
1822        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1823        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1824        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 65, },
1825        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 63, },
1826        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 61, },
1827        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1828        { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 58, },
1829        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1830        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1831        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1832        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1833        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1834        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1835        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1836        { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1837        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1838        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1839        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1840        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1841        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1842        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1843        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1844        { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 57, },
1845        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1846        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1847        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1848        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1849        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1850        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1851        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1852        { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 57, },
1853        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 70, },
1854        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 68, },
1855        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 66, },
1856        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 64, },
1857        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 62, },
1858        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1859        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1860        { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 57, },
1861        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1862        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1863        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1864        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 64, },
1865        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 62, },
1866        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1867        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1868        { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 57, },
1869        { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 69, },
1870        { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 67, },
1871        { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 65, },
1872        { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 63, },
1873        { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 62, },
1874        { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 60, },
1875};
1876
1877static struct lpphy_tx_gain_table_entry lpphy_rev2_nopa_tx_gain_table[] = {
1878        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 152, },
1879        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 147, },
1880        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 143, },
1881        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 139, },
1882        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 135, },
1883        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 131, },
1884        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 128, },
1885        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 124, },
1886        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 121, },
1887        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 117, },
1888        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 114, },
1889        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 111, },
1890        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 107, },
1891        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 104, },
1892        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 101, },
1893        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 99, },
1894        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 96, },
1895        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 93, },
1896        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 90, },
1897        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 88, },
1898        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 85, },
1899        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 83, },
1900        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 81, },
1901        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 78, },
1902        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 76, },
1903        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 74, },
1904        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 72, },
1905        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 70, },
1906        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 68, },
1907        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 66, },
1908        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 64, },
1909        { .gm = 255, .pga = 255, .pad = 197, .dac = 0, .bb_mult = 64, },
1910        { .gm = 255, .pga = 255, .pad = 192, .dac = 0, .bb_mult = 64, },
1911        { .gm = 255, .pga = 255, .pad = 186, .dac = 0, .bb_mult = 64, },
1912        { .gm = 255, .pga = 255, .pad = 181, .dac = 0, .bb_mult = 64, },
1913        { .gm = 255, .pga = 255, .pad = 176, .dac = 0, .bb_mult = 64, },
1914        { .gm = 255, .pga = 255, .pad = 171, .dac = 0, .bb_mult = 64, },
1915        { .gm = 255, .pga = 255, .pad = 166, .dac = 0, .bb_mult = 64, },
1916        { .gm = 255, .pga = 255, .pad = 161, .dac = 0, .bb_mult = 64, },
1917        { .gm = 255, .pga = 255, .pad = 157, .dac = 0, .bb_mult = 64, },
1918        { .gm = 255, .pga = 255, .pad = 152, .dac = 0, .bb_mult = 64, },
1919        { .gm = 255, .pga = 255, .pad = 148, .dac = 0, .bb_mult = 64, },
1920        { .gm = 255, .pga = 255, .pad = 144, .dac = 0, .bb_mult = 64, },
1921        { .gm = 255, .pga = 255, .pad = 140, .dac = 0, .bb_mult = 64, },
1922        { .gm = 255, .pga = 255, .pad = 136, .dac = 0, .bb_mult = 64, },
1923        { .gm = 255, .pga = 255, .pad = 132, .dac = 0, .bb_mult = 64, },
1924        { .gm = 255, .pga = 255, .pad = 128, .dac = 0, .bb_mult = 64, },
1925        { .gm = 255, .pga = 255, .pad = 124, .dac = 0, .bb_mult = 64, },
1926        { .gm = 255, .pga = 255, .pad = 121, .dac = 0, .bb_mult = 64, },
1927        { .gm = 255, .pga = 255, .pad = 117, .dac = 0, .bb_mult = 64, },
1928        { .gm = 255, .pga = 255, .pad = 114, .dac = 0, .bb_mult = 64, },
1929        { .gm = 255, .pga = 255, .pad = 111, .dac = 0, .bb_mult = 64, },
1930        { .gm = 255, .pga = 255, .pad = 108, .dac = 0, .bb_mult = 64, },
1931        { .gm = 255, .pga = 255, .pad = 105, .dac = 0, .bb_mult = 64, },
1932        { .gm = 255, .pga = 255, .pad = 102, .dac = 0, .bb_mult = 64, },
1933        { .gm = 255, .pga = 255, .pad = 99, .dac = 0, .bb_mult = 64, },
1934        { .gm = 255, .pga = 255, .pad = 96, .dac = 0, .bb_mult = 64, },
1935        { .gm = 255, .pga = 255, .pad = 93, .dac = 0, .bb_mult = 64, },
1936        { .gm = 255, .pga = 255, .pad = 91, .dac = 0, .bb_mult = 64, },
1937        { .gm = 255, .pga = 255, .pad = 88, .dac = 0, .bb_mult = 64, },
1938        { .gm = 255, .pga = 255, .pad = 86, .dac = 0, .bb_mult = 64, },
1939        { .gm = 255, .pga = 255, .pad = 83, .dac = 0, .bb_mult = 64, },
1940        { .gm = 255, .pga = 255, .pad = 81, .dac = 0, .bb_mult = 64, },
1941        { .gm = 255, .pga = 255, .pad = 79, .dac = 0, .bb_mult = 64, },
1942        { .gm = 255, .pga = 255, .pad = 76, .dac = 0, .bb_mult = 64, },
1943        { .gm = 255, .pga = 255, .pad = 74, .dac = 0, .bb_mult = 64, },
1944        { .gm = 255, .pga = 255, .pad = 72, .dac = 0, .bb_mult = 64, },
1945        { .gm = 255, .pga = 255, .pad = 70, .dac = 0, .bb_mult = 64, },
1946        { .gm = 255, .pga = 255, .pad = 68, .dac = 0, .bb_mult = 64, },
1947        { .gm = 255, .pga = 255, .pad = 66, .dac = 0, .bb_mult = 64, },
1948        { .gm = 255, .pga = 255, .pad = 64, .dac = 0, .bb_mult = 64, },
1949        { .gm = 255, .pga = 248, .pad = 64, .dac = 0, .bb_mult = 64, },
1950        { .gm = 255, .pga = 248, .pad = 62, .dac = 0, .bb_mult = 64, },
1951        { .gm = 255, .pga = 241, .pad = 62, .dac = 0, .bb_mult = 64, },
1952        { .gm = 255, .pga = 241, .pad = 60, .dac = 0, .bb_mult = 64, },
1953        { .gm = 255, .pga = 234, .pad = 60, .dac = 0, .bb_mult = 64, },
1954        { .gm = 255, .pga = 234, .pad = 59, .dac = 0, .bb_mult = 64, },
1955        { .gm = 255, .pga = 227, .pad = 59, .dac = 0, .bb_mult = 64, },
1956        { .gm = 255, .pga = 227, .pad = 57, .dac = 0, .bb_mult = 64, },
1957        { .gm = 255, .pga = 221, .pad = 57, .dac = 0, .bb_mult = 64, },
1958        { .gm = 255, .pga = 221, .pad = 55, .dac = 0, .bb_mult = 64, },
1959        { .gm = 255, .pga = 215, .pad = 55, .dac = 0, .bb_mult = 64, },
1960        { .gm = 255, .pga = 215, .pad = 54, .dac = 0, .bb_mult = 64, },
1961        { .gm = 255, .pga = 208, .pad = 54, .dac = 0, .bb_mult = 64, },
1962        { .gm = 255, .pga = 208, .pad = 52, .dac = 0, .bb_mult = 64, },
1963        { .gm = 255, .pga = 203, .pad = 52, .dac = 0, .bb_mult = 64, },
1964        { .gm = 255, .pga = 203, .pad = 51, .dac = 0, .bb_mult = 64, },
1965        { .gm = 255, .pga = 197, .pad = 51, .dac = 0, .bb_mult = 64, },
1966        { .gm = 255, .pga = 197, .pad = 49, .dac = 0, .bb_mult = 64, },
1967        { .gm = 255, .pga = 191, .pad = 49, .dac = 0, .bb_mult = 64, },
1968        { .gm = 255, .pga = 191, .pad = 48, .dac = 0, .bb_mult = 64, },
1969        { .gm = 255, .pga = 186, .pad = 48, .dac = 0, .bb_mult = 64, },
1970        { .gm = 255, .pga = 186, .pad = 47, .dac = 0, .bb_mult = 64, },
1971        { .gm = 255, .pga = 181, .pad = 47, .dac = 0, .bb_mult = 64, },
1972        { .gm = 255, .pga = 181, .pad = 45, .dac = 0, .bb_mult = 64, },
1973        { .gm = 255, .pga = 175, .pad = 45, .dac = 0, .bb_mult = 64, },
1974        { .gm = 255, .pga = 175, .pad = 44, .dac = 0, .bb_mult = 64, },
1975        { .gm = 255, .pga = 170, .pad = 44, .dac = 0, .bb_mult = 64, },
1976        { .gm = 255, .pga = 170, .pad = 43, .dac = 0, .bb_mult = 64, },
1977        { .gm = 255, .pga = 166, .pad = 43, .dac = 0, .bb_mult = 64, },
1978        { .gm = 255, .pga = 166, .pad = 42, .dac = 0, .bb_mult = 64, },
1979        { .gm = 255, .pga = 161, .pad = 42, .dac = 0, .bb_mult = 64, },
1980        { .gm = 255, .pga = 161, .pad = 40, .dac = 0, .bb_mult = 64, },
1981        { .gm = 255, .pga = 156, .pad = 40, .dac = 0, .bb_mult = 64, },
1982        { .gm = 255, .pga = 156, .pad = 39, .dac = 0, .bb_mult = 64, },
1983        { .gm = 255, .pga = 152, .pad = 39, .dac = 0, .bb_mult = 64, },
1984        { .gm = 255, .pga = 152, .pad = 38, .dac = 0, .bb_mult = 64, },
1985        { .gm = 255, .pga = 148, .pad = 38, .dac = 0, .bb_mult = 64, },
1986        { .gm = 255, .pga = 148, .pad = 37, .dac = 0, .bb_mult = 64, },
1987        { .gm = 255, .pga = 143, .pad = 37, .dac = 0, .bb_mult = 64, },
1988        { .gm = 255, .pga = 143, .pad = 36, .dac = 0, .bb_mult = 64, },
1989        { .gm = 255, .pga = 139, .pad = 36, .dac = 0, .bb_mult = 64, },
1990        { .gm = 255, .pga = 139, .pad = 35, .dac = 0, .bb_mult = 64, },
1991        { .gm = 255, .pga = 135, .pad = 35, .dac = 0, .bb_mult = 64, },
1992        { .gm = 255, .pga = 135, .pad = 34, .dac = 0, .bb_mult = 64, },
1993        { .gm = 255, .pga = 132, .pad = 34, .dac = 0, .bb_mult = 64, },
1994        { .gm = 255, .pga = 132, .pad = 33, .dac = 0, .bb_mult = 64, },
1995        { .gm = 255, .pga = 128, .pad = 33, .dac = 0, .bb_mult = 64, },
1996        { .gm = 255, .pga = 128, .pad = 32, .dac = 0, .bb_mult = 64, },
1997        { .gm = 255, .pga = 124, .pad = 32, .dac = 0, .bb_mult = 64, },
1998        { .gm = 255, .pga = 124, .pad = 31, .dac = 0, .bb_mult = 64, },
1999        { .gm = 255, .pga = 121, .pad = 31, .dac = 0, .bb_mult = 64, },
2000        { .gm = 255, .pga = 121, .pad = 30, .dac = 0, .bb_mult = 64, },
2001        { .gm = 255, .pga = 117, .pad = 30, .dac = 0, .bb_mult = 64, },
2002        { .gm = 255, .pga = 117, .pad = 29, .dac = 0, .bb_mult = 64, },
2003        { .gm = 255, .pga = 114, .pad = 29, .dac = 0, .bb_mult = 64, },
2004        { .gm = 255, .pga = 114, .pad = 29, .dac = 0, .bb_mult = 64, },
2005        { .gm = 255, .pga = 111, .pad = 29, .dac = 0, .bb_mult = 64, },
2006};
2007
2008static struct lpphy_tx_gain_table_entry lpphy_rev2_2ghz_tx_gain_table[] = {
2009        { .gm = 7, .pga = 99, .pad = 255, .dac = 0, .bb_mult = 64, },
2010        { .gm = 7, .pga = 96, .pad = 255, .dac = 0, .bb_mult = 64, },
2011        { .gm = 7, .pga = 93, .pad = 255, .dac = 0, .bb_mult = 64, },
2012        { .gm = 7, .pga = 90, .pad = 255, .dac = 0, .bb_mult = 64, },
2013        { .gm = 7, .pga = 88, .pad = 255, .dac = 0, .bb_mult = 64, },
2014        { .gm = 7, .pga = 85, .pad = 255, .dac = 0, .bb_mult = 64, },
2015        { .gm = 7, .pga = 83, .pad = 255, .dac = 0, .bb_mult = 64, },
2016        { .gm = 7, .pga = 81, .pad = 255, .dac = 0, .bb_mult = 64, },
2017        { .gm = 7, .pga = 78, .pad = 255, .dac = 0, .bb_mult = 64, },
2018        { .gm = 7, .pga = 76, .pad = 255, .dac = 0, .bb_mult = 64, },
2019        { .gm = 7, .pga = 74, .pad = 255, .dac = 0, .bb_mult = 64, },
2020        { .gm = 7, .pga = 72, .pad = 255, .dac = 0, .bb_mult = 64, },
2021        { .gm = 7, .pga = 70, .pad = 255, .dac = 0, .bb_mult = 64, },
2022        { .gm = 7, .pga = 68, .pad = 255, .dac = 0, .bb_mult = 64, },
2023        { .gm = 7, .pga = 66, .pad = 255, .dac = 0, .bb_mult = 64, },
2024        { .gm = 7, .pga = 64, .pad = 255, .dac = 0, .bb_mult = 64, },
2025        { .gm = 7, .pga = 64, .pad = 255, .dac = 0, .bb_mult = 64, },
2026        { .gm = 7, .pga = 62, .pad = 255, .dac = 0, .bb_mult = 64, },
2027        { .gm = 7, .pga = 62, .pad = 248, .dac = 0, .bb_mult = 64, },
2028        { .gm = 7, .pga = 60, .pad = 248, .dac = 0, .bb_mult = 64, },
2029        { .gm = 7, .pga = 60, .pad = 241, .dac = 0, .bb_mult = 64, },
2030        { .gm = 7, .pga = 59, .pad = 241, .dac = 0, .bb_mult = 64, },
2031        { .gm = 7, .pga = 59, .pad = 234, .dac = 0, .bb_mult = 64, },
2032        { .gm = 7, .pga = 57, .pad = 234, .dac = 0, .bb_mult = 64, },
2033        { .gm = 7, .pga = 57, .pad = 227, .dac = 0, .bb_mult = 64, },
2034        { .gm = 7, .pga = 55, .pad = 227, .dac = 0, .bb_mult = 64, },
2035        { .gm = 7, .pga = 55, .pad = 221, .dac = 0, .bb_mult = 64, },
2036        { .gm = 7, .pga = 54, .pad = 221, .dac = 0, .bb_mult = 64, },
2037        { .gm = 7, .pga = 54, .pad = 215, .dac = 0, .bb_mult = 64, },
2038        { .gm = 7, .pga = 52, .pad = 215, .dac = 0, .bb_mult = 64, },
2039        { .gm = 7, .pga = 52, .pad = 208, .dac = 0, .bb_mult = 64, },
2040        { .gm = 7, .pga = 51, .pad = 208, .dac = 0, .bb_mult = 64, },
2041        { .gm = 7, .pga = 51, .pad = 203, .dac = 0, .bb_mult = 64, },
2042        { .gm = 7, .pga = 49, .pad = 203, .dac = 0, .bb_mult = 64, },
2043        { .gm = 7, .pga = 49, .pad = 197, .dac = 0, .bb_mult = 64, },
2044        { .gm = 7, .pga = 48, .pad = 197, .dac = 0, .bb_mult = 64, },
2045        { .gm = 7, .pga = 48, .pad = 191, .dac = 0, .bb_mult = 64, },
2046        { .gm = 7, .pga = 47, .pad = 191, .dac = 0, .bb_mult = 64, },
2047        { .gm = 7, .pga = 47, .pad = 186, .dac = 0, .bb_mult = 64, },
2048        { .gm = 7, .pga = 45, .pad = 186, .dac = 0, .bb_mult = 64, },
2049        { .gm = 7, .pga = 45, .pad = 181, .dac = 0, .bb_mult = 64, },
2050        { .gm = 7, .pga = 44, .pad = 181, .dac = 0, .bb_mult = 64, },
2051        { .gm = 7, .pga = 44, .pad = 175, .dac = 0, .bb_mult = 64, },
2052        { .gm = 7, .pga = 43, .pad = 175, .dac = 0, .bb_mult = 64, },
2053        { .gm = 7, .pga = 43, .pad = 170, .dac = 0, .bb_mult = 64, },
2054        { .gm = 7, .pga = 42, .pad = 170, .dac = 0, .bb_mult = 64, },
2055        { .gm = 7, .pga = 42, .pad = 166, .dac = 0, .bb_mult = 64, },
2056        { .gm = 7, .pga = 40, .pad = 166, .dac = 0, .bb_mult = 64, },
2057        { .gm = 7, .pga = 40, .pad = 161, .dac = 0, .bb_mult = 64, },
2058        { .gm = 7, .pga = 39, .pad = 161, .dac = 0, .bb_mult = 64, },
2059        { .gm = 7, .pga = 39, .pad = 156, .dac = 0, .bb_mult = 64, },
2060        { .gm = 7, .pga = 38, .pad = 156, .dac = 0, .bb_mult = 64, },
2061        { .gm = 7, .pga = 38, .pad = 152, .dac = 0, .bb_mult = 64, },
2062        { .gm = 7, .pga = 37, .pad = 152, .dac = 0, .bb_mult = 64, },
2063        { .gm = 7, .pga = 37, .pad = 148, .dac = 0, .bb_mult = 64, },
2064        { .gm = 7, .pga = 36, .pad = 148, .dac = 0, .bb_mult = 64, },
2065        { .gm = 7, .pga = 36, .pad = 143, .dac = 0, .bb_mult = 64, },
2066        { .gm = 7, .pga = 35, .pad = 143, .dac = 0, .bb_mult = 64, },
2067        { .gm = 7, .pga = 35, .pad = 139, .dac = 0, .bb_mult = 64, },
2068        { .gm = 7, .pga = 34, .pad = 139, .dac = 0, .bb_mult = 64, },
2069        { .gm = 7, .pga = 34, .pad = 135, .dac = 0, .bb_mult = 64, },
2070        { .gm = 7, .pga = 33, .pad = 135, .dac = 0, .bb_mult = 64, },
2071        { .gm = 7, .pga = 33, .pad = 132, .dac = 0, .bb_mult = 64, },
2072        { .gm = 7, .pga = 32, .pad = 132, .dac = 0, .bb_mult = 64, },
2073        { .gm = 7, .pga = 32, .pad = 128, .dac = 0, .bb_mult = 64, },
2074        { .gm = 7, .pga = 31, .pad = 128, .dac = 0, .bb_mult = 64, },
2075        { .gm = 7, .pga = 31, .pad = 124, .dac = 0, .bb_mult = 64, },
2076        { .gm = 7, .pga = 30, .pad = 124, .dac = 0, .bb_mult = 64, },
2077        { .gm = 7, .pga = 30, .pad = 121, .dac = 0, .bb_mult = 64, },
2078        { .gm = 7, .pga = 29, .pad = 121, .dac = 0, .bb_mult = 64, },
2079        { .gm = 7, .pga = 29, .pad = 117, .dac = 0, .bb_mult = 64, },
2080        { .gm = 7, .pga = 29, .pad = 117, .dac = 0, .bb_mult = 64, },
2081        { .gm = 7, .pga = 29, .pad = 114, .dac = 0, .bb_mult = 64, },
2082        { .gm = 7, .pga = 28, .pad = 114, .dac = 0, .bb_mult = 64, },
2083        { .gm = 7, .pga = 28, .pad = 111, .dac = 0, .bb_mult = 64, },
2084        { .gm = 7, .pga = 27, .pad = 111, .dac = 0, .bb_mult = 64, },
2085        { .gm = 7, .pga = 27, .pad = 108, .dac = 0, .bb_mult = 64, },
2086        { .gm = 7, .pga = 26, .pad = 108, .dac = 0, .bb_mult = 64, },
2087        { .gm = 7, .pga = 26, .pad = 104, .dac = 0, .bb_mult = 64, },
2088        { .gm = 7, .pga = 25, .pad = 104, .dac = 0, .bb_mult = 64, },
2089        { .gm = 7, .pga = 25, .pad = 102, .dac = 0, .bb_mult = 64, },
2090        { .gm = 7, .pga = 25, .pad = 102, .dac = 0, .bb_mult = 64, },
2091        { .gm = 7, .pga = 25, .pad = 99, .dac = 0, .bb_mult = 64, },
2092        { .gm = 7, .pga = 24, .pad = 99, .dac = 0, .bb_mult = 64, },
2093        { .gm = 7, .pga = 24, .pad = 96, .dac = 0, .bb_mult = 64, },
2094        { .gm = 7, .pga = 23, .pad = 96, .dac = 0, .bb_mult = 64, },
2095        { .gm = 7, .pga = 23, .pad = 93, .dac = 0, .bb_mult = 64, },
2096        { .gm = 7, .pga = 23, .pad = 93, .dac = 0, .bb_mult = 64, },
2097        { .gm = 7, .pga = 23, .pad = 90, .dac = 0, .bb_mult = 64, },
2098        { .gm = 7, .pga = 22, .pad = 90, .dac = 0, .bb_mult = 64, },
2099        { .gm = 7, .pga = 22, .pad = 88, .dac = 0, .bb_mult = 64, },
2100        { .gm = 7, .pga = 21, .pad = 88, .dac = 0, .bb_mult = 64, },
2101        { .gm = 7, .pga = 21, .pad = 85, .dac = 0, .bb_mult = 64, },
2102        { .gm = 7, .pga = 21, .pad = 85, .dac = 0, .bb_mult = 64, },
2103        { .gm = 7, .pga = 21, .pad = 83, .dac = 0, .bb_mult = 64, },
2104        { .gm = 7, .pga = 20, .pad = 83, .dac = 0, .bb_mult = 64, },
2105        { .gm = 7, .pga = 20, .pad = 81, .dac = 0, .bb_mult = 64, },
2106        { .gm = 7, .pga = 20, .pad = 81, .dac = 0, .bb_mult = 64, },
2107        { .gm = 7, .pga = 20, .pad = 78, .dac = 0, .bb_mult = 64, },
2108        { .gm = 7, .pga = 19, .pad = 78, .dac = 0, .bb_mult = 64, },
2109        { .gm = 7, .pga = 19, .pad = 76, .dac = 0, .bb_mult = 64, },
2110        { .gm = 7, .pga = 19, .pad = 76, .dac = 0, .bb_mult = 64, },
2111        { .gm = 7, .pga = 19, .pad = 74, .dac = 0, .bb_mult = 64, },
2112        { .gm = 7, .pga = 18, .pad = 74, .dac = 0, .bb_mult = 64, },
2113        { .gm = 7, .pga = 18, .pad = 72, .dac = 0, .bb_mult = 64, },
2114        { .gm = 7, .pga = 18, .pad = 72, .dac = 0, .bb_mult = 64, },
2115        { .gm = 7, .pga = 18, .pad = 70, .dac = 0, .bb_mult = 64, },
2116        { .gm = 7, .pga = 17, .pad = 70, .dac = 0, .bb_mult = 64, },
2117        { .gm = 7, .pga = 17, .pad = 68, .dac = 0, .bb_mult = 64, },
2118        { .gm = 7, .pga = 17, .pad = 68, .dac = 0, .bb_mult = 64, },
2119        { .gm = 7, .pga = 17, .pad = 66, .dac = 0, .bb_mult = 64, },
2120        { .gm = 7, .pga = 16, .pad = 66, .dac = 0, .bb_mult = 64, },
2121        { .gm = 7, .pga = 16, .pad = 64, .dac = 0, .bb_mult = 64, },
2122        { .gm = 7, .pga = 16, .pad = 64, .dac = 0, .bb_mult = 64, },
2123        { .gm = 7, .pga = 16, .pad = 62, .dac = 0, .bb_mult = 64, },
2124        { .gm = 7, .pga = 15, .pad = 62, .dac = 0, .bb_mult = 64, },
2125        { .gm = 7, .pga = 15, .pad = 60, .dac = 0, .bb_mult = 64, },
2126        { .gm = 7, .pga = 15, .pad = 60, .dac = 0, .bb_mult = 64, },
2127        { .gm = 7, .pga = 15, .pad = 59, .dac = 0, .bb_mult = 64, },
2128        { .gm = 7, .pga = 14, .pad = 59, .dac = 0, .bb_mult = 64, },
2129        { .gm = 7, .pga = 14, .pad = 57, .dac = 0, .bb_mult = 64, },
2130        { .gm = 7, .pga = 14, .pad = 57, .dac = 0, .bb_mult = 64, },
2131        { .gm = 7, .pga = 14, .pad = 55, .dac = 0, .bb_mult = 64, },
2132        { .gm = 7, .pga = 14, .pad = 55, .dac = 0, .bb_mult = 64, },
2133        { .gm = 7, .pga = 14, .pad = 54, .dac = 0, .bb_mult = 64, },
2134        { .gm = 7, .pga = 13, .pad = 54, .dac = 0, .bb_mult = 64, },
2135        { .gm = 7, .pga = 13, .pad = 52, .dac = 0, .bb_mult = 64, },
2136        { .gm = 7, .pga = 13, .pad = 52, .dac = 0, .bb_mult = 64, },
2137};
2138
2139static struct lpphy_tx_gain_table_entry lpphy_rev2_5ghz_tx_gain_table[] = {
2140        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 152, },
2141        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 147, },
2142        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 143, },
2143        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 139, },
2144        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 135, },
2145        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 131, },
2146        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 128, },
2147        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 124, },
2148        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 121, },
2149        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 117, },
2150        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 114, },
2151        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 111, },
2152        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 107, },
2153        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 104, },
2154        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 101, },
2155        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 99, },
2156        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 96, },
2157        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 93, },
2158        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 90, },
2159        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 88, },
2160        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 85, },
2161        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 83, },
2162        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 81, },
2163        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 78, },
2164        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 76, },
2165        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 74, },
2166        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 72, },
2167        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 70, },
2168        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 68, },
2169        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 66, },
2170        { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 64, },
2171        { .gm = 255, .pga = 255, .pad = 248, .dac = 0, .bb_mult = 64, },
2172        { .gm = 255, .pga = 255, .pad = 241, .dac = 0, .bb_mult = 64, },
2173        { .gm = 255, .pga = 255, .pad = 234, .dac = 0, .bb_mult = 64, },
2174        { .gm = 255, .pga = 255, .pad = 227, .dac = 0, .bb_mult = 64, },
2175        { .gm = 255, .pga = 255, .pad = 221, .dac = 0, .bb_mult = 64, },
2176        { .gm = 255, .pga = 255, .pad = 215, .dac = 0, .bb_mult = 64, },
2177        { .gm = 255, .pga = 255, .pad = 208, .dac = 0, .bb_mult = 64, },
2178        { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 64, },
2179        { .gm = 255, .pga = 255, .pad = 197, .dac = 0, .bb_mult = 64, },
2180        { .gm = 255, .pga = 255, .pad = 191, .dac = 0, .bb_mult = 64, },
2181        { .gm = 255, .pga = 255, .pad = 186, .dac = 0, .bb_mult = 64, },
2182        { .gm = 255, .pga = 255, .pad = 181, .dac = 0, .bb_mult = 64, },
2183        { .gm = 255, .pga = 255, .pad = 175, .dac = 0, .bb_mult = 64, },
2184        { .gm = 255, .pga = 255, .pad = 170, .dac = 0, .bb_mult = 64, },
2185        { .gm = 255, .pga = 255, .pad = 166, .dac = 0, .bb_mult = 64, },
2186        { .gm = 255, .pga = 255, .pad = 161, .dac = 0, .bb_mult = 64, },
2187        { .gm = 255, .pga = 255, .pad = 156, .dac = 0, .bb_mult = 64, },
2188        { .gm = 255, .pga = 255, .pad = 152, .dac = 0, .bb_mult = 64, },
2189        { .gm = 255, .pga = 255, .pad = 148, .dac = 0, .bb_mult = 64, },
2190        { .gm = 255, .pga = 255, .pad = 143, .dac = 0, .bb_mult = 64, },
2191        { .gm = 255, .pga = 255, .pad = 139, .dac = 0, .bb_mult = 64, },
2192        { .gm = 255, .pga = 255, .pad = 135, .dac = 0, .bb_mult = 64, },
2193        { .gm = 255, .pga = 255, .pad = 132, .dac = 0, .bb_mult = 64, },
2194        { .gm = 255, .pga = 255, .pad = 128, .dac = 0, .bb_mult = 64, },
2195        { .gm = 255, .pga = 255, .pad = 124, .dac = 0, .bb_mult = 64, },
2196        { .gm = 255, .pga = 255, .pad = 121, .dac = 0, .bb_mult = 64, },
2197        { .gm = 255, .pga = 255, .pad = 117, .dac = 0, .bb_mult = 64, },
2198        { .gm = 255, .pga = 255, .pad = 114, .dac = 0, .bb_mult = 64, },
2199        { .gm = 255, .pga = 255, .pad = 111, .dac = 0, .bb_mult = 64, },
2200        { .gm = 255, .pga = 255, .pad = 108, .dac = 0, .bb_mult = 64, },
2201        { .gm = 255, .pga = 255, .pad = 104, .dac = 0, .bb_mult = 64, },
2202        { .gm = 255, .pga = 255, .pad = 102, .dac = 0, .bb_mult = 64, },
2203        { .gm = 255, .pga = 255, .pad = 99, .dac = 0, .bb_mult = 64, },
2204        { .gm = 255, .pga = 255, .pad = 96, .dac = 0, .bb_mult = 64, },
2205        { .gm = 255, .pga = 255, .pad = 93, .dac = 0, .bb_mult = 64, },
2206        { .gm = 255, .pga = 255, .pad = 90, .dac = 0, .bb_mult = 64, },
2207        { .gm = 255, .pga = 255, .pad = 88, .dac = 0, .bb_mult = 64, },
2208        { .gm = 255, .pga = 255, .pad = 85, .dac = 0, .bb_mult = 64, },
2209        { .gm = 255, .pga = 255, .pad = 83, .dac = 0, .bb_mult = 64, },
2210        { .gm = 255, .pga = 255, .pad = 81, .dac = 0, .bb_mult = 64, },
2211        { .gm = 255, .pga = 255, .pad = 78, .dac = 0, .bb_mult = 64, },
2212        { .gm = 255, .pga = 255, .pad = 76, .dac = 0, .bb_mult = 64, },
2213        { .gm = 255, .pga = 255, .pad = 74, .dac = 0, .bb_mult = 64, },
2214        { .gm = 255, .pga = 255, .pad = 72, .dac = 0, .bb_mult = 64, },
2215        { .gm = 255, .pga = 255, .pad = 70, .dac = 0, .bb_mult = 64, },
2216        { .gm = 255, .pga = 255, .pad = 68, .dac = 0, .bb_mult = 64, },
2217        { .gm = 255, .pga = 255, .pad = 66, .dac = 0, .bb_mult = 64, },
2218        { .gm = 255, .pga = 255, .pad = 64, .dac = 0, .bb_mult = 64, },
2219        { .gm = 255, .pga = 255, .pad = 64, .dac = 0, .bb_mult = 64, },
2220        { .gm = 255, .pga = 255, .pad = 62, .dac = 0, .bb_mult = 64, },
2221        { .gm = 255, .pga = 248, .pad = 62, .dac = 0, .bb_mult = 64, },
2222        { .gm = 255, .pga = 248, .pad = 60, .dac = 0, .bb_mult = 64, },
2223        { .gm = 255, .pga = 241, .pad = 60, .dac = 0, .bb_mult = 64, },
2224        { .gm = 255, .pga = 241, .pad = 59, .dac = 0, .bb_mult = 64, },
2225        { .gm = 255, .pga = 234, .pad = 59, .dac = 0, .bb_mult = 64, },
2226        { .gm = 255, .pga = 234, .pad = 57, .dac = 0, .bb_mult = 64, },
2227        { .gm = 255, .pga = 227, .pad = 57, .dac = 0, .bb_mult = 64, },
2228        { .gm = 255, .pga = 227, .pad = 55, .dac = 0, .bb_mult = 64, },
2229        { .gm = 255, .pga = 221, .pad = 55, .dac = 0, .bb_mult = 64, },
2230        { .gm = 255, .pga = 221, .pad = 54, .dac = 0, .bb_mult = 64, },
2231        { .gm = 255, .pga = 215, .pad = 54, .dac = 0, .bb_mult = 64, },
2232        { .gm = 255, .pga = 215, .pad = 52, .dac = 0, .bb_mult = 64, },
2233        { .gm = 255, .pga = 208, .pad = 52, .dac = 0, .bb_mult = 64, },
2234        { .gm = 255, .pga = 208, .pad = 51, .dac = 0, .bb_mult = 64, },
2235        { .gm = 255, .pga = 203, .pad = 51, .dac = 0, .bb_mult = 64, },
2236        { .gm = 255, .pga = 203, .pad = 49, .dac = 0, .bb_mult = 64, },
2237        { .gm = 255, .pga = 197, .pad = 49, .dac = 0, .bb_mult = 64, },
2238        { .gm = 255, .pga = 197, .pad = 48, .dac = 0, .bb_mult = 64, },
2239        { .gm = 255, .pga = 191, .pad = 48, .dac = 0, .bb_mult = 64, },
2240        { .gm = 255, .pga = 191, .pad = 47, .dac = 0, .bb_mult = 64, },
2241        { .gm = 255, .pga = 186, .pad = 47, .dac = 0, .bb_mult = 64, },
2242        { .gm = 255, .pga = 186, .pad = 45, .dac = 0, .bb_mult = 64, },
2243        { .gm = 255, .pga = 181, .pad = 45, .dac = 0, .bb_mult = 64, },
2244        { .gm = 255, .pga = 181, .pad = 44, .dac = 0, .bb_mult = 64, },
2245        { .gm = 255, .pga = 175, .pad = 44, .dac = 0, .bb_mult = 64, },
2246        { .gm = 255, .pga = 175, .pad = 43, .dac = 0, .bb_mult = 64, },
2247        { .gm = 255, .pga = 170, .pad = 43, .dac = 0, .bb_mult = 64, },
2248        { .gm = 255, .pga = 170, .pad = 42, .dac = 0, .bb_mult = 64, },
2249        { .gm = 255, .pga = 166, .pad = 42, .dac = 0, .bb_mult = 64, },
2250        { .gm = 255, .pga = 166, .pad = 40, .dac = 0, .bb_mult = 64, },
2251        { .gm = 255, .pga = 161, .pad = 40, .dac = 0, .bb_mult = 64, },
2252        { .gm = 255, .pga = 161, .pad = 39, .dac = 0, .bb_mult = 64, },
2253        { .gm = 255, .pga = 156, .pad = 39, .dac = 0, .bb_mult = 64, },
2254        { .gm = 255, .pga = 156, .pad = 38, .dac = 0, .bb_mult = 64, },
2255        { .gm = 255, .pga = 152, .pad = 38, .dac = 0, .bb_mult = 64, },
2256        { .gm = 255, .pga = 152, .pad = 37, .dac = 0, .bb_mult = 64, },
2257        { .gm = 255, .pga = 148, .pad = 37, .dac = 0, .bb_mult = 64, },
2258        { .gm = 255, .pga = 148, .pad = 36, .dac = 0, .bb_mult = 64, },
2259        { .gm = 255, .pga = 143, .pad = 36, .dac = 0, .bb_mult = 64, },
2260        { .gm = 255, .pga = 143, .pad = 35, .dac = 0, .bb_mult = 64, },
2261        { .gm = 255, .pga = 139, .pad = 35, .dac = 0, .bb_mult = 64, },
2262        { .gm = 255, .pga = 139, .pad = 34, .dac = 0, .bb_mult = 64, },
2263        { .gm = 255, .pga = 135, .pad = 34, .dac = 0, .bb_mult = 64, },
2264        { .gm = 255, .pga = 135, .pad = 33, .dac = 0, .bb_mult = 64, },
2265        { .gm = 255, .pga = 132, .pad = 33, .dac = 0, .bb_mult = 64, },
2266        { .gm = 255, .pga = 132, .pad = 32, .dac = 0, .bb_mult = 64, },
2267        { .gm = 255, .pga = 128, .pad = 32, .dac = 0, .bb_mult = 64, },
2268};
2269
2270void lpphy_rev0_1_table_init(struct b43_wldev *dev)
2271{
2272        B43_WARN_ON(dev->phy.rev >= 2);
2273
2274        b43_lptab_write_bulk(dev, B43_LPTAB8(2, 0),
2275                ARRAY_SIZE(lpphy_min_sig_sq_table), lpphy_min_sig_sq_table);
2276        b43_lptab_write_bulk(dev, B43_LPTAB16(1, 0),
2277                ARRAY_SIZE(lpphy_rev01_noise_scale_table), lpphy_rev01_noise_scale_table);
2278        b43_lptab_write_bulk(dev, B43_LPTAB16(14, 0),
2279                ARRAY_SIZE(lpphy_crs_gain_nft_table), lpphy_crs_gain_nft_table);
2280        b43_lptab_write_bulk(dev, B43_LPTAB16(8, 0),
2281                ARRAY_SIZE(lpphy_rev01_filter_control_table), lpphy_rev01_filter_control_table);
2282        b43_lptab_write_bulk(dev, B43_LPTAB32(9, 0),
2283                ARRAY_SIZE(lpphy_rev01_ps_control_table), lpphy_rev01_ps_control_table);
2284        b43_lptab_write_bulk(dev, B43_LPTAB8(6, 0),
2285                ARRAY_SIZE(lpphy_pll_fraction_table), lpphy_pll_fraction_table);
2286        b43_lptab_write_bulk(dev, B43_LPTAB16(0, 0),
2287                ARRAY_SIZE(lpphy_iqlo_cal_table), lpphy_iqlo_cal_table);
2288        if (dev->phy.rev == 0) {
2289                b43_lptab_write_bulk(dev, B43_LPTAB16(13, 0),
2290                        ARRAY_SIZE(lpphy_rev0_ofdm_cck_gain_table), lpphy_rev0_ofdm_cck_gain_table);
2291                b43_lptab_write_bulk(dev, B43_LPTAB16(12, 0),
2292                        ARRAY_SIZE(lpphy_rev0_ofdm_cck_gain_table), lpphy_rev0_ofdm_cck_gain_table);
2293        } else {
2294                b43_lptab_write_bulk(dev, B43_LPTAB16(13, 0),
2295                        ARRAY_SIZE(lpphy_rev1_ofdm_cck_gain_table), lpphy_rev1_ofdm_cck_gain_table);
2296                b43_lptab_write_bulk(dev, B43_LPTAB16(12, 0),
2297                        ARRAY_SIZE(lpphy_rev1_ofdm_cck_gain_table), lpphy_rev1_ofdm_cck_gain_table);
2298}
2299        b43_lptab_write_bulk(dev, B43_LPTAB16(15, 0),
2300                ARRAY_SIZE(lpphy_gain_delta_table), lpphy_gain_delta_table);
2301        b43_lptab_write_bulk(dev, B43_LPTAB32(10, 0),
2302                ARRAY_SIZE(lpphy_tx_power_control_table), lpphy_tx_power_control_table);
2303}
2304
2305void lpphy_rev2plus_table_init(struct b43_wldev *dev)
2306{
2307        int i;
2308
2309        B43_WARN_ON(dev->phy.rev < 2);
2310
2311        for (i = 0; i < 704; i++)
2312                b43_lptab_write(dev, B43_LPTAB32(7, i), 0);
2313
2314        b43_lptab_write_bulk(dev, B43_LPTAB8(2, 0),
2315                ARRAY_SIZE(lpphy_min_sig_sq_table), lpphy_min_sig_sq_table);
2316        b43_lptab_write_bulk(dev, B43_LPTAB16(1, 0),
2317                ARRAY_SIZE(lpphy_rev2plus_noise_scale_table), lpphy_rev2plus_noise_scale_table);
2318        b43_lptab_write_bulk(dev, B43_LPTAB32(11, 0),
2319                ARRAY_SIZE(lpphy_rev2plus_filter_control_table), lpphy_rev2plus_filter_control_table);
2320        b43_lptab_write_bulk(dev, B43_LPTAB32(12, 0),
2321                ARRAY_SIZE(lpphy_rev2plus_ps_control_table), lpphy_rev2plus_ps_control_table);
2322        b43_lptab_write_bulk(dev, B43_LPTAB32(13, 0),
2323                ARRAY_SIZE(lpphy_gain_idx_table), lpphy_gain_idx_table);
2324        b43_lptab_write_bulk(dev, B43_LPTAB16(14, 0),
2325                ARRAY_SIZE(lpphy_aux_gain_idx_table), lpphy_aux_gain_idx_table);
2326        b43_lptab_write_bulk(dev, B43_LPTAB16(15, 0),
2327                ARRAY_SIZE(lpphy_sw_control_table), lpphy_sw_control_table);
2328        b43_lptab_write_bulk(dev, B43_LPTAB8(16, 0),
2329                ARRAY_SIZE(lpphy_hf_table), lpphy_hf_table);
2330        b43_lptab_write_bulk(dev, B43_LPTAB32(17, 0),
2331                ARRAY_SIZE(lpphy_gain_value_table), lpphy_gain_value_table);
2332        b43_lptab_write_bulk(dev, B43_LPTAB16(18, 0),
2333                ARRAY_SIZE(lpphy_gain_table), lpphy_gain_table);
2334        b43_lptab_write_bulk(dev, B43_LPTAB8(6, 0),
2335                ARRAY_SIZE(lpphy_pll_fraction_table), lpphy_pll_fraction_table);
2336        b43_lptab_write_bulk(dev, B43_LPTAB16(0, 0),
2337                ARRAY_SIZE(lpphy_iqlo_cal_table), lpphy_iqlo_cal_table);
2338        b43_lptab_write_bulk(dev, B43_LPTAB32(9, 0),
2339                ARRAY_SIZE(lpphy_papd_eps_table), lpphy_papd_eps_table);
2340        b43_lptab_write_bulk(dev, B43_LPTAB32(10, 0),
2341                ARRAY_SIZE(lpphy_papd_mult_table), lpphy_papd_mult_table);
2342
2343        if ((dev->dev->chip_id == 0x4325) && (dev->dev->chip_rev == 0)) {
2344                b43_lptab_write_bulk(dev, B43_LPTAB32(13, 0),
2345                        ARRAY_SIZE(lpphy_a0_gain_idx_table), lpphy_a0_gain_idx_table);
2346                b43_lptab_write_bulk(dev, B43_LPTAB16(14, 0),
2347                        ARRAY_SIZE(lpphy_a0_aux_gain_idx_table), lpphy_a0_aux_gain_idx_table);
2348                b43_lptab_write_bulk(dev, B43_LPTAB32(17, 0),
2349                        ARRAY_SIZE(lpphy_a0_gain_value_table), lpphy_a0_gain_value_table);
2350                b43_lptab_write_bulk(dev, B43_LPTAB16(18, 0),
2351                        ARRAY_SIZE(lpphy_a0_gain_table), lpphy_a0_gain_table);
2352        }
2353}
2354
2355static void lpphy_rev0_1_write_gain_table(struct b43_wldev *dev, int offset,
2356                                struct lpphy_tx_gain_table_entry data)
2357{
2358        u32 tmp;
2359
2360        B43_WARN_ON(dev->phy.rev >= 2);
2361
2362        tmp  = data.pad << 11;
2363        tmp |= data.pga << 7;
2364        tmp |= data.gm  << 4;
2365        tmp |= data.dac;
2366        b43_lptab_write(dev, B43_LPTAB32(10, 0xC0 + offset), tmp);
2367        tmp  = data.bb_mult << 20;
2368        b43_lptab_write(dev, B43_LPTAB32(10, 0x140 + offset), tmp);
2369}
2370
2371static void lpphy_rev2plus_write_gain_table(struct b43_wldev *dev, int offset,
2372                                struct lpphy_tx_gain_table_entry data)
2373{
2374        u32 tmp;
2375
2376        B43_WARN_ON(dev->phy.rev < 2);
2377
2378        tmp  = data.pad << 16;
2379        tmp |= data.pga << 8;
2380        tmp |= data.gm;
2381        if (dev->phy.rev >= 3) {
2382                if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ)
2383                        tmp |= 0x10 << 24;
2384                else
2385                        tmp |= 0x70 << 24;
2386        } else {
2387                if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ)
2388                        tmp |= 0x14 << 24;
2389                else
2390                        tmp |= 0x7F << 24;
2391        }
2392        b43_lptab_write(dev, B43_LPTAB32(7, 0xC0 + offset), tmp);
2393        tmp  = data.bb_mult << 20;
2394        tmp |= data.dac << 28;
2395        b43_lptab_write(dev, B43_LPTAB32(7, 0x140 + offset), tmp);
2396}
2397
2398void lpphy_write_gain_table(struct b43_wldev *dev, int offset,
2399                            struct lpphy_tx_gain_table_entry data)
2400{
2401        if (dev->phy.rev >= 2)
2402                lpphy_rev2plus_write_gain_table(dev, offset, data);
2403        else
2404                lpphy_rev0_1_write_gain_table(dev, offset, data);
2405}
2406
2407void lpphy_write_gain_table_bulk(struct b43_wldev *dev, int offset, int count,
2408                                 struct lpphy_tx_gain_table_entry *table)
2409{
2410        int i;
2411
2412        for (i = offset; i < count; i++)
2413                lpphy_write_gain_table(dev, i, table[i]);
2414}
2415
2416void lpphy_init_tx_gain_table(struct b43_wldev *dev)
2417{
2418        struct ssb_sprom *sprom = dev->dev->bus_sprom;
2419
2420        switch (dev->phy.rev) {
2421        case 0:
2422                if ((sprom->boardflags_hi & B43_BFH_NOPA) ||
2423                    (sprom->boardflags_lo & B43_BFL_HGPA))
2424                        lpphy_write_gain_table_bulk(dev, 0, 128,
2425                                        lpphy_rev0_nopa_tx_gain_table);
2426                else if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ)
2427                        lpphy_write_gain_table_bulk(dev, 0, 128,
2428                                        lpphy_rev0_2ghz_tx_gain_table);
2429                else
2430                        lpphy_write_gain_table_bulk(dev, 0, 128,
2431                                        lpphy_rev0_5ghz_tx_gain_table);
2432                break;
2433        case 1:
2434                if ((sprom->boardflags_hi & B43_BFH_NOPA) ||
2435                    (sprom->boardflags_lo & B43_BFL_HGPA))
2436                        lpphy_write_gain_table_bulk(dev, 0, 128,
2437                                        lpphy_rev1_nopa_tx_gain_table);
2438                else if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ)
2439                        lpphy_write_gain_table_bulk(dev, 0, 128,
2440                                        lpphy_rev1_2ghz_tx_gain_table);
2441                else
2442                        lpphy_write_gain_table_bulk(dev, 0, 128,
2443                                        lpphy_rev1_5ghz_tx_gain_table);
2444                break;
2445        default:
2446                if (sprom->boardflags_hi & B43_BFH_NOPA)
2447                        lpphy_write_gain_table_bulk(dev, 0, 128,
2448                                        lpphy_rev2_nopa_tx_gain_table);
2449                else if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ)
2450                        lpphy_write_gain_table_bulk(dev, 0, 128,
2451                                        lpphy_rev2_2ghz_tx_gain_table);
2452                else
2453                        lpphy_write_gain_table_bulk(dev, 0, 128,
2454                                        lpphy_rev2_5ghz_tx_gain_table);
2455        }
2456}
2457