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