1/*
2
3  Broadcom B43 wireless driver
4  IEEE 802.11n PHY data tables
5
6  Copyright (c) 2008 Michael Buesch <m@bues.ch>
7  Copyright (c) 2010 Rafał Miłecki <zajec5@gmail.com>
8
9  This program is free software; you can redistribute it and/or modify
10  it under the terms of the GNU General Public License as published by
11  the Free Software Foundation; either version 2 of the License, or
12  (at your option) any later version.
13
14  This program is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  GNU General Public License for more details.
18
19  You should have received a copy of the GNU General Public License
20  along with this program; see the file COPYING.  If not, write to
21  the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor,
22  Boston, MA 02110-1301, USA.
23
24*/
25
26#include <sys/cdefs.h>
27__FBSDID("$FreeBSD$");
28
29/*
30 * The Broadcom Wireless LAN controller driver.
31 */
32
33#include "opt_wlan.h"
34#include "opt_bwn.h"
35
36#include <sys/param.h>
37#include <sys/systm.h>
38#include <sys/kernel.h>
39#include <sys/malloc.h>
40#include <sys/module.h>
41#include <sys/endian.h>
42#include <sys/errno.h>
43#include <sys/firmware.h>
44#include <sys/lock.h>
45#include <sys/mutex.h>
46#include <machine/bus.h>
47#include <machine/resource.h>
48#include <sys/bus.h>
49#include <sys/rman.h>
50#include <sys/socket.h>
51#include <sys/sockio.h>
52
53#include <net/ethernet.h>
54#include <net/if.h>
55#include <net/if_var.h>
56#include <net/if_arp.h>
57#include <net/if_dl.h>
58#include <net/if_llc.h>
59#include <net/if_media.h>
60#include <net/if_types.h>
61
62#include <dev/pci/pcivar.h>
63#include <dev/pci/pcireg.h>
64#include <dev/siba/siba_ids.h>
65#include <dev/siba/sibareg.h>
66#include <dev/siba/sibavar.h>
67
68#include <net80211/ieee80211_var.h>
69#include <net80211/ieee80211_radiotap.h>
70#include <net80211/ieee80211_regdomain.h>
71#include <net80211/ieee80211_phy.h>
72#include <net80211/ieee80211_ratectl.h>
73
74#include <dev/bwn/if_bwnreg.h>
75#include <dev/bwn/if_bwnvar.h>
76#include <dev/bwn/if_bwn_debug.h>
77
78#include <gnu/dev/bwn/phy_n/if_bwn_phy_n_regs.h>
79#include <gnu/dev/bwn/phy_n/if_bwn_phy_n_tables.h>
80#include <gnu/dev/bwn/phy_n/if_bwn_radio_2055.h>
81
82struct b2055_inittab_entry {
83	/* Value to write if we use the 5GHz band. */
84	uint16_t ghz5;
85	/* Value to write if we use the 2.4GHz band. */
86	uint16_t ghz2;
87	/* Flags */
88	uint8_t flags;
89#define B2055_INITTAB_ENTRY_OK	0x01
90#define B2055_INITTAB_UPLOAD	0x02
91};
92#define UPLOAD		.flags = B2055_INITTAB_ENTRY_OK | B2055_INITTAB_UPLOAD
93#define NOUPLOAD	.flags = B2055_INITTAB_ENTRY_OK
94
95static const struct b2055_inittab_entry b2055_inittab [] = {
96  [B2055_SP_PINPD]		= { .ghz5 = 0x0080, .ghz2 = 0x0080, NOUPLOAD, },
97  [B2055_C1_SP_RSSI]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
98  [B2055_C1_SP_PDMISC]		= { .ghz5 = 0x0027, .ghz2 = 0x0027, NOUPLOAD, },
99  [B2055_C2_SP_RSSI]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
100  [B2055_C2_SP_PDMISC]		= { .ghz5 = 0x0027, .ghz2 = 0x0027, NOUPLOAD, },
101  [B2055_C1_SP_RXGC1]		= { .ghz5 = 0x007F, .ghz2 = 0x007F, UPLOAD, },
102  [B2055_C1_SP_RXGC2]		= { .ghz5 = 0x0007, .ghz2 = 0x0007, UPLOAD, },
103  [B2055_C2_SP_RXGC1]		= { .ghz5 = 0x007F, .ghz2 = 0x007F, UPLOAD, },
104  [B2055_C2_SP_RXGC2]		= { .ghz5 = 0x0007, .ghz2 = 0x0007, UPLOAD, },
105  [B2055_C1_SP_LPFBWSEL]	= { .ghz5 = 0x0015, .ghz2 = 0x0015, NOUPLOAD, },
106  [B2055_C2_SP_LPFBWSEL]	= { .ghz5 = 0x0015, .ghz2 = 0x0015, NOUPLOAD, },
107  [B2055_C1_SP_TXGC1]		= { .ghz5 = 0x004F, .ghz2 = 0x004F, UPLOAD, },
108  [B2055_C1_SP_TXGC2]		= { .ghz5 = 0x0005, .ghz2 = 0x0005, UPLOAD, },
109  [B2055_C2_SP_TXGC1]		= { .ghz5 = 0x004F, .ghz2 = 0x004F, UPLOAD, },
110  [B2055_C2_SP_TXGC2]		= { .ghz5 = 0x0005, .ghz2 = 0x0005, UPLOAD, },
111  [B2055_MASTER1]		= { .ghz5 = 0x00D0, .ghz2 = 0x00D0, NOUPLOAD, },
112  [B2055_MASTER2]		= { .ghz5 = 0x0002, .ghz2 = 0x0002, NOUPLOAD, },
113  [B2055_PD_LGEN]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
114  [B2055_PD_PLLTS]		= { .ghz5 = 0x0040, .ghz2 = 0x0040, NOUPLOAD, },
115  [B2055_C1_PD_LGBUF]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
116  [B2055_C1_PD_TX]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
117  [B2055_C1_PD_RXTX]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
118  [B2055_C1_PD_RSSIMISC]	= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
119  [B2055_C2_PD_LGBUF]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
120  [B2055_C2_PD_TX]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
121  [B2055_C2_PD_RXTX]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
122  [B2055_C2_PD_RSSIMISC]	= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
123  [B2055_PWRDET_LGEN]		= { .ghz5 = 0x00C0, .ghz2 = 0x00C0, NOUPLOAD, },
124  [B2055_C1_PWRDET_LGBUF]	= { .ghz5 = 0x00FF, .ghz2 = 0x00FF, NOUPLOAD, },
125  [B2055_C1_PWRDET_RXTX]	= { .ghz5 = 0x00C0, .ghz2 = 0x00C0, NOUPLOAD, },
126  [B2055_C2_PWRDET_LGBUF]	= { .ghz5 = 0x00FF, .ghz2 = 0x00FF, NOUPLOAD, },
127  [B2055_C2_PWRDET_RXTX]	= { .ghz5 = 0x00C0, .ghz2 = 0x00C0, NOUPLOAD, },
128  [B2055_RRCCAL_CS]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
129  [B2055_RRCCAL_NOPTSEL]	= { .ghz5 = 0x002C, .ghz2 = 0x002C, NOUPLOAD, },
130  [B2055_CAL_MISC]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
131  [B2055_CAL_COUT]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
132  [B2055_CAL_COUT2]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
133  [B2055_CAL_CVARCTL]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
134  [B2055_CAL_RVARCTL]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
135  [B2055_CAL_LPOCTL]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
136  [B2055_CAL_TS]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
137  [B2055_CAL_RCCALRTS]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
138  [B2055_CAL_RCALRTS]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
139  [B2055_PADDRV]		= { .ghz5 = 0x00A4, .ghz2 = 0x00A4, NOUPLOAD, },
140  [B2055_XOCTL1]		= { .ghz5 = 0x0038, .ghz2 = 0x0038, NOUPLOAD, },
141  [B2055_XOCTL2]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
142  [B2055_XOREGUL]		= { .ghz5 = 0x0004, .ghz2 = 0x0004, UPLOAD, },
143  [B2055_XOMISC]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
144  [B2055_PLL_LFC1]		= { .ghz5 = 0x000A, .ghz2 = 0x000A, NOUPLOAD, },
145  [B2055_PLL_CALVTH]		= { .ghz5 = 0x0087, .ghz2 = 0x0087, NOUPLOAD, },
146  [B2055_PLL_LFC2]		= { .ghz5 = 0x0009, .ghz2 = 0x0009, NOUPLOAD, },
147  [B2055_PLL_REF]		= { .ghz5 = 0x0070, .ghz2 = 0x0070, NOUPLOAD, },
148  [B2055_PLL_LFR1]		= { .ghz5 = 0x0011, .ghz2 = 0x0011, NOUPLOAD, },
149  [B2055_PLL_PFDCP]		= { .ghz5 = 0x0018, .ghz2 = 0x0018, UPLOAD, },
150  [B2055_PLL_IDAC_CPOPAMP]	= { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
151  [B2055_PLL_CPREG]		= { .ghz5 = 0x0004, .ghz2 = 0x0004, UPLOAD, },
152  [B2055_PLL_RCAL]		= { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
153  [B2055_RF_PLLMOD0]		= { .ghz5 = 0x009E, .ghz2 = 0x009E, NOUPLOAD, },
154  [B2055_RF_PLLMOD1]		= { .ghz5 = 0x0009, .ghz2 = 0x0009, NOUPLOAD, },
155  [B2055_RF_MMDIDAC1]		= { .ghz5 = 0x00C8, .ghz2 = 0x00C8, UPLOAD, },
156  [B2055_RF_MMDIDAC0]		= { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
157  [B2055_RF_MMDSP]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
158  [B2055_VCO_CAL1]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
159  [B2055_VCO_CAL2]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
160  [B2055_VCO_CAL3]		= { .ghz5 = 0x0001, .ghz2 = 0x0001, NOUPLOAD, },
161  [B2055_VCO_CAL4]		= { .ghz5 = 0x0002, .ghz2 = 0x0002, NOUPLOAD, },
162  [B2055_VCO_CAL5]		= { .ghz5 = 0x0096, .ghz2 = 0x0096, NOUPLOAD, },
163  [B2055_VCO_CAL6]		= { .ghz5 = 0x003E, .ghz2 = 0x003E, NOUPLOAD, },
164  [B2055_VCO_CAL7]		= { .ghz5 = 0x003E, .ghz2 = 0x003E, NOUPLOAD, },
165  [B2055_VCO_CAL8]		= { .ghz5 = 0x0013, .ghz2 = 0x0013, NOUPLOAD, },
166  [B2055_VCO_CAL9]		= { .ghz5 = 0x0002, .ghz2 = 0x0002, NOUPLOAD, },
167  [B2055_VCO_CAL10]		= { .ghz5 = 0x0015, .ghz2 = 0x0015, NOUPLOAD, },
168  [B2055_VCO_CAL11]		= { .ghz5 = 0x0007, .ghz2 = 0x0007, NOUPLOAD, },
169  [B2055_VCO_CAL12]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
170  [B2055_VCO_CAL13]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
171  [B2055_VCO_CAL14]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
172  [B2055_VCO_CAL15]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
173  [B2055_VCO_CAL16]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
174  [B2055_VCO_KVCO]		= { .ghz5 = 0x0008, .ghz2 = 0x0008, NOUPLOAD, },
175  [B2055_VCO_CAPTAIL]		= { .ghz5 = 0x0008, .ghz2 = 0x0008, NOUPLOAD, },
176  [B2055_VCO_IDACVCO]		= { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
177  [B2055_VCO_REG]		= { .ghz5 = 0x0084, .ghz2 = 0x0084, UPLOAD, },
178  [B2055_PLL_RFVTH]		= { .ghz5 = 0x00C3, .ghz2 = 0x00C3, NOUPLOAD, },
179  [B2055_LGBUF_CENBUF]		= { .ghz5 = 0x008F, .ghz2 = 0x008F, NOUPLOAD, },
180  [B2055_LGEN_TUNE1]		= { .ghz5 = 0x00FF, .ghz2 = 0x00FF, NOUPLOAD, },
181  [B2055_LGEN_TUNE2]		= { .ghz5 = 0x00FF, .ghz2 = 0x00FF, NOUPLOAD, },
182  [B2055_LGEN_IDAC1]		= { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
183  [B2055_LGEN_IDAC2]		= { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
184  [B2055_LGEN_BIASC]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
185  [B2055_LGEN_BIASIDAC]		= { .ghz5 = 0x00CC, .ghz2 = 0x00CC, NOUPLOAD, },
186  [B2055_LGEN_RCAL]		= { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
187  [B2055_LGEN_DIV]		= { .ghz5 = 0x0080, .ghz2 = 0x0080, NOUPLOAD, },
188  [B2055_LGEN_SPARE2]		= { .ghz5 = 0x0080, .ghz2 = 0x0080, NOUPLOAD, },
189  [B2055_C1_LGBUF_ATUNE]	= { .ghz5 = 0x00F8, .ghz2 = 0x00F8, NOUPLOAD, },
190  [B2055_C1_LGBUF_GTUNE]	= { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
191  [B2055_C1_LGBUF_DIV]		= { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
192  [B2055_C1_LGBUF_AIDAC]	= { .ghz5 = 0x0088, .ghz2 = 0x0008, UPLOAD, },
193  [B2055_C1_LGBUF_GIDAC]	= { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
194  [B2055_C1_LGBUF_IDACFO]	= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
195  [B2055_C1_LGBUF_SPARE]	= { .ghz5 = 0x0001, .ghz2 = 0x0001, UPLOAD, },
196  [B2055_C1_RX_RFSPC1]		= { .ghz5 = 0x008A, .ghz2 = 0x008A, NOUPLOAD, },
197  [B2055_C1_RX_RFR1]		= { .ghz5 = 0x0008, .ghz2 = 0x0008, NOUPLOAD, },
198  [B2055_C1_RX_RFR2]		= { .ghz5 = 0x0083, .ghz2 = 0x0083, NOUPLOAD, },
199  [B2055_C1_RX_RFRCAL]		= { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
200  [B2055_C1_RX_BB_BLCMP]	= { .ghz5 = 0x00A0, .ghz2 = 0x00A0, NOUPLOAD, },
201  [B2055_C1_RX_BB_LPF]		= { .ghz5 = 0x000A, .ghz2 = 0x000A, NOUPLOAD, },
202  [B2055_C1_RX_BB_MIDACHP]	= { .ghz5 = 0x0087, .ghz2 = 0x0087, UPLOAD, },
203  [B2055_C1_RX_BB_VGA1IDAC]	= { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
204  [B2055_C1_RX_BB_VGA2IDAC]	= { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
205  [B2055_C1_RX_BB_VGA3IDAC]	= { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
206  [B2055_C1_RX_BB_BUFOCTL]	= { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
207  [B2055_C1_RX_BB_RCCALCTL]	= { .ghz5 = 0x0018, .ghz2 = 0x0018, NOUPLOAD, },
208  [B2055_C1_RX_BB_RSSICTL1]	= { .ghz5 = 0x006A, .ghz2 = 0x006A, UPLOAD, },
209  [B2055_C1_RX_BB_RSSICTL2]	= { .ghz5 = 0x00AB, .ghz2 = 0x00AB, UPLOAD, },
210  [B2055_C1_RX_BB_RSSICTL3]	= { .ghz5 = 0x0013, .ghz2 = 0x0013, UPLOAD, },
211  [B2055_C1_RX_BB_RSSICTL4]	= { .ghz5 = 0x00C1, .ghz2 = 0x00C1, UPLOAD, },
212  [B2055_C1_RX_BB_RSSICTL5]	= { .ghz5 = 0x00AA, .ghz2 = 0x00AA, UPLOAD, },
213  [B2055_C1_RX_BB_REG]		= { .ghz5 = 0x0087, .ghz2 = 0x0087, UPLOAD, },
214  [B2055_C1_RX_BB_SPARE1]	= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
215  [B2055_C1_RX_TXBBRCAL]	= { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
216  [B2055_C1_TX_RF_SPGA]		= { .ghz5 = 0x0007, .ghz2 = 0x0007, NOUPLOAD, },
217  [B2055_C1_TX_RF_SPAD]		= { .ghz5 = 0x0007, .ghz2 = 0x0007, NOUPLOAD, },
218  [B2055_C1_TX_RF_CNTPGA1]	= { .ghz5 = 0x0015, .ghz2 = 0x0015, NOUPLOAD, },
219  [B2055_C1_TX_RF_CNTPAD1]	= { .ghz5 = 0x0055, .ghz2 = 0x0055, NOUPLOAD, },
220  [B2055_C1_TX_RF_PGAIDAC]	= { .ghz5 = 0x0097, .ghz2 = 0x0097, UPLOAD, },
221  [B2055_C1_TX_PGAPADTN]	= { .ghz5 = 0x0008, .ghz2 = 0x0008, NOUPLOAD, },
222  [B2055_C1_TX_PADIDAC1]	= { .ghz5 = 0x0014, .ghz2 = 0x0014, UPLOAD, },
223  [B2055_C1_TX_PADIDAC2]	= { .ghz5 = 0x0033, .ghz2 = 0x0033, NOUPLOAD, },
224  [B2055_C1_TX_MXBGTRIM]	= { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
225  [B2055_C1_TX_RF_RCAL]		= { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
226  [B2055_C1_TX_RF_PADTSSI1]	= { .ghz5 = 0x0003, .ghz2 = 0x0003, UPLOAD, },
227  [B2055_C1_TX_RF_PADTSSI2]	= { .ghz5 = 0x000A, .ghz2 = 0x000A, NOUPLOAD, },
228  [B2055_C1_TX_RF_SPARE]	= { .ghz5 = 0x0003, .ghz2 = 0x0003, UPLOAD, },
229  [B2055_C1_TX_RF_IQCAL1]	= { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
230  [B2055_C1_TX_RF_IQCAL2]	= { .ghz5 = 0x00A4, .ghz2 = 0x00A4, NOUPLOAD, },
231  [B2055_C1_TXBB_RCCAL]		= { .ghz5 = 0x0018, .ghz2 = 0x0018, NOUPLOAD, },
232  [B2055_C1_TXBB_LPF1]		= { .ghz5 = 0x0028, .ghz2 = 0x0028, NOUPLOAD, },
233  [B2055_C1_TX_VOSCNCL]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
234  [B2055_C1_TX_LPF_MXGMIDAC]	= { .ghz5 = 0x004A, .ghz2 = 0x004A, NOUPLOAD, },
235  [B2055_C1_TX_BB_MXGM]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
236  [B2055_C2_LGBUF_ATUNE]	= { .ghz5 = 0x00F8, .ghz2 = 0x00F8, NOUPLOAD, },
237  [B2055_C2_LGBUF_GTUNE]	= { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
238  [B2055_C2_LGBUF_DIV]		= { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
239  [B2055_C2_LGBUF_AIDAC]	= { .ghz5 = 0x0088, .ghz2 = 0x0008, UPLOAD, },
240  [B2055_C2_LGBUF_GIDAC]	= { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
241  [B2055_C2_LGBUF_IDACFO]	= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
242  [B2055_C2_LGBUF_SPARE]	= { .ghz5 = 0x0001, .ghz2 = 0x0001, UPLOAD, },
243  [B2055_C2_RX_RFSPC1]		= { .ghz5 = 0x008A, .ghz2 = 0x008A, NOUPLOAD, },
244  [B2055_C2_RX_RFR1]		= { .ghz5 = 0x0008, .ghz2 = 0x0008, NOUPLOAD, },
245  [B2055_C2_RX_RFR2]		= { .ghz5 = 0x0083, .ghz2 = 0x0083, NOUPLOAD, },
246  [B2055_C2_RX_RFRCAL]		= { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
247  [B2055_C2_RX_BB_BLCMP]	= { .ghz5 = 0x00A0, .ghz2 = 0x00A0, NOUPLOAD, },
248  [B2055_C2_RX_BB_LPF]		= { .ghz5 = 0x000A, .ghz2 = 0x000A, NOUPLOAD, },
249  [B2055_C2_RX_BB_MIDACHP]	= { .ghz5 = 0x0087, .ghz2 = 0x0087, UPLOAD, },
250  [B2055_C2_RX_BB_VGA1IDAC]	= { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
251  [B2055_C2_RX_BB_VGA2IDAC]	= { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
252  [B2055_C2_RX_BB_VGA3IDAC]	= { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
253  [B2055_C2_RX_BB_BUFOCTL]	= { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
254  [B2055_C2_RX_BB_RCCALCTL]	= { .ghz5 = 0x0018, .ghz2 = 0x0018, NOUPLOAD, },
255  [B2055_C2_RX_BB_RSSICTL1]	= { .ghz5 = 0x006A, .ghz2 = 0x006A, UPLOAD, },
256  [B2055_C2_RX_BB_RSSICTL2]	= { .ghz5 = 0x00AB, .ghz2 = 0x00AB, UPLOAD, },
257  [B2055_C2_RX_BB_RSSICTL3]	= { .ghz5 = 0x0013, .ghz2 = 0x0013, UPLOAD, },
258  [B2055_C2_RX_BB_RSSICTL4]	= { .ghz5 = 0x00C1, .ghz2 = 0x00C1, UPLOAD, },
259  [B2055_C2_RX_BB_RSSICTL5]	= { .ghz5 = 0x00AA, .ghz2 = 0x00AA, UPLOAD, },
260  [B2055_C2_RX_BB_REG]		= { .ghz5 = 0x0087, .ghz2 = 0x0087, UPLOAD, },
261  [B2055_C2_RX_BB_SPARE1]	= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
262  [B2055_C2_RX_TXBBRCAL]	= { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
263  [B2055_C2_TX_RF_SPGA]		= { .ghz5 = 0x0007, .ghz2 = 0x0007, NOUPLOAD, },
264  [B2055_C2_TX_RF_SPAD]		= { .ghz5 = 0x0007, .ghz2 = 0x0007, NOUPLOAD, },
265  [B2055_C2_TX_RF_CNTPGA1]	= { .ghz5 = 0x0015, .ghz2 = 0x0015, NOUPLOAD, },
266  [B2055_C2_TX_RF_CNTPAD1]	= { .ghz5 = 0x0055, .ghz2 = 0x0055, NOUPLOAD, },
267  [B2055_C2_TX_RF_PGAIDAC]	= { .ghz5 = 0x0097, .ghz2 = 0x0097, UPLOAD, },
268  [B2055_C2_TX_PGAPADTN]	= { .ghz5 = 0x0008, .ghz2 = 0x0008, NOUPLOAD, },
269  [B2055_C2_TX_PADIDAC1]	= { .ghz5 = 0x0014, .ghz2 = 0x0014, UPLOAD, },
270  [B2055_C2_TX_PADIDAC2]	= { .ghz5 = 0x0033, .ghz2 = 0x0033, NOUPLOAD, },
271  [B2055_C2_TX_MXBGTRIM]	= { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
272  [B2055_C2_TX_RF_RCAL]		= { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
273  [B2055_C2_TX_RF_PADTSSI1]	= { .ghz5 = 0x0003, .ghz2 = 0x0003, UPLOAD, },
274  [B2055_C2_TX_RF_PADTSSI2]	= { .ghz5 = 0x000A, .ghz2 = 0x000A, NOUPLOAD, },
275  [B2055_C2_TX_RF_SPARE]	= { .ghz5 = 0x0003, .ghz2 = 0x0003, UPLOAD, },
276  [B2055_C2_TX_RF_IQCAL1]	= { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
277  [B2055_C2_TX_RF_IQCAL2]	= { .ghz5 = 0x00A4, .ghz2 = 0x00A4, NOUPLOAD, },
278  [B2055_C2_TXBB_RCCAL]		= { .ghz5 = 0x0018, .ghz2 = 0x0018, NOUPLOAD, },
279  [B2055_C2_TXBB_LPF1]		= { .ghz5 = 0x0028, .ghz2 = 0x0028, NOUPLOAD, },
280  [B2055_C2_TX_VOSCNCL]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
281  [B2055_C2_TX_LPF_MXGMIDAC]	= { .ghz5 = 0x004A, .ghz2 = 0x004A, NOUPLOAD, },
282  [B2055_C2_TX_BB_MXGM]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
283  [B2055_PRG_GCHP21]		= { .ghz5 = 0x0071, .ghz2 = 0x0071, NOUPLOAD, },
284  [B2055_PRG_GCHP22]		= { .ghz5 = 0x0072, .ghz2 = 0x0072, NOUPLOAD, },
285  [B2055_PRG_GCHP23]		= { .ghz5 = 0x0073, .ghz2 = 0x0073, NOUPLOAD, },
286  [B2055_PRG_GCHP24]		= { .ghz5 = 0x0074, .ghz2 = 0x0074, NOUPLOAD, },
287  [B2055_PRG_GCHP25]		= { .ghz5 = 0x0075, .ghz2 = 0x0075, NOUPLOAD, },
288  [B2055_PRG_GCHP26]		= { .ghz5 = 0x0076, .ghz2 = 0x0076, NOUPLOAD, },
289  [B2055_PRG_GCHP27]		= { .ghz5 = 0x0077, .ghz2 = 0x0077, NOUPLOAD, },
290  [B2055_PRG_GCHP28]		= { .ghz5 = 0x0078, .ghz2 = 0x0078, NOUPLOAD, },
291  [B2055_PRG_GCHP29]		= { .ghz5 = 0x0079, .ghz2 = 0x0079, NOUPLOAD, },
292  [B2055_PRG_GCHP30]		= { .ghz5 = 0x007A, .ghz2 = 0x007A, NOUPLOAD, },
293  [0xC7]			= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
294  [0xC8]			= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
295  [0xC9]			= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
296  [0xCA]			= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
297  [0xCB]			= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
298  [0xCC]			= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
299  [B2055_C1_LNA_GAINBST]	= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
300  [0xCE]			= { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
301  [0xCF]			= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
302  [0xD0]			= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
303  [0xD1]			= { .ghz5 = 0x0018, .ghz2 = 0x0018, NOUPLOAD, },
304  [B2055_C1_B0NB_RSSIVCM]	= { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
305  [0xD3]			= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
306  [0xD4]			= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
307  [0xD5]			= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
308  [B2055_C1_GENSPARE2]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
309  [0xD7]			= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
310  [0xD8]			= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
311  [B2055_C2_LNA_GAINBST]	= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
312  [0xDA]			= { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
313  [0xDB]			= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
314  [0xDC]			= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
315  [0xDD]			= { .ghz5 = 0x0018, .ghz2 = 0x0018, NOUPLOAD, },
316  [B2055_C2_B0NB_RSSIVCM]	= { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
317  [0xDF]			= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
318  [0xE0]			= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
319  [0xE1]			= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
320  [B2055_C2_GENSPARE2]		= { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
321};
322
323#define RADIOREGS(r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, \
324		  r12, r13, r14, r15, r16, r17, r18, r19, r20, r21) \
325	.radio_pll_ref		= r0,	\
326	.radio_rf_pllmod0	= r1,	\
327	.radio_rf_pllmod1	= r2,	\
328	.radio_vco_captail	= r3,	\
329	.radio_vco_cal1		= r4,	\
330	.radio_vco_cal2		= r5,	\
331	.radio_pll_lfc1		= r6,	\
332	.radio_pll_lfr1		= r7,	\
333	.radio_pll_lfc2		= r8,	\
334	.radio_lgbuf_cenbuf	= r9,	\
335	.radio_lgen_tune1	= r10,	\
336	.radio_lgen_tune2	= r11,	\
337	.radio_c1_lgbuf_atune	= r12,	\
338	.radio_c1_lgbuf_gtune	= r13,	\
339	.radio_c1_rx_rfr1	= r14,	\
340	.radio_c1_tx_pgapadtn	= r15,	\
341	.radio_c1_tx_mxbgtrim	= r16,	\
342	.radio_c2_lgbuf_atune	= r17,	\
343	.radio_c2_lgbuf_gtune	= r18,	\
344	.radio_c2_rx_rfr1	= r19,	\
345	.radio_c2_tx_pgapadtn	= r20,	\
346	.radio_c2_tx_mxbgtrim	= r21
347
348#define PHYREGS(r0, r1, r2, r3, r4, r5)	\
349	.phy_regs.phy_bw1a	= r0,	\
350	.phy_regs.phy_bw2	= r1,	\
351	.phy_regs.phy_bw3	= r2,	\
352	.phy_regs.phy_bw4	= r3,	\
353	.phy_regs.phy_bw5	= r4,	\
354	.phy_regs.phy_bw6	= r5
355
356static const struct bwn_nphy_channeltab_entry_rev2 bwn_nphy_channeltab_rev2[] = {
357  {	.channel		= 184,
358	.freq			= 4920, /* MHz */
359	.unk2			= 3280,
360	RADIOREGS(0x71, 0xEC, 0x01, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
361		  0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F,
362		  0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
363	PHYREGS(0x07B4, 0x07B0, 0x07AC, 0x0214, 0x0215, 0x0216),
364  },
365  {	.channel		= 186,
366	.freq			= 4930, /* MHz */
367	.unk2			= 3287,
368	RADIOREGS(0x71, 0xED, 0x01, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
369		  0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F,
370		  0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
371	PHYREGS(0x07B8, 0x07B4, 0x07B0, 0x0213, 0x0214, 0x0215),
372  },
373  {	.channel		= 188,
374	.freq			= 4940, /* MHz */
375	.unk2			= 3293,
376	RADIOREGS(0x71, 0xEE, 0x01, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
377		  0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F,
378		  0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
379	PHYREGS(0x07BC, 0x07B8, 0x07B4, 0x0212, 0x0213, 0x0214),
380  },
381  {	.channel		= 190,
382	.freq			= 4950, /* MHz */
383	.unk2			= 3300,
384	RADIOREGS(0x71, 0xEF, 0x01, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
385		  0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F,
386		  0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
387	PHYREGS(0x07C0, 0x07BC, 0x07B8, 0x0211, 0x0212, 0x0213),
388  },
389  {	.channel		= 192,
390	.freq			= 4960, /* MHz */
391	.unk2			= 3307,
392	RADIOREGS(0x71, 0xF0, 0x01, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
393		  0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F,
394		  0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
395	PHYREGS(0x07C4, 0x07C0, 0x07BC, 0x020F, 0x0211, 0x0212),
396  },
397  {	.channel		= 194,
398	.freq			= 4970, /* MHz */
399	.unk2			= 3313,
400	RADIOREGS(0x71, 0xF1, 0x01, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
401		  0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F,
402		  0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
403	PHYREGS(0x07C8, 0x07C4, 0x07C0, 0x020E, 0x020F, 0x0211),
404  },
405  {	.channel		= 196,
406	.freq			= 4980, /* MHz */
407	.unk2			= 3320,
408	RADIOREGS(0x71, 0xF2, 0x01, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
409		  0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F,
410		  0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
411	PHYREGS(0x07CC, 0x07C8, 0x07C4, 0x020D, 0x020E, 0x020F),
412  },
413  {	.channel		= 198,
414	.freq			= 4990, /* MHz */
415	.unk2			= 3327,
416	RADIOREGS(0x71, 0xF3, 0x01, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
417		  0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F,
418		  0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
419	PHYREGS(0x07D0, 0x07CC, 0x07C8, 0x020C, 0x020D, 0x020E),
420  },
421  {	.channel		= 200,
422	.freq			= 5000, /* MHz */
423	.unk2			= 3333,
424	RADIOREGS(0x71, 0xF4, 0x01, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
425		  0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F,
426		  0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
427	PHYREGS(0x07D4, 0x07D0, 0x07CC, 0x020B, 0x020C, 0x020D),
428  },
429  {	.channel		= 202,
430	.freq			= 5010, /* MHz */
431	.unk2			= 3340,
432	RADIOREGS(0x71, 0xF5, 0x01, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
433		  0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F,
434		  0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
435	PHYREGS(0x07D8, 0x07D4, 0x07D0, 0x020A, 0x020B, 0x020C),
436  },
437  {	.channel		= 204,
438	.freq			= 5020, /* MHz */
439	.unk2			= 3347,
440	RADIOREGS(0x71, 0xF6, 0x01, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
441		  0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F,
442		  0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
443	PHYREGS(0x07DC, 0x07D8, 0x07D4, 0x0209, 0x020A, 0x020B),
444  },
445  {	.channel		= 206,
446	.freq			= 5030, /* MHz */
447	.unk2			= 3353,
448	RADIOREGS(0x71, 0xF7, 0x01, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
449		  0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F,
450		  0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
451	PHYREGS(0x07E0, 0x07DC, 0x07D8, 0x0208, 0x0209, 0x020A),
452  },
453  {	.channel		= 208,
454	.freq			= 5040, /* MHz */
455	.unk2			= 3360,
456	RADIOREGS(0x71, 0xF8, 0x01, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
457		  0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F,
458		  0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
459	PHYREGS(0x07E4, 0x07E0, 0x07DC, 0x0207, 0x0208, 0x0209),
460  },
461  {	.channel		= 210,
462	.freq			= 5050, /* MHz */
463	.unk2			= 3367,
464	RADIOREGS(0x71, 0xF9, 0x01, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
465		  0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F,
466		  0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
467	PHYREGS(0x07E8, 0x07E4, 0x07E0, 0x0206, 0x0207, 0x0208),
468  },
469  {	.channel		= 212,
470	.freq			= 5060, /* MHz */
471	.unk2			= 3373,
472	RADIOREGS(0x71, 0xFA, 0x01, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
473		  0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F,
474		  0x8E, 0xFF, 0x00, 0x0E, 0x0F, 0x8E),
475	PHYREGS(0x07EC, 0x07E8, 0x07E4, 0x0205, 0x0206, 0x0207),
476  },
477  {	.channel		= 214,
478	.freq			= 5070, /* MHz */
479	.unk2			= 3380,
480	RADIOREGS(0x71, 0xFB, 0x01, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
481		  0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F,
482		  0x8E, 0xFF, 0x00, 0x0E, 0x0F, 0x8E),
483	PHYREGS(0x07F0, 0x07EC, 0x07E8, 0x0204, 0x0205, 0x0206),
484  },
485  {	.channel		= 216,
486	.freq			= 5080, /* MHz */
487	.unk2			= 3387,
488	RADIOREGS(0x71, 0xFC, 0x01, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
489		  0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F,
490		  0x8D, 0xEE, 0x00, 0x0E, 0x0F, 0x8D),
491	PHYREGS(0x07F4, 0x07F0, 0x07EC, 0x0203, 0x0204, 0x0205),
492  },
493  {	.channel		= 218,
494	.freq			= 5090, /* MHz */
495	.unk2			= 3393,
496	RADIOREGS(0x71, 0xFD, 0x01, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
497		  0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F,
498		  0x8D, 0xEE, 0x00, 0x0E, 0x0F, 0x8D),
499	PHYREGS(0x07F8, 0x07F4, 0x07F0, 0x0202, 0x0203, 0x0204),
500  },
501  {	.channel		= 220,
502	.freq			= 5100, /* MHz */
503	.unk2			= 3400,
504	RADIOREGS(0x71, 0xFE, 0x01, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
505		  0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F,
506		  0x8D, 0xEE, 0x00, 0x0D, 0x0F, 0x8D),
507	PHYREGS(0x07FC, 0x07F8, 0x07F4, 0x0201, 0x0202, 0x0203),
508  },
509  {	.channel		= 222,
510	.freq			= 5110, /* MHz */
511	.unk2			= 3407,
512	RADIOREGS(0x71, 0xFF, 0x01, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
513		  0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F,
514		  0x8D, 0xEE, 0x00, 0x0D, 0x0F, 0x8D),
515	PHYREGS(0x0800, 0x07FC, 0x07F8, 0x0200, 0x0201, 0x0202),
516  },
517  {	.channel		= 224,
518	.freq			= 5120, /* MHz */
519	.unk2			= 3413,
520	RADIOREGS(0x71, 0x00, 0x02, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
521		  0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F,
522		  0x8C, 0xDD, 0x00, 0x0D, 0x0F, 0x8C),
523	PHYREGS(0x0804, 0x0800, 0x07FC, 0x01FF, 0x0200, 0x0201),
524  },
525  {	.channel		= 226,
526	.freq			= 5130, /* MHz */
527	.unk2			= 3420,
528	RADIOREGS(0x71, 0x01, 0x02, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
529		  0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F,
530		  0x8C, 0xDD, 0x00, 0x0D, 0x0F, 0x8C),
531	PHYREGS(0x0808, 0x0804, 0x0800, 0x01FE, 0x01FF, 0x0200),
532  },
533  {	.channel		= 228,
534	.freq			= 5140, /* MHz */
535	.unk2			= 3427,
536	RADIOREGS(0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
537		  0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E,
538		  0x8B, 0xDD, 0x00, 0x0C, 0x0E, 0x8B),
539	PHYREGS(0x080C, 0x0808, 0x0804, 0x01FD, 0x01FE, 0x01FF),
540  },
541  {	.channel		= 32,
542	.freq			= 5160, /* MHz */
543	.unk2			= 3440,
544	RADIOREGS(0x71, 0x04, 0x02, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
545		  0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D,
546		  0x8A, 0xCC, 0x00, 0x0B, 0x0D, 0x8A),
547	PHYREGS(0x0814, 0x0810, 0x080C, 0x01FB, 0x01FC, 0x01FD),
548  },
549  {	.channel		= 34,
550	.freq			= 5170, /* MHz */
551	.unk2			= 3447,
552	RADIOREGS(0x71, 0x05, 0x02, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
553		  0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D,
554		  0x8A, 0xCC, 0x00, 0x0B, 0x0D, 0x8A),
555	PHYREGS(0x0818, 0x0814, 0x0810, 0x01FA, 0x01FB, 0x01FC),
556  },
557  {	.channel		= 36,
558	.freq			= 5180, /* MHz */
559	.unk2			= 3453,
560	RADIOREGS(0x71, 0x06, 0x02, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
561		  0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C,
562		  0x89, 0xCC, 0x00, 0x0B, 0x0C, 0x89),
563	PHYREGS(0x081C, 0x0818, 0x0814, 0x01F9, 0x01FA, 0x01FB),
564  },
565  {	.channel		= 38,
566	.freq			= 5190, /* MHz */
567	.unk2			= 3460,
568	RADIOREGS(0x71, 0x07, 0x02, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
569		  0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C,
570		  0x89, 0xCC, 0x00, 0x0B, 0x0C, 0x89),
571	PHYREGS(0x0820, 0x081C, 0x0818, 0x01F8, 0x01F9, 0x01FA),
572  },
573  {	.channel		= 40,
574	.freq			= 5200, /* MHz */
575	.unk2			= 3467,
576	RADIOREGS(0x71, 0x08, 0x02, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
577		  0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B,
578		  0x89, 0xBB, 0x00, 0x0A, 0x0B, 0x89),
579	PHYREGS(0x0824, 0x0820, 0x081C, 0x01F7, 0x01F8, 0x01F9),
580  },
581  {	.channel		= 42,
582	.freq			= 5210, /* MHz */
583	.unk2			= 3473,
584	RADIOREGS(0x71, 0x09, 0x02, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
585		  0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B,
586		  0x89, 0xBB, 0x00, 0x0A, 0x0B, 0x89),
587	PHYREGS(0x0828, 0x0824, 0x0820, 0x01F6, 0x01F7, 0x01F8),
588  },
589  {	.channel		= 44,
590	.freq			= 5220, /* MHz */
591	.unk2			= 3480,
592	RADIOREGS(0x71, 0x0A, 0x02, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
593		  0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A,
594		  0x88, 0xBB, 0x00, 0x09, 0x0A, 0x88),
595	PHYREGS(0x082C, 0x0828, 0x0824, 0x01F5, 0x01F6, 0x01F7),
596  },
597  {	.channel		= 46,
598	.freq			= 5230, /* MHz */
599	.unk2			= 3487,
600	RADIOREGS(0x71, 0x0B, 0x02, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
601		  0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A,
602		  0x88, 0xBB, 0x00, 0x09, 0x0A, 0x88),
603	PHYREGS(0x0830, 0x082C, 0x0828, 0x01F4, 0x01F5, 0x01F6),
604  },
605  {	.channel		= 48,
606	.freq			= 5240, /* MHz */
607	.unk2			= 3493,
608	RADIOREGS(0x71, 0x0C, 0x02, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
609		  0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A,
610		  0x87, 0xAA, 0x00, 0x09, 0x0A, 0x87),
611	PHYREGS(0x0834, 0x0830, 0x082C, 0x01F3, 0x01F4, 0x01F5),
612  },
613  {	.channel		= 50,
614	.freq			= 5250, /* MHz */
615	.unk2			= 3500,
616	RADIOREGS(0x71, 0x0D, 0x02, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
617		  0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A,
618		  0x87, 0xAA, 0x00, 0x09, 0x0A, 0x87),
619	PHYREGS(0x0838, 0x0834, 0x0830, 0x01F2, 0x01F3, 0x01F4),
620  },
621  {	.channel		= 52,
622	.freq			= 5260, /* MHz */
623	.unk2			= 3507,
624	RADIOREGS(0x71, 0x0E, 0x02, 0x0A, 0x98, 0x01, 0x04, 0x0A,
625		  0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09,
626		  0x87, 0xAA, 0x00, 0x08, 0x09, 0x87),
627	PHYREGS(0x083C, 0x0838, 0x0834, 0x01F1, 0x01F2, 0x01F3),
628  },
629  {	.channel		= 54,
630	.freq			= 5270, /* MHz */
631	.unk2			= 3513,
632	RADIOREGS(0x71, 0x0F, 0x02, 0x0A, 0x98, 0x01, 0x04, 0x0A,
633		  0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09,
634		  0x87, 0xAA, 0x00, 0x08, 0x09, 0x87),
635	PHYREGS(0x0840, 0x083C, 0x0838, 0x01F0, 0x01F1, 0x01F2),
636  },
637  {	.channel		= 56,
638	.freq			= 5280, /* MHz */
639	.unk2			= 3520,
640	RADIOREGS(0x71, 0x10, 0x02, 0x09, 0x91, 0x01, 0x04, 0x0A,
641		  0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08,
642		  0x86, 0x99, 0x00, 0x08, 0x08, 0x86),
643	PHYREGS(0x0844, 0x0840, 0x083C, 0x01F0, 0x01F0, 0x01F1),
644  },
645  {	.channel		= 58,
646	.freq			= 5290, /* MHz */
647	.unk2			= 3527,
648	RADIOREGS(0x71, 0x11, 0x02, 0x09, 0x91, 0x01, 0x04, 0x0A,
649		  0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08,
650		  0x86, 0x99, 0x00, 0x08, 0x08, 0x86),
651	PHYREGS(0x0848, 0x0844, 0x0840, 0x01EF, 0x01F0, 0x01F0),
652  },
653  {	.channel		= 60,
654	.freq			= 5300, /* MHz */
655	.unk2			= 3533,
656	RADIOREGS(0x71, 0x12, 0x02, 0x09, 0x8A, 0x01, 0x04, 0x0A,
657		  0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07,
658		  0x85, 0x99, 0x00, 0x08, 0x07, 0x85),
659	PHYREGS(0x084C, 0x0848, 0x0844, 0x01EE, 0x01EF, 0x01F0),
660  },
661  {	.channel		= 62,
662	.freq			= 5310, /* MHz */
663	.unk2			= 3540,
664	RADIOREGS(0x71, 0x13, 0x02, 0x09, 0x8A, 0x01, 0x04, 0x0A,
665		  0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07,
666		  0x85, 0x99, 0x00, 0x08, 0x07, 0x85),
667	PHYREGS(0x0850, 0x084C, 0x0848, 0x01ED, 0x01EE, 0x01EF),
668  },
669  {	.channel		= 64,
670	.freq			= 5320, /* MHz */
671	.unk2			= 3547,
672	RADIOREGS(0x71, 0x14, 0x02, 0x09, 0x83, 0x01, 0x04, 0x0A,
673		  0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07,
674		  0x84, 0x88, 0x00, 0x07, 0x07, 0x84),
675	PHYREGS(0x0854, 0x0850, 0x084C, 0x01EC, 0x01ED, 0x01EE),
676  },
677  {	.channel		= 66,
678	.freq			= 5330, /* MHz */
679	.unk2			= 3553,
680	RADIOREGS(0x71, 0x15, 0x02, 0x09, 0x83, 0x01, 0x04, 0x0A,
681		  0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07,
682		  0x84, 0x88, 0x00, 0x07, 0x07, 0x84),
683	PHYREGS(0x0858, 0x0854, 0x0850, 0x01EB, 0x01EC, 0x01ED),
684  },
685  {	.channel		= 68,
686	.freq			= 5340, /* MHz */
687	.unk2			= 3560,
688	RADIOREGS(0x71, 0x16, 0x02, 0x08, 0x7C, 0x01, 0x04, 0x0A,
689		  0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06,
690		  0x84, 0x88, 0x00, 0x07, 0x06, 0x84),
691	PHYREGS(0x085C, 0x0858, 0x0854, 0x01EA, 0x01EB, 0x01EC),
692  },
693  {	.channel		= 70,
694	.freq			= 5350, /* MHz */
695	.unk2			= 3567,
696	RADIOREGS(0x71, 0x17, 0x02, 0x08, 0x7C, 0x01, 0x04, 0x0A,
697		  0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06,
698		  0x84, 0x88, 0x00, 0x07, 0x06, 0x84),
699	PHYREGS(0x0860, 0x085C, 0x0858, 0x01E9, 0x01EA, 0x01EB),
700  },
701  {	.channel		= 72,
702	.freq			= 5360, /* MHz */
703	.unk2			= 3573,
704	RADIOREGS(0x71, 0x18, 0x02, 0x08, 0x75, 0x01, 0x04, 0x0A,
705		  0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05,
706		  0x83, 0x77, 0x00, 0x06, 0x05, 0x83),
707	PHYREGS(0x0864, 0x0860, 0x085C, 0x01E8, 0x01E9, 0x01EA),
708  },
709  {	.channel		= 74,
710	.freq			= 5370, /* MHz */
711	.unk2			= 3580,
712	RADIOREGS(0x71, 0x19, 0x02, 0x08, 0x75, 0x01, 0x04, 0x0A,
713		  0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05,
714		  0x83, 0x77, 0x00, 0x06, 0x05, 0x83),
715	PHYREGS(0x0868, 0x0864, 0x0860, 0x01E7, 0x01E8, 0x01E9),
716  },
717  {	.channel		= 76,
718	.freq			= 5380, /* MHz */
719	.unk2			= 3587,
720	RADIOREGS(0x71, 0x1A, 0x02, 0x08, 0x6E, 0x01, 0x04, 0x0A,
721		  0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04,
722		  0x82, 0x77, 0x00, 0x06, 0x04, 0x82),
723	PHYREGS(0x086C, 0x0868, 0x0864, 0x01E6, 0x01E7, 0x01E8),
724  },
725  {	.channel		= 78,
726	.freq			= 5390, /* MHz */
727	.unk2			= 3593,
728	RADIOREGS(0x71, 0x1B, 0x02, 0x08, 0x6E, 0x01, 0x04, 0x0A,
729		  0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04,
730		  0x82, 0x77, 0x00, 0x06, 0x04, 0x82),
731	PHYREGS(0x0870, 0x086C, 0x0868, 0x01E5, 0x01E6, 0x01E7),
732  },
733  {	.channel		= 80,
734	.freq			= 5400, /* MHz */
735	.unk2			= 3600,
736	RADIOREGS(0x71, 0x1C, 0x02, 0x07, 0x67, 0x01, 0x04, 0x0A,
737		  0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04,
738		  0x81, 0x66, 0x00, 0x05, 0x04, 0x81),
739	PHYREGS(0x0874, 0x0870, 0x086C, 0x01E5, 0x01E5, 0x01E6),
740  },
741  {	.channel		= 82,
742	.freq			= 5410, /* MHz */
743	.unk2			= 3607,
744	RADIOREGS(0x71, 0x1D, 0x02, 0x07, 0x67, 0x01, 0x04, 0x0A,
745		  0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04,
746		  0x81, 0x66, 0x00, 0x05, 0x04, 0x81),
747	PHYREGS(0x0878, 0x0874, 0x0870, 0x01E4, 0x01E5, 0x01E5),
748  },
749  {	.channel		= 84,
750	.freq			= 5420, /* MHz */
751	.unk2			= 3613,
752	RADIOREGS(0x71, 0x1E, 0x02, 0x07, 0x61, 0x01, 0x04, 0x0A,
753		  0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03,
754		  0x80, 0x66, 0x00, 0x05, 0x03, 0x80),
755	PHYREGS(0x087C, 0x0878, 0x0874, 0x01E3, 0x01E4, 0x01E5),
756  },
757  {	.channel		= 86,
758	.freq			= 5430, /* MHz */
759	.unk2			= 3620,
760	RADIOREGS(0x71, 0x1F, 0x02, 0x07, 0x61, 0x01, 0x04, 0x0A,
761		  0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03,
762		  0x80, 0x66, 0x00, 0x05, 0x03, 0x80),
763	PHYREGS(0x0880, 0x087C, 0x0878, 0x01E2, 0x01E3, 0x01E4),
764  },
765  {	.channel		= 88,
766	.freq			= 5440, /* MHz */
767	.unk2			= 3627,
768	RADIOREGS(0x71, 0x20, 0x02, 0x07, 0x5A, 0x01, 0x04, 0x0A,
769		  0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02,
770		  0x80, 0x55, 0x00, 0x04, 0x02, 0x80),
771	PHYREGS(0x0884, 0x0880, 0x087C, 0x01E1, 0x01E2, 0x01E3),
772  },
773  {	.channel		= 90,
774	.freq			= 5450, /* MHz */
775	.unk2			= 3633,
776	RADIOREGS(0x71, 0x21, 0x02, 0x07, 0x5A, 0x01, 0x04, 0x0A,
777		  0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02,
778		  0x80, 0x55, 0x00, 0x04, 0x02, 0x80),
779	PHYREGS(0x0888, 0x0884, 0x0880, 0x01E0, 0x01E1, 0x01E2),
780  },
781  {	.channel		= 92,
782	.freq			= 5460, /* MHz */
783	.unk2			= 3640,
784	RADIOREGS(0x71, 0x22, 0x02, 0x06, 0x53, 0x01, 0x04, 0x0A,
785		  0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01,
786		  0x80, 0x55, 0x00, 0x04, 0x01, 0x80),
787	PHYREGS(0x088C, 0x0888, 0x0884, 0x01DF, 0x01E0, 0x01E1),
788  },
789  {	.channel		= 94,
790	.freq			= 5470, /* MHz */
791	.unk2			= 3647,
792	RADIOREGS(0x71, 0x23, 0x02, 0x06, 0x53, 0x01, 0x04, 0x0A,
793		  0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01,
794		  0x80, 0x55, 0x00, 0x04, 0x01, 0x80),
795	PHYREGS(0x0890, 0x088C, 0x0888, 0x01DE, 0x01DF, 0x01E0),
796  },
797  {	.channel		= 96,
798	.freq			= 5480, /* MHz */
799	.unk2			= 3653,
800	RADIOREGS(0x71, 0x24, 0x02, 0x06, 0x4D, 0x01, 0x04, 0x0A,
801		  0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00,
802		  0x80, 0x44, 0x00, 0x03, 0x00, 0x80),
803	PHYREGS(0x0894, 0x0890, 0x088C, 0x01DD, 0x01DE, 0x01DF),
804  },
805  {	.channel		= 98,
806	.freq			= 5490, /* MHz */
807	.unk2			= 3660,
808	RADIOREGS(0x71, 0x25, 0x02, 0x06, 0x4D, 0x01, 0x04, 0x0A,
809		  0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00,
810		  0x80, 0x44, 0x00, 0x03, 0x00, 0x80),
811	PHYREGS(0x0898, 0x0894, 0x0890, 0x01DD, 0x01DD, 0x01DE),
812  },
813  {	.channel		= 100,
814	.freq			= 5500, /* MHz */
815	.unk2			= 3667,
816	RADIOREGS(0x71, 0x26, 0x02, 0x06, 0x47, 0x01, 0x04, 0x0A,
817		  0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00,
818		  0x80, 0x44, 0x00, 0x03, 0x00, 0x80),
819	PHYREGS(0x089C, 0x0898, 0x0894, 0x01DC, 0x01DD, 0x01DD),
820  },
821  {	.channel		= 102,
822	.freq			= 5510, /* MHz */
823	.unk2			= 3673,
824	RADIOREGS(0x71, 0x27, 0x02, 0x06, 0x47, 0x01, 0x04, 0x0A,
825		  0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00,
826		  0x80, 0x44, 0x00, 0x03, 0x00, 0x80),
827	PHYREGS(0x08A0, 0x089C, 0x0898, 0x01DB, 0x01DC, 0x01DD),
828  },
829  {	.channel		= 104,
830	.freq			= 5520, /* MHz */
831	.unk2			= 3680,
832	RADIOREGS(0x71, 0x28, 0x02, 0x05, 0x40, 0x01, 0x04, 0x0A,
833		  0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
834		  0x80, 0x33, 0x00, 0x02, 0x00, 0x80),
835	PHYREGS(0x08A4, 0x08A0, 0x089C, 0x01DA, 0x01DB, 0x01DC),
836  },
837  {	.channel		= 106,
838	.freq			= 5530, /* MHz */
839	.unk2			= 3687,
840	RADIOREGS(0x71, 0x29, 0x02, 0x05, 0x40, 0x01, 0x04, 0x0A,
841		  0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
842		  0x80, 0x33, 0x00, 0x02, 0x00, 0x80),
843	PHYREGS(0x08A8, 0x08A4, 0x08A0, 0x01D9, 0x01DA, 0x01DB),
844  },
845  {	.channel		= 108,
846	.freq			= 5540, /* MHz */
847	.unk2			= 3693,
848	RADIOREGS(0x71, 0x2A, 0x02, 0x05, 0x3A, 0x01, 0x04, 0x0A,
849		  0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
850		  0x80, 0x33, 0x00, 0x02, 0x00, 0x80),
851	PHYREGS(0x08AC, 0x08A8, 0x08A4, 0x01D8, 0x01D9, 0x01DA),
852  },
853  {	.channel		= 110,
854	.freq			= 5550, /* MHz */
855	.unk2			= 3700,
856	RADIOREGS(0x71, 0x2B, 0x02, 0x05, 0x3A, 0x01, 0x04, 0x0A,
857		  0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
858		  0x80, 0x33, 0x00, 0x02, 0x00, 0x80),
859	PHYREGS(0x08B0, 0x08AC, 0x08A8, 0x01D7, 0x01D8, 0x01D9),
860  },
861  {	.channel		= 112,
862	.freq			= 5560, /* MHz */
863	.unk2			= 3707,
864	RADIOREGS(0x71, 0x2C, 0x02, 0x05, 0x34, 0x01, 0x04, 0x0A,
865		  0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00,
866		  0x80, 0x22, 0x00, 0x01, 0x00, 0x80),
867	PHYREGS(0x08B4, 0x08B0, 0x08AC, 0x01D7, 0x01D7, 0x01D8),
868  },
869  {	.channel		= 114,
870	.freq			= 5570, /* MHz */
871	.unk2			= 3713,
872	RADIOREGS(0x71, 0x2D, 0x02, 0x05, 0x34, 0x01, 0x04, 0x0A,
873		  0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00,
874		  0x80, 0x22, 0x00, 0x01, 0x00, 0x80),
875	PHYREGS(0x08B8, 0x08B4, 0x08B0, 0x01D6, 0x01D7, 0x01D7),
876  },
877  {	.channel		= 116,
878	.freq			= 5580, /* MHz */
879	.unk2			= 3720,
880	RADIOREGS(0x71, 0x2E, 0x02, 0x04, 0x2E, 0x01, 0x04, 0x0A,
881		  0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00,
882		  0x80, 0x22, 0x00, 0x01, 0x00, 0x80),
883	PHYREGS(0x08BC, 0x08B8, 0x08B4, 0x01D5, 0x01D6, 0x01D7),
884  },
885  {	.channel		= 118,
886	.freq			= 5590, /* MHz */
887	.unk2			= 3727,
888	RADIOREGS(0x71, 0x2F, 0x02, 0x04, 0x2E, 0x01, 0x04, 0x0A,
889		  0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00,
890		  0x80, 0x22, 0x00, 0x01, 0x00, 0x80),
891	PHYREGS(0x08C0, 0x08BC, 0x08B8, 0x01D4, 0x01D5, 0x01D6),
892  },
893  {	.channel		= 120,
894	.freq			= 5600, /* MHz */
895	.unk2			= 3733,
896	RADIOREGS(0x71, 0x30, 0x02, 0x04, 0x28, 0x01, 0x04, 0x0A,
897		  0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00,
898		  0x80, 0x11, 0x00, 0x01, 0x00, 0x80),
899	PHYREGS(0x08C4, 0x08C0, 0x08BC, 0x01D3, 0x01D4, 0x01D5),
900  },
901  {	.channel		= 122,
902	.freq			= 5610, /* MHz */
903	.unk2			= 3740,
904	RADIOREGS(0x71, 0x31, 0x02, 0x04, 0x28, 0x01, 0x04, 0x0A,
905		  0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00,
906		  0x80, 0x11, 0x00, 0x01, 0x00, 0x80),
907	PHYREGS(0x08C8, 0x08C4, 0x08C0, 0x01D2, 0x01D3, 0x01D4),
908  },
909  {	.channel		= 124,
910	.freq			= 5620, /* MHz */
911	.unk2			= 3747,
912	RADIOREGS(0x71, 0x32, 0x02, 0x04, 0x21, 0x01, 0x04, 0x0A,
913		  0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00,
914		  0x80, 0x11, 0x00, 0x00, 0x00, 0x80),
915	PHYREGS(0x08CC, 0x08C8, 0x08C4, 0x01D2, 0x01D2, 0x01D3),
916  },
917  {	.channel		= 126,
918	.freq			= 5630, /* MHz */
919	.unk2			= 3753,
920	RADIOREGS(0x71, 0x33, 0x02, 0x04, 0x21, 0x01, 0x04, 0x0A,
921		  0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00,
922		  0x80, 0x11, 0x00, 0x00, 0x00, 0x80),
923	PHYREGS(0x08D0, 0x08CC, 0x08C8, 0x01D1, 0x01D2, 0x01D2),
924  },
925  {	.channel		= 128,
926	.freq			= 5640, /* MHz */
927	.unk2			= 3760,
928	RADIOREGS(0x71, 0x34, 0x02, 0x03, 0x1C, 0x01, 0x04, 0x0A,
929		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
930		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
931	PHYREGS(0x08D4, 0x08D0, 0x08CC, 0x01D0, 0x01D1, 0x01D2),
932  },
933  {	.channel		= 130,
934	.freq			= 5650, /* MHz */
935	.unk2			= 3767,
936	RADIOREGS(0x71, 0x35, 0x02, 0x03, 0x1C, 0x01, 0x04, 0x0A,
937		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
938		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
939	PHYREGS(0x08D8, 0x08D4, 0x08D0, 0x01CF, 0x01D0, 0x01D1),
940  },
941  {	.channel		= 132,
942	.freq			= 5660, /* MHz */
943	.unk2			= 3773,
944	RADIOREGS(0x71, 0x36, 0x02, 0x03, 0x16, 0x01, 0x04, 0x0A,
945		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
946		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
947	PHYREGS(0x08DC, 0x08D8, 0x08D4, 0x01CE, 0x01CF, 0x01D0),
948  },
949  {	.channel		= 134,
950	.freq			= 5670, /* MHz */
951	.unk2			= 3780,
952	RADIOREGS(0x71, 0x37, 0x02, 0x03, 0x16, 0x01, 0x04, 0x0A,
953		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
954		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
955	PHYREGS(0x08E0, 0x08DC, 0x08D8, 0x01CE, 0x01CE, 0x01CF),
956  },
957  {	.channel		= 136,
958	.freq			= 5680, /* MHz */
959	.unk2			= 3787,
960	RADIOREGS(0x71, 0x38, 0x02, 0x03, 0x10, 0x01, 0x04, 0x0A,
961		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
962		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
963	PHYREGS(0x08E4, 0x08E0, 0x08DC, 0x01CD, 0x01CE, 0x01CE),
964  },
965  {	.channel		= 138,
966	.freq			= 5690, /* MHz */
967	.unk2			= 3793,
968	RADIOREGS(0x71, 0x39, 0x02, 0x03, 0x10, 0x01, 0x04, 0x0A,
969		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
970		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
971	PHYREGS(0x08E8, 0x08E4, 0x08E0, 0x01CC, 0x01CD, 0x01CE),
972  },
973  {	.channel		= 140,
974	.freq			= 5700, /* MHz */
975	.unk2			= 3800,
976	RADIOREGS(0x71, 0x3A, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A,
977		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
978		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
979	PHYREGS(0x08EC, 0x08E8, 0x08E4, 0x01CB, 0x01CC, 0x01CD),
980  },
981  {	.channel		= 142,
982	.freq			= 5710, /* MHz */
983	.unk2			= 3807,
984	RADIOREGS(0x71, 0x3B, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A,
985		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
986		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
987	PHYREGS(0x08F0, 0x08EC, 0x08E8, 0x01CA, 0x01CB, 0x01CC),
988  },
989  {	.channel		= 144,
990	.freq			= 5720, /* MHz */
991	.unk2			= 3813,
992	RADIOREGS(0x71, 0x3C, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A,
993		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
994		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
995	PHYREGS(0x08F4, 0x08F0, 0x08EC, 0x01C9, 0x01CA, 0x01CB),
996  },
997  {	.channel		= 145,
998	.freq			= 5725, /* MHz */
999	.unk2			= 3817,
1000	RADIOREGS(0x72, 0x79, 0x04, 0x02, 0x03, 0x01, 0x03, 0x14,
1001		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1002		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1003	PHYREGS(0x08F6, 0x08F2, 0x08EE, 0x01C9, 0x01CA, 0x01CB),
1004  },
1005  {	.channel		= 146,
1006	.freq			= 5730, /* MHz */
1007	.unk2			= 3820,
1008	RADIOREGS(0x71, 0x3D, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A,
1009		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1010		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1011	PHYREGS(0x08F8, 0x08F4, 0x08F0, 0x01C9, 0x01C9, 0x01CA),
1012  },
1013  {	.channel		= 147,
1014	.freq			= 5735, /* MHz */
1015	.unk2			= 3823,
1016	RADIOREGS(0x72, 0x7B, 0x04, 0x02, 0x03, 0x01, 0x03, 0x14,
1017		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1018		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1019	PHYREGS(0x08FA, 0x08F6, 0x08F2, 0x01C8, 0x01C9, 0x01CA),
1020  },
1021  {	.channel		= 148,
1022	.freq			= 5740, /* MHz */
1023	.unk2			= 3827,
1024	RADIOREGS(0x71, 0x3E, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A,
1025		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1026		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1027	PHYREGS(0x08FC, 0x08F8, 0x08F4, 0x01C8, 0x01C9, 0x01C9),
1028  },
1029  {	.channel		= 149,
1030	.freq			= 5745, /* MHz */
1031	.unk2			= 3830,
1032	RADIOREGS(0x72, 0x7D, 0x04, 0x02, 0xFE, 0x00, 0x03, 0x14,
1033		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1034		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1035	PHYREGS(0x08FE, 0x08FA, 0x08F6, 0x01C8, 0x01C8, 0x01C9),
1036  },
1037  {	.channel		= 150,
1038	.freq			= 5750, /* MHz */
1039	.unk2			= 3833,
1040	RADIOREGS(0x71, 0x3F, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A,
1041		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1042		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1043	PHYREGS(0x0900, 0x08FC, 0x08F8, 0x01C7, 0x01C8, 0x01C9),
1044  },
1045  {	.channel		= 151,
1046	.freq			= 5755, /* MHz */
1047	.unk2			= 3837,
1048	RADIOREGS(0x72, 0x7F, 0x04, 0x02, 0xFE, 0x00, 0x03, 0x14,
1049		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1050		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1051	PHYREGS(0x0902, 0x08FE, 0x08FA, 0x01C7, 0x01C8, 0x01C8),
1052  },
1053  {	.channel		= 152,
1054	.freq			= 5760, /* MHz */
1055	.unk2			= 3840,
1056	RADIOREGS(0x71, 0x40, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A,
1057		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1058		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1059	PHYREGS(0x0904, 0x0900, 0x08FC, 0x01C6, 0x01C7, 0x01C8),
1060  },
1061  {	.channel		= 153,
1062	.freq			= 5765, /* MHz */
1063	.unk2			= 3843,
1064	RADIOREGS(0x72, 0x81, 0x04, 0x02, 0xF8, 0x00, 0x03, 0x14,
1065		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1066		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1067	PHYREGS(0x0906, 0x0902, 0x08FE, 0x01C6, 0x01C7, 0x01C8),
1068  },
1069  {	.channel		= 154,
1070	.freq			= 5770, /* MHz */
1071	.unk2			= 3847,
1072	RADIOREGS(0x71, 0x41, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A,
1073		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1074		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1075	PHYREGS(0x0908, 0x0904, 0x0900, 0x01C6, 0x01C6, 0x01C7),
1076  },
1077  {	.channel		= 155,
1078	.freq			= 5775, /* MHz */
1079	.unk2			= 3850,
1080	RADIOREGS(0x72, 0x83, 0x04, 0x02, 0xF8, 0x00, 0x03, 0x14,
1081		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1082		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1083	PHYREGS(0x090A, 0x0906, 0x0902, 0x01C5, 0x01C6, 0x01C7),
1084  },
1085  {	.channel		= 156,
1086	.freq			= 5780, /* MHz */
1087	.unk2			= 3853,
1088	RADIOREGS(0x71, 0x42, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A,
1089		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1090		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1091	PHYREGS(0x090C, 0x0908, 0x0904, 0x01C5, 0x01C6, 0x01C6),
1092  },
1093  {	.channel		= 157,
1094	.freq			= 5785, /* MHz */
1095	.unk2			= 3857,
1096	RADIOREGS(0x72, 0x85, 0x04, 0x02, 0xF2, 0x00, 0x03, 0x14,
1097		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1098		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1099	PHYREGS(0x090E, 0x090A, 0x0906, 0x01C4, 0x01C5, 0x01C6),
1100  },
1101  {	.channel		= 158,
1102	.freq			= 5790, /* MHz */
1103	.unk2			= 3860,
1104	RADIOREGS(0x71, 0x43, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A,
1105		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1106		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1107	PHYREGS(0x0910, 0x090C, 0x0908, 0x01C4, 0x01C5, 0x01C6),
1108  },
1109  {	.channel		= 159,
1110	.freq			= 5795, /* MHz */
1111	.unk2			= 3863,
1112	RADIOREGS(0x72, 0x87, 0x04, 0x02, 0xF2, 0x00, 0x03, 0x14,
1113		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1114		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1115	PHYREGS(0x0912, 0x090E, 0x090A, 0x01C4, 0x01C4, 0x01C5),
1116  },
1117  {	.channel		= 160,
1118	.freq			= 5800, /* MHz */
1119	.unk2			= 3867,
1120	RADIOREGS(0x71, 0x44, 0x02, 0x01, 0x0A, 0x01, 0x04, 0x0A,
1121		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1122		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1123	PHYREGS(0x0914, 0x0910, 0x090C, 0x01C3, 0x01C4, 0x01C5),
1124  },
1125  {	.channel		= 161,
1126	.freq			= 5805, /* MHz */
1127	.unk2			= 3870,
1128	RADIOREGS(0x72, 0x89, 0x04, 0x01, 0xED, 0x00, 0x03, 0x14,
1129		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1130		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1131	PHYREGS(0x0916, 0x0912, 0x090E, 0x01C3, 0x01C4, 0x01C4),
1132  },
1133  {	.channel		= 162,
1134	.freq			= 5810, /* MHz */
1135	.unk2			= 3873,
1136	RADIOREGS(0x71, 0x45, 0x02, 0x01, 0x0A, 0x01, 0x04, 0x0A,
1137		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1138		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1139	PHYREGS(0x0918, 0x0914, 0x0910, 0x01C2, 0x01C3, 0x01C4),
1140  },
1141  {	.channel		= 163,
1142	.freq			= 5815, /* MHz */
1143	.unk2			= 3877,
1144	RADIOREGS(0x72, 0x8B, 0x04, 0x01, 0xED, 0x00, 0x03, 0x14,
1145		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1146		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1147	PHYREGS(0x091A, 0x0916, 0x0912, 0x01C2, 0x01C3, 0x01C4),
1148  },
1149  {	.channel		= 164,
1150	.freq			= 5820, /* MHz */
1151	.unk2			= 3880,
1152	RADIOREGS(0x71, 0x46, 0x02, 0x01, 0x0A, 0x01, 0x04, 0x0A,
1153		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1154		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1155	PHYREGS(0x091C, 0x0918, 0x0914, 0x01C2, 0x01C2, 0x01C3),
1156  },
1157  {	.channel		= 165,
1158	.freq			= 5825, /* MHz */
1159	.unk2			= 3883,
1160	RADIOREGS(0x72, 0x8D, 0x04, 0x01, 0xED, 0x00, 0x03, 0x14,
1161		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1162		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1163	PHYREGS(0x091E, 0x091A, 0x0916, 0x01C1, 0x01C2, 0x01C3),
1164  },
1165  {	.channel		= 166,
1166	.freq			= 5830, /* MHz */
1167	.unk2			= 3887,
1168	RADIOREGS(0x71, 0x47, 0x02, 0x01, 0x0A, 0x01, 0x04, 0x0A,
1169		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1170		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1171	PHYREGS(0x0920, 0x091C, 0x0918, 0x01C1, 0x01C2, 0x01C2),
1172  },
1173  {	.channel		= 168,
1174	.freq			= 5840, /* MHz */
1175	.unk2			= 3893,
1176	RADIOREGS(0x71, 0x48, 0x02, 0x01, 0x0A, 0x01, 0x04, 0x0A,
1177		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1178		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1179	PHYREGS(0x0924, 0x0920, 0x091C, 0x01C0, 0x01C1, 0x01C2),
1180  },
1181  {	.channel		= 170,
1182	.freq			= 5850, /* MHz */
1183	.unk2			= 3900,
1184	RADIOREGS(0x71, 0x49, 0x02, 0x01, 0xE0, 0x00, 0x04, 0x0A,
1185		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1186		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1187	PHYREGS(0x0928, 0x0924, 0x0920, 0x01BF, 0x01C0, 0x01C1),
1188  },
1189  {	.channel		= 172,
1190	.freq			= 5860, /* MHz */
1191	.unk2			= 3907,
1192	RADIOREGS(0x71, 0x4A, 0x02, 0x01, 0xDE, 0x00, 0x04, 0x0A,
1193		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1194		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1195	PHYREGS(0x092C, 0x0928, 0x0924, 0x01BF, 0x01BF, 0x01C0),
1196  },
1197  {	.channel		= 174,
1198	.freq			= 5870, /* MHz */
1199	.unk2			= 3913,
1200	RADIOREGS(0x71, 0x4B, 0x02, 0x00, 0xDB, 0x00, 0x04, 0x0A,
1201		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1202		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1203	PHYREGS(0x0930, 0x092C, 0x0928, 0x01BE, 0x01BF, 0x01BF),
1204  },
1205  {	.channel		= 176,
1206	.freq			= 5880, /* MHz */
1207	.unk2			= 3920,
1208	RADIOREGS(0x71, 0x4C, 0x02, 0x00, 0xD8, 0x00, 0x04, 0x0A,
1209		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1210		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1211	PHYREGS(0x0934, 0x0930, 0x092C, 0x01BD, 0x01BE, 0x01BF),
1212  },
1213  {	.channel		= 178,
1214	.freq			= 5890, /* MHz */
1215	.unk2			= 3927,
1216	RADIOREGS(0x71, 0x4D, 0x02, 0x00, 0xD6, 0x00, 0x04, 0x0A,
1217		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1218		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1219	PHYREGS(0x0938, 0x0934, 0x0930, 0x01BC, 0x01BD, 0x01BE),
1220  },
1221  {	.channel		= 180,
1222	.freq			= 5900, /* MHz */
1223	.unk2			= 3933,
1224	RADIOREGS(0x71, 0x4E, 0x02, 0x00, 0xD3, 0x00, 0x04, 0x0A,
1225		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1226		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1227	PHYREGS(0x093C, 0x0938, 0x0934, 0x01BC, 0x01BC, 0x01BD),
1228  },
1229  {	.channel		= 182,
1230	.freq			= 5910, /* MHz */
1231	.unk2			= 3940,
1232	RADIOREGS(0x71, 0x4F, 0x02, 0x00, 0xD6, 0x00, 0x04, 0x0A,
1233		  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1234		  0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1235	PHYREGS(0x0940, 0x093C, 0x0938, 0x01BB, 0x01BC, 0x01BC),
1236  },
1237  {	.channel		= 1,
1238	.freq			= 2412, /* MHz */
1239	.unk2			= 3216,
1240	RADIOREGS(0x73, 0x6C, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15,
1241		  0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C,
1242		  0x80, 0xFF, 0x88, 0x0D, 0x0C, 0x80),
1243	PHYREGS(0x03C9, 0x03C5, 0x03C1, 0x043A, 0x043F, 0x0443),
1244  },
1245  {	.channel		= 2,
1246	.freq			= 2417, /* MHz */
1247	.unk2			= 3223,
1248	RADIOREGS(0x73, 0x71, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15,
1249		  0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B,
1250		  0x80, 0xFF, 0x88, 0x0C, 0x0B, 0x80),
1251	PHYREGS(0x03CB, 0x03C7, 0x03C3, 0x0438, 0x043D, 0x0441),
1252  },
1253  {	.channel		= 3,
1254	.freq			= 2422, /* MHz */
1255	.unk2			= 3229,
1256	RADIOREGS(0x73, 0x76, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15,
1257		  0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A,
1258		  0x80, 0xFF, 0x88, 0x0C, 0x0A, 0x80),
1259	PHYREGS(0x03CD, 0x03C9, 0x03C5, 0x0436, 0x043A, 0x043F),
1260  },
1261  {	.channel		= 4,
1262	.freq			= 2427, /* MHz */
1263	.unk2			= 3236,
1264	RADIOREGS(0x73, 0x7B, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15,
1265		  0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A,
1266		  0x80, 0xFF, 0x88, 0x0C, 0x0A, 0x80),
1267	PHYREGS(0x03CF, 0x03CB, 0x03C7, 0x0434, 0x0438, 0x043D),
1268  },
1269  {	.channel		= 5,
1270	.freq			= 2432, /* MHz */
1271	.unk2			= 3243,
1272	RADIOREGS(0x73, 0x80, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15,
1273		  0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09,
1274		  0x80, 0xFF, 0x88, 0x0C, 0x09, 0x80),
1275	PHYREGS(0x03D1, 0x03CD, 0x03C9, 0x0431, 0x0436, 0x043A),
1276  },
1277  {	.channel		= 6,
1278	.freq			= 2437, /* MHz */
1279	.unk2			= 3249,
1280	RADIOREGS(0x73, 0x85, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15,
1281		  0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08,
1282		  0x80, 0xFF, 0x88, 0x0B, 0x08, 0x80),
1283	PHYREGS(0x03D3, 0x03CF, 0x03CB, 0x042F, 0x0434, 0x0438),
1284  },
1285  {	.channel		= 7,
1286	.freq			= 2442, /* MHz */
1287	.unk2			= 3256,
1288	RADIOREGS(0x73, 0x8A, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15,
1289		  0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07,
1290		  0x80, 0xFF, 0x88, 0x0A, 0x07, 0x80),
1291	PHYREGS(0x03D5, 0x03D1, 0x03CD, 0x042D, 0x0431, 0x0436),
1292  },
1293  {	.channel		= 8,
1294	.freq			= 2447, /* MHz */
1295	.unk2			= 3263,
1296	RADIOREGS(0x73, 0x8F, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15,
1297		  0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06,
1298		  0x80, 0xFF, 0x88, 0x0A, 0x06, 0x80),
1299	PHYREGS(0x03D7, 0x03D3, 0x03CF, 0x042B, 0x042F, 0x0434),
1300  },
1301  {	.channel		= 9,
1302	.freq			= 2452, /* MHz */
1303	.unk2			= 3269,
1304	RADIOREGS(0x73, 0x94, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15,
1305		  0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06,
1306		  0x80, 0xFF, 0x88, 0x09, 0x06, 0x80),
1307	PHYREGS(0x03D9, 0x03D5, 0x03D1, 0x0429, 0x042D, 0x0431),
1308  },
1309  {	.channel		= 10,
1310	.freq			= 2457, /* MHz */
1311	.unk2			= 3276,
1312	RADIOREGS(0x73, 0x99, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15,
1313		  0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05,
1314		  0x80, 0xFF, 0x88, 0x08, 0x05, 0x80),
1315	PHYREGS(0x03DB, 0x03D7, 0x03D3, 0x0427, 0x042B, 0x042F),
1316  },
1317  {	.channel		= 11,
1318	.freq			= 2462, /* MHz */
1319	.unk2			= 3283,
1320	RADIOREGS(0x73, 0x9E, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15,
1321		  0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04,
1322		  0x80, 0xFF, 0x88, 0x08, 0x04, 0x80),
1323	PHYREGS(0x03DD, 0x03D9, 0x03D5, 0x0424, 0x0429, 0x042D),
1324  },
1325  {	.channel		= 12,
1326	.freq			= 2467, /* MHz */
1327	.unk2			= 3289,
1328	RADIOREGS(0x73, 0xA3, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15,
1329		  0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03,
1330		  0x80, 0xFF, 0x88, 0x08, 0x03, 0x80),
1331	PHYREGS(0x03DF, 0x03DB, 0x03D7, 0x0422, 0x0427, 0x042B),
1332  },
1333  {	.channel		= 13,
1334	.freq			= 2472, /* MHz */
1335	.unk2			= 3296,
1336	RADIOREGS(0x73, 0xA8, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15,
1337		  0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03,
1338		  0x80, 0xFF, 0x88, 0x07, 0x03, 0x80),
1339	PHYREGS(0x03E1, 0x03DD, 0x03D9, 0x0420, 0x0424, 0x0429),
1340  },
1341  {	.channel		= 14,
1342	.freq			= 2484, /* MHz */
1343	.unk2			= 3312,
1344	RADIOREGS(0x73, 0xB4, 0x09, 0x0F, 0xFF, 0x01, 0x07, 0x15,
1345		  0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01,
1346		  0x80, 0xFF, 0x88, 0x07, 0x01, 0x80),
1347	PHYREGS(0x03E6, 0x03E2, 0x03DE, 0x041B, 0x041F, 0x0424),
1348  },
1349};
1350
1351void b2055_upload_inittab(struct bwn_mac *mac,
1352			  bool ghz5, bool ignore_uploadflag)
1353{
1354	const struct b2055_inittab_entry *e;
1355	unsigned int i, writes = 0;
1356	uint16_t value;
1357
1358	for (i = 0; i < nitems(b2055_inittab); i++) {
1359		e = &(b2055_inittab[i]);
1360		if (!(e->flags & B2055_INITTAB_ENTRY_OK))
1361			continue;
1362		if ((e->flags & B2055_INITTAB_UPLOAD) || ignore_uploadflag) {
1363			if (ghz5)
1364				value = e->ghz5;
1365			else
1366				value = e->ghz2;
1367			BWN_RF_WRITE(mac, i, value);
1368			if (++writes % 4 == 0)
1369				BWN_READ_4(mac, BWN_MACCTL); /* flush */
1370		}
1371	}
1372	/* One final flush */
1373	BWN_READ_4(mac, BWN_MACCTL);
1374}
1375
1376const struct bwn_nphy_channeltab_entry_rev2 *
1377bwn_nphy_get_chantabent_rev2(struct bwn_mac *mac, uint8_t channel)
1378{
1379	const struct bwn_nphy_channeltab_entry_rev2 *e;
1380	unsigned int i;
1381
1382	for (i = 0; i < nitems(bwn_nphy_channeltab_rev2); i++) {
1383		e = &(bwn_nphy_channeltab_rev2[i]);
1384		if (e->channel == channel)
1385			return e;
1386	}
1387
1388	return NULL;
1389}
1390