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