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