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
77struct 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
90static 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
351static 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
1346void 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
1371const struct bwn_nphy_channeltab_entry_rev2 *
1372bwn_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