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