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