b43: LP-PHY: Implement spec updates and remove resolved FIXMEs
[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 static struct lpphy_tx_gain_table_entry lpphy_rev0_nopa_tx_gain_table[] = {
1062         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 152, },
1063         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 147, },
1064         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 143, },
1065         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 139, },
1066         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 135, },
1067         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 131, },
1068         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 128, },
1069         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 124, },
1070         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 121, },
1071         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 117, },
1072         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 114, },
1073         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 111, },
1074         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 107, },
1075         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 104, },
1076         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 101, },
1077         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 99, },
1078         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 96, },
1079         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 93, },
1080         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 90, },
1081         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 88, },
1082         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 85, },
1083         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 83, },
1084         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 81, },
1085         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 78, },
1086         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 76, },
1087         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 74, },
1088         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 72, },
1089         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 70, },
1090         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1091         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1092         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1093         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1094         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1095         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 59, },
1096         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 57, },
1097         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 72, },
1098         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 70, },
1099         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 68, },
1100         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 66, },
1101         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 64, },
1102         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 62, },
1103         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 60, },
1104         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 59, },
1105         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 57, },
1106         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 71, },
1107         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 69, },
1108         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 67, },
1109         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 65, },
1110         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 63, },
1111         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 62, },
1112         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 60, },
1113         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 58, },
1114         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 57, },
1115         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 70, },
1116         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 68, },
1117         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 66, },
1118         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 65, },
1119         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 63, },
1120         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 61, },
1121         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 59, },
1122         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 58, },
1123         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 71, },
1124         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 69, },
1125         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 67, },
1126         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 65, },
1127         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 63, },
1128         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 61, },
1129         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 60, },
1130         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 58, },
1131         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 56, },
1132         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1133         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1134         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1135         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1136         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1137         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 60, },
1138         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1139         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 72, },
1140         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 70, },
1141         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1142         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1143         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 64, },
1144         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 62, },
1145         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 60, },
1146         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1147         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 72, },
1148         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1149         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1150         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1151         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1152         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1153         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1154         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1155         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1156         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 72, },
1157         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1158         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1159         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1160         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1161         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1162         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1163         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1164         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 72, },
1165         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1166         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1167         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1168         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1169         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1170         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1171         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1172         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 73, },
1173         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 71, },
1174         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 69, },
1175         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 67, },
1176         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 65, },
1177         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 63, },
1178         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1179         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1180         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 72, },
1181         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1182         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1183         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1184         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 65, },
1185         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 63, },
1186         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1187         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1188         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 73, },
1189         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 71, },
1190 };
1191
1192 static struct lpphy_tx_gain_table_entry lpphy_rev0_2ghz_tx_gain_table[] = {
1193         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1194         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1195         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 60, },
1196         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1197         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 72, },
1198         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 70, },
1199         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1200         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1201         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 64, },
1202         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 62, },
1203         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 60, },
1204         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1205         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 72, },
1206         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1207         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1208         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1209         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1210         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1211         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1212         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1213         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1214         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 72, },
1215         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1216         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1217         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1218         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1219         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1220         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1221         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1222         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 72, },
1223         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1224         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1225         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1226         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1227         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1228         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1229         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1230         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 73, },
1231         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 71, },
1232         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 69, },
1233         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 67, },
1234         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 65, },
1235         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 63, },
1236         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1237         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1238         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 72, },
1239         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1240         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1241         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1242         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 65, },
1243         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 63, },
1244         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1245         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1246         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 73, },
1247         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 71, },
1248         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 69, },
1249         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 67, },
1250         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 65, },
1251         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 63, },
1252         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 61, },
1253         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 60, },
1254         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 72, },
1255         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 70, },
1256         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 68, },
1257         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 66, },
1258         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 64, },
1259         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 62, },
1260         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 60, },
1261         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 59, },
1262         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 72, },
1263         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 70, },
1264         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 68, },
1265         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 66, },
1266         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 64, },
1267         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 62, },
1268         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 60, },
1269         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 59, },
1270         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 70, },
1271         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 68, },
1272         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 66, },
1273         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 64, },
1274         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 63, },
1275         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 61, },
1276         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 59, },
1277         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 71, },
1278         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 69, },
1279         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 67, },
1280         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 65, },
1281         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 63, },
1282         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 62, },
1283         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 60, },
1284         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 58, },
1285         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 70, },
1286         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 68, },
1287         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 66, },
1288         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 65, },
1289         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 63, },
1290         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 61, },
1291         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 59, },
1292         { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 68, },
1293         { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 66, },
1294         { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 64, },
1295         { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 62, },
1296         { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 61, },
1297         { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 59, },
1298         { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 67, },
1299         { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 65, },
1300         { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 63, },
1301         { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 62, },
1302         { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 60, },
1303         { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 65, },
1304         { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 63, },
1305         { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 61, },
1306         { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 60, },
1307         { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 58, },
1308         { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 68, },
1309         { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 66, },
1310         { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 64, },
1311         { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 62, },
1312         { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 60, },
1313         { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 59, },
1314         { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 57, },
1315         { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 83, },
1316         { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 81, },
1317         { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 78, },
1318         { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 76, },
1319         { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 74, },
1320         { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 72, },
1321 };
1322
1323 static struct lpphy_tx_gain_table_entry lpphy_rev0_5ghz_tx_gain_table[] = {
1324         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 99, },
1325         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 96, },
1326         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 93, },
1327         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 90, },
1328         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 88, },
1329         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 85, },
1330         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 83, },
1331         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 81, },
1332         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 78, },
1333         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 76, },
1334         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 74, },
1335         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 72, },
1336         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 70, },
1337         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 68, },
1338         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 66, },
1339         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 64, },
1340         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 62, },
1341         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 60, },
1342         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 59, },
1343         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 57, },
1344         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 55, },
1345         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 72, },
1346         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 70, },
1347         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1348         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1349         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1350         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1351         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1352         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 58, },
1353         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 56, },
1354         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 55, },
1355         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 71, },
1356         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 69, },
1357         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 67, },
1358         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 65, },
1359         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 63, },
1360         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 62, },
1361         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 60, },
1362         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 58, },
1363         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 56, },
1364         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 72, },
1365         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 70, },
1366         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 68, },
1367         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 66, },
1368         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 64, },
1369         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 62, },
1370         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 60, },
1371         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 59, },
1372         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 57, },
1373         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 73, },
1374         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 71, },
1375         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 69, },
1376         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 67, },
1377         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 65, },
1378         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 63, },
1379         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 61, },
1380         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 60, },
1381         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 58, },
1382         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 71, },
1383         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 69, },
1384         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 67, },
1385         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 65, },
1386         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 63, },
1387         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 61, },
1388         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 60, },
1389         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 58, },
1390         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1391         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1392         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1393         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1394         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1395         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 61, },
1396         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1397         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 57, },
1398         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 56, },
1399         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1400         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1401         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 65, },
1402         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 63, },
1403         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 61, },
1404         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1405         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 58, },
1406         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1407         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1408         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1409         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1410         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1411         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1412         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1413         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1414         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1415         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1416         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1417         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1418         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1419         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1420         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1421         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 57, },
1422         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1423         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1424         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1425         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1426         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1427         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1428         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1429         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 57, },
1430         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 70, },
1431         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 68, },
1432         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 66, },
1433         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 64, },
1434         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 62, },
1435         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1436         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1437         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 57, },
1438         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1439         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1440         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1441         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 64, },
1442         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 62, },
1443         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1444         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1445         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 57, },
1446         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 69, },
1447         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 67, },
1448         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 65, },
1449         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 63, },
1450         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 62, },
1451         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 60, },
1452 };
1453
1454 static struct lpphy_tx_gain_table_entry lpphy_rev1_nopa_tx_gain_table[] = {
1455         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 152, },
1456         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 147, },
1457         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 143, },
1458         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 139, },
1459         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 135, },
1460         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 131, },
1461         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 128, },
1462         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 124, },
1463         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 121, },
1464         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 117, },
1465         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 114, },
1466         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 111, },
1467         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 107, },
1468         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 104, },
1469         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 101, },
1470         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 99, },
1471         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 96, },
1472         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 93, },
1473         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 90, },
1474         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 88, },
1475         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 85, },
1476         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 83, },
1477         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 81, },
1478         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 78, },
1479         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 76, },
1480         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 74, },
1481         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 72, },
1482         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 70, },
1483         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1484         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1485         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1486         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1487         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1488         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 59, },
1489         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 57, },
1490         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 72, },
1491         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 70, },
1492         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1493         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1494         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1495         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1496         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1497         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 59, },
1498         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 57, },
1499         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 72, },
1500         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 70, },
1501         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 68, },
1502         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 66, },
1503         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 64, },
1504         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 62, },
1505         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 60, },
1506         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 59, },
1507         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 57, },
1508         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 71, },
1509         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 69, },
1510         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 67, },
1511         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 65, },
1512         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 63, },
1513         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 62, },
1514         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 60, },
1515         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 58, },
1516         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 57, },
1517         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 70, },
1518         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 68, },
1519         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 66, },
1520         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 65, },
1521         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 63, },
1522         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 61, },
1523         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 59, },
1524         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 58, },
1525         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 71, },
1526         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 69, },
1527         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 67, },
1528         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 65, },
1529         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 63, },
1530         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 61, },
1531         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 60, },
1532         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 58, },
1533         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 56, },
1534         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1535         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1536         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1537         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1538         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1539         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 60, },
1540         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1541         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 72, },
1542         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 70, },
1543         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1544         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1545         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 64, },
1546         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 62, },
1547         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 60, },
1548         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1549         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 72, },
1550         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1551         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1552         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1553         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1554         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1555         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1556         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1557         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1558         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 72, },
1559         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1560         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1561         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1562         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1563         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1564         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1565         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1566         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 72, },
1567         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1568         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1569         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1570         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1571         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1572         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1573         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1574         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 73, },
1575         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 71, },
1576         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 69, },
1577         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 67, },
1578         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 65, },
1579         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 63, },
1580         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1581         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1582         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 72, },
1583         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1584         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1585         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1586         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 65, },
1587         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 63, },
1588         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1589         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1590         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 73, },
1591         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 71, },
1592 };
1593
1594 static struct lpphy_tx_gain_table_entry lpphy_rev1_2ghz_tx_gain_table[] = {
1595         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 85, },
1596         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 81, },
1597         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 78, },
1598         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 76, },
1599         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 74, },
1600         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 72, },
1601         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1602         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1603         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1604         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1605         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1606         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 60, },
1607         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1608         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 72, },
1609         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 70, },
1610         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1611         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1612         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 64, },
1613         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 62, },
1614         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 60, },
1615         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1616         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 72, },
1617         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1618         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1619         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1620         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1621         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1622         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1623         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1624         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1625         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 72, },
1626         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1627         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1628         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1629         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1630         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1631         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1632         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1633         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 72, },
1634         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1635         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1636         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1637         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1638         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1639         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1640         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1641         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 73, },
1642         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 71, },
1643         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 69, },
1644         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 67, },
1645         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 65, },
1646         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 63, },
1647         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1648         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1649         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 72, },
1650         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1651         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1652         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1653         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 65, },
1654         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 63, },
1655         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1656         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1657         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 73, },
1658         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 71, },
1659         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 69, },
1660         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 67, },
1661         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 65, },
1662         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 63, },
1663         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 61, },
1664         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 60, },
1665         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 72, },
1666         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 70, },
1667         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 68, },
1668         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 66, },
1669         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 64, },
1670         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 62, },
1671         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 60, },
1672         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 59, },
1673         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 72, },
1674         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 70, },
1675         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 68, },
1676         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 66, },
1677         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 64, },
1678         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 62, },
1679         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 60, },
1680         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 59, },
1681         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 70, },
1682         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 68, },
1683         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 66, },
1684         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 64, },
1685         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 63, },
1686         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 61, },
1687         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 59, },
1688         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 71, },
1689         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 69, },
1690         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 67, },
1691         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 65, },
1692         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 63, },
1693         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 62, },
1694         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 60, },
1695         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 58, },
1696         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 70, },
1697         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 68, },
1698         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 66, },
1699         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 65, },
1700         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 63, },
1701         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 61, },
1702         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 59, },
1703         { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 68, },
1704         { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 66, },
1705         { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 64, },
1706         { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 62, },
1707         { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 61, },
1708         { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 59, },
1709         { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 67, },
1710         { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 65, },
1711         { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 63, },
1712         { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 62, },
1713         { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 60, },
1714         { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 65, },
1715         { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 63, },
1716         { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 61, },
1717         { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 60, },
1718         { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 58, },
1719         { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 68, },
1720         { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 66, },
1721         { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 64, },
1722         { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 62, },
1723 };
1724
1725 static struct lpphy_tx_gain_table_entry lpphy_rev1_5ghz_tx_gain_table[] = {
1726         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 99, },
1727         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 96, },
1728         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 93, },
1729         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 90, },
1730         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 88, },
1731         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 85, },
1732         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 83, },
1733         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 81, },
1734         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 78, },
1735         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 76, },
1736         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 74, },
1737         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 72, },
1738         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 70, },
1739         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 68, },
1740         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 66, },
1741         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 64, },
1742         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 62, },
1743         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 60, },
1744         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 59, },
1745         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 57, },
1746         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 55, },
1747         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 72, },
1748         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 70, },
1749         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1750         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1751         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1752         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1753         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1754         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 58, },
1755         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 56, },
1756         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 55, },
1757         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 71, },
1758         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 69, },
1759         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 67, },
1760         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 65, },
1761         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 63, },
1762         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 62, },
1763         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 60, },
1764         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 58, },
1765         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 56, },
1766         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 72, },
1767         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 70, },
1768         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 68, },
1769         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 66, },
1770         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 64, },
1771         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 62, },
1772         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 60, },
1773         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 59, },
1774         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 57, },
1775         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 73, },
1776         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 71, },
1777         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 69, },
1778         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 67, },
1779         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 65, },
1780         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 63, },
1781         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 61, },
1782         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 60, },
1783         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 58, },
1784         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 71, },
1785         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 69, },
1786         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 67, },
1787         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 65, },
1788         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 63, },
1789         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 61, },
1790         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 60, },
1791         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 58, },
1792         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1793         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1794         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1795         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1796         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1797         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 61, },
1798         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1799         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 57, },
1800         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 56, },
1801         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1802         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1803         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 65, },
1804         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 63, },
1805         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 61, },
1806         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1807         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 58, },
1808         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1809         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1810         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1811         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1812         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1813         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1814         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1815         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1816         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1817         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1818         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1819         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1820         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1821         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1822         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1823         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 57, },
1824         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1825         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1826         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1827         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1828         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1829         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1830         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1831         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 57, },
1832         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 70, },
1833         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 68, },
1834         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 66, },
1835         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 64, },
1836         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 62, },
1837         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1838         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1839         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 57, },
1840         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1841         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1842         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1843         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 64, },
1844         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 62, },
1845         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1846         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1847         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 57, },
1848         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 69, },
1849         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 67, },
1850         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 65, },
1851         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 63, },
1852         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 62, },
1853         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 60, },
1854 };
1855
1856 static struct lpphy_tx_gain_table_entry lpphy_rev2_nopa_tx_gain_table[] = {
1857         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 152, },
1858         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 147, },
1859         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 143, },
1860         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 139, },
1861         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 135, },
1862         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 131, },
1863         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 128, },
1864         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 124, },
1865         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 121, },
1866         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 117, },
1867         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 114, },
1868         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 111, },
1869         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 107, },
1870         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 104, },
1871         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 101, },
1872         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 99, },
1873         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 96, },
1874         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 93, },
1875         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 90, },
1876         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 88, },
1877         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 85, },
1878         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 83, },
1879         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 81, },
1880         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 78, },
1881         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 76, },
1882         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 74, },
1883         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 72, },
1884         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 70, },
1885         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 68, },
1886         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 66, },
1887         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 64, },
1888         { .gm = 255, .pga = 255, .pad = 197, .dac = 0, .bb_mult = 64, },
1889         { .gm = 255, .pga = 255, .pad = 192, .dac = 0, .bb_mult = 64, },
1890         { .gm = 255, .pga = 255, .pad = 186, .dac = 0, .bb_mult = 64, },
1891         { .gm = 255, .pga = 255, .pad = 181, .dac = 0, .bb_mult = 64, },
1892         { .gm = 255, .pga = 255, .pad = 176, .dac = 0, .bb_mult = 64, },
1893         { .gm = 255, .pga = 255, .pad = 171, .dac = 0, .bb_mult = 64, },
1894         { .gm = 255, .pga = 255, .pad = 166, .dac = 0, .bb_mult = 64, },
1895         { .gm = 255, .pga = 255, .pad = 161, .dac = 0, .bb_mult = 64, },
1896         { .gm = 255, .pga = 255, .pad = 157, .dac = 0, .bb_mult = 64, },
1897         { .gm = 255, .pga = 255, .pad = 152, .dac = 0, .bb_mult = 64, },
1898         { .gm = 255, .pga = 255, .pad = 148, .dac = 0, .bb_mult = 64, },
1899         { .gm = 255, .pga = 255, .pad = 144, .dac = 0, .bb_mult = 64, },
1900         { .gm = 255, .pga = 255, .pad = 140, .dac = 0, .bb_mult = 64, },
1901         { .gm = 255, .pga = 255, .pad = 136, .dac = 0, .bb_mult = 64, },
1902         { .gm = 255, .pga = 255, .pad = 132, .dac = 0, .bb_mult = 64, },
1903         { .gm = 255, .pga = 255, .pad = 128, .dac = 0, .bb_mult = 64, },
1904         { .gm = 255, .pga = 255, .pad = 124, .dac = 0, .bb_mult = 64, },
1905         { .gm = 255, .pga = 255, .pad = 121, .dac = 0, .bb_mult = 64, },
1906         { .gm = 255, .pga = 255, .pad = 117, .dac = 0, .bb_mult = 64, },
1907         { .gm = 255, .pga = 255, .pad = 114, .dac = 0, .bb_mult = 64, },
1908         { .gm = 255, .pga = 255, .pad = 111, .dac = 0, .bb_mult = 64, },
1909         { .gm = 255, .pga = 255, .pad = 108, .dac = 0, .bb_mult = 64, },
1910         { .gm = 255, .pga = 255, .pad = 105, .dac = 0, .bb_mult = 64, },
1911         { .gm = 255, .pga = 255, .pad = 102, .dac = 0, .bb_mult = 64, },
1912         { .gm = 255, .pga = 255, .pad = 99, .dac = 0, .bb_mult = 64, },
1913         { .gm = 255, .pga = 255, .pad = 96, .dac = 0, .bb_mult = 64, },
1914         { .gm = 255, .pga = 255, .pad = 93, .dac = 0, .bb_mult = 64, },
1915         { .gm = 255, .pga = 255, .pad = 91, .dac = 0, .bb_mult = 64, },
1916         { .gm = 255, .pga = 255, .pad = 88, .dac = 0, .bb_mult = 64, },
1917         { .gm = 255, .pga = 255, .pad = 86, .dac = 0, .bb_mult = 64, },
1918         { .gm = 255, .pga = 255, .pad = 83, .dac = 0, .bb_mult = 64, },
1919         { .gm = 255, .pga = 255, .pad = 81, .dac = 0, .bb_mult = 64, },
1920         { .gm = 255, .pga = 255, .pad = 79, .dac = 0, .bb_mult = 64, },
1921         { .gm = 255, .pga = 255, .pad = 76, .dac = 0, .bb_mult = 64, },
1922         { .gm = 255, .pga = 255, .pad = 74, .dac = 0, .bb_mult = 64, },
1923         { .gm = 255, .pga = 255, .pad = 72, .dac = 0, .bb_mult = 64, },
1924         { .gm = 255, .pga = 255, .pad = 70, .dac = 0, .bb_mult = 64, },
1925         { .gm = 255, .pga = 255, .pad = 68, .dac = 0, .bb_mult = 64, },
1926         { .gm = 255, .pga = 255, .pad = 66, .dac = 0, .bb_mult = 64, },
1927         { .gm = 255, .pga = 255, .pad = 64, .dac = 0, .bb_mult = 64, },
1928         { .gm = 255, .pga = 248, .pad = 64, .dac = 0, .bb_mult = 64, },
1929         { .gm = 255, .pga = 248, .pad = 62, .dac = 0, .bb_mult = 64, },
1930         { .gm = 255, .pga = 241, .pad = 62, .dac = 0, .bb_mult = 64, },
1931         { .gm = 255, .pga = 241, .pad = 60, .dac = 0, .bb_mult = 64, },
1932         { .gm = 255, .pga = 234, .pad = 60, .dac = 0, .bb_mult = 64, },
1933         { .gm = 255, .pga = 234, .pad = 59, .dac = 0, .bb_mult = 64, },
1934         { .gm = 255, .pga = 227, .pad = 59, .dac = 0, .bb_mult = 64, },
1935         { .gm = 255, .pga = 227, .pad = 57, .dac = 0, .bb_mult = 64, },
1936         { .gm = 255, .pga = 221, .pad = 57, .dac = 0, .bb_mult = 64, },
1937         { .gm = 255, .pga = 221, .pad = 55, .dac = 0, .bb_mult = 64, },
1938         { .gm = 255, .pga = 215, .pad = 55, .dac = 0, .bb_mult = 64, },
1939         { .gm = 255, .pga = 215, .pad = 54, .dac = 0, .bb_mult = 64, },
1940         { .gm = 255, .pga = 208, .pad = 54, .dac = 0, .bb_mult = 64, },
1941         { .gm = 255, .pga = 208, .pad = 52, .dac = 0, .bb_mult = 64, },
1942         { .gm = 255, .pga = 203, .pad = 52, .dac = 0, .bb_mult = 64, },
1943         { .gm = 255, .pga = 203, .pad = 51, .dac = 0, .bb_mult = 64, },
1944         { .gm = 255, .pga = 197, .pad = 51, .dac = 0, .bb_mult = 64, },
1945         { .gm = 255, .pga = 197, .pad = 49, .dac = 0, .bb_mult = 64, },
1946         { .gm = 255, .pga = 191, .pad = 49, .dac = 0, .bb_mult = 64, },
1947         { .gm = 255, .pga = 191, .pad = 48, .dac = 0, .bb_mult = 64, },
1948         { .gm = 255, .pga = 186, .pad = 48, .dac = 0, .bb_mult = 64, },
1949         { .gm = 255, .pga = 186, .pad = 47, .dac = 0, .bb_mult = 64, },
1950         { .gm = 255, .pga = 181, .pad = 47, .dac = 0, .bb_mult = 64, },
1951         { .gm = 255, .pga = 181, .pad = 45, .dac = 0, .bb_mult = 64, },
1952         { .gm = 255, .pga = 175, .pad = 45, .dac = 0, .bb_mult = 64, },
1953         { .gm = 255, .pga = 175, .pad = 44, .dac = 0, .bb_mult = 64, },
1954         { .gm = 255, .pga = 170, .pad = 44, .dac = 0, .bb_mult = 64, },
1955         { .gm = 255, .pga = 170, .pad = 43, .dac = 0, .bb_mult = 64, },
1956         { .gm = 255, .pga = 166, .pad = 43, .dac = 0, .bb_mult = 64, },
1957         { .gm = 255, .pga = 166, .pad = 42, .dac = 0, .bb_mult = 64, },
1958         { .gm = 255, .pga = 161, .pad = 42, .dac = 0, .bb_mult = 64, },
1959         { .gm = 255, .pga = 161, .pad = 40, .dac = 0, .bb_mult = 64, },
1960         { .gm = 255, .pga = 156, .pad = 40, .dac = 0, .bb_mult = 64, },
1961         { .gm = 255, .pga = 156, .pad = 39, .dac = 0, .bb_mult = 64, },
1962         { .gm = 255, .pga = 152, .pad = 39, .dac = 0, .bb_mult = 64, },
1963         { .gm = 255, .pga = 152, .pad = 38, .dac = 0, .bb_mult = 64, },
1964         { .gm = 255, .pga = 148, .pad = 38, .dac = 0, .bb_mult = 64, },
1965         { .gm = 255, .pga = 148, .pad = 37, .dac = 0, .bb_mult = 64, },
1966         { .gm = 255, .pga = 143, .pad = 37, .dac = 0, .bb_mult = 64, },
1967         { .gm = 255, .pga = 143, .pad = 36, .dac = 0, .bb_mult = 64, },
1968         { .gm = 255, .pga = 139, .pad = 36, .dac = 0, .bb_mult = 64, },
1969         { .gm = 255, .pga = 139, .pad = 35, .dac = 0, .bb_mult = 64, },
1970         { .gm = 255, .pga = 135, .pad = 35, .dac = 0, .bb_mult = 64, },
1971         { .gm = 255, .pga = 135, .pad = 34, .dac = 0, .bb_mult = 64, },
1972         { .gm = 255, .pga = 132, .pad = 34, .dac = 0, .bb_mult = 64, },
1973         { .gm = 255, .pga = 132, .pad = 33, .dac = 0, .bb_mult = 64, },
1974         { .gm = 255, .pga = 128, .pad = 33, .dac = 0, .bb_mult = 64, },
1975         { .gm = 255, .pga = 128, .pad = 32, .dac = 0, .bb_mult = 64, },
1976         { .gm = 255, .pga = 124, .pad = 32, .dac = 0, .bb_mult = 64, },
1977         { .gm = 255, .pga = 124, .pad = 31, .dac = 0, .bb_mult = 64, },
1978         { .gm = 255, .pga = 121, .pad = 31, .dac = 0, .bb_mult = 64, },
1979         { .gm = 255, .pga = 121, .pad = 30, .dac = 0, .bb_mult = 64, },
1980         { .gm = 255, .pga = 117, .pad = 30, .dac = 0, .bb_mult = 64, },
1981         { .gm = 255, .pga = 117, .pad = 29, .dac = 0, .bb_mult = 64, },
1982         { .gm = 255, .pga = 114, .pad = 29, .dac = 0, .bb_mult = 64, },
1983         { .gm = 255, .pga = 114, .pad = 29, .dac = 0, .bb_mult = 64, },
1984         { .gm = 255, .pga = 111, .pad = 29, .dac = 0, .bb_mult = 64, },
1985 };
1986
1987 static struct lpphy_tx_gain_table_entry lpphy_rev2_2ghz_tx_gain_table[] = {
1988         { .gm = 7, .pga = 99, .pad = 255, .dac = 0, .bb_mult = 64, },
1989         { .gm = 7, .pga = 96, .pad = 255, .dac = 0, .bb_mult = 64, },
1990         { .gm = 7, .pga = 93, .pad = 255, .dac = 0, .bb_mult = 64, },
1991         { .gm = 7, .pga = 90, .pad = 255, .dac = 0, .bb_mult = 64, },
1992         { .gm = 7, .pga = 88, .pad = 255, .dac = 0, .bb_mult = 64, },
1993         { .gm = 7, .pga = 85, .pad = 255, .dac = 0, .bb_mult = 64, },
1994         { .gm = 7, .pga = 83, .pad = 255, .dac = 0, .bb_mult = 64, },
1995         { .gm = 7, .pga = 81, .pad = 255, .dac = 0, .bb_mult = 64, },
1996         { .gm = 7, .pga = 78, .pad = 255, .dac = 0, .bb_mult = 64, },
1997         { .gm = 7, .pga = 76, .pad = 255, .dac = 0, .bb_mult = 64, },
1998         { .gm = 7, .pga = 74, .pad = 255, .dac = 0, .bb_mult = 64, },
1999         { .gm = 7, .pga = 72, .pad = 255, .dac = 0, .bb_mult = 64, },
2000         { .gm = 7, .pga = 70, .pad = 255, .dac = 0, .bb_mult = 64, },
2001         { .gm = 7, .pga = 68, .pad = 255, .dac = 0, .bb_mult = 64, },
2002         { .gm = 7, .pga = 66, .pad = 255, .dac = 0, .bb_mult = 64, },
2003         { .gm = 7, .pga = 64, .pad = 255, .dac = 0, .bb_mult = 64, },
2004         { .gm = 7, .pga = 64, .pad = 255, .dac = 0, .bb_mult = 64, },
2005         { .gm = 7, .pga = 62, .pad = 255, .dac = 0, .bb_mult = 64, },
2006         { .gm = 7, .pga = 62, .pad = 248, .dac = 0, .bb_mult = 64, },
2007         { .gm = 7, .pga = 60, .pad = 248, .dac = 0, .bb_mult = 64, },
2008         { .gm = 7, .pga = 60, .pad = 241, .dac = 0, .bb_mult = 64, },
2009         { .gm = 7, .pga = 59, .pad = 241, .dac = 0, .bb_mult = 64, },
2010         { .gm = 7, .pga = 59, .pad = 234, .dac = 0, .bb_mult = 64, },
2011         { .gm = 7, .pga = 57, .pad = 234, .dac = 0, .bb_mult = 64, },
2012         { .gm = 7, .pga = 57, .pad = 227, .dac = 0, .bb_mult = 64, },
2013         { .gm = 7, .pga = 55, .pad = 227, .dac = 0, .bb_mult = 64, },
2014         { .gm = 7, .pga = 55, .pad = 221, .dac = 0, .bb_mult = 64, },
2015         { .gm = 7, .pga = 54, .pad = 221, .dac = 0, .bb_mult = 64, },
2016         { .gm = 7, .pga = 54, .pad = 215, .dac = 0, .bb_mult = 64, },
2017         { .gm = 7, .pga = 52, .pad = 215, .dac = 0, .bb_mult = 64, },
2018         { .gm = 7, .pga = 52, .pad = 208, .dac = 0, .bb_mult = 64, },
2019         { .gm = 7, .pga = 51, .pad = 208, .dac = 0, .bb_mult = 64, },
2020         { .gm = 7, .pga = 51, .pad = 203, .dac = 0, .bb_mult = 64, },
2021         { .gm = 7, .pga = 49, .pad = 203, .dac = 0, .bb_mult = 64, },
2022         { .gm = 7, .pga = 49, .pad = 197, .dac = 0, .bb_mult = 64, },
2023         { .gm = 7, .pga = 48, .pad = 197, .dac = 0, .bb_mult = 64, },
2024         { .gm = 7, .pga = 48, .pad = 191, .dac = 0, .bb_mult = 64, },
2025         { .gm = 7, .pga = 47, .pad = 191, .dac = 0, .bb_mult = 64, },
2026         { .gm = 7, .pga = 47, .pad = 186, .dac = 0, .bb_mult = 64, },
2027         { .gm = 7, .pga = 45, .pad = 186, .dac = 0, .bb_mult = 64, },
2028         { .gm = 7, .pga = 45, .pad = 181, .dac = 0, .bb_mult = 64, },
2029         { .gm = 7, .pga = 44, .pad = 181, .dac = 0, .bb_mult = 64, },
2030         { .gm = 7, .pga = 44, .pad = 175, .dac = 0, .bb_mult = 64, },
2031         { .gm = 7, .pga = 43, .pad = 175, .dac = 0, .bb_mult = 64, },
2032         { .gm = 7, .pga = 43, .pad = 170, .dac = 0, .bb_mult = 64, },
2033         { .gm = 7, .pga = 42, .pad = 170, .dac = 0, .bb_mult = 64, },
2034         { .gm = 7, .pga = 42, .pad = 166, .dac = 0, .bb_mult = 64, },
2035         { .gm = 7, .pga = 40, .pad = 166, .dac = 0, .bb_mult = 64, },
2036         { .gm = 7, .pga = 40, .pad = 161, .dac = 0, .bb_mult = 64, },
2037         { .gm = 7, .pga = 39, .pad = 161, .dac = 0, .bb_mult = 64, },
2038         { .gm = 7, .pga = 39, .pad = 156, .dac = 0, .bb_mult = 64, },
2039         { .gm = 7, .pga = 38, .pad = 156, .dac = 0, .bb_mult = 64, },
2040         { .gm = 7, .pga = 38, .pad = 152, .dac = 0, .bb_mult = 64, },
2041         { .gm = 7, .pga = 37, .pad = 152, .dac = 0, .bb_mult = 64, },
2042         { .gm = 7, .pga = 37, .pad = 148, .dac = 0, .bb_mult = 64, },
2043         { .gm = 7, .pga = 36, .pad = 148, .dac = 0, .bb_mult = 64, },
2044         { .gm = 7, .pga = 36, .pad = 143, .dac = 0, .bb_mult = 64, },
2045         { .gm = 7, .pga = 35, .pad = 143, .dac = 0, .bb_mult = 64, },
2046         { .gm = 7, .pga = 35, .pad = 139, .dac = 0, .bb_mult = 64, },
2047         { .gm = 7, .pga = 34, .pad = 139, .dac = 0, .bb_mult = 64, },
2048         { .gm = 7, .pga = 34, .pad = 135, .dac = 0, .bb_mult = 64, },
2049         { .gm = 7, .pga = 33, .pad = 135, .dac = 0, .bb_mult = 64, },
2050         { .gm = 7, .pga = 33, .pad = 132, .dac = 0, .bb_mult = 64, },
2051         { .gm = 7, .pga = 32, .pad = 132, .dac = 0, .bb_mult = 64, },
2052         { .gm = 7, .pga = 32, .pad = 128, .dac = 0, .bb_mult = 64, },
2053         { .gm = 7, .pga = 31, .pad = 128, .dac = 0, .bb_mult = 64, },
2054         { .gm = 7, .pga = 31, .pad = 124, .dac = 0, .bb_mult = 64, },
2055         { .gm = 7, .pga = 30, .pad = 124, .dac = 0, .bb_mult = 64, },
2056         { .gm = 7, .pga = 30, .pad = 121, .dac = 0, .bb_mult = 64, },
2057         { .gm = 7, .pga = 29, .pad = 121, .dac = 0, .bb_mult = 64, },
2058         { .gm = 7, .pga = 29, .pad = 117, .dac = 0, .bb_mult = 64, },
2059         { .gm = 7, .pga = 29, .pad = 117, .dac = 0, .bb_mult = 64, },
2060         { .gm = 7, .pga = 29, .pad = 114, .dac = 0, .bb_mult = 64, },
2061         { .gm = 7, .pga = 28, .pad = 114, .dac = 0, .bb_mult = 64, },
2062         { .gm = 7, .pga = 28, .pad = 111, .dac = 0, .bb_mult = 64, },
2063         { .gm = 7, .pga = 27, .pad = 111, .dac = 0, .bb_mult = 64, },
2064         { .gm = 7, .pga = 27, .pad = 108, .dac = 0, .bb_mult = 64, },
2065         { .gm = 7, .pga = 26, .pad = 108, .dac = 0, .bb_mult = 64, },
2066         { .gm = 7, .pga = 26, .pad = 104, .dac = 0, .bb_mult = 64, },
2067         { .gm = 7, .pga = 25, .pad = 104, .dac = 0, .bb_mult = 64, },
2068         { .gm = 7, .pga = 25, .pad = 102, .dac = 0, .bb_mult = 64, },
2069         { .gm = 7, .pga = 25, .pad = 102, .dac = 0, .bb_mult = 64, },
2070         { .gm = 7, .pga = 25, .pad = 99, .dac = 0, .bb_mult = 64, },
2071         { .gm = 7, .pga = 24, .pad = 99, .dac = 0, .bb_mult = 64, },
2072         { .gm = 7, .pga = 24, .pad = 96, .dac = 0, .bb_mult = 64, },
2073         { .gm = 7, .pga = 23, .pad = 96, .dac = 0, .bb_mult = 64, },
2074         { .gm = 7, .pga = 23, .pad = 93, .dac = 0, .bb_mult = 64, },
2075         { .gm = 7, .pga = 23, .pad = 93, .dac = 0, .bb_mult = 64, },
2076         { .gm = 7, .pga = 23, .pad = 90, .dac = 0, .bb_mult = 64, },
2077         { .gm = 7, .pga = 22, .pad = 90, .dac = 0, .bb_mult = 64, },
2078         { .gm = 7, .pga = 22, .pad = 88, .dac = 0, .bb_mult = 64, },
2079         { .gm = 7, .pga = 21, .pad = 88, .dac = 0, .bb_mult = 64, },
2080         { .gm = 7, .pga = 21, .pad = 85, .dac = 0, .bb_mult = 64, },
2081         { .gm = 7, .pga = 21, .pad = 85, .dac = 0, .bb_mult = 64, },
2082         { .gm = 7, .pga = 21, .pad = 83, .dac = 0, .bb_mult = 64, },
2083         { .gm = 7, .pga = 20, .pad = 83, .dac = 0, .bb_mult = 64, },
2084         { .gm = 7, .pga = 20, .pad = 81, .dac = 0, .bb_mult = 64, },
2085         { .gm = 7, .pga = 20, .pad = 81, .dac = 0, .bb_mult = 64, },
2086         { .gm = 7, .pga = 20, .pad = 78, .dac = 0, .bb_mult = 64, },
2087         { .gm = 7, .pga = 19, .pad = 78, .dac = 0, .bb_mult = 64, },
2088         { .gm = 7, .pga = 19, .pad = 76, .dac = 0, .bb_mult = 64, },
2089         { .gm = 7, .pga = 19, .pad = 76, .dac = 0, .bb_mult = 64, },
2090         { .gm = 7, .pga = 19, .pad = 74, .dac = 0, .bb_mult = 64, },
2091         { .gm = 7, .pga = 18, .pad = 74, .dac = 0, .bb_mult = 64, },
2092         { .gm = 7, .pga = 18, .pad = 72, .dac = 0, .bb_mult = 64, },
2093         { .gm = 7, .pga = 18, .pad = 72, .dac = 0, .bb_mult = 64, },
2094         { .gm = 7, .pga = 18, .pad = 70, .dac = 0, .bb_mult = 64, },
2095         { .gm = 7, .pga = 17, .pad = 70, .dac = 0, .bb_mult = 64, },
2096         { .gm = 7, .pga = 17, .pad = 68, .dac = 0, .bb_mult = 64, },
2097         { .gm = 7, .pga = 17, .pad = 68, .dac = 0, .bb_mult = 64, },
2098         { .gm = 7, .pga = 17, .pad = 66, .dac = 0, .bb_mult = 64, },
2099         { .gm = 7, .pga = 16, .pad = 66, .dac = 0, .bb_mult = 64, },
2100         { .gm = 7, .pga = 16, .pad = 64, .dac = 0, .bb_mult = 64, },
2101         { .gm = 7, .pga = 16, .pad = 64, .dac = 0, .bb_mult = 64, },
2102         { .gm = 7, .pga = 16, .pad = 62, .dac = 0, .bb_mult = 64, },
2103         { .gm = 7, .pga = 15, .pad = 62, .dac = 0, .bb_mult = 64, },
2104         { .gm = 7, .pga = 15, .pad = 60, .dac = 0, .bb_mult = 64, },
2105         { .gm = 7, .pga = 15, .pad = 60, .dac = 0, .bb_mult = 64, },
2106         { .gm = 7, .pga = 15, .pad = 59, .dac = 0, .bb_mult = 64, },
2107         { .gm = 7, .pga = 14, .pad = 59, .dac = 0, .bb_mult = 64, },
2108         { .gm = 7, .pga = 14, .pad = 57, .dac = 0, .bb_mult = 64, },
2109         { .gm = 7, .pga = 14, .pad = 57, .dac = 0, .bb_mult = 64, },
2110         { .gm = 7, .pga = 14, .pad = 55, .dac = 0, .bb_mult = 64, },
2111         { .gm = 7, .pga = 14, .pad = 55, .dac = 0, .bb_mult = 64, },
2112         { .gm = 7, .pga = 14, .pad = 54, .dac = 0, .bb_mult = 64, },
2113         { .gm = 7, .pga = 13, .pad = 54, .dac = 0, .bb_mult = 64, },
2114         { .gm = 7, .pga = 13, .pad = 52, .dac = 0, .bb_mult = 64, },
2115         { .gm = 7, .pga = 13, .pad = 52, .dac = 0, .bb_mult = 64, },
2116 };
2117
2118 static struct lpphy_tx_gain_table_entry lpphy_rev2_5ghz_tx_gain_table[] = {
2119         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 152, },
2120         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 147, },
2121         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 143, },
2122         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 139, },
2123         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 135, },
2124         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 131, },
2125         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 128, },
2126         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 124, },
2127         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 121, },
2128         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 117, },
2129         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 114, },
2130         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 111, },
2131         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 107, },
2132         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 104, },
2133         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 101, },
2134         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 99, },
2135         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 96, },
2136         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 93, },
2137         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 90, },
2138         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 88, },
2139         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 85, },
2140         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 83, },
2141         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 81, },
2142         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 78, },
2143         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 76, },
2144         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 74, },
2145         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 72, },
2146         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 70, },
2147         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 68, },
2148         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 66, },
2149         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 64, },
2150         { .gm = 255, .pga = 248, .pad = 255, .dac = 0, .bb_mult = 64, },
2151         { .gm = 255, .pga = 241, .pad = 255, .dac = 0, .bb_mult = 64, },
2152         { .gm = 255, .pga = 234, .pad = 255, .dac = 0, .bb_mult = 64, },
2153         { .gm = 255, .pga = 227, .pad = 255, .dac = 0, .bb_mult = 64, },
2154         { .gm = 255, .pga = 221, .pad = 255, .dac = 0, .bb_mult = 64, },
2155         { .gm = 255, .pga = 215, .pad = 255, .dac = 0, .bb_mult = 64, },
2156         { .gm = 255, .pga = 208, .pad = 255, .dac = 0, .bb_mult = 64, },
2157         { .gm = 255, .pga = 203, .pad = 255, .dac = 0, .bb_mult = 64, },
2158         { .gm = 255, .pga = 197, .pad = 255, .dac = 0, .bb_mult = 64, },
2159         { .gm = 255, .pga = 191, .pad = 255, .dac = 0, .bb_mult = 64, },
2160         { .gm = 255, .pga = 186, .pad = 255, .dac = 0, .bb_mult = 64, },
2161         { .gm = 255, .pga = 181, .pad = 255, .dac = 0, .bb_mult = 64, },
2162         { .gm = 255, .pga = 175, .pad = 255, .dac = 0, .bb_mult = 64, },
2163         { .gm = 255, .pga = 170, .pad = 255, .dac = 0, .bb_mult = 64, },
2164         { .gm = 255, .pga = 166, .pad = 255, .dac = 0, .bb_mult = 64, },
2165         { .gm = 255, .pga = 161, .pad = 255, .dac = 0, .bb_mult = 64, },
2166         { .gm = 255, .pga = 156, .pad = 255, .dac = 0, .bb_mult = 64, },
2167         { .gm = 255, .pga = 152, .pad = 255, .dac = 0, .bb_mult = 64, },
2168         { .gm = 255, .pga = 148, .pad = 255, .dac = 0, .bb_mult = 64, },
2169         { .gm = 255, .pga = 143, .pad = 255, .dac = 0, .bb_mult = 64, },
2170         { .gm = 255, .pga = 139, .pad = 255, .dac = 0, .bb_mult = 64, },
2171         { .gm = 255, .pga = 135, .pad = 255, .dac = 0, .bb_mult = 64, },
2172         { .gm = 255, .pga = 132, .pad = 255, .dac = 0, .bb_mult = 64, },
2173         { .gm = 255, .pga = 128, .pad = 255, .dac = 0, .bb_mult = 64, },
2174         { .gm = 255, .pga = 124, .pad = 255, .dac = 0, .bb_mult = 64, },
2175         { .gm = 255, .pga = 121, .pad = 255, .dac = 0, .bb_mult = 64, },
2176         { .gm = 255, .pga = 117, .pad = 255, .dac = 0, .bb_mult = 64, },
2177         { .gm = 255, .pga = 114, .pad = 255, .dac = 0, .bb_mult = 64, },
2178         { .gm = 255, .pga = 111, .pad = 255, .dac = 0, .bb_mult = 64, },
2179         { .gm = 255, .pga = 108, .pad = 255, .dac = 0, .bb_mult = 64, },
2180         { .gm = 255, .pga = 104, .pad = 255, .dac = 0, .bb_mult = 64, },
2181         { .gm = 255, .pga = 102, .pad = 255, .dac = 0, .bb_mult = 64, },
2182         { .gm = 255, .pga = 99, .pad = 255, .dac = 0, .bb_mult = 64, },
2183         { .gm = 255, .pga = 96, .pad = 255, .dac = 0, .bb_mult = 64, },
2184         { .gm = 255, .pga = 93, .pad = 255, .dac = 0, .bb_mult = 64, },
2185         { .gm = 255, .pga = 90, .pad = 255, .dac = 0, .bb_mult = 64, },
2186         { .gm = 255, .pga = 88, .pad = 255, .dac = 0, .bb_mult = 64, },
2187         { .gm = 255, .pga = 85, .pad = 255, .dac = 0, .bb_mult = 64, },
2188         { .gm = 255, .pga = 83, .pad = 255, .dac = 0, .bb_mult = 64, },
2189         { .gm = 255, .pga = 81, .pad = 255, .dac = 0, .bb_mult = 64, },
2190         { .gm = 255, .pga = 78, .pad = 255, .dac = 0, .bb_mult = 64, },
2191         { .gm = 255, .pga = 76, .pad = 255, .dac = 0, .bb_mult = 64, },
2192         { .gm = 255, .pga = 74, .pad = 255, .dac = 0, .bb_mult = 64, },
2193         { .gm = 255, .pga = 72, .pad = 255, .dac = 0, .bb_mult = 64, },
2194         { .gm = 255, .pga = 70, .pad = 255, .dac = 0, .bb_mult = 64, },
2195         { .gm = 255, .pga = 68, .pad = 255, .dac = 0, .bb_mult = 64, },
2196         { .gm = 255, .pga = 66, .pad = 255, .dac = 0, .bb_mult = 64, },
2197         { .gm = 255, .pga = 64, .pad = 255, .dac = 0, .bb_mult = 64, },
2198         { .gm = 255, .pga = 64, .pad = 255, .dac = 0, .bb_mult = 64, },
2199         { .gm = 255, .pga = 62, .pad = 255, .dac = 0, .bb_mult = 64, },
2200         { .gm = 255, .pga = 62, .pad = 248, .dac = 0, .bb_mult = 64, },
2201         { .gm = 255, .pga = 60, .pad = 248, .dac = 0, .bb_mult = 64, },
2202         { .gm = 255, .pga = 60, .pad = 241, .dac = 0, .bb_mult = 64, },
2203         { .gm = 255, .pga = 59, .pad = 241, .dac = 0, .bb_mult = 64, },
2204         { .gm = 255, .pga = 59, .pad = 234, .dac = 0, .bb_mult = 64, },
2205         { .gm = 255, .pga = 57, .pad = 234, .dac = 0, .bb_mult = 64, },
2206         { .gm = 255, .pga = 57, .pad = 227, .dac = 0, .bb_mult = 64, },
2207         { .gm = 255, .pga = 55, .pad = 227, .dac = 0, .bb_mult = 64, },
2208         { .gm = 255, .pga = 55, .pad = 221, .dac = 0, .bb_mult = 64, },
2209         { .gm = 255, .pga = 54, .pad = 221, .dac = 0, .bb_mult = 64, },
2210         { .gm = 255, .pga = 54, .pad = 215, .dac = 0, .bb_mult = 64, },
2211         { .gm = 255, .pga = 52, .pad = 215, .dac = 0, .bb_mult = 64, },
2212         { .gm = 255, .pga = 52, .pad = 208, .dac = 0, .bb_mult = 64, },
2213         { .gm = 255, .pga = 51, .pad = 208, .dac = 0, .bb_mult = 64, },
2214         { .gm = 255, .pga = 51, .pad = 203, .dac = 0, .bb_mult = 64, },
2215         { .gm = 255, .pga = 49, .pad = 203, .dac = 0, .bb_mult = 64, },
2216         { .gm = 255, .pga = 49, .pad = 197, .dac = 0, .bb_mult = 64, },
2217         { .gm = 255, .pga = 48, .pad = 197, .dac = 0, .bb_mult = 64, },
2218         { .gm = 255, .pga = 48, .pad = 191, .dac = 0, .bb_mult = 64, },
2219         { .gm = 255, .pga = 47, .pad = 191, .dac = 0, .bb_mult = 64, },
2220         { .gm = 255, .pga = 47, .pad = 186, .dac = 0, .bb_mult = 64, },
2221         { .gm = 255, .pga = 45, .pad = 186, .dac = 0, .bb_mult = 64, },
2222         { .gm = 255, .pga = 45, .pad = 181, .dac = 0, .bb_mult = 64, },
2223         { .gm = 255, .pga = 44, .pad = 181, .dac = 0, .bb_mult = 64, },
2224         { .gm = 255, .pga = 44, .pad = 175, .dac = 0, .bb_mult = 64, },
2225         { .gm = 255, .pga = 43, .pad = 175, .dac = 0, .bb_mult = 64, },
2226         { .gm = 255, .pga = 43, .pad = 170, .dac = 0, .bb_mult = 64, },
2227         { .gm = 255, .pga = 42, .pad = 170, .dac = 0, .bb_mult = 64, },
2228         { .gm = 255, .pga = 42, .pad = 166, .dac = 0, .bb_mult = 64, },
2229         { .gm = 255, .pga = 40, .pad = 166, .dac = 0, .bb_mult = 64, },
2230         { .gm = 255, .pga = 40, .pad = 161, .dac = 0, .bb_mult = 64, },
2231         { .gm = 255, .pga = 39, .pad = 161, .dac = 0, .bb_mult = 64, },
2232         { .gm = 255, .pga = 39, .pad = 156, .dac = 0, .bb_mult = 64, },
2233         { .gm = 255, .pga = 38, .pad = 156, .dac = 0, .bb_mult = 64, },
2234         { .gm = 255, .pga = 38, .pad = 152, .dac = 0, .bb_mult = 64, },
2235         { .gm = 255, .pga = 37, .pad = 152, .dac = 0, .bb_mult = 64, },
2236         { .gm = 255, .pga = 37, .pad = 148, .dac = 0, .bb_mult = 64, },
2237         { .gm = 255, .pga = 36, .pad = 148, .dac = 0, .bb_mult = 64, },
2238         { .gm = 255, .pga = 36, .pad = 143, .dac = 0, .bb_mult = 64, },
2239         { .gm = 255, .pga = 35, .pad = 143, .dac = 0, .bb_mult = 64, },
2240         { .gm = 255, .pga = 35, .pad = 139, .dac = 0, .bb_mult = 64, },
2241         { .gm = 255, .pga = 34, .pad = 139, .dac = 0, .bb_mult = 64, },
2242         { .gm = 255, .pga = 34, .pad = 135, .dac = 0, .bb_mult = 64, },
2243         { .gm = 255, .pga = 33, .pad = 135, .dac = 0, .bb_mult = 64, },
2244         { .gm = 255, .pga = 33, .pad = 132, .dac = 0, .bb_mult = 64, },
2245         { .gm = 255, .pga = 32, .pad = 132, .dac = 0, .bb_mult = 64, },
2246         { .gm = 255, .pga = 32, .pad = 128, .dac = 0, .bb_mult = 64, },
2247 };
2248
2249 void lpphy_rev0_1_table_init(struct b43_wldev *dev)
2250 {
2251         B43_WARN_ON(dev->phy.rev >= 2);
2252
2253         b43_lptab_write_bulk(dev, B43_LPTAB8(2, 0),
2254                 ARRAY_SIZE(lpphy_min_sig_sq_table), lpphy_min_sig_sq_table);
2255         b43_lptab_write_bulk(dev, B43_LPTAB16(1, 0),
2256                 ARRAY_SIZE(lpphy_rev01_noise_scale_table), lpphy_rev01_noise_scale_table);
2257         b43_lptab_write_bulk(dev, B43_LPTAB16(14, 0),
2258                 ARRAY_SIZE(lpphy_crs_gain_nft_table), lpphy_crs_gain_nft_table);
2259         b43_lptab_write_bulk(dev, B43_LPTAB16(8, 0),
2260                 ARRAY_SIZE(lpphy_rev01_filter_control_table), lpphy_rev01_filter_control_table);
2261         b43_lptab_write_bulk(dev, B43_LPTAB32(9, 0),
2262                 ARRAY_SIZE(lpphy_rev01_ps_control_table), lpphy_rev01_ps_control_table);
2263         b43_lptab_write_bulk(dev, B43_LPTAB8(6, 0),
2264                 ARRAY_SIZE(lpphy_pll_fraction_table), lpphy_pll_fraction_table);
2265         b43_lptab_write_bulk(dev, B43_LPTAB16(0, 0),
2266                 ARRAY_SIZE(lpphy_iq_local_table), lpphy_iq_local_table);
2267         b43_lptab_write_bulk(dev, B43_LPTAB16(13, 0),
2268                 ARRAY_SIZE(lpphy_ofdm_cck_gain_table), lpphy_ofdm_cck_gain_table);
2269         b43_lptab_write_bulk(dev, B43_LPTAB16(12, 0),
2270                 ARRAY_SIZE(lpphy_ofdm_cck_gain_table), lpphy_ofdm_cck_gain_table);
2271         b43_lptab_write_bulk(dev, B43_LPTAB16(15, 0),
2272                 ARRAY_SIZE(lpphy_gain_delta_table), lpphy_gain_delta_table);
2273         b43_lptab_write_bulk(dev, B43_LPTAB32(10, 0),
2274                 ARRAY_SIZE(lpphy_tx_power_control_table), lpphy_tx_power_control_table);
2275 }
2276
2277 void lpphy_rev2plus_table_init(struct b43_wldev *dev)
2278 {
2279         struct ssb_bus *bus = dev->dev->bus;
2280         int i;
2281
2282         B43_WARN_ON(dev->phy.rev < 2);
2283
2284         /*
2285          * FIXME This code follows the specs, but it looks wrong:
2286          * In each pass, it writes 4 bytes to an offset in table ID 7,
2287          * then increments the offset by 1 for the next pass. This results
2288          * in the first 3 bytes of each pass except the first one getting
2289          * written to a location that has already been zeroed in the previous
2290          * pass.
2291          * This is what the vendor driver does, but it still looks suspicious.
2292          *
2293          * This should probably suffice:
2294          *
2295          * for (i = 0; i < 704; i+=4)
2296          *      b43_lptab_write(dev, B43_LPTAB32(7, i), 0)
2297          *
2298          * This should be tested once the code is functional.
2299          */
2300         for (i = 0; i < 704; i++)
2301                 b43_lptab_write(dev, B43_LPTAB32(7, i), 0);
2302
2303         b43_lptab_write_bulk(dev, B43_LPTAB8(2, 0),
2304                 ARRAY_SIZE(lpphy_min_sig_sq_table), lpphy_min_sig_sq_table);
2305         b43_lptab_write_bulk(dev, B43_LPTAB16(1, 0),
2306                 ARRAY_SIZE(lpphy_rev2plus_noise_scale_table), lpphy_rev2plus_noise_scale_table);
2307         b43_lptab_write_bulk(dev, B43_LPTAB32(11, 0),
2308                 ARRAY_SIZE(lpphy_rev2plus_filter_control_table), lpphy_rev2plus_filter_control_table);
2309         b43_lptab_write_bulk(dev, B43_LPTAB32(12, 0),
2310                 ARRAY_SIZE(lpphy_rev2plus_ps_control_table), lpphy_rev2plus_ps_control_table);
2311         b43_lptab_write_bulk(dev, B43_LPTAB32(13, 0),
2312                 ARRAY_SIZE(lpphy_gain_idx_table), lpphy_gain_idx_table);
2313         b43_lptab_write_bulk(dev, B43_LPTAB16(14, 0),
2314                 ARRAY_SIZE(lpphy_aux_gain_idx_table), lpphy_aux_gain_idx_table);
2315         b43_lptab_write_bulk(dev, B43_LPTAB16(15, 0),
2316                 ARRAY_SIZE(lpphy_sw_control_table), lpphy_sw_control_table);
2317         b43_lptab_write_bulk(dev, B43_LPTAB8(16, 0),
2318                 ARRAY_SIZE(lpphy_hf_table), lpphy_hf_table);
2319         b43_lptab_write_bulk(dev, B43_LPTAB32(17, 0),
2320                 ARRAY_SIZE(lpphy_gain_value_table), lpphy_gain_value_table);
2321         b43_lptab_write_bulk(dev, B43_LPTAB16(18, 0),
2322                 ARRAY_SIZE(lpphy_gain_table), lpphy_gain_table);
2323         b43_lptab_write_bulk(dev, B43_LPTAB8(6, 0),
2324                 ARRAY_SIZE(lpphy_pll_fraction_table), lpphy_pll_fraction_table);
2325         b43_lptab_write_bulk(dev, B43_LPTAB16(0, 0),
2326                 ARRAY_SIZE(lpphy_iq_local_table), lpphy_iq_local_table);
2327         b43_lptab_write_bulk(dev, B43_LPTAB32(9, 0),
2328                 ARRAY_SIZE(lpphy_papd_eps_table), lpphy_papd_eps_table);
2329         b43_lptab_write_bulk(dev, B43_LPTAB32(10, 0),
2330                 ARRAY_SIZE(lpphy_papd_mult_table), lpphy_papd_mult_table);
2331
2332         if ((bus->chip_id == 0x4325) && (bus->chip_rev == 0)) {
2333                 b43_lptab_write_bulk(dev, B43_LPTAB32(13, 0),
2334                         ARRAY_SIZE(lpphy_a0_gain_idx_table), lpphy_a0_gain_idx_table);
2335                 b43_lptab_write_bulk(dev, B43_LPTAB16(14, 0),
2336                         ARRAY_SIZE(lpphy_a0_aux_gain_idx_table), lpphy_a0_aux_gain_idx_table);
2337                 b43_lptab_write_bulk(dev, B43_LPTAB32(17, 0),
2338                         ARRAY_SIZE(lpphy_a0_gain_value_table), lpphy_a0_gain_value_table);
2339                 b43_lptab_write_bulk(dev, B43_LPTAB16(18, 0),
2340                         ARRAY_SIZE(lpphy_a0_gain_table), lpphy_a0_gain_table);
2341         }
2342 }
2343
2344 static void lpphy_rev0_1_write_gain_table(struct b43_wldev *dev, int offset,
2345                                 struct lpphy_tx_gain_table_entry data)
2346 {
2347         u32 tmp;
2348
2349         B43_WARN_ON(dev->phy.rev >= 2);
2350
2351         tmp  = data.pad << 11;
2352         tmp |= data.pga << 7;
2353         tmp |= data.gm  << 4;
2354         tmp |= data.dac;
2355         b43_lptab_write(dev, B43_LPTAB32(10, 0xC0 + offset), tmp);
2356         tmp  = data.bb_mult << 20;
2357         b43_lptab_write(dev, B43_LPTAB32(10, 0x140 + offset), tmp);
2358 }
2359
2360 static void lpphy_rev2plus_write_gain_table(struct b43_wldev *dev, int offset,
2361                                 struct lpphy_tx_gain_table_entry data)
2362 {
2363         u32 tmp;
2364
2365         B43_WARN_ON(dev->phy.rev < 2);
2366
2367         tmp  = data.pad << 16;
2368         tmp |= data.pga << 8;
2369         tmp |= data.gm;
2370         if (dev->phy.rev >= 3) {
2371                 if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ)
2372                         tmp |= 0x10 << 24;
2373                 else
2374                         tmp |= 0x70 << 24;
2375         } else {
2376                 if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ)
2377                         tmp |= 0x14 << 24;
2378                 else
2379                         tmp |= 0x7F << 24;
2380         }
2381         b43_lptab_write(dev, B43_LPTAB32(7, 0xC0 + offset), tmp);
2382         tmp  = data.bb_mult << 20;
2383         tmp |= data.dac << 28;
2384         b43_lptab_write(dev, B43_LPTAB32(7, 0x140 + offset), tmp);
2385 }
2386
2387 void lpphy_write_gain_table(struct b43_wldev *dev, int offset,
2388                             struct lpphy_tx_gain_table_entry data)
2389 {
2390         if (dev->phy.rev >= 2)
2391                 lpphy_rev2plus_write_gain_table(dev, offset, data);
2392         else
2393                 lpphy_rev0_1_write_gain_table(dev, offset, data);
2394 }
2395
2396 void lpphy_write_gain_table_bulk(struct b43_wldev *dev, int offset, int count,
2397                                  struct lpphy_tx_gain_table_entry *table)
2398 {
2399         int i;
2400
2401         for (i = offset; i < count; i++)
2402                 lpphy_write_gain_table(dev, i, table[i]);
2403 }
2404
2405 void lpphy_init_tx_gain_table(struct b43_wldev *dev)
2406 {
2407         struct ssb_bus *bus = dev->dev->bus;
2408
2409         switch (dev->phy.rev) {
2410         case 0:
2411                 if ((bus->sprom.boardflags_hi & B43_BFH_NOPA) ||
2412                     (bus->sprom.boardflags_lo & B43_BFL_HGPA))
2413                         lpphy_write_gain_table_bulk(dev, 0, 128,
2414                                         lpphy_rev0_nopa_tx_gain_table);
2415                 else if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ)
2416                         lpphy_write_gain_table_bulk(dev, 0, 128,
2417                                         lpphy_rev0_2ghz_tx_gain_table);
2418                 else
2419                         lpphy_write_gain_table_bulk(dev, 0, 128,
2420                                         lpphy_rev0_5ghz_tx_gain_table);
2421                 break;
2422         case 1:
2423                 if ((bus->sprom.boardflags_hi & B43_BFH_NOPA) ||
2424                     (bus->sprom.boardflags_lo & B43_BFL_HGPA))
2425                         lpphy_write_gain_table_bulk(dev, 0, 128,
2426                                         lpphy_rev1_nopa_tx_gain_table);
2427                 else if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ)
2428                         lpphy_write_gain_table_bulk(dev, 0, 128,
2429                                         lpphy_rev1_2ghz_tx_gain_table);
2430                 else
2431                         lpphy_write_gain_table_bulk(dev, 0, 128,
2432                                         lpphy_rev1_5ghz_tx_gain_table);
2433                 break;
2434         default:
2435                 if (bus->sprom.boardflags_hi & B43_BFH_NOPA)
2436                         lpphy_write_gain_table_bulk(dev, 0, 128,
2437                                         lpphy_rev2_nopa_tx_gain_table);
2438                 else if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ)
2439                         lpphy_write_gain_table_bulk(dev, 0, 128,
2440                                         lpphy_rev2_2ghz_tx_gain_table);
2441                 else
2442                         lpphy_write_gain_table_bulk(dev, 0, 128,
2443                                         lpphy_rev2_5ghz_tx_gain_table);
2444         }
2445 }