if_bwn_radio_2055.c revision 300016
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: head/sys/gnu/dev/bwn/phy_n/if_bwn_radio_2055.c 300016 2016-05-17 07:09:24Z adrian $");
28
29/*
30 * The Broadcom Wireless LAN controller driver.
31 */
32
33#include <sys/param.h>
34#include <sys/systm.h>
35#include <sys/kernel.h>
36#include <sys/malloc.h>
37#include <sys/module.h>
38#include <sys/endian.h>
39#include <sys/errno.h>
40#include <sys/firmware.h>
41#include <sys/lock.h>
42#include <sys/mutex.h>
43#include <machine/bus.h>
44#include <machine/resource.h>
45#include <sys/bus.h>
46#include <sys/rman.h>
47#include <sys/socket.h>
48#include <sys/sockio.h>
49
50#include <net/ethernet.h>
51#include <net/if.h>
52#include <net/if_var.h>
53#include <net/if_arp.h>
54#include <net/if_dl.h>
55#include <net/if_llc.h>
56#include <net/if_media.h>
57#include <net/if_types.h>
58
59#include <dev/pci/pcivar.h>
60#include <dev/pci/pcireg.h>
61#include <dev/siba/siba_ids.h>
62#include <dev/siba/sibareg.h>
63#include <dev/siba/sibavar.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
79struct 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
92static 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
353static 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
1348void 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
1373const struct bwn_nphy_channeltab_entry_rev2 *
1374bwn_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