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