1/*
2 * Copyright (c) 2010 Broadcom Corporation
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
11 * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
13 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
14 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
18
19#include <linux/kernel.h>
20#include <linux/delay.h>
21#include <linux/cordic.h>
22
23#include <brcm_hw_ids.h>
24#include <aiutils.h>
25#include <chipcommon.h>
26#include <pmu.h>
27#include <d11.h>
28#include <phy_shim.h>
29#include "phy_int.h"
30#include "phy_hal.h"
31#include "phy_radio.h"
32#include "phyreg_n.h"
33#include "phytbl_n.h"
34#include "soc.h"
35
36#define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name)	\
37	read_radio_reg(pi, radio_type##_##jspace##_##reg_name |	\
38		       ((core == PHY_CORE_0) ? \
39			radio_type##_##jspace##0 : \
40			radio_type##_##jspace##1))
41
42#define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value)	\
43	write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
44			((core ==  PHY_CORE_0) ? \
45			 radio_type##_##jspace##0 : \
46			 radio_type##_##jspace##1), value)
47
48#define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
49	write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value)
50
51#define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name)	\
52	read_radio_reg(pi, ((core == PHY_CORE_0) ? \
53			    radio_type##_##jspace##0##_##reg_name : \
54			    radio_type##_##jspace##1##_##reg_name))
55
56#define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value)	\
57	write_radio_reg(pi, ((core ==  PHY_CORE_0) ? \
58			     radio_type##_##jspace##0##_##reg_name : \
59			     radio_type##_##jspace##1##_##reg_name), \
60			value)
61
62#define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name)	\
63	read_radio_reg(pi, ((core == PHY_CORE_0) ? \
64			     radio_type##_##reg_name##_##jspace##0 : \
65			     radio_type##_##reg_name##_##jspace##1))
66
67#define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value)	\
68	write_radio_reg(pi, ((core == PHY_CORE_0) ? \
69			radio_type##_##reg_name##_##jspace##0 : \
70			radio_type##_##reg_name##_##jspace##1), \
71			value)
72
73#define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
74#define NPHY_ACI_CHANNEL_DELTA 5
75#define NPHY_ACI_CHANNEL_SKIP 4
76#define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
77#define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
78#define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
79#define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
80#define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
81#define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
82
83#define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
84
85#define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
86
87#define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
88
89#define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
90
91#define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
92
93#define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
94
95#define NPHY_NOISE_NOASSOC_ENTER_TH  400
96
97#define NPHY_NOISE_ASSOC_ENTER_TH  400
98
99#define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH  400
100
101#define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
102#define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
103
104#define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
105
106#define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
107
108#define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
109
110#define NPHY_RSSICAL_MAXREAD 31
111
112#define NPHY_RSSICAL_NPOLL 8
113#define NPHY_RSSICAL_MAXD  (1<<20)
114#define NPHY_MIN_RXIQ_PWR 2
115
116#define NPHY_RSSICAL_W1_TARGET 25
117#define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
118#define NPHY_RSSICAL_NB_TARGET 0
119
120#define NPHY_RSSICAL_W1_TARGET_REV3 29
121#define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
122
123#define NPHY_CALSANITY_RSSI_NB_MAX_POS  9
124#define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
125#define NPHY_CALSANITY_RSSI_W1_MAX_POS  12
126#define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - \
127					NPHY_RSSICAL_MAXREAD)
128#define NPHY_CALSANITY_RSSI_W2_MAX_POS  NPHY_CALSANITY_RSSI_W1_MAX_POS
129#define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - \
130					NPHY_RSSICAL_MAXREAD)
131#define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
132#define NPHY_RSSI_NB_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
133			       ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
134#define NPHY_RSSI_W1_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
135			       ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
136#define NPHY_RSSI_W2_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
137			       ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
138
139#define NPHY_IQCAL_NUMGAINS 9
140#define NPHY_N_GCTL 0x66
141
142#define NPHY_PAPD_EPS_TBL_SIZE 64
143#define NPHY_PAPD_SCL_TBL_SIZE 64
144#define NPHY_NUM_DIG_FILT_COEFFS 15
145
146#define NPHY_PAPD_COMP_OFF 0
147#define NPHY_PAPD_COMP_ON  1
148
149#define NPHY_SROM_TEMPSHIFT             32
150#define NPHY_SROM_MAXTEMPOFFSET         16
151#define NPHY_SROM_MINTEMPOFFSET         -16
152
153#define NPHY_CAL_MAXTEMPDELTA           64
154
155#define NPHY_NOISEVAR_TBLLEN40 256
156#define NPHY_NOISEVAR_TBLLEN20 128
157
158#define NPHY_ANARXLPFBW_REDUCTIONFACT 7
159
160#define NPHY_ADJUSTED_MINCRSPOWER 0x1e
161
162/* 5357 Chip specific ChipControl register bits */
163#define CCTRL5357_EXTPA            (1<<14) /* extPA in ChipControl 1, bit 14 */
164#define CCTRL5357_ANT_MUX_2o3      (1<<15) /* 2o3 in ChipControl 1, bit 15 */
165
166#define NPHY_CAL_TSSISAMPS      64
167#define NPHY_TEST_TONE_FREQ_40MHz 4000
168#define NPHY_TEST_TONE_FREQ_20MHz 2500
169
170#define MAX_205x_RCAL_WAITLOOPS 10000
171
172#define NPHY_RXCAL_TONEAMP 181
173#define NPHY_RXCAL_TONEFREQ_40MHz 4000
174#define NPHY_RXCAL_TONEFREQ_20MHz 2000
175
176#define TXFILT_SHAPING_OFDM20   0
177#define TXFILT_SHAPING_OFDM40   1
178#define TXFILT_SHAPING_CCK      2
179#define TXFILT_DEFAULT_OFDM20   3
180#define TXFILT_DEFAULT_OFDM40   4
181
182struct nphy_iqcal_params {
183	u16 txlpf;
184	u16 txgm;
185	u16 pga;
186	u16 pad;
187	u16 ipa;
188	u16 cal_gain;
189	u16 ncorr[5];
190};
191
192struct nphy_txiqcal_ladder {
193	u8 percent;
194	u8 g_env;
195};
196
197struct nphy_ipa_txcalgains {
198	struct nphy_txgains gains;
199	bool useindex;
200	u8 index;
201};
202
203struct nphy_papd_restore_state {
204	u16 fbmix[2];
205	u16 vga_master[2];
206	u16 intpa_master[2];
207	u16 afectrl[2];
208	u16 afeoverride[2];
209	u16 pwrup[2];
210	u16 atten[2];
211	u16 mm;
212};
213
214struct nphy_ipa_txrxgain {
215	u16 hpvga;
216	u16 lpf_biq1;
217	u16 lpf_biq0;
218	u16 lna2;
219	u16 lna1;
220	s8 txpwrindex;
221};
222
223#define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
224
225static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz[] = {
226	{0, 0, 0, 0, 0, 100},
227	{0, 0, 0, 0, 0, 50},
228	{0, 0, 0, 0, 0, -1},
229	{0, 0, 0, 3, 0, -1},
230	{0, 0, 3, 3, 0, -1},
231	{0, 2, 3, 3, 0, -1}
232};
233
234static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz[] = {
235	{0, 0, 0, 0, 0, 128},
236	{0, 0, 0, 0, 0, 70},
237	{0, 0, 0, 0, 0, 20},
238	{0, 0, 0, 3, 0, 20},
239	{0, 0, 3, 3, 0, 20},
240	{0, 2, 3, 3, 0, 20}
241};
242
243static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = {
244	{0, 0, 0, 0, 0, 100},
245	{0, 0, 0, 0, 0, 50},
246	{0, 0, 0, 0, 0, -1},
247	{0, 0, 0, 3, 0, -1},
248	{0, 0, 3, 3, 0, -1},
249	{0, 0, 5, 3, 0, -1}
250};
251
252static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = {
253	{0, 0, 0, 0, 0, 10},
254	{0, 0, 0, 1, 0, 10},
255	{0, 0, 1, 2, 0, 10},
256	{0, 0, 1, 3, 0, 10},
257	{0, 0, 4, 3, 0, 10},
258	{0, 0, 6, 3, 0, 10}
259};
260
261enum {
262	NPHY_RXCAL_GAIN_INIT = 0,
263	NPHY_RXCAL_GAIN_UP,
264	NPHY_RXCAL_GAIN_DOWN
265};
266
267#define wlc_phy_get_papd_nphy(pi) \
268	(read_phy_reg((pi), 0x1e7) & \
269	 ((0x1 << 15) |	\
270	  (0x1 << 14) |	\
271	  (0x1 << 13)))
272
273static const u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
274	{-377, 137, -407, 208, -1527, 956, 93, 186, 93,
275	 230, -44, 230, 201, -191, 201},
276	{-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
277	 26, 34, -32, 34},
278	{-360, 164, -376, 164, -1533, 576, 308, -314, 308,
279	 121, -73, 121, 91, 124, 91},
280	{-295, 200, -363, 142, -1391, 826, 151, 301, 151,
281	 151, 301, 151, 602, -752, 602},
282	{-92, 58, -96, 49, -104, 44, 17, 35, 17,
283	 12, 25, 12, 13, 27, 13},
284	{-375, 136, -399, 209, -1479, 949, 130, 260, 130,
285	 230, -44, 230, 201, -191, 201},
286	{0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
287	 0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
288};
289
290struct chan_info_nphy_2055 {
291	u16 chan;
292	u16 freq;
293	uint unknown;
294	u8 RF_pll_ref;
295	u8 RF_rf_pll_mod1;
296	u8 RF_rf_pll_mod0;
297	u8 RF_vco_cap_tail;
298	u8 RF_vco_cal1;
299	u8 RF_vco_cal2;
300	u8 RF_pll_lf_c1;
301	u8 RF_pll_lf_r1;
302	u8 RF_pll_lf_c2;
303	u8 RF_lgbuf_cen_buf;
304	u8 RF_lgen_tune1;
305	u8 RF_lgen_tune2;
306	u8 RF_core1_lgbuf_a_tune;
307	u8 RF_core1_lgbuf_g_tune;
308	u8 RF_core1_rxrf_reg1;
309	u8 RF_core1_tx_pga_pad_tn;
310	u8 RF_core1_tx_mx_bgtrim;
311	u8 RF_core2_lgbuf_a_tune;
312	u8 RF_core2_lgbuf_g_tune;
313	u8 RF_core2_rxrf_reg1;
314	u8 RF_core2_tx_pga_pad_tn;
315	u8 RF_core2_tx_mx_bgtrim;
316	u16 PHY_BW1a;
317	u16 PHY_BW2;
318	u16 PHY_BW3;
319	u16 PHY_BW4;
320	u16 PHY_BW5;
321	u16 PHY_BW6;
322};
323
324struct chan_info_nphy_radio205x {
325	u16 chan;
326	u16 freq;
327	u8 RF_SYN_pll_vcocal1;
328	u8 RF_SYN_pll_vcocal2;
329	u8 RF_SYN_pll_refdiv;
330	u8 RF_SYN_pll_mmd2;
331	u8 RF_SYN_pll_mmd1;
332	u8 RF_SYN_pll_loopfilter1;
333	u8 RF_SYN_pll_loopfilter2;
334	u8 RF_SYN_pll_loopfilter3;
335	u8 RF_SYN_pll_loopfilter4;
336	u8 RF_SYN_pll_loopfilter5;
337	u8 RF_SYN_reserved_addr27;
338	u8 RF_SYN_reserved_addr28;
339	u8 RF_SYN_reserved_addr29;
340	u8 RF_SYN_logen_VCOBUF1;
341	u8 RF_SYN_logen_MIXER2;
342	u8 RF_SYN_logen_BUF3;
343	u8 RF_SYN_logen_BUF4;
344	u8 RF_RX0_lnaa_tune;
345	u8 RF_RX0_lnag_tune;
346	u8 RF_TX0_intpaa_boost_tune;
347	u8 RF_TX0_intpag_boost_tune;
348	u8 RF_TX0_pada_boost_tune;
349	u8 RF_TX0_padg_boost_tune;
350	u8 RF_TX0_pgaa_boost_tune;
351	u8 RF_TX0_pgag_boost_tune;
352	u8 RF_TX0_mixa_boost_tune;
353	u8 RF_TX0_mixg_boost_tune;
354	u8 RF_RX1_lnaa_tune;
355	u8 RF_RX1_lnag_tune;
356	u8 RF_TX1_intpaa_boost_tune;
357	u8 RF_TX1_intpag_boost_tune;
358	u8 RF_TX1_pada_boost_tune;
359	u8 RF_TX1_padg_boost_tune;
360	u8 RF_TX1_pgaa_boost_tune;
361	u8 RF_TX1_pgag_boost_tune;
362	u8 RF_TX1_mixa_boost_tune;
363	u8 RF_TX1_mixg_boost_tune;
364	u16 PHY_BW1a;
365	u16 PHY_BW2;
366	u16 PHY_BW3;
367	u16 PHY_BW4;
368	u16 PHY_BW5;
369	u16 PHY_BW6;
370};
371
372struct chan_info_nphy_radio2057 {
373	u16 chan;
374	u16 freq;
375	u8 RF_vcocal_countval0;
376	u8 RF_vcocal_countval1;
377	u8 RF_rfpll_refmaster_sparextalsize;
378	u8 RF_rfpll_loopfilter_r1;
379	u8 RF_rfpll_loopfilter_c2;
380	u8 RF_rfpll_loopfilter_c1;
381	u8 RF_cp_kpd_idac;
382	u8 RF_rfpll_mmd0;
383	u8 RF_rfpll_mmd1;
384	u8 RF_vcobuf_tune;
385	u8 RF_logen_mx2g_tune;
386	u8 RF_logen_mx5g_tune;
387	u8 RF_logen_indbuf2g_tune;
388	u8 RF_logen_indbuf5g_tune;
389	u8 RF_txmix2g_tune_boost_pu_core0;
390	u8 RF_pad2g_tune_pus_core0;
391	u8 RF_pga_boost_tune_core0;
392	u8 RF_txmix5g_boost_tune_core0;
393	u8 RF_pad5g_tune_misc_pus_core0;
394	u8 RF_lna2g_tune_core0;
395	u8 RF_lna5g_tune_core0;
396	u8 RF_txmix2g_tune_boost_pu_core1;
397	u8 RF_pad2g_tune_pus_core1;
398	u8 RF_pga_boost_tune_core1;
399	u8 RF_txmix5g_boost_tune_core1;
400	u8 RF_pad5g_tune_misc_pus_core1;
401	u8 RF_lna2g_tune_core1;
402	u8 RF_lna5g_tune_core1;
403	u16 PHY_BW1a;
404	u16 PHY_BW2;
405	u16 PHY_BW3;
406	u16 PHY_BW4;
407	u16 PHY_BW5;
408	u16 PHY_BW6;
409};
410
411struct chan_info_nphy_radio2057_rev5 {
412	u16 chan;
413	u16 freq;
414	u8 RF_vcocal_countval0;
415	u8 RF_vcocal_countval1;
416	u8 RF_rfpll_refmaster_sparextalsize;
417	u8 RF_rfpll_loopfilter_r1;
418	u8 RF_rfpll_loopfilter_c2;
419	u8 RF_rfpll_loopfilter_c1;
420	u8 RF_cp_kpd_idac;
421	u8 RF_rfpll_mmd0;
422	u8 RF_rfpll_mmd1;
423	u8 RF_vcobuf_tune;
424	u8 RF_logen_mx2g_tune;
425	u8 RF_logen_indbuf2g_tune;
426	u8 RF_txmix2g_tune_boost_pu_core0;
427	u8 RF_pad2g_tune_pus_core0;
428	u8 RF_lna2g_tune_core0;
429	u8 RF_txmix2g_tune_boost_pu_core1;
430	u8 RF_pad2g_tune_pus_core1;
431	u8 RF_lna2g_tune_core1;
432	u16 PHY_BW1a;
433	u16 PHY_BW2;
434	u16 PHY_BW3;
435	u16 PHY_BW4;
436	u16 PHY_BW5;
437	u16 PHY_BW6;
438};
439
440struct nphy_sfo_cfg {
441	u16 PHY_BW1a;
442	u16 PHY_BW2;
443	u16 PHY_BW3;
444	u16 PHY_BW4;
445	u16 PHY_BW5;
446	u16 PHY_BW6;
447};
448
449static const struct chan_info_nphy_2055 chan_info_nphy_2055[] = {
450	{
451	 184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
452	 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
453	 0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
454	{
455	 186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
456	 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
457	 0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
458	{
459	 188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
460	 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
461	 0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
462	{
463	 190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
464	 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
465	 0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
466	{
467	 192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
468	 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
469	 0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
470	{
471	 194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
472	 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
473	 0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
474	{
475	 196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
476	 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
477	 0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
478	{
479	 198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
480	 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
481	 0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
482	{
483	 200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
484	 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
485	 0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
486	{
487	 202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
488	 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
489	 0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
490	{
491	 204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
492	 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
493	 0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
494	{
495	 206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
496	 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
497	 0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
498	{
499	 208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
500	 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
501	 0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
502	{
503	 210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
504	 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
505	 0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
506	{
507	 212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
508	 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
509	 0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
510	{
511	 214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
512	 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
513	 0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
514	{
515	 216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
516	 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
517	 0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
518	{
519	 218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
520	 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
521	 0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
522	{
523	 220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
524	 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
525	 0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
526	{
527	 222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
528	 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
529	 0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
530	{
531	 224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
532	 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
533	 0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
534	{
535	 226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
536	 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
537	 0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
538	{
539	 228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
540	 0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
541	 0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
542	{
543	 32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
544	 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
545	 0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
546	{
547	 34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
548	 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
549	 0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
550	{
551	 36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
552	 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
553	 0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
554	{
555	 38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
556	 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
557	 0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
558	{
559	 40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
560	 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
561	 0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
562	{
563	 42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
564	 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
565	 0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
566	{
567	 44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
568	 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
569	 0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
570	{
571	 46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
572	 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
573	 0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
574	{
575	 48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
576	 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
577	 0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
578	{
579	 50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
580	 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
581	 0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
582	{
583	 52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
584	 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
585	 0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
586	{
587	 54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
588	 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
589	 0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
590	{
591	 56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
592	 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
593	 0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
594	{
595	 58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
596	 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
597	 0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
598	{
599	 60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
600	 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
601	 0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
602	{
603	 62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
604	 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
605	 0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
606	{
607	 64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
608	 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
609	 0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
610	{
611	 66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
612	 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
613	 0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
614	{
615	 68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
616	 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
617	 0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
618	{
619	 70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
620	 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
621	 0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
622	{
623	 72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
624	 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
625	 0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
626	{
627	 74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
628	 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
629	 0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
630	{
631	 76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
632	 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
633	 0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
634	{
635	 78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
636	 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
637	 0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
638	{
639	 80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
640	 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
641	 0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
642	{
643	 82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
644	 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
645	 0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
646	{
647	 84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
648	 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
649	 0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
650	{
651	 86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
652	 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
653	 0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
654	{
655	 88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
656	 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
657	 0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
658	{
659	 90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
660	 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
661	 0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
662	{
663	 92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
664	 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
665	 0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
666	{
667	 94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
668	 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
669	 0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
670	{
671	 96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
672	 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
673	 0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
674	{
675	 98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
676	 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
677	 0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
678	{
679	 100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
680	 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
681	 0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
682	{
683	 102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
684	 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
685	 0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
686	{
687	 104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
688	 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
689	 0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
690	{
691	 106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
692	 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
693	 0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
694	{
695	 108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
696	 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
697	 0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
698	{
699	 110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
700	 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
701	 0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
702	{
703	 112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
704	 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
705	 0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
706	{
707	 114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
708	 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
709	 0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
710	{
711	 116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
712	 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
713	 0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
714	{
715	 118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
716	 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
717	 0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
718	{
719	 120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
720	 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
721	 0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
722	{
723	 122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
724	 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
725	 0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
726	{
727	 124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
728	 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
729	 0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
730	{
731	 126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
732	 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
733	 0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
734	{
735	 128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
736	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
737	 0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
738	{
739	 130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
740	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
741	 0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
742	{
743	 132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
744	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
745	 0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
746	{
747	 134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
748	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
749	 0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
750	{
751	 136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
752	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
753	 0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
754	{
755	 138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
756	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
757	 0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
758	{
759	 140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
760	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
761	 0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
762	{
763	 142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
764	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
765	 0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
766	{
767	 144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
768	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
769	 0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
770	{
771	 145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
772	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
773	 0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
774	{
775	 146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
776	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
777	 0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
778	{
779	 147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
780	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
781	 0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
782	{
783	 148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
784	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
785	 0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
786	{
787	 149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
788	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
789	 0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
790	{
791	 150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
792	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
793	 0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
794	{
795	 151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
796	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
797	 0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
798	{
799	 152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
800	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
801	 0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
802	{
803	 153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
804	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
805	 0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
806	{
807	 154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
808	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
809	 0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
810	{
811	 155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
812	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
813	 0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
814	{
815	 156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
816	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
817	 0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
818	{
819	 157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
820	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
821	 0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
822	{
823	 158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
824	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
825	 0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
826	{
827	 159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
828	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
829	 0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
830	{
831	 160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
832	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
833	 0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
834	{
835	 161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
836	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
837	 0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
838	{
839	 162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
840	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
841	 0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
842	{
843	 163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
844	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
845	 0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
846	{
847	 164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
848	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
849	 0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
850	{
851	 165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
852	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
853	 0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
854	{
855	 166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
856	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
857	 0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
858	{
859	 168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
860	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
861	 0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
862	{
863	 170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
864	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
865	 0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
866	{
867	 172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
868	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
869	 0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
870	{
871	 174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
872	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
873	 0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
874	{
875	 176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
876	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
877	 0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
878	{
879	 178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
880	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
881	 0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
882	{
883	 180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
884	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
885	 0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
886	{
887	 182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
888	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
889	 0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
890	{
891	 1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
892	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
893	 0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
894	{
895	 2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
896	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
897	 0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
898	{
899	 3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
900	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
901	 0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
902	{
903	 4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
904	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
905	 0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
906	{
907	 5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
908	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
909	 0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
910	{
911	 6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
912	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
913	 0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
914	{
915	 7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
916	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
917	 0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
918	{
919	 8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
920	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
921	 0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
922	{
923	 9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
924	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
925	 0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
926	{
927	 10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
928	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
929	 0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
930	{
931	 11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
932	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
933	 0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
934	{
935	 12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
936	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
937	 0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
938	{
939	 13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
940	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
941	 0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
942	{
943	 14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
944	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
945	 0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
946};
947
948static const struct chan_info_nphy_radio205x chan_info_nphyrev3_2056[] = {
949	{
950	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
951	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
952	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
953	 0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
954	{
955	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
956	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
957	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
958	 0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
959	{
960	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
961	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
962	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
963	 0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
964	{
965	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
966	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
967	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
968	 0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
969	{
970	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
971	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
972	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
973	 0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
974	{
975	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
976	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
977	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
978	 0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
979	{
980	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
981	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
982	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
983	 0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
984	{
985	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
986	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
987	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
988	 0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
989	{
990	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
991	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
992	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
993	 0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
994	{
995	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
996	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
997	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
998	 0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
999	{
1000	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1001	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1002	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1003	 0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1004	{
1005	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1006	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1007	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1008	 0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1009	{
1010	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1011	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1012	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1013	 0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1014	{
1015	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1016	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1017	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1018	 0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1019	{
1020	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1021	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1022	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1023	 0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1024	{
1025	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1026	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1027	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1028	 0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1029	{
1030	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1031	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1032	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1033	 0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1034	{
1035	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1036	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1037	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1038	 0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1039	{
1040	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1041	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1042	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1043	 0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1044	{
1045	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1046	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1047	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1048	 0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1049	{
1050	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1051	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1052	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1053	 0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1054	{
1055	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1056	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1057	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1058	 0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1059	{
1060	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1061	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1062	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1063	 0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1064	{
1065	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1066	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1067	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1068	 0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1069	{
1070	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1071	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1072	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1073	 0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1074	{
1075	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1076	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1077	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1078	 0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1079	{
1080	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1081	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1082	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1083	 0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1084	{
1085	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1086	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1087	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1088	 0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1089	{
1090	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1091	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1092	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1093	 0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1094	{
1095	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1096	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1097	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1098	 0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1099	{
1100	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1101	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1102	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1103	 0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1104	{
1105	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1106	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1107	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1108	 0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1109	{
1110	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1111	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1112	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1113	 0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1114	{
1115	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1116	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1117	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1118	 0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1119	{
1120	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1121	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1122	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1123	 0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1124	{
1125	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1126	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1127	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1128	 0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1129	{
1130	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1131	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1132	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1133	 0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1134	{
1135	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1136	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1137	 0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1138	 0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1139	{
1140	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1141	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1142	 0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1143	 0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1144	{
1145	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1146	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1147	 0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1148	 0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1149	{
1150	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1151	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1152	 0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1153	 0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1154	{
1155	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1156	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1157	 0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1158	 0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1159	{
1160	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1161	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1162	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1163	 0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1164	{
1165	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1166	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1167	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1168	 0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1169	{
1170	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1171	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1172	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1173	 0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1174	{
1175	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1176	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1177	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1178	 0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1179	{
1180	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1181	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1182	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1183	 0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1184	{
1185	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1186	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1187	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1188	 0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1189	{
1190	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1191	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1192	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1193	 0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1194	{
1195	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1196	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1197	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1198	 0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1199	{
1200	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1201	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1202	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1203	 0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1204	{
1205	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1206	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1207	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1208	 0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1209	{
1210	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1211	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1212	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1213	 0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1214	{
1215	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1216	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1217	 0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1218	 0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1219	{
1220	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1221	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1222	 0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1223	 0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1224	{
1225	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1226	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1227	 0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1228	 0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1229	{
1230	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1231	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1232	 0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1233	 0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1234	{
1235	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1236	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1237	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1238	 0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1239	{
1240	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1241	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1242	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1243	 0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1244	{
1245	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1246	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1247	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1248	 0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1249	{
1250	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1251	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1252	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1253	 0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1254	{
1255	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1256	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1257	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1258	 0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1259	{
1260	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1261	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1262	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1263	 0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1264	{
1265	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1266	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1267	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1268	 0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1269	{
1270	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1271	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1272	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1273	 0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1274	{
1275	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1276	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1277	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1278	 0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1279	{
1280	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1281	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1282	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1283	 0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1284	{
1285	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1286	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1287	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1288	 0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1289	{
1290	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1291	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1292	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1293	 0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1294	{
1295	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1296	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1297	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1298	 0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1299	{
1300	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1301	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1302	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1303	 0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1304	{
1305	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1306	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1307	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1308	 0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1309	{
1310	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1311	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1312	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1313	 0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1314	{
1315	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1316	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1317	 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1318	 0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1319	{
1320	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1321	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1322	 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1323	 0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1324	{
1325	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1326	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1327	 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1328	 0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1329	{
1330	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1331	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1332	 0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1333	 0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1334	{
1335	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1336	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1337	 0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1338	 0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1339	{
1340	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1341	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1342	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1343	 0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1344	{
1345	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1346	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1347	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1348	 0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1349	{
1350	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1351	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1352	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1353	 0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1354	{
1355	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1356	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1357	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1358	 0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1359	{
1360	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1361	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1362	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1363	 0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1364	{
1365	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1366	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1367	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1368	 0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1369	{
1370	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1371	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1372	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1373	 0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1374	{
1375	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1376	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1377	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1378	 0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1379	{
1380	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1381	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1382	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1383	 0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1384	{
1385	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1386	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1387	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1388	 0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1389	{
1390	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1391	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1392	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1393	 0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1394	{
1395	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1396	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1397	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1398	 0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1399	{
1400	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1401	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1402	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1403	 0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1404	{
1405	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1406	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1407	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1408	 0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1409	{
1410	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1411	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1412	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1413	 0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1414	{
1415	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1416	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1417	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1418	 0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1419	{
1420	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1421	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1422	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1423	 0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1424	{
1425	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1426	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1427	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1428	 0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1429	{
1430	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1431	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1432	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1433	 0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1434	{
1435	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1436	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1437	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1438	 0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1439	{
1440	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1441	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1442	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1443	 0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1444	{
1445	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1446	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1447	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1448	 0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1449	{
1450	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1451	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1452	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1453	 0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1454	{
1455	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1456	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1457	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1458	 0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1459	{
1460	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1461	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1462	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1463	 0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1464	{
1465	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1466	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1467	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1468	 0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1469	{
1470	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1471	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1472	 0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1473	 0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1474	{
1475	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1476	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1477	 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1478	 0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1479	{
1480	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1481	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1482	 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1483	 0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1484	{
1485	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1486	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1487	 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1488	 0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1489	{
1490	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1491	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1492	 0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1493	 0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1494	{
1495	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1496	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1497	 0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1498	 0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1499	{
1500	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1501	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1502	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1503	 0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1504	{
1505	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1506	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1507	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1508	 0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1509	{
1510	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1511	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1512	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1513	 0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1514	{
1515	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1516	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1517	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1518	 0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1519	{
1520	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1521	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1522	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1523	 0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1524	{
1525	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1526	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1527	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1528	 0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1529	{
1530	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1531	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1532	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1533	 0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1534	{
1535	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1536	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1537	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1538	 0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1539	{
1540	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1541	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1542	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1543	 0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1544	{
1545	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1546	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1547	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1548	 0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1549	{
1550	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1551	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1552	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1553	 0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1554	{
1555	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1556	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1557	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1558	 0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1559	{
1560	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1561	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1562	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1563	 0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1564	{
1565	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1566	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1567	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1568	 0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1569};
1570
1571static const struct chan_info_nphy_radio205x chan_info_nphyrev4_2056_A1[] = {
1572	{
1573	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1574	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1575	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1576	 0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1577	{
1578	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1579	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1580	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1581	 0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1582	{
1583	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1584	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1585	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1586	 0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1587	{
1588	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1589	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1590	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1591	 0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1592	{
1593	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1594	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1595	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1596	 0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1597	{
1598	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1599	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1600	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1601	 0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1602	{
1603	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1604	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1605	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1606	 0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1607	{
1608	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1609	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1610	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1611	 0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1612	{
1613	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1614	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1615	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1616	 0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1617	{
1618	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1619	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1620	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1621	 0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1622	{
1623	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1624	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1625	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1626	 0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1627	{
1628	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1629	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1630	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1631	 0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1632	{
1633	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1634	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1635	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1636	 0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1637	{
1638	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1639	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1640	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1641	 0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1642	{
1643	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1644	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1645	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1646	 0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1647	{
1648	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1649	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1650	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1651	 0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1652	{
1653	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1654	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1655	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1656	 0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1657	{
1658	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1659	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1660	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1661	 0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1662	{
1663	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1664	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1665	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1666	 0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1667	{
1668	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1669	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1670	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1671	 0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1672	{
1673	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1674	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1675	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1676	 0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1677	{
1678	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1679	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1680	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1681	 0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1682	{
1683	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1684	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1685	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1686	 0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1687	{
1688	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1689	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1690	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1691	 0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1692	{
1693	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1694	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1695	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1696	 0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1697	{
1698	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1699	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1700	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1701	 0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1702	{
1703	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1704	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1705	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1706	 0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1707	{
1708	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1709	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1710	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1711	 0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1712	{
1713	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1714	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1715	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1716	 0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1717	{
1718	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1719	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1720	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1721	 0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1722	{
1723	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1724	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1725	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1726	 0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1727	{
1728	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1729	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1730	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1731	 0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1732	{
1733	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1734	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1735	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1736	 0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1737	{
1738	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1739	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1740	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1741	 0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1742	{
1743	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1744	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1745	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1746	 0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1747	{
1748	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1749	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1750	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1751	 0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1752	{
1753	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1754	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1755	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1756	 0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1757	{
1758	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1759	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1760	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1761	 0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1762	{
1763	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1764	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1765	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1766	 0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1767	{
1768	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1769	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1770	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1771	 0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1772	{
1773	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1774	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1775	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1776	 0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1777	{
1778	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1779	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1780	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1781	 0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1782	{
1783	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1784	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1785	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1786	 0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1787	{
1788	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1789	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1790	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1791	 0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1792	{
1793	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1794	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1795	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1796	 0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1797	{
1798	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1799	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1800	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1801	 0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1802	{
1803	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1804	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1805	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1806	 0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1807	{
1808	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1809	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1810	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1811	 0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1812	{
1813	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1814	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1815	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1816	 0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1817	{
1818	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1819	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1820	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1821	 0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1822	{
1823	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1824	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1825	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1826	 0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1827	{
1828	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1829	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1830	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1831	 0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1832	{
1833	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1834	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1835	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1836	 0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1837	{
1838	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1839	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1840	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1841	 0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1842	{
1843	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1844	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1845	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1846	 0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1847	{
1848	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1849	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1850	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1851	 0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1852	{
1853	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1854	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1855	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1856	 0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1857	{
1858	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1859	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1860	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1861	 0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1862	{
1863	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1864	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1865	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1866	 0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1867	{
1868	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1869	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1870	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1871	 0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1872	{
1873	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1874	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1875	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1876	 0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1877	{
1878	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1879	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1880	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1881	 0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1882	{
1883	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1884	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1885	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1886	 0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1887	{
1888	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1889	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1890	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1891	 0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1892	{
1893	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1894	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1895	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1896	 0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1897	{
1898	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1899	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1900	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1901	 0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1902	{
1903	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1904	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1905	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1906	 0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1907	{
1908	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1909	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1910	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1911	 0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1912	{
1913	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1914	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1915	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1916	 0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1917	{
1918	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1919	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1920	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1921	 0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1922	{
1923	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1924	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1925	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1926	 0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1927	{
1928	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1929	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1930	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1931	 0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1932	{
1933	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1934	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1935	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1936	 0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1937	{
1938	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1939	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1940	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1941	 0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1942	{
1943	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1944	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1945	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1946	 0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1947	{
1948	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1949	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1950	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1951	 0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1952	{
1953	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1954	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1955	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1956	 0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1957	{
1958	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1959	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1960	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1961	 0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1962	{
1963	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1964	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1965	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1966	 0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1967	{
1968	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1969	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1970	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1971	 0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1972	{
1973	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1974	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1975	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1976	 0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1977	{
1978	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1979	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1980	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1981	 0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1982	{
1983	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1984	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1985	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1986	 0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1987	{
1988	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1989	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1990	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1991	 0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1992	{
1993	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1994	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1995	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1996	 0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1997	{
1998	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1999	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
2000	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2001	 0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2002	{
2003	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2004	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2005	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2006	 0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2007	{
2008	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2009	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2010	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2011	 0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2012	{
2013	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2014	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2015	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2016	 0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2017	{
2018	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2019	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2020	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2021	 0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2022	{
2023	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2024	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2025	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2026	 0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2027	{
2028	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2029	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2030	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2031	 0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2032	{
2033	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2034	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2035	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2036	 0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2037	{
2038	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2039	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2040	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2041	 0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2042	{
2043	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2044	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2045	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2046	 0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2047	{
2048	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2049	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2050	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2051	 0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2052	{
2053	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2054	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2055	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2056	 0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2057	{
2058	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2059	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2060	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2061	 0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2062	{
2063	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2064	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2065	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2066	 0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2067	{
2068	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2069	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2070	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2071	 0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2072	{
2073	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2074	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2075	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2076	 0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2077	{
2078	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2079	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2080	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2081	 0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2082	{
2083	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2084	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2085	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2086	 0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2087	{
2088	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2089	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2090	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2091	 0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2092	{
2093	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2094	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2095	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2096	 0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2097	{
2098	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2099	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2100	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2101	 0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2102	{
2103	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2104	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2105	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2106	 0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2107	{
2108	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2109	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2110	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2111	 0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2112	{
2113	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2114	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2115	 0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2116	 0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2117	{
2118	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2119	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2120	 0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2121	 0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2122	{
2123	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2124	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2125	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2126	 0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2127	{
2128	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2129	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2130	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2131	 0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2132	{
2133	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2134	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2135	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2136	 0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2137	{
2138	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2139	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2140	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2141	 0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2142	{
2143	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2144	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2145	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2146	 0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2147	{
2148	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2149	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2150	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2151	 0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2152	{
2153	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2154	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2155	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2156	 0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2157	{
2158	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2159	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2160	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2161	 0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2162	{
2163	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2164	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2165	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2166	 0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2167	{
2168	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2169	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2170	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2171	 0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2172	{
2173	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2174	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2175	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2176	 0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2177	{
2178	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2179	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2180	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2181	 0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2182	{
2183	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2184	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2185	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2186	 0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2187	{
2188	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2189	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2190	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2191	 0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2192};
2193
2194static const struct chan_info_nphy_radio205x chan_info_nphyrev5_2056v5[] = {
2195	{
2196	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2197	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2198	 0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2199	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2200	{
2201	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2202	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2203	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2204	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2205	{
2206	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2207	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2208	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2209	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2210	{
2211	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2212	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2213	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2214	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2215	{
2216	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2217	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2218	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2219	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2220	{
2221	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2222	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2223	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2224	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2225	{
2226	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2227	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2228	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2229	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2230	{
2231	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2232	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2233	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2234	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2235	{
2236	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2237	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2238	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2239	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2240	{
2241	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2242	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2243	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2244	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2245	{
2246	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2247	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2248	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2249	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2250	{
2251	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2252	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2253	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2254	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2255	{
2256	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2257	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2258	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2259	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2260	{
2261	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2262	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2263	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2264	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2265	{
2266	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2267	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2268	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2269	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2270	{
2271	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2272	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2273	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2274	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2275	{
2276	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2277	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2278	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2279	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2280	{
2281	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2282	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2283	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2284	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2285	{
2286	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2287	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2288	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2289	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2290	{
2291	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2292	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2293	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2294	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2295	{
2296	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2297	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2298	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2299	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2300	{
2301	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2302	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2303	 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2304	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2305	{
2306	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2307	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2308	 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2309	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2310	{
2311	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2312	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2313	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2314	 0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2315	{
2316	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2317	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2318	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2319	 0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2320	{
2321	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2322	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2323	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2324	 0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2325	{
2326	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2327	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2328	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2329	 0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2330	{
2331	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2332	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2333	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2334	 0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2335	{
2336	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2337	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2338	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2339	 0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2340	{
2341	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2342	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2343	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2344	 0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2345	{
2346	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2347	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2348	 0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2349	 0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2350	{
2351	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2352	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2353	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2354	 0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2355	{
2356	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2357	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2358	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2359	 0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2360	{
2361	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2362	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2363	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2364	 0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2365	{
2366	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2367	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2368	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2369	 0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2370	{
2371	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2372	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2373	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2374	 0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2375	{
2376	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2377	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2378	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2379	 0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2380	{
2381	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2382	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2383	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2384	 0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2385	{
2386	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2387	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2388	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2389	 0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2390	{
2391	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2392	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2393	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2394	 0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2395	{
2396	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2397	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2398	 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2399	 0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2400	{
2401	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2402	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2403	 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2404	 0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2405	{
2406	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2407	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2408	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2409	 0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2410	{
2411	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2412	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2413	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2414	 0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2415	{
2416	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2417	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2418	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2419	 0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2420	{
2421	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2422	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2423	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2424	 0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2425	{
2426	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2427	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2428	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2429	 0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2430	{
2431	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2432	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2433	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2434	 0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2435	{
2436	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2437	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2438	 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2439	 0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2440	{
2441	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2442	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2443	 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2444	 0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2445	{
2446	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2447	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2448	 0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2449	 0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2450	{
2451	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2452	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2453	 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2454	 0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2455	{
2456	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2457	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2458	 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2459	 0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2460	{
2461	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2462	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2463	 0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2464	 0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2465	{
2466	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2467	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2468	 0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2469	 0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2470	{
2471	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2472	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2473	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2474	 0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2475	{
2476	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2477	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2478	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2479	 0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2480	{
2481	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2482	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2483	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2484	 0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2485	{
2486	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2487	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2488	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2489	 0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2490	{
2491	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2492	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2493	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2494	 0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2495	{
2496	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2497	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2498	 0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2499	 0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2500	{
2501	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2502	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2503	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2504	 0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2505	{
2506	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2507	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2508	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2509	 0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2510	{
2511	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2512	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2513	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2514	 0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2515	{
2516	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2517	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2518	 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2519	 0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2520	{
2521	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2522	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2523	 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2524	 0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2525	{
2526	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2527	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2528	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2529	 0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2530	{
2531	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2532	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2533	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2534	 0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2535	{
2536	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2537	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2538	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2539	 0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2540	{
2541	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2542	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2543	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2544	 0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2545	{
2546	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2547	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2548	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2549	 0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2550	{
2551	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2552	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2553	 0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2554	 0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2555	{
2556	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2557	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2558	 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2559	 0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2560	{
2561	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2562	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2563	 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2564	 0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2565	{
2566	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2567	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2568	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2569	 0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2570	{
2571	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2572	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2573	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2574	 0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2575	{
2576	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2577	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2578	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2579	 0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2580	{
2581	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2582	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2583	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2584	 0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2585	{
2586	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2587	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2588	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2589	 0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2590	{
2591	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2592	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2593	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2594	 0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2595	{
2596	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2597	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2598	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2599	 0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2600	{
2601	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2602	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2603	 0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2604	 0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2605	{
2606	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2607	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2608	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2609	 0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2610	{
2611	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2612	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2613	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2614	 0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2615	{
2616	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2617	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2618	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2619	 0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2620	{
2621	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2622	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2623	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2624	 0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2625	{
2626	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2627	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2628	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2629	 0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2630	{
2631	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2632	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2633	 0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2634	 0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2635	{
2636	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2637	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2638	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2639	 0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2640	{
2641	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2642	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2643	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2644	 0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2645	{
2646	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2647	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2648	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2649	 0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2650	{
2651	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2652	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2653	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2654	 0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2655	{
2656	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2657	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2658	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2659	 0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2660	{
2661	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2662	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2663	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2664	 0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2665	{
2666	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2667	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2668	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2669	 0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2670	{
2671	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2672	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2673	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2674	 0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2675	{
2676	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2677	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2678	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2679	 0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2680	{
2681	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2682	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2683	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2684	 0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2685	{
2686	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2687	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2688	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2689	 0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2690	{
2691	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2692	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2693	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2694	 0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2695	{
2696	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2697	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2698	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2699	 0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2700	{
2701	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2702	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2703	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2704	 0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2705	{
2706	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2707	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2708	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2709	 0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2710	{
2711	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2712	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2713	 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2714	 0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2715	{
2716	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2717	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2718	 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2719	 0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2720	{
2721	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2722	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2723	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2724	 0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2725	{
2726	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2727	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2728	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2729	 0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2730	{
2731	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2732	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2733	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2734	 0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2735	{
2736	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2737	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2738	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2739	 0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2740	{
2741	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2742	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2743	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2744	 0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2745	{
2746	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2747	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2748	 0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2749	 0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2750	{
2751	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2752	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2753	 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2754	 0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2755	{
2756	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2757	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2758	 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2759	 0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2760	{
2761	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2762	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2763	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2764	 0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2765	{
2766	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2767	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2768	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2769	 0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2770	{
2771	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2772	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2773	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2774	 0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2775	{
2776	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2777	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2778	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2779	 0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2780	{
2781	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2782	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2783	 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2784	 0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2785	{
2786	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2787	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2788	 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2789	 0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2790	{
2791	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2792	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2793	 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2794	 0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2795	{
2796	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2797	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2798	 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2799	 0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2800	{
2801	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2802	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2803	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2804	 0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2805	{
2806	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2807	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2808	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2809	 0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2810	{
2811	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2812	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2813	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2814	 0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2815};
2816
2817static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v6[] = {
2818	{
2819	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2820	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2821	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2822	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2823	{
2824	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2825	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2826	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2827	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2828	{
2829	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2830	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2831	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2832	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2833	{
2834	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2835	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2836	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2837	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2838	{
2839	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2840	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2841	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2842	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2843	{
2844	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2845	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2846	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2847	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2848	{
2849	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2850	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2851	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2852	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2853	{
2854	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2855	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2856	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2857	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2858	{
2859	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2860	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2861	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2862	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2863	{
2864	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2865	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2866	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2867	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2868	{
2869	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2870	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2871	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2872	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2873	{
2874	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2875	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2876	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2877	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2878	{
2879	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2880	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2881	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2882	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2883	{
2884	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2885	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2886	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2887	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2888	{
2889	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2890	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2891	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2892	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2893	{
2894	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2895	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2896	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2897	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2898	{
2899	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2900	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2901	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2902	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2903	{
2904	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2905	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2906	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2907	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2908	{
2909	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2910	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2911	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2912	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2913	{
2914	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2915	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2916	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2917	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2918	{
2919	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2920	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2921	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2922	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2923	{
2924	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2925	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2926	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2927	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2928	{
2929	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2930	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2931	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2932	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2933	{
2934	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2935	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2936	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2937	 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2938	{
2939	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2940	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2941	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2942	 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2943	{
2944	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2945	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2946	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2947	 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2948	{
2949	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2950	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2951	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2952	 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2953	{
2954	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2955	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2956	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2957	 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2958	{
2959	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2960	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2961	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2962	 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2963	{
2964	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2965	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2966	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2967	 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2968	{
2969	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2970	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2971	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2972	 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2973	{
2974	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2975	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2976	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2977	 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2978	{
2979	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2980	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2981	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2982	 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2983	{
2984	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2985	 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2986	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2987	 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2988	{
2989	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2990	 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2991	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2992	 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2993	{
2994	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2995	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2996	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2997	 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2998	{
2999	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3000	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3001	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3002	 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3003	{
3004	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3005	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3006	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3007	 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3008	{
3009	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3010	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3011	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3012	 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3013	{
3014	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3015	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
3016	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3017	 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3018	{
3019	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3020	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
3021	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3022	 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3023	{
3024	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3025	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3026	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3027	 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3028	{
3029	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3030	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3031	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3032	 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3033	{
3034	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3035	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3036	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3037	 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3038	{
3039	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3040	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3041	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3042	 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3043	{
3044	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3045	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3046	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3047	 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3048	{
3049	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3050	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3051	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3052	 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3053	{
3054	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3055	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3056	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3057	 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3058	{
3059	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3060	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3061	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3062	 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3063	{
3064	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3065	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3066	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3067	 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3068	{
3069	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3070	 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3071	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3072	 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3073	{
3074	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3075	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3076	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3077	 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3078	{
3079	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3080	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3081	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3082	 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3083	{
3084	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3085	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3086	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3087	 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3088	{
3089	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3090	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3091	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3092	 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3093	{
3094	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3095	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3096	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3097	 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3098	{
3099	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3100	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3101	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3102	 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3103	{
3104	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3105	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3106	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3107	 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3108	{
3109	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3110	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3111	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3112	 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3113	{
3114	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3115	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3116	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3117	 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3118	{
3119	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3120	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3121	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3122	 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3123	{
3124	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3125	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3126	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3127	 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3128	{
3129	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3130	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3131	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3132	 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3133	{
3134	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3135	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3136	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3137	 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3138	{
3139	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3140	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3141	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3142	 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3143	{
3144	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3145	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3146	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3147	 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3148	{
3149	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3150	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3151	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3152	 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3153	{
3154	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3155	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3156	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3157	 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3158	{
3159	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3160	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3161	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3162	 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3163	{
3164	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3165	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3166	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3167	 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3168	{
3169	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3170	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3171	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3172	 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3173	{
3174	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3175	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3176	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3177	 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3178	{
3179	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3180	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3181	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3182	 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3183	{
3184	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3185	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3186	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3187	 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3188	{
3189	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3190	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3191	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3192	 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3193	{
3194	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3195	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3196	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3197	 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3198	{
3199	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3200	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3201	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3202	 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3203	{
3204	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3205	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3206	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3207	 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3208	{
3209	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3210	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3211	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3212	 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3213	{
3214	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3215	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3216	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3217	 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3218	{
3219	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3220	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3221	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3222	 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3223	{
3224	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3225	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3226	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3227	 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3228	{
3229	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3230	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3231	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3232	 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3233	{
3234	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3235	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3236	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3237	 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3238	{
3239	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3240	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3241	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3242	 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3243	{
3244	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3245	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3246	 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3247	 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3248	{
3249	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3250	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3251	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3252	 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3253	{
3254	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3255	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3256	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3257	 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3258	{
3259	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3260	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3261	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3262	 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3263	{
3264	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3265	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3266	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3267	 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3268	{
3269	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3270	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3271	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3272	 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3273	{
3274	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3275	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3276	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3277	 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3278	{
3279	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3280	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3281	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3282	 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3283	{
3284	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3285	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3286	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3287	 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3288	{
3289	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3290	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3291	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3292	 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3293	{
3294	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3295	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3296	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3297	 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3298	{
3299	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3300	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3301	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3302	 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3303	{
3304	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3305	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3306	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3307	 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3308	{
3309	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3310	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3311	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3312	 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3313	{
3314	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3315	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3316	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3317	 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3318	{
3319	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3320	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3321	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3322	 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3323	{
3324	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3325	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3326	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3327	 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3328	{
3329	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3330	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3331	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3332	 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3333	{
3334	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3335	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3336	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3337	 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3338	{
3339	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3340	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3341	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3342	 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3343	{
3344	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3345	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3346	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3347	 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3348	{
3349	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3350	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3351	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3352	 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3353	{
3354	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3355	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3356	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3357	 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3358	{
3359	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3360	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3361	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3362	 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3363	{
3364	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3365	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3366	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3367	 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3368	{
3369	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3370	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3371	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3372	 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3373	{
3374	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3375	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3376	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3377	 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3378	{
3379	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3380	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3381	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3382	 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3383	{
3384	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3385	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3386	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3387	 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3388	{
3389	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3390	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3391	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3392	 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3393	{
3394	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3395	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3396	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3397	 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3398	{
3399	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3400	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3401	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3402	 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3403	{
3404	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3405	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3406	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3407	 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3408	{
3409	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3410	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3411	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3412	 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3413	{
3414	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3415	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3416	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3417	 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3418	{
3419	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3420	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3421	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3422	 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3423	{
3424	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3425	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3426	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3427	 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3428	{
3429	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3430	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3431	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3432	 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3433	{
3434	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3435	 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3436	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3437	 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3438};
3439
3440static const struct chan_info_nphy_radio205x chan_info_nphyrev5n6_2056v7[] = {
3441	{
3442	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3443	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3444	 0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3445	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3446	{
3447	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3448	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3449	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3450	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3451	{
3452	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3453	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3454	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3455	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3456	{
3457	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3458	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3459	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3460	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3461	{
3462	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3463	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3464	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3465	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3466	{
3467	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3468	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3469	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3470	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3471	{
3472	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3473	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3474	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3475	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3476	{
3477	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3478	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3479	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3480	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3481	{
3482	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3483	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3484	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3485	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3486	{
3487	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3488	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3489	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3490	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3491	{
3492	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3493	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3494	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3495	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3496	{
3497	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3498	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3499	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3500	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3501	{
3502	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3503	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3504	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3505	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3506	{
3507	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3508	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3509	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3510	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3511	{
3512	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3513	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3514	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3515	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3516	{
3517	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3518	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3519	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3520	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3521	{
3522	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3523	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3524	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3525	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3526	{
3527	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3528	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3529	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3530	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3531	{
3532	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3533	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3534	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3535	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3536	{
3537	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3538	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3539	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3540	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3541	{
3542	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3543	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3544	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3545	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3546	{
3547	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3548	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3549	 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3550	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3551	{
3552	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3553	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3554	 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3555	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3556	{
3557	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3558	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3559	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3560	 0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3561	{
3562	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3563	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3564	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3565	 0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3566	{
3567	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3568	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3569	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3570	 0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3571	{
3572	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3573	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3574	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3575	 0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3576	{
3577	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3578	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3579	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3580	 0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3581	{
3582	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3583	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3584	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3585	 0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3586	{
3587	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3588	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3589	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3590	 0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3591	{
3592	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3593	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3594	 0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3595	 0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3596	{
3597	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3598	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3599	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3600	 0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3601	{
3602	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3603	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3604	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3605	 0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3606	{
3607	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3608	 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3609	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3610	 0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3611	{
3612	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3613	 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3614	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3615	 0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3616	{
3617	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3618	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3619	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3620	 0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3621	{
3622	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3623	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3624	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3625	 0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3626	{
3627	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3628	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3629	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3630	 0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3631	{
3632	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3633	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3634	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3635	 0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3636	{
3637	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3638	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3639	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3640	 0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3641	{
3642	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3643	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3644	 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3645	 0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3646	{
3647	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3648	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3649	 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3650	 0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3651	{
3652	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3653	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3654	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3655	 0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3656	{
3657	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3658	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3659	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3660	 0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3661	{
3662	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3663	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3664	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3665	 0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3666	{
3667	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3668	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3669	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3670	 0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3671	{
3672	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3673	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3674	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3675	 0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3676	{
3677	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3678	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3679	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3680	 0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3681	{
3682	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3683	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3684	 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3685	 0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3686	{
3687	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3688	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3689	 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3690	 0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3691	{
3692	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3693	 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3694	 0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3695	 0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3696	{
3697	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3698	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3699	 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3700	 0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3701	{
3702	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3703	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3704	 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3705	 0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3706	{
3707	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3708	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3709	 0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3710	 0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3711	{
3712	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3713	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3714	 0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3715	 0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3716	{
3717	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3718	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3719	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3720	 0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3721	{
3722	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3723	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3724	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3725	 0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3726	{
3727	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3728	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3729	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3730	 0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3731	{
3732	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3733	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3734	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3735	 0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3736	{
3737	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3738	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3739	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3740	 0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3741	{
3742	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3743	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3744	 0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3745	 0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3746	{
3747	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3748	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3749	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3750	 0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3751	{
3752	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3753	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3754	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3755	 0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3756	{
3757	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3758	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3759	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3760	 0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3761	{
3762	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3763	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3764	 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3765	 0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3766	{
3767	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3768	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3769	 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3770	 0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3771	{
3772	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3773	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3774	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3775	 0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3776	{
3777	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3778	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3779	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3780	 0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3781	{
3782	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3783	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3784	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3785	 0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3786	{
3787	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3788	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3789	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3790	 0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3791	{
3792	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3793	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3794	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3795	 0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3796	{
3797	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3798	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3799	 0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3800	 0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3801	{
3802	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3803	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3804	 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3805	 0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3806	{
3807	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3808	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3809	 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3810	 0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3811	{
3812	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3813	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3814	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3815	 0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3816	{
3817	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3818	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3819	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3820	 0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3821	{
3822	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3823	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3824	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3825	 0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3826	{
3827	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3828	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3829	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3830	 0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3831	{
3832	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3833	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3834	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3835	 0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3836	{
3837	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3838	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3839	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3840	 0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3841	{
3842	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3843	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3844	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3845	 0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3846	{
3847	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3848	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3849	 0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3850	 0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3851	{
3852	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3853	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3854	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3855	 0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3856	{
3857	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3858	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3859	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3860	 0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3861	{
3862	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3863	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3864	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3865	 0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3866	{
3867	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3868	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3869	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3870	 0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3871	{
3872	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3873	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3874	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3875	 0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3876	{
3877	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3878	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3879	 0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3880	 0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3881	{
3882	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3883	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3884	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3885	 0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3886	{
3887	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3888	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3889	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3890	 0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3891	{
3892	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3893	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3894	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3895	 0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3896	{
3897	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3898	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3899	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3900	 0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3901	{
3902	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3903	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3904	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3905	 0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3906	{
3907	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3908	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3909	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3910	 0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3911	{
3912	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3913	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3914	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3915	 0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3916	{
3917	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3918	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3919	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3920	 0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3921	{
3922	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3923	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3924	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3925	 0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3926	{
3927	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3928	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3929	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3930	 0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3931	{
3932	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3933	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3934	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3935	 0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3936	{
3937	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3938	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3939	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3940	 0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3941	{
3942	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3943	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3944	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3945	 0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3946	{
3947	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3948	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3949	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3950	 0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3951	{
3952	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3953	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3954	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3955	 0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3956	{
3957	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3958	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3959	 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3960	 0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3961	{
3962	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3963	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3964	 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3965	 0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3966	{
3967	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3968	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3969	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3970	 0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3971	{
3972	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3973	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3974	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3975	 0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3976	{
3977	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3978	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3979	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3980	 0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3981	{
3982	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3983	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3984	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3985	 0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3986	{
3987	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3988	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3989	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3990	 0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3991	{
3992	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3993	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3994	 0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3995	 0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3996	{
3997	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3998	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3999	 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4000	 0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4001	{
4002	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4003	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
4004	 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4005	 0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4006	{
4007	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4008	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4009	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4010	 0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4011	{
4012	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4013	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
4014	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4015	 0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4016	{
4017	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4018	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
4019	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4020	 0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4021	{
4022	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4023	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
4024	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
4025	 0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4026	{
4027	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4028	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
4029	 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4030	 0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4031	{
4032	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4033	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4034	 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4035	 0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4036	{
4037	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4038	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4039	 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4040	 0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4041	{
4042	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4043	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4044	 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4045	 0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4046	{
4047	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4048	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4049	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4050	 0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4051	{
4052	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4053	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4054	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4055	 0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4056	{
4057	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4058	 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4059	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4060	 0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4061};
4062
4063static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v8[] = {
4064	{
4065	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4066	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4067	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4068	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4069	{
4070	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4071	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4072	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4073	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4074	{
4075	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4076	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4077	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4078	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4079	{
4080	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4081	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4082	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4083	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4084	{
4085	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4086	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4087	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4088	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4089	{
4090	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4091	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4092	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4093	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4094	{
4095	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4096	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4097	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4098	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4099	{
4100	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4101	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4102	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4103	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4104	{
4105	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4106	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4107	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4108	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4109	{
4110	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4111	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4112	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4113	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4114	{
4115	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4116	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4117	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4118	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4119	{
4120	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4121	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4122	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4123	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4124	{
4125	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4126	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4127	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4128	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4129	{
4130	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4131	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4132	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4133	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4134	{
4135	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4136	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4137	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4138	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4139	{
4140	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4141	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4142	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4143	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4144	{
4145	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4146	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4147	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4148	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4149	{
4150	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4151	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4152	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4153	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4154	{
4155	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4156	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4157	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4158	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4159	{
4160	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4161	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4162	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4163	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4164	{
4165	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4166	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4167	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4168	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4169	{
4170	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4171	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4172	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4173	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4174	{
4175	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4176	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4177	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4178	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4179	{
4180	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4181	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4182	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4183	 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4184	{
4185	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4186	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4187	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4188	 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4189	{
4190	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4191	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4192	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4193	 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4194	{
4195	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4196	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4197	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4198	 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4199	{
4200	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4201	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4202	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4203	 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4204	{
4205	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4206	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4207	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4208	 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4209	{
4210	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4211	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4212	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4213	 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4214	{
4215	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4216	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4217	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4218	 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4219	{
4220	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4221	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4222	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4223	 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4224	{
4225	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4226	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4227	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4228	 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4229	{
4230	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4231	 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4232	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4233	 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4234	{
4235	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4236	 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4237	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4238	 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4239	{
4240	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4241	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4242	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4243	 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4244	{
4245	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4246	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4247	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4248	 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4249	{
4250	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4251	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4252	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4253	 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4254	{
4255	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4256	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4257	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4258	 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4259	{
4260	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4261	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4262	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4263	 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4264	{
4265	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4266	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4267	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4268	 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4269	{
4270	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4271	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4272	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4273	 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4274	{
4275	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4276	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4277	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4278	 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4279	{
4280	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4281	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4282	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4283	 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4284	{
4285	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4286	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4287	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4288	 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4289	{
4290	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4291	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4292	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4293	 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4294	{
4295	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4296	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4297	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4298	 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4299	{
4300	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4301	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4302	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4303	 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4304	{
4305	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4306	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4307	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4308	 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4309	{
4310	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4311	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4312	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4313	 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4314	{
4315	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4316	 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4317	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4318	 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4319	{
4320	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4321	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4322	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4323	 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4324	{
4325	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4326	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4327	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4328	 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4329	{
4330	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4331	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4332	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4333	 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4334	{
4335	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4336	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4337	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4338	 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4339	{
4340	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4341	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4342	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4343	 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4344	{
4345	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4346	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4347	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4348	 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4349	{
4350	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4351	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4352	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4353	 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4354	{
4355	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4356	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4357	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4358	 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4359	{
4360	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4361	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4362	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4363	 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4364	{
4365	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4366	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4367	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4368	 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4369	{
4370	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4371	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4372	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4373	 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4374	{
4375	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4376	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4377	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4378	 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4379	{
4380	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4381	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4382	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4383	 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4384	{
4385	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4386	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4387	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4388	 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4389	{
4390	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4391	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4392	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4393	 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4394	{
4395	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4396	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4397	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4398	 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4399	{
4400	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4401	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4402	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4403	 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4404	{
4405	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4406	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4407	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4408	 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4409	{
4410	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4411	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4412	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4413	 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4414	{
4415	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4416	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4417	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4418	 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4419	{
4420	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4421	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4422	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4423	 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4424	{
4425	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4426	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4427	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4428	 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4429	{
4430	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4431	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4432	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4433	 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4434	{
4435	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4436	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4437	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4438	 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4439	{
4440	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4441	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4442	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4443	 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4444	{
4445	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4446	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4447	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4448	 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4449	{
4450	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4451	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4452	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4453	 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4454	{
4455	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4456	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4457	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4458	 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4459	{
4460	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4461	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4462	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4463	 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4464	{
4465	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4466	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4467	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4468	 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4469	{
4470	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4471	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4472	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4473	 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4474	{
4475	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4476	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4477	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4478	 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4479	{
4480	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4481	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4482	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4483	 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4484	{
4485	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4486	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4487	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4488	 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4489	{
4490	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4491	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4492	 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4493	 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4494	{
4495	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4496	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4497	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4498	 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4499	{
4500	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4501	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4502	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4503	 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4504	{
4505	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4506	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4507	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4508	 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4509	{
4510	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4511	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4512	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4513	 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4514	{
4515	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4516	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4517	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4518	 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4519	{
4520	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4521	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4522	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4523	 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4524	{
4525	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4526	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4527	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4528	 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4529	{
4530	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4531	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4532	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4533	 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4534	{
4535	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4536	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4537	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4538	 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4539	{
4540	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4541	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4542	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4543	 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4544	{
4545	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4546	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4547	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4548	 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4549	{
4550	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4551	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4552	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4553	 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4554	{
4555	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4556	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4557	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4558	 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4559	{
4560	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4561	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4562	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4563	 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4564	{
4565	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4566	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4567	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4568	 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4569	{
4570	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4571	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4572	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4573	 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4574	{
4575	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4576	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4577	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4578	 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4579	{
4580	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4581	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4582	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4583	 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4584	{
4585	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4586	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4587	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4588	 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4589	{
4590	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4591	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4592	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4593	 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4594	{
4595	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4596	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4597	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4598	 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4599	{
4600	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4601	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4602	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4603	 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4604	{
4605	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4606	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4607	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4608	 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4609	{
4610	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4611	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4612	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4613	 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4614	{
4615	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4616	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4617	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4618	 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4619	{
4620	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4621	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4622	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4623	 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4624	{
4625	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4626	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4627	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4628	 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4629	{
4630	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4631	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4632	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4633	 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4634	{
4635	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4636	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4637	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4638	 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4639	{
4640	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4641	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4642	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4643	 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4644	{
4645	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4646	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4647	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4648	 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4649	{
4650	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4651	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4652	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4653	 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4654	{
4655	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4656	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4657	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4658	 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4659	{
4660	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4661	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4662	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4663	 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4664	{
4665	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4666	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4667	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4668	 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4669	{
4670	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4671	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4672	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4673	 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4674	{
4675	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4676	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4677	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4678	 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4679	{
4680	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4681	 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4682	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4683	 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4684};
4685
4686static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v11[] = {
4687	{
4688	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4689	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4690	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4691	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4692	{
4693	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4694	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4695	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4696	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4697	{
4698	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4699	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4700	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4701	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4702	{
4703	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4704	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4705	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4706	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4707	{
4708	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4709	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4710	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4711	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4712	{
4713	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4714	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4715	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4716	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4717	{
4718	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4719	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4720	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4721	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4722	{
4723	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4724	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4725	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4726	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4727	{
4728	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4729	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4730	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4731	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4732	{
4733	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4734	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4735	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4736	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4737	{
4738	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4739	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4740	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4741	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4742	{
4743	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4744	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4745	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4746	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4747	{
4748	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4749	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4750	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4751	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4752	{
4753	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4754	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4755	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4756	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4757	{
4758	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4759	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4760	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4761	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4762	{
4763	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4764	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4765	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4766	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4767	{
4768	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4769	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4770	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4771	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4772	{
4773	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4774	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4775	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4776	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4777	{
4778	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4779	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4780	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4781	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4782	{
4783	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4784	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4785	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4786	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4787	{
4788	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4789	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4790	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4791	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4792	{
4793	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4794	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4795	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4796	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4797	{
4798	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4799	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4800	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4801	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4802	{
4803	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4804	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4805	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4806	 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4807	{
4808	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4809	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4810	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4811	 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4812	{
4813	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4814	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4815	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4816	 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4817	{
4818	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4819	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4820	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4821	 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4822	{
4823	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4824	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4825	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4826	 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4827	{
4828	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4829	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4830	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4831	 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4832	{
4833	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4834	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4835	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4836	 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4837	{
4838	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4839	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4840	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4841	 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4842	{
4843	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4844	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4845	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4846	 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4847	{
4848	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4849	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4850	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4851	 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4852	{
4853	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4854	 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4855	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4856	 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4857	{
4858	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4859	 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4860	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4861	 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4862	{
4863	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4864	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4865	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4866	 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4867	{
4868	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4869	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4870	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4871	 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4872	{
4873	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4874	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4875	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4876	 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4877	{
4878	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4879	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4880	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4881	 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4882	{
4883	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4884	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4885	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4886	 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4887	{
4888	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4889	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4890	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4891	 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4892	{
4893	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4894	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4895	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4896	 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4897	{
4898	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4899	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4900	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4901	 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4902	{
4903	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4904	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4905	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4906	 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4907	{
4908	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4909	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4910	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4911	 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4912	{
4913	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4914	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4915	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4916	 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4917	{
4918	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4919	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4920	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4921	 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4922	{
4923	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4924	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4925	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4926	 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4927	{
4928	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4929	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4930	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4931	 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4932	{
4933	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4934	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4935	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4936	 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4937	{
4938	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4939	 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4940	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4941	 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4942	{
4943	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4944	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4945	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4946	 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4947	{
4948	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4949	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4950	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4951	 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4952	{
4953	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4954	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4955	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4956	 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4957	{
4958	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4959	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4960	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4961	 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4962	{
4963	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4964	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4965	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4966	 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4967	{
4968	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4969	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4970	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4971	 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4972	{
4973	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4974	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4975	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4976	 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4977	{
4978	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4979	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4980	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4981	 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4982	{
4983	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4984	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4985	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4986	 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4987	{
4988	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4989	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4990	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4991	 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4992	{
4993	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4994	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4995	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4996	 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4997	{
4998	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4999	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
5000	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5001	 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
5002	{
5003	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5004	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
5005	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5006	 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
5007	{
5008	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5009	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
5010	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5011	 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
5012	{
5013	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5014	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
5015	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5016	 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
5017	{
5018	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5019	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
5020	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5021	 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
5022	{
5023	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
5024	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5025	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5026	 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
5027	{
5028	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
5029	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5030	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5031	 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
5032	{
5033	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5034	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5035	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5036	 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5037	{
5038	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5039	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5040	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5041	 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5042	{
5043	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5044	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5045	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5046	 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5047	{
5048	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5049	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5050	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5051	 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5052	{
5053	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5054	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5055	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5056	 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5057	{
5058	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5059	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5060	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5061	 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5062	{
5063	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5064	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5065	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5066	 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5067	{
5068	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5069	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5070	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5071	 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5072	{
5073	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5074	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5075	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5076	 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5077	{
5078	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5079	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5080	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5081	 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5082	{
5083	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5084	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5085	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5086	 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5087	{
5088	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5089	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5090	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5091	 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5092	{
5093	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5094	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5095	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5096	 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5097	{
5098	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5099	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5100	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5101	 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5102	{
5103	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5104	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5105	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5106	 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5107	{
5108	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5109	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5110	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5111	 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5112	{
5113	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5114	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5115	 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5116	 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5117	{
5118	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5119	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5120	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5121	 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5122	{
5123	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5124	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5125	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5126	 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5127	{
5128	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5129	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5130	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5131	 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5132	{
5133	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5134	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5135	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5136	 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5137	{
5138	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5139	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5140	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5141	 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5142	{
5143	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5144	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5145	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5146	 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5147	{
5148	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5149	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5150	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5151	 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5152	{
5153	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5154	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5155	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5156	 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5157	{
5158	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5159	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5160	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5161	 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5162	{
5163	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5164	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5165	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5166	 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5167	{
5168	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5169	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5170	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5171	 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5172	{
5173	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5174	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5175	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5176	 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5177	{
5178	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5179	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5180	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5181	 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5182	{
5183	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5184	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5185	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5186	 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5187	{
5188	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5189	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5190	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5191	 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5192	{
5193	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5194	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5195	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5196	 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5197	{
5198	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5199	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5200	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5201	 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5202	{
5203	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5204	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5205	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5206	 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5207	{
5208	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5209	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5210	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5211	 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5212	{
5213	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5214	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5215	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5216	 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5217	{
5218	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5219	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5220	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5221	 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5222	{
5223	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5224	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5225	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5226	 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5227	{
5228	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5229	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5230	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5231	 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5232	{
5233	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5234	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5235	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5236	 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5237	{
5238	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5239	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5240	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5241	 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5242	{
5243	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5244	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5245	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5246	 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5247	{
5248	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5249	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5250	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5251	 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5252	{
5253	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5254	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5255	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5256	 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5257	{
5258	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5259	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5260	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5261	 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5262	{
5263	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5264	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5265	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5266	 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5267	{
5268	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5269	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5270	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5271	 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5272	{
5273	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5274	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5275	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5276	 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5277	{
5278	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5279	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5280	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5281	 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5282	{
5283	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5284	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5285	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5286	 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5287	{
5288	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5289	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5290	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5291	 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5292	{
5293	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5294	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5295	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5296	 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5297	{
5298	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5299	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5300	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5301	 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5302	{
5303	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5304	 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5305	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5306	 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5307};
5308
5309static const struct chan_info_nphy_radio2057 chan_info_nphyrev7_2057_rev4[] = {
5310	{
5311	 184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5312	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5313	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5314	 0x0215,
5315	 0x0216,
5316	 },
5317	{
5318	 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5319	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5320	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5321	 0x0214,
5322	 0x0215,
5323	 },
5324	{
5325	 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5326	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5327	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5328	 0x0213,
5329	 0x0214,
5330	 },
5331	{
5332	 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5333	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5334	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5335	 0x0212,
5336	 0x0213,
5337	 },
5338	{
5339	 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5340	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5341	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5342	 0x0211,
5343	 0x0212,
5344	 },
5345	{
5346	 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5347	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5348	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5349	 0x020f,
5350	 0x0211,
5351	 },
5352	{
5353	 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5354	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5355	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5356	 0x020e,
5357	 0x020f,
5358	 },
5359	{
5360	 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5361	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5362	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5363	 0x020d,
5364	 0x020e,
5365	 },
5366	{
5367	 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5368	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5369	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5370	 0x020c,
5371	 0x020d,
5372	 },
5373	{
5374	 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5375	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5376	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5377	 0x020b,
5378	 0x020c,
5379	 },
5380	{
5381	 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5382	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5383	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5384	 0x020a,
5385	 0x020b,
5386	 },
5387	{
5388	 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5389	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5390	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5391	 0x0209,
5392	 0x020a,
5393	 },
5394	{
5395	 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5396	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5397	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5398	 0x0208,
5399	 0x0209,
5400	 },
5401	{
5402	 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5403	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5404	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5405	 0x0207,
5406	 0x0208,
5407	 },
5408	{
5409	 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5410	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5411	 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5412	 0x0206,
5413	 0x0207,
5414	 },
5415	{
5416	 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5417	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5418	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5419	 0x0205,
5420	 0x0206,
5421	 },
5422	{
5423	 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5424	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5425	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5426	 0x0204,
5427	 0x0205,
5428	 },
5429	{
5430	 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5431	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5432	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5433	 0x0203,
5434	 0x0204,
5435	 },
5436	{
5437	 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5438	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5439	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5440	 0x0202,
5441	 0x0203,
5442	 },
5443	{
5444	 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5445	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5446	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5447	 0x0201,
5448	 0x0202,
5449	 },
5450	{
5451	 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5452	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5453	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5454	 0x0200,
5455	 0x0201,
5456	 },
5457	{
5458	 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5459	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5460	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5461	 0x01ff,
5462	 0x0200,
5463	 },
5464	{
5465	 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5466	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5467	 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5468	 0x01fe,
5469	 0x01ff,
5470	 },
5471	{
5472	 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5473	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5474	 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5475	 0x01fc,
5476	 0x01fd,
5477	 },
5478	{
5479	 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5480	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5481	 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5482	 0x01fb,
5483	 0x01fc,
5484	 },
5485	{
5486	 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5487	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5488	 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5489	 0x01fa,
5490	 0x01fb,
5491	 },
5492	{
5493	 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5494	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5495	 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5496	 0x01f9,
5497	 0x01fa,
5498	 },
5499	{
5500	 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5501	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5502	 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5503	 0x01f8,
5504	 0x01f9,
5505	 },
5506	{
5507	 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5508	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5509	 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5510	 0x01f7,
5511	 0x01f8,
5512	 },
5513	{
5514	 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5515	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5516	 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5517	 0x01f6,
5518	 0x01f7,
5519	 },
5520	{
5521	 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5522	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5523	 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5524	 0x01f5,
5525	 0x01f6,
5526	 },
5527	{
5528	 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5529	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5530	 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5531	 0x01f4,
5532	 0x01f5,
5533	 },
5534	{
5535	 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5536	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5537	 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5538	 0x01f3,
5539	 0x01f4,
5540	 },
5541	{
5542	 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5543	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5544	 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5545	 0x01f2,
5546	 0x01f3,
5547	 },
5548	{
5549	 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5550	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5551	 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5552	 0x01f1,
5553	 0x01f2,
5554	 },
5555	{
5556	 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5557	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5558	 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5559	 0x01f0,
5560	 0x01f1,
5561	 },
5562	{
5563	 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5564	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5565	 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5566	 0x01f0,
5567	 0x01f0,
5568	 },
5569	{
5570	 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5571	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5572	 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5573	 0x01ef,
5574	 0x01f0,
5575	 },
5576	{
5577	 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5578	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5579	 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5580	 0x01ee,
5581	 0x01ef,
5582	 },
5583	{
5584	 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5585	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5586	 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5587	 0x01ed,
5588	 0x01ee,
5589	 },
5590	{
5591	 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5592	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5593	 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5594	 0x01ec,
5595	 0x01ed,
5596	 },
5597	{
5598	 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5599	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5600	 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5601	 0x01eb,
5602	 0x01ec,
5603	 },
5604	{
5605	 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5606	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5607	 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5608	 0x01ea,
5609	 0x01eb,
5610	 },
5611	{
5612	 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5613	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5614	 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5615	 0x01e9,
5616	 0x01ea,
5617	 },
5618	{
5619	 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5620	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5621	 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5622	 0x01e8,
5623	 0x01e9,
5624	 },
5625	{
5626	 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5627	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5628	 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5629	 0x01e7,
5630	 0x01e8,
5631	 },
5632	{
5633	 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5634	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5635	 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5636	 0x01e6,
5637	 0x01e7,
5638	 },
5639	{
5640	 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5641	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5642	 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5643	 0x01e5,
5644	 0x01e6,
5645	 },
5646	{
5647	 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5648	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5649	 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5650	 0x01e5,
5651	 0x01e5,
5652	 },
5653	{
5654	 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5655	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5656	 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5657	 0x01e4,
5658	 0x01e5,
5659	 },
5660	{
5661	 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5662	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5663	 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5664	 0x01e3,
5665	 0x01e4,
5666	 },
5667	{
5668	 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5669	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5670	 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5671	 0x01e2,
5672	 0x01e3,
5673	 },
5674	{
5675	 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5676	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5677	 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5678	 0x01e1,
5679	 0x01e2,
5680	 },
5681	{
5682	 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5683	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5684	 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5685	 0x01e0,
5686	 0x01e1,
5687	 },
5688	{
5689	 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5690	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5691	 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5692	 0x01df,
5693	 0x01e0,
5694	 },
5695	{
5696	 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5697	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5698	 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5699	 0x01de,
5700	 0x01df,
5701	 },
5702	{
5703	 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5704	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5705	 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5706	 0x01dd,
5707	 0x01de,
5708	 },
5709	{
5710	 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5711	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5712	 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5713	 0x01dd,
5714	 0x01dd,
5715	 },
5716	{
5717	 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5718	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5719	 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5720	 0x01dc,
5721	 0x01dd,
5722	 },
5723	{
5724	 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5725	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5726	 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5727	 0x01db,
5728	 0x01dc,
5729	 },
5730	{
5731	 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5732	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5733	 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5734	 0x01da,
5735	 0x01db,
5736	 },
5737	{
5738	 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5739	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5740	 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5741	 0x01d9,
5742	 0x01da,
5743	 },
5744	{
5745	 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5746	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5747	 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5748	 0x01d8,
5749	 0x01d9,
5750	 },
5751	{
5752	 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5753	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5754	 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5755	 0x01d7,
5756	 0x01d8,
5757	 },
5758	{
5759	 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5760	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5761	 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5762	 0x01d7,
5763	 0x01d7,
5764	 },
5765	{
5766	 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5767	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5768	 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5769	 0x01d6,
5770	 0x01d7,
5771	 },
5772	{
5773	 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5774	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5775	 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5776	 0x01d5,
5777	 0x01d6,
5778	 },
5779	{
5780	 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5781	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5782	 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5783	 0x01d4,
5784	 0x01d5,
5785	 },
5786	{
5787	 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5788	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5789	 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5790	 0x01d3,
5791	 0x01d4,
5792	 },
5793	{
5794	 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5795	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5796	 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5797	 0x01d2,
5798	 0x01d3,
5799	 },
5800	{
5801	 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5802	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5803	 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5804	 0x01d2,
5805	 0x01d2,
5806	 },
5807	{
5808	 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5809	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5810	 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5811	 0x01d1,
5812	 0x01d2,
5813	 },
5814	{
5815	 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5816	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5817	 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5818	 0x01d0,
5819	 0x01d1,
5820	 },
5821	{
5822	 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5823	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5824	 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5825	 0x01cf,
5826	 0x01d0,
5827	 },
5828	{
5829	 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5830	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5831	 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5832	 0x01ce,
5833	 0x01cf,
5834	 },
5835	{
5836	 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5837	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5838	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5839	 0x01ce,
5840	 0x01ce,
5841	 },
5842	{
5843	 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5844	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5845	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5846	 0x01cd,
5847	 0x01ce,
5848	 },
5849	{
5850	 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5851	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5852	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5853	 0x01cc,
5854	 0x01cd,
5855	 },
5856	{
5857	 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5858	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5859	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5860	 0x01cb,
5861	 0x01cc,
5862	 },
5863	{
5864	 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5865	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5866	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5867	 0x01ca,
5868	 0x01cb,
5869	 },
5870	{
5871	 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5872	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5873	 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5874	 0x01ca,
5875	 0x01cb,
5876	 },
5877	{
5878	 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5879	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5880	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5881	 0x01c9,
5882	 0x01ca,
5883	 },
5884	{
5885	 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5886	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5887	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5888	 0x01c9,
5889	 0x01ca,
5890	 },
5891	{
5892	 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5893	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5894	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5895	 0x01c9,
5896	 0x01c9,
5897	 },
5898	{
5899	 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5900	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5901	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5902	 0x01c8,
5903	 0x01c9,
5904	 },
5905	{
5906	 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5907	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5908	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5909	 0x01c8,
5910	 0x01c9,
5911	 },
5912	{
5913	 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5914	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5915	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5916	 0x01c8,
5917	 0x01c8,
5918	 },
5919	{
5920	 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5921	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5922	 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5923	 0x01c7,
5924	 0x01c8,
5925	 },
5926	{
5927	 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5928	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5929	 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5930	 0x01c7,
5931	 0x01c8,
5932	 },
5933	{
5934	 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5935	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5936	 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5937	 0x01c6,
5938	 0x01c7,
5939	 },
5940	{
5941	 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5942	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5943	 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5944	 0x01c6,
5945	 0x01c7,
5946	 },
5947	{
5948	 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5949	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5950	 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5951	 0x01c6,
5952	 0x01c6,
5953	 },
5954	{
5955	 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5956	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5957	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5958	 0x01c5,
5959	 0x01c6,
5960	 },
5961	{
5962	 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5963	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5964	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5965	 0x01c5,
5966	 0x01c6,
5967	 },
5968	{
5969	 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5970	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5971	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5972	 0x01c4,
5973	 0x01c5,
5974	 },
5975	{
5976	 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5977	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5978	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5979	 0x01c4,
5980	 0x01c5,
5981	 },
5982	{
5983	 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5984	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5985	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5986	 0x01c4,
5987	 0x01c4,
5988	 },
5989	{
5990	 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5991	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5992	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5993	 0x01c3,
5994	 0x01c4,
5995	 },
5996	{
5997	 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5998	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5999	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6000	 0x01c3,
6001	 0x01c4,
6002	 },
6003	{
6004	 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6005	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6006	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6007	 0x01c2,
6008	 0x01c3,
6009	 },
6010	{
6011	 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6012	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6013	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6014	 0x01c2,
6015	 0x01c3,
6016	 },
6017	{
6018	 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6019	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6020	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6021	 0x01c2,
6022	 0x01c2,
6023	 },
6024	{
6025	 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6026	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6027	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6028	 0x01c1,
6029	 0x01c2,
6030	 },
6031	{
6032	 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6033	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6034	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6035	 0x01c0,
6036	 0x01c1,
6037	 },
6038	{
6039	 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6040	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6041	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6042	 0x01bf,
6043	 0x01c0,
6044	 },
6045	{
6046	 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6047	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6048	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6049	 0x01bf,
6050	 0x01bf,
6051	 },
6052	{
6053	 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6054	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6055	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6056	 0x01be,
6057	 0x01bf,
6058	 },
6059	{
6060	 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6061	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6062	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6063	 0x01bd,
6064	 0x01be,
6065	 },
6066	{
6067	 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6068	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6069	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6070	 0x01bc,
6071	 0x01bd,
6072	 },
6073	{
6074	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6075	 0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6076	 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6077	 0x043f,
6078	 0x0443,
6079	 },
6080	{
6081	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6082	 0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6083	 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6084	 0x043d,
6085	 0x0441,
6086	 },
6087	{
6088	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6089	 0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6090	 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6091	 0x043a,
6092	 0x043f,
6093	 },
6094	{
6095	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6096	 0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6097	 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6098	 0x0438,
6099	 0x043d,
6100	 },
6101	{
6102	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6103	 0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6104	 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6105	 0x0436,
6106	 0x043a,
6107	 },
6108	{
6109	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6110	 0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6111	 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6112	 0x0434,
6113	 0x0438,
6114	 },
6115	{
6116	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6117	 0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6118	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6119	 0x0431,
6120	 0x0436,
6121	 },
6122	{
6123	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6124	 0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6125	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6126	 0x042f,
6127	 0x0434,
6128	 },
6129	{
6130	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6131	 0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6132	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6133	 0x042d,
6134	 0x0431,
6135	 },
6136	{
6137	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6138	 0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6139	 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6140	 0x042b,
6141	 0x042f,
6142	 },
6143	{
6144	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6145	 0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6146	 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6147	 0x0429,
6148	 0x042d,
6149	 },
6150	{
6151	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6152	 0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6153	 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6154	 0x0427,
6155	 0x042b,
6156	 },
6157	{
6158	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6159	 0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6160	 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6161	 0x0424,
6162	 0x0429,
6163	 },
6164	{
6165	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6166	 0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6167	 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6168	 0x041f,
6169	 0x0424}
6170};
6171
6172static const struct chan_info_nphy_radio2057_rev5
6173chan_info_nphyrev8_2057_rev5[] = {
6174	{
6175	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6176	 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6177	 0x043a, 0x043f, 0x0443},
6178	{
6179	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6180	 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6181	 0x0438, 0x043d, 0x0441},
6182	{
6183	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6184	 0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6185	 0x0436, 0x043a, 0x043f},
6186	{
6187	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6188	 0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6189	 0x0434, 0x0438, 0x043d},
6190	{
6191	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6192	 0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6193	 0x0431, 0x0436, 0x043a},
6194	{
6195	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6196	 0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6197	 0x042f, 0x0434, 0x0438},
6198	{
6199	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6200	 0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6201	 0x042d, 0x0431, 0x0436},
6202	{
6203	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6204	 0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6205	 0x042b, 0x042f, 0x0434},
6206	{
6207	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6208	 0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6209	 0x0429, 0x042d, 0x0431},
6210	{
6211	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6212	 0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6213	 0x0427, 0x042b, 0x042f},
6214	{
6215	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6216	 0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6217	 0x0424, 0x0429, 0x042d},
6218	{
6219	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6220	 0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6221	 0x0422, 0x0427, 0x042b},
6222	{
6223	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6224	 0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6225	 0x0420, 0x0424, 0x0429},
6226	{
6227	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6228	 0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6229	 0x041b, 0x041f, 0x0424}
6230};
6231
6232static const struct chan_info_nphy_radio2057_rev5
6233chan_info_nphyrev9_2057_rev5v1[] = {
6234	{
6235	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6236	 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6237	 0x043a, 0x043f, 0x0443},
6238	{
6239	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6240	 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6241	 0x0438, 0x043d, 0x0441},
6242	{
6243	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6244	 0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6245	 0x0436, 0x043a, 0x043f},
6246	{
6247	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6248	 0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6249	 0x0434, 0x0438, 0x043d},
6250	{
6251	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6252	 0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6253	 0x0431, 0x0436, 0x043a},
6254	{
6255	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6256	 0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6257	 0x042f, 0x0434, 0x0438},
6258	{
6259	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6260	 0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6261	 0x042d, 0x0431, 0x0436},
6262	{
6263	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6264	 0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6265	 0x042b, 0x042f, 0x0434},
6266	{
6267	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6268	 0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6269	 0x0429, 0x042d, 0x0431},
6270	{
6271	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6272	 0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6273	 0x0427, 0x042b, 0x042f},
6274	{
6275	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6276	 0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6277	 0x0424, 0x0429, 0x042d},
6278	{
6279	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6280	 0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6281	 0x0422, 0x0427, 0x042b},
6282	{
6283	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6284	 0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6285	 0x0420, 0x0424, 0x0429},
6286	{
6287	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6288	 0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6289	 0x041b, 0x041f, 0x0424}
6290};
6291
6292static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev7[] = {
6293	{
6294	 184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6295	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6296	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6297	 0x0215,
6298	 0x0216},
6299	{
6300	 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6301	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6302	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6303	 0x0214,
6304	 0x0215},
6305	{
6306	 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6307	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6308	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6309	 0x0213,
6310	 0x0214},
6311	{
6312	 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6313	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6314	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6315	 0x0212,
6316	 0x0213},
6317	{
6318	 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6319	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6320	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6321	 0x0211,
6322	 0x0212},
6323	{
6324	 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6325	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6326	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6327	 0x020f,
6328	 0x0211},
6329	{
6330	 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6331	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6332	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6333	 0x020e,
6334	 0x020f},
6335	{
6336	 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6337	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6338	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6339	 0x020d,
6340	 0x020e},
6341	{
6342	 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6343	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6344	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6345	 0x020c,
6346	 0x020d},
6347	{
6348	 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6349	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6350	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6351	 0x020b,
6352	 0x020c},
6353	{
6354	 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6355	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6356	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6357	 0x020a,
6358	 0x020b},
6359	{
6360	 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6361	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6362	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6363	 0x0209,
6364	 0x020a},
6365	{
6366	 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6367	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6368	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6369	 0x0208,
6370	 0x0209},
6371	{
6372	 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6373	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6374	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6375	 0x0207,
6376	 0x0208},
6377	{
6378	 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6379	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6380	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6381	 0x0206,
6382	 0x0207},
6383	{
6384	 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6385	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6386	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6387	 0x0205,
6388	 0x0206},
6389	{
6390	 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6391	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6392	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6393	 0x0204,
6394	 0x0205},
6395	{
6396	 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6397	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6398	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6399	 0x0203,
6400	 0x0204},
6401	{
6402	 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6403	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6404	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6405	 0x0202,
6406	 0x0203},
6407	{
6408	 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6409	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6410	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6411	 0x0201,
6412	 0x0202},
6413	{
6414	 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6415	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6416	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6417	 0x0200,
6418	 0x0201},
6419	{
6420	 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6421	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6422	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6423	 0x01ff,
6424	 0x0200},
6425	{
6426	 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6427	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6428	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6429	 0x01fe,
6430	 0x01ff},
6431	{
6432	 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6433	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6434	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6435	 0x01fc,
6436	 0x01fd},
6437	{
6438	 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6439	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6440	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6441	 0x01fb,
6442	 0x01fc},
6443	{
6444	 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6445	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6446	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6447	 0x01fa,
6448	 0x01fb},
6449	{
6450	 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6451	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6452	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6453	 0x01f9,
6454	 0x01fa},
6455	{
6456	 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6457	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6458	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6459	 0x01f8,
6460	 0x01f9},
6461	{
6462	 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6463	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6464	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6465	 0x01f7,
6466	 0x01f8},
6467	{
6468	 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6469	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6470	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6471	 0x01f6,
6472	 0x01f7},
6473	{
6474	 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6475	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6476	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6477	 0x01f5,
6478	 0x01f6},
6479	{
6480	 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6481	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6482	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6483	 0x01f4,
6484	 0x01f5},
6485	{
6486	 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6487	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6488	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6489	 0x01f3,
6490	 0x01f4},
6491	{
6492	 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6493	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6494	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6495	 0x01f2,
6496	 0x01f3},
6497	{
6498	 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6499	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6500	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6501	 0x01f1,
6502	 0x01f2},
6503	{
6504	 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6505	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6506	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6507	 0x01f0,
6508	 0x01f1},
6509	{
6510	 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6511	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6512	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6513	 0x01f0,
6514	 0x01f0},
6515	{
6516	 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6517	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6518	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6519	 0x01ef,
6520	 0x01f0},
6521	{
6522	 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6523	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6524	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6525	 0x01ee,
6526	 0x01ef},
6527	{
6528	 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6529	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6530	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6531	 0x01ed,
6532	 0x01ee},
6533	{
6534	 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6535	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6536	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6537	 0x01ec,
6538	 0x01ed},
6539	{
6540	 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6541	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6542	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6543	 0x01eb,
6544	 0x01ec},
6545	{
6546	 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6547	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6548	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6549	 0x01ea,
6550	 0x01eb},
6551	{
6552	 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6553	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6554	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6555	 0x01e9,
6556	 0x01ea},
6557	{
6558	 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6559	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6560	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6561	 0x01e8,
6562	 0x01e9},
6563	{
6564	 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6565	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6566	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6567	 0x01e7,
6568	 0x01e8},
6569	{
6570	 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6571	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6572	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6573	 0x01e6,
6574	 0x01e7},
6575	{
6576	 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6577	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6578	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6579	 0x01e5,
6580	 0x01e6},
6581	{
6582	 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6583	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6584	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6585	 0x01e5,
6586	 0x01e5},
6587	{
6588	 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6589	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6590	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6591	 0x01e4,
6592	 0x01e5},
6593	{
6594	 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6595	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6596	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6597	 0x01e3,
6598	 0x01e4},
6599	{
6600	 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6601	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6602	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6603	 0x01e2,
6604	 0x01e3},
6605	{
6606	 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6607	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6608	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6609	 0x01e1,
6610	 0x01e2},
6611	{
6612	 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6613	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6614	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6615	 0x01e0,
6616	 0x01e1},
6617	{
6618	 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6619	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6620	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6621	 0x01df,
6622	 0x01e0},
6623	{
6624	 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6625	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6626	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6627	 0x01de,
6628	 0x01df},
6629	{
6630	 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6631	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6632	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6633	 0x01dd,
6634	 0x01de},
6635	{
6636	 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6637	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6638	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6639	 0x01dd,
6640	 0x01dd},
6641	{
6642	 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6643	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6644	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6645	 0x01dc,
6646	 0x01dd},
6647	{
6648	 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6649	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6650	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6651	 0x01db,
6652	 0x01dc},
6653	{
6654	 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6655	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6656	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6657	 0x01da,
6658	 0x01db},
6659	{
6660	 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6661	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6662	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6663	 0x01d9,
6664	 0x01da},
6665	{
6666	 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6667	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6668	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6669	 0x01d8,
6670	 0x01d9},
6671	{
6672	 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6673	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6674	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6675	 0x01d7,
6676	 0x01d8},
6677	{
6678	 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6679	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6680	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6681	 0x01d7,
6682	 0x01d7},
6683	{
6684	 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6685	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6686	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6687	 0x01d6,
6688	 0x01d7},
6689	{
6690	 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6691	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6692	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6693	 0x01d5,
6694	 0x01d6},
6695	{
6696	 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6697	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6698	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6699	 0x01d4,
6700	 0x01d5},
6701	{
6702	 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6703	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6704	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6705	 0x01d3,
6706	 0x01d4},
6707	{
6708	 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6709	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6710	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6711	 0x01d2,
6712	 0x01d3},
6713	{
6714	 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6715	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6716	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6717	 0x01d2,
6718	 0x01d2},
6719	{
6720	 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6721	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6722	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6723	 0x01d1,
6724	 0x01d2},
6725	{
6726	 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6727	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6728	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6729	 0x01d0,
6730	 0x01d1},
6731	{
6732	 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6733	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6734	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6735	 0x01cf,
6736	 0x01d0},
6737	{
6738	 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6739	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6740	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6741	 0x01ce,
6742	 0x01cf},
6743	{
6744	 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6745	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6746	 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6747	 0x01ce,
6748	 0x01ce},
6749	{
6750	 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6751	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6752	 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6753	 0x01cd,
6754	 0x01ce},
6755	{
6756	 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6757	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6758	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6759	 0x01cc,
6760	 0x01cd},
6761	{
6762	 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6763	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6764	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6765	 0x01cb,
6766	 0x01cc},
6767	{
6768	 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6769	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6770	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6771	 0x01ca,
6772	 0x01cb},
6773	{
6774	 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6775	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6776	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6777	 0x01ca,
6778	 0x01cb},
6779	{
6780	 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6781	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6782	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6783	 0x01c9,
6784	 0x01ca},
6785	{
6786	 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6787	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6788	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6789	 0x01c9,
6790	 0x01ca},
6791	{
6792	 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6793	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6794	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6795	 0x01c9,
6796	 0x01c9},
6797	{
6798	 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6799	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6800	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6801	 0x01c8,
6802	 0x01c9},
6803	{
6804	 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6805	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6806	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6807	 0x01c8,
6808	 0x01c9},
6809	{
6810	 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6811	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6812	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6813	 0x01c8,
6814	 0x01c8},
6815	{
6816	 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6817	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6818	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6819	 0x01c7,
6820	 0x01c8},
6821	{
6822	 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6823	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6824	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6825	 0x01c7,
6826	 0x01c8},
6827	{
6828	 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6829	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6830	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6831	 0x01c6,
6832	 0x01c7},
6833	{
6834	 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6835	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6836	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6837	 0x01c6,
6838	 0x01c7},
6839	{
6840	 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6841	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6842	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6843	 0x01c6,
6844	 0x01c6},
6845	{
6846	 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6847	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6848	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6849	 0x01c5,
6850	 0x01c6},
6851	{
6852	 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6853	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6854	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6855	 0x01c5,
6856	 0x01c6},
6857	{
6858	 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6859	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6860	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6861	 0x01c4,
6862	 0x01c5},
6863	{
6864	 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6865	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6866	 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6867	 0x01c4,
6868	 0x01c5},
6869	{
6870	 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6871	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6872	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6873	 0x01c4,
6874	 0x01c4},
6875	{
6876	 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6877	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6878	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6879	 0x01c3,
6880	 0x01c4},
6881	{
6882	 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6883	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6884	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6885	 0x01c3,
6886	 0x01c4},
6887	{
6888	 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6889	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6890	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6891	 0x01c2,
6892	 0x01c3},
6893	{
6894	 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6895	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6896	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6897	 0x01c2,
6898	 0x01c3},
6899	{
6900	 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6901	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6902	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6903	 0x01c2,
6904	 0x01c2},
6905	{
6906	 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6907	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6908	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6909	 0x01c1,
6910	 0x01c2},
6911	{
6912	 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6913	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6914	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6915	 0x01c0,
6916	 0x01c1},
6917	{
6918	 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6919	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6920	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6921	 0x01bf,
6922	 0x01c0},
6923	{
6924	 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6925	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6926	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6927	 0x01bf,
6928	 0x01bf},
6929	{
6930	 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6931	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6932	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6933	 0x01be,
6934	 0x01bf},
6935	{
6936	 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6937	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6938	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6939	 0x01bd,
6940	 0x01be},
6941	{
6942	 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6943	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6944	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6945	 0x01bc,
6946	 0x01bd},
6947	{
6948	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6949	 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6950	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6951	 0x043f,
6952	 0x0443},
6953	{
6954	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6955	 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6956	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6957	 0x043d,
6958	 0x0441},
6959	{
6960	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6961	 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6962	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6963	 0x043a,
6964	 0x043f},
6965	{
6966	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6967	 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6968	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6969	 0x0438,
6970	 0x043d},
6971	{
6972	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6973	 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6974	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6975	 0x0436,
6976	 0x043a},
6977	{
6978	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6979	 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6980	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6981	 0x0434,
6982	 0x0438},
6983	{
6984	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6985	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6986	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6987	 0x0431,
6988	 0x0436},
6989	{
6990	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6991	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6992	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6993	 0x042f,
6994	 0x0434},
6995	{
6996	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6997	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6998	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6999	 0x042d,
7000	 0x0431},
7001	{
7002	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7003	 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7004	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7005	 0x042b,
7006	 0x042f},
7007	{
7008	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7009	 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7010	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7011	 0x0429,
7012	 0x042d},
7013	{
7014	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7015	 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7016	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7017	 0x0427,
7018	 0x042b},
7019	{
7020	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7021	 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7022	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7023	 0x0424,
7024	 0x0429},
7025	{
7026	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7027	 0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7028	 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7029	 0x041f,
7030	 0x0424}
7031};
7032
7033static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev8[] = {
7034	{
7035	 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7036	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7037	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7038	 0x0214,
7039	 0x0215},
7040	{
7041	 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7042	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7043	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7044	 0x0213,
7045	 0x0214},
7046	{
7047	 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7048	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7049	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7050	 0x0212,
7051	 0x0213},
7052	{
7053	 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7054	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7055	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7056	 0x0211,
7057	 0x0212},
7058	{
7059	 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7060	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7061	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7062	 0x020f,
7063	 0x0211},
7064	{
7065	 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7066	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7067	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7068	 0x020e,
7069	 0x020f},
7070	{
7071	 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7072	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7073	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7074	 0x020d,
7075	 0x020e},
7076	{
7077	 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7078	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7079	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7080	 0x020c,
7081	 0x020d},
7082	{
7083	 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7084	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7085	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7086	 0x020b,
7087	 0x020c},
7088	{
7089	 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7090	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7091	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7092	 0x020a,
7093	 0x020b},
7094	{
7095	 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7096	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7097	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7098	 0x0209,
7099	 0x020a},
7100	{
7101	 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7102	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7103	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7104	 0x0208,
7105	 0x0209},
7106	{
7107	 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7108	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7109	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7110	 0x0207,
7111	 0x0208},
7112	{
7113	 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7114	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7115	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7116	 0x0206,
7117	 0x0207},
7118	{
7119	 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7120	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7121	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7122	 0x0205,
7123	 0x0206},
7124	{
7125	 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7126	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7127	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7128	 0x0204,
7129	 0x0205},
7130	{
7131	 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7132	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7133	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7134	 0x0203,
7135	 0x0204},
7136	{
7137	 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7138	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7139	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7140	 0x0202,
7141	 0x0203},
7142	{
7143	 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7144	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7145	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7146	 0x0201,
7147	 0x0202},
7148	{
7149	 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7150	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7151	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7152	 0x0200,
7153	 0x0201},
7154	{
7155	 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7156	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7157	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7158	 0x01ff,
7159	 0x0200},
7160	{
7161	 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7162	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7163	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7164	 0x01fe,
7165	 0x01ff},
7166	{
7167	 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7168	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7169	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7170	 0x01fc,
7171	 0x01fd},
7172	{
7173	 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7174	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7175	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7176	 0x01fb,
7177	 0x01fc},
7178	{
7179	 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7180	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7181	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7182	 0x01fa,
7183	 0x01fb},
7184	{
7185	 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7186	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7187	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7188	 0x01f9,
7189	 0x01fa},
7190	{
7191	 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7192	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7193	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7194	 0x01f8,
7195	 0x01f9},
7196	{
7197	 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7198	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7199	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7200	 0x01f7,
7201	 0x01f8},
7202	{
7203	 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7204	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7205	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7206	 0x01f6,
7207	 0x01f7},
7208	{
7209	 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7210	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7211	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7212	 0x01f5,
7213	 0x01f6},
7214	{
7215	 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7216	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7217	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7218	 0x01f4,
7219	 0x01f5},
7220	{
7221	 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7222	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7223	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7224	 0x01f3,
7225	 0x01f4},
7226	{
7227	 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7228	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7229	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7230	 0x01f2,
7231	 0x01f3},
7232	{
7233	 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7234	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7235	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7236	 0x01f1,
7237	 0x01f2},
7238	{
7239	 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7240	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7241	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7242	 0x01f0,
7243	 0x01f1},
7244	{
7245	 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7246	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7247	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7248	 0x01f0,
7249	 0x01f0},
7250	{
7251	 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7252	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7253	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7254	 0x01ef,
7255	 0x01f0},
7256	{
7257	 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7258	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7259	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7260	 0x01ee,
7261	 0x01ef},
7262	{
7263	 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7264	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7265	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7266	 0x01ed,
7267	 0x01ee},
7268	{
7269	 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7270	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7271	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7272	 0x01ec,
7273	 0x01ed},
7274	{
7275	 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7276	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7277	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7278	 0x01eb,
7279	 0x01ec},
7280	{
7281	 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7282	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7283	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7284	 0x01ea,
7285	 0x01eb},
7286	{
7287	 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7288	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7289	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7290	 0x01e9,
7291	 0x01ea},
7292	{
7293	 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7294	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7295	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7296	 0x01e8,
7297	 0x01e9},
7298	{
7299	 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7300	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7301	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7302	 0x01e7,
7303	 0x01e8},
7304	{
7305	 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7306	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7307	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7308	 0x01e6,
7309	 0x01e7},
7310	{
7311	 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7312	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7313	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7314	 0x01e5,
7315	 0x01e6},
7316	{
7317	 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7318	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7319	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7320	 0x01e5,
7321	 0x01e5},
7322	{
7323	 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7324	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7325	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7326	 0x01e4,
7327	 0x01e5},
7328	{
7329	 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7330	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7331	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7332	 0x01e3,
7333	 0x01e4},
7334	{
7335	 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7336	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7337	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7338	 0x01e2,
7339	 0x01e3},
7340	{
7341	 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7342	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7343	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7344	 0x01e1,
7345	 0x01e2},
7346	{
7347	 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7348	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7349	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7350	 0x01e0,
7351	 0x01e1},
7352	{
7353	 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7354	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7355	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7356	 0x01df,
7357	 0x01e0},
7358	{
7359	 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7360	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7361	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7362	 0x01de,
7363	 0x01df},
7364	{
7365	 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7366	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7367	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7368	 0x01dd,
7369	 0x01de},
7370	{
7371	 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7372	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7373	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7374	 0x01dd,
7375	 0x01dd},
7376	{
7377	 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7378	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7379	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7380	 0x01dc,
7381	 0x01dd},
7382	{
7383	 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7384	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7385	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7386	 0x01db,
7387	 0x01dc},
7388	{
7389	 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7390	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7391	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7392	 0x01da,
7393	 0x01db},
7394	{
7395	 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7396	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7397	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7398	 0x01d9,
7399	 0x01da},
7400	{
7401	 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7402	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7403	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7404	 0x01d8,
7405	 0x01d9},
7406	{
7407	 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7408	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7409	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7410	 0x01d7,
7411	 0x01d8},
7412	{
7413	 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7414	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7415	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7416	 0x01d7,
7417	 0x01d7},
7418	{
7419	 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7420	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7421	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7422	 0x01d6,
7423	 0x01d7},
7424	{
7425	 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7426	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7427	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7428	 0x01d5,
7429	 0x01d6},
7430	{
7431	 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7432	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7433	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7434	 0x01d4,
7435	 0x01d5},
7436	{
7437	 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7438	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7439	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7440	 0x01d3,
7441	 0x01d4},
7442	{
7443	 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7444	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7445	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7446	 0x01d2,
7447	 0x01d3},
7448	{
7449	 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7450	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7451	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7452	 0x01d2,
7453	 0x01d2},
7454	{
7455	 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7456	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7457	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7458	 0x01d1,
7459	 0x01d2},
7460	{
7461	 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7462	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7463	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7464	 0x01d0,
7465	 0x01d1},
7466	{
7467	 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7468	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7469	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7470	 0x01cf,
7471	 0x01d0},
7472	{
7473	 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7474	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7475	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7476	 0x01ce,
7477	 0x01cf},
7478	{
7479	 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7480	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7481	 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7482	 0x01ce,
7483	 0x01ce},
7484	{
7485	 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7486	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7487	 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7488	 0x01cd,
7489	 0x01ce},
7490	{
7491	 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7492	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7493	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7494	 0x01cc,
7495	 0x01cd},
7496	{
7497	 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7498	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7499	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7500	 0x01cb,
7501	 0x01cc},
7502	{
7503	 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7504	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7505	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7506	 0x01ca,
7507	 0x01cb},
7508	{
7509	 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7510	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7511	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7512	 0x01ca,
7513	 0x01cb},
7514	{
7515	 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7516	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7517	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7518	 0x01c9,
7519	 0x01ca},
7520	{
7521	 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7522	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7523	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7524	 0x01c9,
7525	 0x01ca},
7526	{
7527	 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7528	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7529	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7530	 0x01c9,
7531	 0x01c9},
7532	{
7533	 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7534	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7535	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7536	 0x01c8,
7537	 0x01c9},
7538	{
7539	 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7540	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7541	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7542	 0x01c8,
7543	 0x01c9},
7544	{
7545	 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7546	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7547	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7548	 0x01c8,
7549	 0x01c8},
7550	{
7551	 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7552	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7553	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7554	 0x01c7,
7555	 0x01c8},
7556	{
7557	 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7558	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7559	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7560	 0x01c7,
7561	 0x01c8},
7562	{
7563	 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7564	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7565	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7566	 0x01c6,
7567	 0x01c7},
7568	{
7569	 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7570	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7571	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7572	 0x01c6,
7573	 0x01c7},
7574	{
7575	 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7576	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7577	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7578	 0x01c6,
7579	 0x01c6},
7580	{
7581	 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7582	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7583	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7584	 0x01c5,
7585	 0x01c6},
7586	{
7587	 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7588	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7589	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7590	 0x01c5,
7591	 0x01c6},
7592	{
7593	 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7594	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7595	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7596	 0x01c4,
7597	 0x01c5},
7598	{
7599	 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7600	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7601	 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7602	 0x01c4,
7603	 0x01c5},
7604	{
7605	 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7606	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7607	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7608	 0x01c4,
7609	 0x01c4},
7610	{
7611	 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7612	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7613	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7614	 0x01c3,
7615	 0x01c4},
7616	{
7617	 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7618	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7619	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7620	 0x01c3,
7621	 0x01c4},
7622	{
7623	 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7624	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7625	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7626	 0x01c2,
7627	 0x01c3},
7628	{
7629	 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7630	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7631	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7632	 0x01c2,
7633	 0x01c3},
7634	{
7635	 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7636	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7637	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7638	 0x01c2,
7639	 0x01c2},
7640	{
7641	 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7642	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7643	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7644	 0x01c1,
7645	 0x01c2},
7646	{
7647	 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7648	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7649	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7650	 0x01c0,
7651	 0x01c1},
7652	{
7653	 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7654	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7655	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7656	 0x01bf,
7657	 0x01c0},
7658	{
7659	 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7660	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7661	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7662	 0x01bf,
7663	 0x01bf},
7664	{
7665	 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7666	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7667	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7668	 0x01be,
7669	 0x01bf},
7670	{
7671	 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7672	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7673	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7674	 0x01bd,
7675	 0x01be},
7676	{
7677	 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7678	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7679	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7680	 0x01bc,
7681	 0x01bd},
7682	{
7683	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7684	 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7685	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7686	 0x043f,
7687	 0x0443},
7688	{
7689	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7690	 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7691	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7692	 0x043d,
7693	 0x0441},
7694	{
7695	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7696	 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7697	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7698	 0x043a,
7699	 0x043f},
7700	{
7701	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7702	 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7703	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7704	 0x0438,
7705	 0x043d},
7706	{
7707	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7708	 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7709	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7710	 0x0436,
7711	 0x043a},
7712	{
7713	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7714	 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7715	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7716	 0x0434,
7717	 0x0438},
7718	{
7719	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7720	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7721	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7722	 0x0431,
7723	 0x0436},
7724	{
7725	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7726	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7727	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7728	 0x042f,
7729	 0x0434},
7730	{
7731	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7732	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7733	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7734	 0x042d,
7735	 0x0431},
7736	{
7737	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7738	 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7739	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7740	 0x042b,
7741	 0x042f},
7742	{
7743	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7744	 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7745	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7746	 0x0429,
7747	 0x042d},
7748	{
7749	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7750	 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7751	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7752	 0x0427,
7753	 0x042b},
7754	{
7755	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7756	 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7757	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7758	 0x0424,
7759	 0x0429},
7760	{
7761	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7762	 0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7763	 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7764	 0x041f,
7765	 0x0424}
7766};
7767
7768static struct radio_regs regs_2055[] = {
7769	{0x02, 0x80, 0x80, 0, 0},
7770	{0x03, 0, 0, 0, 0},
7771	{0x04, 0x27, 0x27, 0, 0},
7772	{0x05, 0, 0, 0, 0},
7773	{0x06, 0x27, 0x27, 0, 0},
7774	{0x07, 0x7f, 0x7f, 1, 1},
7775	{0x08, 0x7, 0x7, 1, 1},
7776	{0x09, 0x7f, 0x7f, 1, 1},
7777	{0x0A, 0x7, 0x7, 1, 1},
7778	{0x0B, 0x15, 0x15, 0, 0},
7779	{0x0C, 0x15, 0x15, 0, 0},
7780	{0x0D, 0x4f, 0x4f, 1, 1},
7781	{0x0E, 0x5, 0x5, 1, 1},
7782	{0x0F, 0x4f, 0x4f, 1, 1},
7783	{0x10, 0x5, 0x5, 1, 1},
7784	{0x11, 0xd0, 0xd0, 0, 0},
7785	{0x12, 0x2, 0x2, 0, 0},
7786	{0x13, 0, 0, 0, 0},
7787	{0x14, 0x40, 0x40, 0, 0},
7788	{0x15, 0, 0, 0, 0},
7789	{0x16, 0, 0, 0, 0},
7790	{0x17, 0, 0, 0, 0},
7791	{0x18, 0, 0, 0, 0},
7792	{0x19, 0, 0, 0, 0},
7793	{0x1A, 0, 0, 0, 0},
7794	{0x1B, 0, 0, 0, 0},
7795	{0x1C, 0, 0, 0, 0},
7796	{0x1D, 0xc0, 0xc0, 0, 0},
7797	{0x1E, 0xff, 0xff, 0, 0},
7798	{0x1F, 0xc0, 0xc0, 0, 0},
7799	{0x20, 0xff, 0xff, 0, 0},
7800	{0x21, 0xc0, 0xc0, 0, 0},
7801	{0x22, 0, 0, 0, 0},
7802	{0x23, 0x2c, 0x2c, 0, 0},
7803	{0x24, 0, 0, 0, 0},
7804	{0x25, 0, 0, 0, 0},
7805	{0x26, 0, 0, 0, 0},
7806	{0x27, 0, 0, 0, 0},
7807	{0x28, 0, 0, 0, 0},
7808	{0x29, 0, 0, 0, 0},
7809	{0x2A, 0, 0, 0, 0},
7810	{0x2B, 0, 0, 0, 0},
7811	{0x2C, 0, 0, 0, 0},
7812	{0x2D, 0xa4, 0xa4, 0, 0},
7813	{0x2E, 0x38, 0x38, 0, 0},
7814	{0x2F, 0, 0, 0, 0},
7815	{0x30, 0x4, 0x4, 1, 1},
7816	{0x31, 0, 0, 0, 0},
7817	{0x32, 0xa, 0xa, 0, 0},
7818	{0x33, 0x87, 0x87, 0, 0},
7819	{0x34, 0x9, 0x9, 0, 0},
7820	{0x35, 0x70, 0x70, 0, 0},
7821	{0x36, 0x11, 0x11, 0, 0},
7822	{0x37, 0x18, 0x18, 1, 1},
7823	{0x38, 0x6, 0x6, 0, 0},
7824	{0x39, 0x4, 0x4, 1, 1},
7825	{0x3A, 0x6, 0x6, 0, 0},
7826	{0x3B, 0x9e, 0x9e, 0, 0},
7827	{0x3C, 0x9, 0x9, 0, 0},
7828	{0x3D, 0xc8, 0xc8, 1, 1},
7829	{0x3E, 0x88, 0x88, 0, 0},
7830	{0x3F, 0, 0, 0, 0},
7831	{0x40, 0, 0, 0, 0},
7832	{0x41, 0, 0, 0, 0},
7833	{0x42, 0x1, 0x1, 0, 0},
7834	{0x43, 0x2, 0x2, 0, 0},
7835	{0x44, 0x96, 0x96, 0, 0},
7836	{0x45, 0x3e, 0x3e, 0, 0},
7837	{0x46, 0x3e, 0x3e, 0, 0},
7838	{0x47, 0x13, 0x13, 0, 0},
7839	{0x48, 0x2, 0x2, 0, 0},
7840	{0x49, 0x15, 0x15, 0, 0},
7841	{0x4A, 0x7, 0x7, 0, 0},
7842	{0x4B, 0, 0, 0, 0},
7843	{0x4C, 0, 0, 0, 0},
7844	{0x4D, 0, 0, 0, 0},
7845	{0x4E, 0, 0, 0, 0},
7846	{0x4F, 0, 0, 0, 0},
7847	{0x50, 0x8, 0x8, 0, 0},
7848	{0x51, 0x8, 0x8, 0, 0},
7849	{0x52, 0x6, 0x6, 0, 0},
7850	{0x53, 0x84, 0x84, 1, 1},
7851	{0x54, 0xc3, 0xc3, 0, 0},
7852	{0x55, 0x8f, 0x8f, 0, 0},
7853	{0x56, 0xff, 0xff, 0, 0},
7854	{0x57, 0xff, 0xff, 0, 0},
7855	{0x58, 0x88, 0x88, 0, 0},
7856	{0x59, 0x88, 0x88, 0, 0},
7857	{0x5A, 0, 0, 0, 0},
7858	{0x5B, 0xcc, 0xcc, 0, 0},
7859	{0x5C, 0x6, 0x6, 0, 0},
7860	{0x5D, 0x80, 0x80, 0, 0},
7861	{0x5E, 0x80, 0x80, 0, 0},
7862	{0x5F, 0xf8, 0xf8, 0, 0},
7863	{0x60, 0x88, 0x88, 0, 0},
7864	{0x61, 0x88, 0x88, 0, 0},
7865	{0x62, 0x88, 0x8, 1, 1},
7866	{0x63, 0x88, 0x88, 0, 0},
7867	{0x64, 0, 0, 0, 0},
7868	{0x65, 0x1, 0x1, 1, 1},
7869	{0x66, 0x8a, 0x8a, 0, 0},
7870	{0x67, 0x8, 0x8, 0, 0},
7871	{0x68, 0x83, 0x83, 0, 0},
7872	{0x69, 0x6, 0x6, 0, 0},
7873	{0x6A, 0xa0, 0xa0, 0, 0},
7874	{0x6B, 0xa, 0xa, 0, 0},
7875	{0x6C, 0x87, 0x87, 1, 1},
7876	{0x6D, 0x2a, 0x2a, 0, 0},
7877	{0x6E, 0x2a, 0x2a, 0, 0},
7878	{0x6F, 0x2a, 0x2a, 0, 0},
7879	{0x70, 0x2a, 0x2a, 0, 0},
7880	{0x71, 0x18, 0x18, 0, 0},
7881	{0x72, 0x6a, 0x6a, 1, 1},
7882	{0x73, 0xab, 0xab, 1, 1},
7883	{0x74, 0x13, 0x13, 1, 1},
7884	{0x75, 0xc1, 0xc1, 1, 1},
7885	{0x76, 0xaa, 0xaa, 1, 1},
7886	{0x77, 0x87, 0x87, 1, 1},
7887	{0x78, 0, 0, 0, 0},
7888	{0x79, 0x6, 0x6, 0, 0},
7889	{0x7A, 0x7, 0x7, 0, 0},
7890	{0x7B, 0x7, 0x7, 0, 0},
7891	{0x7C, 0x15, 0x15, 0, 0},
7892	{0x7D, 0x55, 0x55, 0, 0},
7893	{0x7E, 0x97, 0x97, 1, 1},
7894	{0x7F, 0x8, 0x8, 0, 0},
7895	{0x80, 0x14, 0x14, 1, 1},
7896	{0x81, 0x33, 0x33, 0, 0},
7897	{0x82, 0x88, 0x88, 0, 0},
7898	{0x83, 0x6, 0x6, 0, 0},
7899	{0x84, 0x3, 0x3, 1, 1},
7900	{0x85, 0xa, 0xa, 0, 0},
7901	{0x86, 0x3, 0x3, 1, 1},
7902	{0x87, 0x2a, 0x2a, 0, 0},
7903	{0x88, 0xa4, 0xa4, 0, 0},
7904	{0x89, 0x18, 0x18, 0, 0},
7905	{0x8A, 0x28, 0x28, 0, 0},
7906	{0x8B, 0, 0, 0, 0},
7907	{0x8C, 0x4a, 0x4a, 0, 0},
7908	{0x8D, 0, 0, 0, 0},
7909	{0x8E, 0xf8, 0xf8, 0, 0},
7910	{0x8F, 0x88, 0x88, 0, 0},
7911	{0x90, 0x88, 0x88, 0, 0},
7912	{0x91, 0x88, 0x8, 1, 1},
7913	{0x92, 0x88, 0x88, 0, 0},
7914	{0x93, 0, 0, 0, 0},
7915	{0x94, 0x1, 0x1, 1, 1},
7916	{0x95, 0x8a, 0x8a, 0, 0},
7917	{0x96, 0x8, 0x8, 0, 0},
7918	{0x97, 0x83, 0x83, 0, 0},
7919	{0x98, 0x6, 0x6, 0, 0},
7920	{0x99, 0xa0, 0xa0, 0, 0},
7921	{0x9A, 0xa, 0xa, 0, 0},
7922	{0x9B, 0x87, 0x87, 1, 1},
7923	{0x9C, 0x2a, 0x2a, 0, 0},
7924	{0x9D, 0x2a, 0x2a, 0, 0},
7925	{0x9E, 0x2a, 0x2a, 0, 0},
7926	{0x9F, 0x2a, 0x2a, 0, 0},
7927	{0xA0, 0x18, 0x18, 0, 0},
7928	{0xA1, 0x6a, 0x6a, 1, 1},
7929	{0xA2, 0xab, 0xab, 1, 1},
7930	{0xA3, 0x13, 0x13, 1, 1},
7931	{0xA4, 0xc1, 0xc1, 1, 1},
7932	{0xA5, 0xaa, 0xaa, 1, 1},
7933	{0xA6, 0x87, 0x87, 1, 1},
7934	{0xA7, 0, 0, 0, 0},
7935	{0xA8, 0x6, 0x6, 0, 0},
7936	{0xA9, 0x7, 0x7, 0, 0},
7937	{0xAA, 0x7, 0x7, 0, 0},
7938	{0xAB, 0x15, 0x15, 0, 0},
7939	{0xAC, 0x55, 0x55, 0, 0},
7940	{0xAD, 0x97, 0x97, 1, 1},
7941	{0xAE, 0x8, 0x8, 0, 0},
7942	{0xAF, 0x14, 0x14, 1, 1},
7943	{0xB0, 0x33, 0x33, 0, 0},
7944	{0xB1, 0x88, 0x88, 0, 0},
7945	{0xB2, 0x6, 0x6, 0, 0},
7946	{0xB3, 0x3, 0x3, 1, 1},
7947	{0xB4, 0xa, 0xa, 0, 0},
7948	{0xB5, 0x3, 0x3, 1, 1},
7949	{0xB6, 0x2a, 0x2a, 0, 0},
7950	{0xB7, 0xa4, 0xa4, 0, 0},
7951	{0xB8, 0x18, 0x18, 0, 0},
7952	{0xB9, 0x28, 0x28, 0, 0},
7953	{0xBA, 0, 0, 0, 0},
7954	{0xBB, 0x4a, 0x4a, 0, 0},
7955	{0xBC, 0, 0, 0, 0},
7956	{0xBD, 0x71, 0x71, 0, 0},
7957	{0xBE, 0x72, 0x72, 0, 0},
7958	{0xBF, 0x73, 0x73, 0, 0},
7959	{0xC0, 0x74, 0x74, 0, 0},
7960	{0xC1, 0x75, 0x75, 0, 0},
7961	{0xC2, 0x76, 0x76, 0, 0},
7962	{0xC3, 0x77, 0x77, 0, 0},
7963	{0xC4, 0x78, 0x78, 0, 0},
7964	{0xC5, 0x79, 0x79, 0, 0},
7965	{0xC6, 0x7a, 0x7a, 0, 0},
7966	{0xC7, 0, 0, 0, 0},
7967	{0xC8, 0, 0, 0, 0},
7968	{0xC9, 0, 0, 0, 0},
7969	{0xCA, 0, 0, 0, 0},
7970	{0xCB, 0, 0, 0, 0},
7971	{0xCC, 0, 0, 0, 0},
7972	{0xCD, 0, 0, 0, 0},
7973	{0xCE, 0x6, 0x6, 0, 0},
7974	{0xCF, 0, 0, 0, 0},
7975	{0xD0, 0, 0, 0, 0},
7976	{0xD1, 0x18, 0x18, 0, 0},
7977	{0xD2, 0x88, 0x88, 0, 0},
7978	{0xD3, 0, 0, 0, 0},
7979	{0xD4, 0, 0, 0, 0},
7980	{0xD5, 0, 0, 0, 0},
7981	{0xD6, 0, 0, 0, 0},
7982	{0xD7, 0, 0, 0, 0},
7983	{0xD8, 0, 0, 0, 0},
7984	{0xD9, 0, 0, 0, 0},
7985	{0xDA, 0x6, 0x6, 0, 0},
7986	{0xDB, 0, 0, 0, 0},
7987	{0xDC, 0, 0, 0, 0},
7988	{0xDD, 0x18, 0x18, 0, 0},
7989	{0xDE, 0x88, 0x88, 0, 0},
7990	{0xDF, 0, 0, 0, 0},
7991	{0xE0, 0, 0, 0, 0},
7992	{0xE1, 0, 0, 0, 0},
7993	{0xE2, 0, 0, 0, 0},
7994	{0xFFFF, 0, 0, 0, 0},
7995};
7996
7997static struct radio_regs regs_SYN_2056[] = {
7998	{0x02, 0, 0, 0, 0},
7999	{0x03, 0, 0, 0, 0},
8000	{0x04, 0, 0, 0, 0},
8001	{0x05, 0, 0, 0, 0},
8002	{0x06, 0, 0, 0, 0},
8003	{0x07, 0, 0, 0, 0},
8004	{0x08, 0, 0, 0, 0},
8005	{0x09, 0x1, 0x1, 0, 0},
8006	{0x0A, 0, 0, 0, 0},
8007	{0x0B, 0, 0, 0, 0},
8008	{0x0C, 0, 0, 0, 0},
8009	{0x0D, 0, 0, 0, 0},
8010	{0x0E, 0, 0, 0, 0},
8011	{0x0F, 0, 0, 0, 0},
8012	{0x10, 0, 0, 0, 0},
8013	{0x11, 0, 0, 0, 0},
8014	{0x12, 0, 0, 0, 0},
8015	{0x13, 0, 0, 0, 0},
8016	{0x14, 0, 0, 0, 0},
8017	{0x15, 0, 0, 0, 0},
8018	{0x16, 0, 0, 0, 0},
8019	{0x17, 0, 0, 0, 0},
8020	{0x18, 0, 0, 0, 0},
8021	{0x19, 0, 0, 0, 0},
8022	{0x1A, 0, 0, 0, 0},
8023	{0x1B, 0, 0, 0, 0},
8024	{0x1C, 0, 0, 0, 0},
8025	{0x1D, 0, 0, 0, 0},
8026	{0x1E, 0, 0, 0, 0},
8027	{0x1F, 0, 0, 0, 0},
8028	{0x20, 0, 0, 0, 0},
8029	{0x21, 0, 0, 0, 0},
8030	{0x22, 0x60, 0x60, 0, 0},
8031	{0x23, 0x6, 0x6, 0, 0},
8032	{0x24, 0xc, 0xc, 0, 0},
8033	{0x25, 0, 0, 0, 0},
8034	{0x26, 0, 0, 0, 0},
8035	{0x27, 0, 0, 0, 0},
8036	{0x28, 0x1, 0x1, 0, 0},
8037	{0x29, 0, 0, 0, 0},
8038	{0x2A, 0, 0, 0, 0},
8039	{0x2B, 0, 0, 0, 0},
8040	{0x2C, 0, 0, 0, 0},
8041	{0x2D, 0, 0, 0, 0},
8042	{0x2E, 0xd, 0xd, 0, 0},
8043	{0x2F, 0x1f, 0x1f, 0, 0},
8044	{0x30, 0x15, 0x15, 0, 0},
8045	{0x31, 0xf, 0xf, 0, 0},
8046	{0x32, 0, 0, 0, 0},
8047	{0x33, 0, 0, 0, 0},
8048	{0x34, 0, 0, 0, 0},
8049	{0x35, 0, 0, 0, 0},
8050	{0x36, 0, 0, 0, 0},
8051	{0x37, 0, 0, 0, 0},
8052	{0x38, 0, 0, 0, 0},
8053	{0x39, 0, 0, 0, 0},
8054	{0x3A, 0, 0, 0, 0},
8055	{0x3B, 0, 0, 0, 0},
8056	{0x3C, 0x13, 0x13, 0, 0},
8057	{0x3D, 0xf, 0xf, 0, 0},
8058	{0x3E, 0x18, 0x18, 0, 0},
8059	{0x3F, 0, 0, 0, 0},
8060	{0x40, 0, 0, 0, 0},
8061	{0x41, 0x20, 0x20, 0, 0},
8062	{0x42, 0x20, 0x20, 0, 0},
8063	{0x43, 0, 0, 0, 0},
8064	{0x44, 0x77, 0x77, 0, 0},
8065	{0x45, 0x7, 0x7, 0, 0},
8066	{0x46, 0x1, 0x1, 0, 0},
8067	{0x47, 0x4, 0x4, 0, 0},
8068	{0x48, 0xf, 0xf, 0, 0},
8069	{0x49, 0x30, 0x30, 0, 0},
8070	{0x4A, 0x32, 0x32, 0, 0},
8071	{0x4B, 0xd, 0xd, 0, 0},
8072	{0x4C, 0xd, 0xd, 0, 0},
8073	{0x4D, 0x4, 0x4, 0, 0},
8074	{0x4E, 0x6, 0x6, 0, 0},
8075	{0x4F, 0x1, 0x1, 0, 0},
8076	{0x50, 0x1c, 0x1c, 0, 0},
8077	{0x51, 0x2, 0x2, 0, 0},
8078	{0x52, 0x2, 0x2, 0, 0},
8079	{0x53, 0xf7, 0xf7, 1, 1},
8080	{0x54, 0xb4, 0xb4, 0, 0},
8081	{0x55, 0xd2, 0xd2, 0, 0},
8082	{0x56, 0, 0, 0, 0},
8083	{0x57, 0, 0, 0, 0},
8084	{0x58, 0x4, 0x4, 0, 0},
8085	{0x59, 0x96, 0x96, 0, 0},
8086	{0x5A, 0x3e, 0x3e, 0, 0},
8087	{0x5B, 0x3e, 0x3e, 0, 0},
8088	{0x5C, 0x13, 0x13, 0, 0},
8089	{0x5D, 0x2, 0x2, 0, 0},
8090	{0x5E, 0, 0, 0, 0},
8091	{0x5F, 0x7, 0x7, 0, 0},
8092	{0x60, 0x7, 0x7, 1, 1},
8093	{0x61, 0x8, 0x8, 0, 0},
8094	{0x62, 0x3, 0x3, 0, 0},
8095	{0x63, 0, 0, 0, 0},
8096	{0x64, 0, 0, 0, 0},
8097	{0x65, 0, 0, 0, 0},
8098	{0x66, 0, 0, 0, 0},
8099	{0x67, 0, 0, 0, 0},
8100	{0x68, 0x40, 0x40, 0, 0},
8101	{0x69, 0, 0, 0, 0},
8102	{0x6A, 0, 0, 0, 0},
8103	{0x6B, 0, 0, 0, 0},
8104	{0x6C, 0, 0, 0, 0},
8105	{0x6D, 0x1, 0x1, 0, 0},
8106	{0x6E, 0, 0, 0, 0},
8107	{0x6F, 0, 0, 0, 0},
8108	{0x70, 0x60, 0x60, 0, 0},
8109	{0x71, 0x66, 0x66, 0, 0},
8110	{0x72, 0xc, 0xc, 0, 0},
8111	{0x73, 0x66, 0x66, 0, 0},
8112	{0x74, 0x8f, 0x8f, 1, 1},
8113	{0x75, 0, 0, 0, 0},
8114	{0x76, 0xcc, 0xcc, 0, 0},
8115	{0x77, 0x1, 0x1, 0, 0},
8116	{0x78, 0x66, 0x66, 0, 0},
8117	{0x79, 0x66, 0x66, 0, 0},
8118	{0x7A, 0, 0, 0, 0},
8119	{0x7B, 0, 0, 0, 0},
8120	{0x7C, 0, 0, 0, 0},
8121	{0x7D, 0, 0, 0, 0},
8122	{0x7E, 0, 0, 0, 0},
8123	{0x7F, 0, 0, 0, 0},
8124	{0x80, 0, 0, 0, 0},
8125	{0x81, 0, 0, 0, 0},
8126	{0x82, 0, 0, 0, 0},
8127	{0x83, 0, 0, 0, 0},
8128	{0x84, 0, 0, 0, 0},
8129	{0x85, 0xff, 0xff, 0, 0},
8130	{0x86, 0, 0, 0, 0},
8131	{0x87, 0, 0, 0, 0},
8132	{0x88, 0, 0, 0, 0},
8133	{0x89, 0, 0, 0, 0},
8134	{0x8A, 0, 0, 0, 0},
8135	{0x8B, 0, 0, 0, 0},
8136	{0x8C, 0, 0, 0, 0},
8137	{0x8D, 0, 0, 0, 0},
8138	{0x8E, 0, 0, 0, 0},
8139	{0x8F, 0, 0, 0, 0},
8140	{0x90, 0, 0, 0, 0},
8141	{0x91, 0, 0, 0, 0},
8142	{0x92, 0, 0, 0, 0},
8143	{0x93, 0, 0, 0, 0},
8144	{0x94, 0, 0, 0, 0},
8145	{0x95, 0, 0, 0, 0},
8146	{0x96, 0, 0, 0, 0},
8147	{0x97, 0, 0, 0, 0},
8148	{0x98, 0, 0, 0, 0},
8149	{0x99, 0, 0, 0, 0},
8150	{0x9A, 0, 0, 0, 0},
8151	{0x9B, 0, 0, 0, 0},
8152	{0x9C, 0, 0, 0, 0},
8153	{0x9D, 0, 0, 0, 0},
8154	{0x9E, 0, 0, 0, 0},
8155	{0x9F, 0x6, 0x6, 0, 0},
8156	{0xA0, 0x66, 0x66, 0, 0},
8157	{0xA1, 0x66, 0x66, 0, 0},
8158	{0xA2, 0x66, 0x66, 0, 0},
8159	{0xA3, 0x66, 0x66, 0, 0},
8160	{0xA4, 0x66, 0x66, 0, 0},
8161	{0xA5, 0x66, 0x66, 0, 0},
8162	{0xA6, 0x66, 0x66, 0, 0},
8163	{0xA7, 0x66, 0x66, 0, 0},
8164	{0xA8, 0x66, 0x66, 0, 0},
8165	{0xA9, 0x66, 0x66, 0, 0},
8166	{0xAA, 0x66, 0x66, 0, 0},
8167	{0xAB, 0x66, 0x66, 0, 0},
8168	{0xAC, 0x66, 0x66, 0, 0},
8169	{0xAD, 0x66, 0x66, 0, 0},
8170	{0xAE, 0x66, 0x66, 0, 0},
8171	{0xAF, 0x66, 0x66, 0, 0},
8172	{0xB0, 0x66, 0x66, 0, 0},
8173	{0xB1, 0x66, 0x66, 0, 0},
8174	{0xB2, 0x66, 0x66, 0, 0},
8175	{0xB3, 0xa, 0xa, 0, 0},
8176	{0xB4, 0, 0, 0, 0},
8177	{0xB5, 0, 0, 0, 0},
8178	{0xB6, 0, 0, 0, 0},
8179	{0xFFFF, 0, 0, 0, 0}
8180};
8181
8182static struct radio_regs regs_TX_2056[] = {
8183	{0x02, 0, 0, 0, 0},
8184	{0x03, 0, 0, 0, 0},
8185	{0x04, 0, 0, 0, 0},
8186	{0x05, 0, 0, 0, 0},
8187	{0x06, 0, 0, 0, 0},
8188	{0x07, 0, 0, 0, 0},
8189	{0x08, 0, 0, 0, 0},
8190	{0x09, 0, 0, 0, 0},
8191	{0x0A, 0, 0, 0, 0},
8192	{0x0B, 0, 0, 0, 0},
8193	{0x0C, 0, 0, 0, 0},
8194	{0x0D, 0, 0, 0, 0},
8195	{0x0E, 0, 0, 0, 0},
8196	{0x0F, 0, 0, 0, 0},
8197	{0x10, 0, 0, 0, 0},
8198	{0x11, 0, 0, 0, 0},
8199	{0x12, 0, 0, 0, 0},
8200	{0x13, 0, 0, 0, 0},
8201	{0x14, 0, 0, 0, 0},
8202	{0x15, 0, 0, 0, 0},
8203	{0x16, 0, 0, 0, 0},
8204	{0x17, 0, 0, 0, 0},
8205	{0x18, 0, 0, 0, 0},
8206	{0x19, 0, 0, 0, 0},
8207	{0x1A, 0, 0, 0, 0},
8208	{0x1B, 0, 0, 0, 0},
8209	{0x1C, 0, 0, 0, 0},
8210	{0x1D, 0, 0, 0, 0},
8211	{0x1E, 0, 0, 0, 0},
8212	{0x1F, 0, 0, 0, 0},
8213	{0x20, 0, 0, 0, 0},
8214	{0x21, 0x88, 0x88, 0, 0},
8215	{0x22, 0x88, 0x88, 0, 0},
8216	{0x23, 0x88, 0x88, 0, 0},
8217	{0x24, 0x88, 0x88, 0, 0},
8218	{0x25, 0xc, 0xc, 0, 0},
8219	{0x26, 0, 0, 0, 0},
8220	{0x27, 0x3, 0x3, 0, 0},
8221	{0x28, 0, 0, 0, 0},
8222	{0x29, 0x3, 0x3, 0, 0},
8223	{0x2A, 0x37, 0x37, 0, 0},
8224	{0x2B, 0x3, 0x3, 0, 0},
8225	{0x2C, 0, 0, 0, 0},
8226	{0x2D, 0, 0, 0, 0},
8227	{0x2E, 0x1, 0x1, 0, 0},
8228	{0x2F, 0x1, 0x1, 0, 0},
8229	{0x30, 0, 0, 0, 0},
8230	{0x31, 0, 0, 0, 0},
8231	{0x32, 0, 0, 0, 0},
8232	{0x33, 0x11, 0x11, 0, 0},
8233	{0x34, 0x11, 0x11, 0, 0},
8234	{0x35, 0, 0, 0, 0},
8235	{0x36, 0, 0, 0, 0},
8236	{0x37, 0x3, 0x3, 0, 0},
8237	{0x38, 0xf, 0xf, 0, 0},
8238	{0x39, 0, 0, 0, 0},
8239	{0x3A, 0x2d, 0x2d, 0, 0},
8240	{0x3B, 0, 0, 0, 0},
8241	{0x3C, 0x6e, 0x6e, 0, 0},
8242	{0x3D, 0xf0, 0xf0, 1, 1},
8243	{0x3E, 0, 0, 0, 0},
8244	{0x3F, 0, 0, 0, 0},
8245	{0x40, 0, 0, 0, 0},
8246	{0x41, 0x3, 0x3, 0, 0},
8247	{0x42, 0x3, 0x3, 0, 0},
8248	{0x43, 0, 0, 0, 0},
8249	{0x44, 0x1e, 0x1e, 0, 0},
8250	{0x45, 0, 0, 0, 0},
8251	{0x46, 0x6e, 0x6e, 0, 0},
8252	{0x47, 0xf0, 0xf0, 1, 1},
8253	{0x48, 0, 0, 0, 0},
8254	{0x49, 0x2, 0x2, 0, 0},
8255	{0x4A, 0xff, 0xff, 1, 1},
8256	{0x4B, 0xc, 0xc, 0, 0},
8257	{0x4C, 0, 0, 0, 0},
8258	{0x4D, 0x38, 0x38, 0, 0},
8259	{0x4E, 0x70, 0x70, 1, 1},
8260	{0x4F, 0x2, 0x2, 0, 0},
8261	{0x50, 0x88, 0x88, 0, 0},
8262	{0x51, 0xc, 0xc, 0, 0},
8263	{0x52, 0, 0, 0, 0},
8264	{0x53, 0x8, 0x8, 0, 0},
8265	{0x54, 0x70, 0x70, 1, 1},
8266	{0x55, 0x2, 0x2, 0, 0},
8267	{0x56, 0xff, 0xff, 1, 1},
8268	{0x57, 0, 0, 0, 0},
8269	{0x58, 0x83, 0x83, 0, 0},
8270	{0x59, 0x77, 0x77, 1, 1},
8271	{0x5A, 0, 0, 0, 0},
8272	{0x5B, 0x2, 0x2, 0, 0},
8273	{0x5C, 0x88, 0x88, 0, 0},
8274	{0x5D, 0, 0, 0, 0},
8275	{0x5E, 0x8, 0x8, 0, 0},
8276	{0x5F, 0x77, 0x77, 1, 1},
8277	{0x60, 0x1, 0x1, 0, 0},
8278	{0x61, 0, 0, 0, 0},
8279	{0x62, 0x7, 0x7, 0, 0},
8280	{0x63, 0, 0, 0, 0},
8281	{0x64, 0x7, 0x7, 0, 0},
8282	{0x65, 0, 0, 0, 0},
8283	{0x66, 0, 0, 0, 0},
8284	{0x67, 0x74, 0x74, 1, 1},
8285	{0x68, 0, 0, 0, 0},
8286	{0x69, 0xa, 0xa, 0, 0},
8287	{0x6A, 0, 0, 0, 0},
8288	{0x6B, 0, 0, 0, 0},
8289	{0x6C, 0, 0, 0, 0},
8290	{0x6D, 0, 0, 0, 0},
8291	{0x6E, 0, 0, 0, 0},
8292	{0x6F, 0, 0, 0, 0},
8293	{0x70, 0, 0, 0, 0},
8294	{0x71, 0x2, 0x2, 0, 0},
8295	{0x72, 0, 0, 0, 0},
8296	{0x73, 0, 0, 0, 0},
8297	{0x74, 0xe, 0xe, 0, 0},
8298	{0x75, 0xe, 0xe, 0, 0},
8299	{0x76, 0xe, 0xe, 0, 0},
8300	{0x77, 0x13, 0x13, 0, 0},
8301	{0x78, 0x13, 0x13, 0, 0},
8302	{0x79, 0x1b, 0x1b, 0, 0},
8303	{0x7A, 0x1b, 0x1b, 0, 0},
8304	{0x7B, 0x55, 0x55, 0, 0},
8305	{0x7C, 0x5b, 0x5b, 0, 0},
8306	{0x7D, 0, 0, 0, 0},
8307	{0x7E, 0, 0, 0, 0},
8308	{0x7F, 0, 0, 0, 0},
8309	{0x80, 0, 0, 0, 0},
8310	{0x81, 0, 0, 0, 0},
8311	{0x82, 0, 0, 0, 0},
8312	{0x83, 0, 0, 0, 0},
8313	{0x84, 0, 0, 0, 0},
8314	{0x85, 0, 0, 0, 0},
8315	{0x86, 0, 0, 0, 0},
8316	{0x87, 0, 0, 0, 0},
8317	{0x88, 0, 0, 0, 0},
8318	{0x89, 0, 0, 0, 0},
8319	{0x8A, 0, 0, 0, 0},
8320	{0x8B, 0, 0, 0, 0},
8321	{0x8C, 0, 0, 0, 0},
8322	{0x8D, 0, 0, 0, 0},
8323	{0x8E, 0, 0, 0, 0},
8324	{0x8F, 0, 0, 0, 0},
8325	{0x90, 0, 0, 0, 0},
8326	{0x91, 0, 0, 0, 0},
8327	{0x92, 0, 0, 0, 0},
8328	{0xFFFF, 0, 0, 0, 0}
8329};
8330
8331static struct radio_regs regs_RX_2056[] = {
8332	{0x02, 0, 0, 0, 0},
8333	{0x03, 0, 0, 0, 0},
8334	{0x04, 0, 0, 0, 0},
8335	{0x05, 0, 0, 0, 0},
8336	{0x06, 0, 0, 0, 0},
8337	{0x07, 0, 0, 0, 0},
8338	{0x08, 0, 0, 0, 0},
8339	{0x09, 0, 0, 0, 0},
8340	{0x0A, 0, 0, 0, 0},
8341	{0x0B, 0, 0, 0, 0},
8342	{0x0C, 0, 0, 0, 0},
8343	{0x0D, 0, 0, 0, 0},
8344	{0x0E, 0, 0, 0, 0},
8345	{0x0F, 0, 0, 0, 0},
8346	{0x10, 0, 0, 0, 0},
8347	{0x11, 0, 0, 0, 0},
8348	{0x12, 0, 0, 0, 0},
8349	{0x13, 0, 0, 0, 0},
8350	{0x14, 0, 0, 0, 0},
8351	{0x15, 0, 0, 0, 0},
8352	{0x16, 0, 0, 0, 0},
8353	{0x17, 0, 0, 0, 0},
8354	{0x18, 0, 0, 0, 0},
8355	{0x19, 0, 0, 0, 0},
8356	{0x1A, 0, 0, 0, 0},
8357	{0x1B, 0, 0, 0, 0},
8358	{0x1C, 0, 0, 0, 0},
8359	{0x1D, 0, 0, 0, 0},
8360	{0x1E, 0, 0, 0, 0},
8361	{0x1F, 0, 0, 0, 0},
8362	{0x20, 0x3, 0x3, 0, 0},
8363	{0x21, 0, 0, 0, 0},
8364	{0x22, 0, 0, 0, 0},
8365	{0x23, 0x90, 0x90, 0, 0},
8366	{0x24, 0x55, 0x55, 0, 0},
8367	{0x25, 0x15, 0x15, 0, 0},
8368	{0x26, 0x5, 0x5, 0, 0},
8369	{0x27, 0x15, 0x15, 0, 0},
8370	{0x28, 0x5, 0x5, 0, 0},
8371	{0x29, 0x20, 0x20, 0, 0},
8372	{0x2A, 0x11, 0x11, 0, 0},
8373	{0x2B, 0x90, 0x90, 0, 0},
8374	{0x2C, 0, 0, 0, 0},
8375	{0x2D, 0x88, 0x88, 0, 0},
8376	{0x2E, 0x32, 0x32, 0, 0},
8377	{0x2F, 0x77, 0x77, 0, 0},
8378	{0x30, 0x17, 0x17, 1, 1},
8379	{0x31, 0xff, 0xff, 1, 1},
8380	{0x32, 0x20, 0x20, 0, 0},
8381	{0x33, 0, 0, 0, 0},
8382	{0x34, 0x88, 0x88, 0, 0},
8383	{0x35, 0x32, 0x32, 0, 0},
8384	{0x36, 0x77, 0x77, 0, 0},
8385	{0x37, 0x17, 0x17, 1, 1},
8386	{0x38, 0xf0, 0xf0, 1, 1},
8387	{0x39, 0x20, 0x20, 0, 0},
8388	{0x3A, 0x8, 0x8, 0, 0},
8389	{0x3B, 0x99, 0x99, 0, 0},
8390	{0x3C, 0, 0, 0, 0},
8391	{0x3D, 0x44, 0x44, 1, 1},
8392	{0x3E, 0, 0, 0, 0},
8393	{0x3F, 0x44, 0x44, 0, 0},
8394	{0x40, 0xf, 0xf, 1, 1},
8395	{0x41, 0x6, 0x6, 0, 0},
8396	{0x42, 0x4, 0x4, 0, 0},
8397	{0x43, 0x50, 0x50, 1, 1},
8398	{0x44, 0x8, 0x8, 0, 0},
8399	{0x45, 0x99, 0x99, 0, 0},
8400	{0x46, 0, 0, 0, 0},
8401	{0x47, 0x11, 0x11, 0, 0},
8402	{0x48, 0, 0, 0, 0},
8403	{0x49, 0x44, 0x44, 0, 0},
8404	{0x4A, 0x7, 0x7, 0, 0},
8405	{0x4B, 0x6, 0x6, 0, 0},
8406	{0x4C, 0x4, 0x4, 0, 0},
8407	{0x4D, 0, 0, 0, 0},
8408	{0x4E, 0, 0, 0, 0},
8409	{0x4F, 0x66, 0x66, 0, 0},
8410	{0x50, 0x66, 0x66, 0, 0},
8411	{0x51, 0x57, 0x57, 0, 0},
8412	{0x52, 0x57, 0x57, 0, 0},
8413	{0x53, 0x44, 0x44, 0, 0},
8414	{0x54, 0, 0, 0, 0},
8415	{0x55, 0, 0, 0, 0},
8416	{0x56, 0x8, 0x8, 0, 0},
8417	{0x57, 0x8, 0x8, 0, 0},
8418	{0x58, 0x7, 0x7, 0, 0},
8419	{0x59, 0x22, 0x22, 0, 0},
8420	{0x5A, 0x22, 0x22, 0, 0},
8421	{0x5B, 0x2, 0x2, 0, 0},
8422	{0x5C, 0x23, 0x23, 0, 0},
8423	{0x5D, 0x7, 0x7, 0, 0},
8424	{0x5E, 0x55, 0x55, 0, 0},
8425	{0x5F, 0x23, 0x23, 0, 0},
8426	{0x60, 0x41, 0x41, 0, 0},
8427	{0x61, 0x1, 0x1, 0, 0},
8428	{0x62, 0xa, 0xa, 0, 0},
8429	{0x63, 0, 0, 0, 0},
8430	{0x64, 0, 0, 0, 0},
8431	{0x65, 0, 0, 0, 0},
8432	{0x66, 0, 0, 0, 0},
8433	{0x67, 0, 0, 0, 0},
8434	{0x68, 0, 0, 0, 0},
8435	{0x69, 0, 0, 0, 0},
8436	{0x6A, 0, 0, 0, 0},
8437	{0x6B, 0xc, 0xc, 0, 0},
8438	{0x6C, 0, 0, 0, 0},
8439	{0x6D, 0, 0, 0, 0},
8440	{0x6E, 0, 0, 0, 0},
8441	{0x6F, 0, 0, 0, 0},
8442	{0x70, 0, 0, 0, 0},
8443	{0x71, 0, 0, 0, 0},
8444	{0x72, 0x22, 0x22, 0, 0},
8445	{0x73, 0x22, 0x22, 0, 0},
8446	{0x74, 0x2, 0x2, 0, 0},
8447	{0x75, 0xa, 0xa, 0, 0},
8448	{0x76, 0x1, 0x1, 0, 0},
8449	{0x77, 0x22, 0x22, 0, 0},
8450	{0x78, 0x30, 0x30, 0, 0},
8451	{0x79, 0, 0, 0, 0},
8452	{0x7A, 0, 0, 0, 0},
8453	{0x7B, 0, 0, 0, 0},
8454	{0x7C, 0, 0, 0, 0},
8455	{0x7D, 0, 0, 0, 0},
8456	{0x7E, 0, 0, 0, 0},
8457	{0x7F, 0, 0, 0, 0},
8458	{0x80, 0, 0, 0, 0},
8459	{0x81, 0, 0, 0, 0},
8460	{0x82, 0, 0, 0, 0},
8461	{0x83, 0, 0, 0, 0},
8462	{0x84, 0, 0, 0, 0},
8463	{0x85, 0, 0, 0, 0},
8464	{0x86, 0, 0, 0, 0},
8465	{0x87, 0, 0, 0, 0},
8466	{0x88, 0, 0, 0, 0},
8467	{0x89, 0, 0, 0, 0},
8468	{0x8A, 0, 0, 0, 0},
8469	{0x8B, 0, 0, 0, 0},
8470	{0x8C, 0, 0, 0, 0},
8471	{0x8D, 0, 0, 0, 0},
8472	{0x8E, 0, 0, 0, 0},
8473	{0x8F, 0, 0, 0, 0},
8474	{0x90, 0, 0, 0, 0},
8475	{0x91, 0, 0, 0, 0},
8476	{0x92, 0, 0, 0, 0},
8477	{0x93, 0, 0, 0, 0},
8478	{0x94, 0, 0, 0, 0},
8479	{0xFFFF, 0, 0, 0, 0}
8480};
8481
8482static struct radio_regs regs_SYN_2056_A1[] = {
8483	{0x02, 0, 0, 0, 0},
8484	{0x03, 0, 0, 0, 0},
8485	{0x04, 0, 0, 0, 0},
8486	{0x05, 0, 0, 0, 0},
8487	{0x06, 0, 0, 0, 0},
8488	{0x07, 0, 0, 0, 0},
8489	{0x08, 0, 0, 0, 0},
8490	{0x09, 0x1, 0x1, 0, 0},
8491	{0x0A, 0, 0, 0, 0},
8492	{0x0B, 0, 0, 0, 0},
8493	{0x0C, 0, 0, 0, 0},
8494	{0x0D, 0, 0, 0, 0},
8495	{0x0E, 0, 0, 0, 0},
8496	{0x0F, 0, 0, 0, 0},
8497	{0x10, 0, 0, 0, 0},
8498	{0x11, 0, 0, 0, 0},
8499	{0x12, 0, 0, 0, 0},
8500	{0x13, 0, 0, 0, 0},
8501	{0x14, 0, 0, 0, 0},
8502	{0x15, 0, 0, 0, 0},
8503	{0x16, 0, 0, 0, 0},
8504	{0x17, 0, 0, 0, 0},
8505	{0x18, 0, 0, 0, 0},
8506	{0x19, 0, 0, 0, 0},
8507	{0x1A, 0, 0, 0, 0},
8508	{0x1B, 0, 0, 0, 0},
8509	{0x1C, 0, 0, 0, 0},
8510	{0x1D, 0, 0, 0, 0},
8511	{0x1E, 0, 0, 0, 0},
8512	{0x1F, 0, 0, 0, 0},
8513	{0x20, 0, 0, 0, 0},
8514	{0x21, 0, 0, 0, 0},
8515	{0x22, 0x60, 0x60, 0, 0},
8516	{0x23, 0x6, 0x6, 0, 0},
8517	{0x24, 0xc, 0xc, 0, 0},
8518	{0x25, 0, 0, 0, 0},
8519	{0x26, 0, 0, 0, 0},
8520	{0x27, 0, 0, 0, 0},
8521	{0x28, 0x1, 0x1, 0, 0},
8522	{0x29, 0, 0, 0, 0},
8523	{0x2A, 0, 0, 0, 0},
8524	{0x2B, 0, 0, 0, 0},
8525	{0x2C, 0, 0, 0, 0},
8526	{0x2D, 0, 0, 0, 0},
8527	{0x2E, 0xd, 0xd, 0, 0},
8528	{0x2F, 0x1f, 0x1f, 0, 0},
8529	{0x30, 0x15, 0x15, 0, 0},
8530	{0x31, 0xf, 0xf, 0, 0},
8531	{0x32, 0, 0, 0, 0},
8532	{0x33, 0, 0, 0, 0},
8533	{0x34, 0, 0, 0, 0},
8534	{0x35, 0, 0, 0, 0},
8535	{0x36, 0, 0, 0, 0},
8536	{0x37, 0, 0, 0, 0},
8537	{0x38, 0, 0, 0, 0},
8538	{0x39, 0, 0, 0, 0},
8539	{0x3A, 0, 0, 0, 0},
8540	{0x3B, 0, 0, 0, 0},
8541	{0x3C, 0x13, 0x13, 0, 0},
8542	{0x3D, 0xf, 0xf, 0, 0},
8543	{0x3E, 0x18, 0x18, 0, 0},
8544	{0x3F, 0, 0, 0, 0},
8545	{0x40, 0, 0, 0, 0},
8546	{0x41, 0x20, 0x20, 0, 0},
8547	{0x42, 0x20, 0x20, 0, 0},
8548	{0x43, 0, 0, 0, 0},
8549	{0x44, 0x77, 0x77, 0, 0},
8550	{0x45, 0x7, 0x7, 0, 0},
8551	{0x46, 0x1, 0x1, 0, 0},
8552	{0x47, 0x4, 0x4, 0, 0},
8553	{0x48, 0xf, 0xf, 0, 0},
8554	{0x49, 0x30, 0x30, 0, 0},
8555	{0x4A, 0x32, 0x32, 0, 0},
8556	{0x4B, 0xd, 0xd, 0, 0},
8557	{0x4C, 0xd, 0xd, 0, 0},
8558	{0x4D, 0x4, 0x4, 0, 0},
8559	{0x4E, 0x6, 0x6, 0, 0},
8560	{0x4F, 0x1, 0x1, 0, 0},
8561	{0x50, 0x1c, 0x1c, 0, 0},
8562	{0x51, 0x2, 0x2, 0, 0},
8563	{0x52, 0x2, 0x2, 0, 0},
8564	{0x53, 0xf7, 0xf7, 1, 1},
8565	{0x54, 0xb4, 0xb4, 0, 0},
8566	{0x55, 0xd2, 0xd2, 0, 0},
8567	{0x56, 0, 0, 0, 0},
8568	{0x57, 0, 0, 0, 0},
8569	{0x58, 0x4, 0x4, 0, 0},
8570	{0x59, 0x96, 0x96, 0, 0},
8571	{0x5A, 0x3e, 0x3e, 0, 0},
8572	{0x5B, 0x3e, 0x3e, 0, 0},
8573	{0x5C, 0x13, 0x13, 0, 0},
8574	{0x5D, 0x2, 0x2, 0, 0},
8575	{0x5E, 0, 0, 0, 0},
8576	{0x5F, 0x7, 0x7, 0, 0},
8577	{0x60, 0x7, 0x7, 1, 1},
8578	{0x61, 0x8, 0x8, 0, 0},
8579	{0x62, 0x3, 0x3, 0, 0},
8580	{0x63, 0, 0, 0, 0},
8581	{0x64, 0, 0, 0, 0},
8582	{0x65, 0, 0, 0, 0},
8583	{0x66, 0, 0, 0, 0},
8584	{0x67, 0, 0, 0, 0},
8585	{0x68, 0x40, 0x40, 0, 0},
8586	{0x69, 0, 0, 0, 0},
8587	{0x6A, 0, 0, 0, 0},
8588	{0x6B, 0, 0, 0, 0},
8589	{0x6C, 0, 0, 0, 0},
8590	{0x6D, 0x1, 0x1, 0, 0},
8591	{0x6E, 0, 0, 0, 0},
8592	{0x6F, 0, 0, 0, 0},
8593	{0x70, 0x60, 0x60, 0, 0},
8594	{0x71, 0x66, 0x66, 0, 0},
8595	{0x72, 0xc, 0xc, 0, 0},
8596	{0x73, 0x66, 0x66, 0, 0},
8597	{0x74, 0x8f, 0x8f, 1, 1},
8598	{0x75, 0, 0, 0, 0},
8599	{0x76, 0xcc, 0xcc, 0, 0},
8600	{0x77, 0x1, 0x1, 0, 0},
8601	{0x78, 0x66, 0x66, 0, 0},
8602	{0x79, 0x66, 0x66, 0, 0},
8603	{0x7A, 0, 0, 0, 0},
8604	{0x7B, 0, 0, 0, 0},
8605	{0x7C, 0, 0, 0, 0},
8606	{0x7D, 0, 0, 0, 0},
8607	{0x7E, 0, 0, 0, 0},
8608	{0x7F, 0, 0, 0, 0},
8609	{0x80, 0, 0, 0, 0},
8610	{0x81, 0, 0, 0, 0},
8611	{0x82, 0, 0, 0, 0},
8612	{0x83, 0, 0, 0, 0},
8613	{0x84, 0, 0, 0, 0},
8614	{0x85, 0xff, 0xff, 0, 0},
8615	{0x86, 0, 0, 0, 0},
8616	{0x87, 0, 0, 0, 0},
8617	{0x88, 0, 0, 0, 0},
8618	{0x89, 0, 0, 0, 0},
8619	{0x8A, 0, 0, 0, 0},
8620	{0x8B, 0, 0, 0, 0},
8621	{0x8C, 0, 0, 0, 0},
8622	{0x8D, 0, 0, 0, 0},
8623	{0x8E, 0, 0, 0, 0},
8624	{0x8F, 0, 0, 0, 0},
8625	{0x90, 0, 0, 0, 0},
8626	{0x91, 0, 0, 0, 0},
8627	{0x92, 0, 0, 0, 0},
8628	{0x93, 0, 0, 0, 0},
8629	{0x94, 0, 0, 0, 0},
8630	{0x95, 0, 0, 0, 0},
8631	{0x96, 0, 0, 0, 0},
8632	{0x97, 0, 0, 0, 0},
8633	{0x98, 0, 0, 0, 0},
8634	{0x99, 0, 0, 0, 0},
8635	{0x9A, 0, 0, 0, 0},
8636	{0x9B, 0, 0, 0, 0},
8637	{0x9C, 0, 0, 0, 0},
8638	{0x9D, 0, 0, 0, 0},
8639	{0x9E, 0, 0, 0, 0},
8640	{0x9F, 0x6, 0x6, 0, 0},
8641	{0xA0, 0x66, 0x66, 0, 0},
8642	{0xA1, 0x66, 0x66, 0, 0},
8643	{0xA2, 0x66, 0x66, 0, 0},
8644	{0xA3, 0x66, 0x66, 0, 0},
8645	{0xA4, 0x66, 0x66, 0, 0},
8646	{0xA5, 0x66, 0x66, 0, 0},
8647	{0xA6, 0x66, 0x66, 0, 0},
8648	{0xA7, 0x66, 0x66, 0, 0},
8649	{0xA8, 0x66, 0x66, 0, 0},
8650	{0xA9, 0x66, 0x66, 0, 0},
8651	{0xAA, 0x66, 0x66, 0, 0},
8652	{0xAB, 0x66, 0x66, 0, 0},
8653	{0xAC, 0x66, 0x66, 0, 0},
8654	{0xAD, 0x66, 0x66, 0, 0},
8655	{0xAE, 0x66, 0x66, 0, 0},
8656	{0xAF, 0x66, 0x66, 0, 0},
8657	{0xB0, 0x66, 0x66, 0, 0},
8658	{0xB1, 0x66, 0x66, 0, 0},
8659	{0xB2, 0x66, 0x66, 0, 0},
8660	{0xB3, 0xa, 0xa, 0, 0},
8661	{0xB4, 0, 0, 0, 0},
8662	{0xB5, 0, 0, 0, 0},
8663	{0xB6, 0, 0, 0, 0},
8664	{0xFFFF, 0, 0, 0, 0}
8665};
8666
8667static struct radio_regs regs_TX_2056_A1[] = {
8668	{0x02, 0, 0, 0, 0},
8669	{0x03, 0, 0, 0, 0},
8670	{0x04, 0, 0, 0, 0},
8671	{0x05, 0, 0, 0, 0},
8672	{0x06, 0, 0, 0, 0},
8673	{0x07, 0, 0, 0, 0},
8674	{0x08, 0, 0, 0, 0},
8675	{0x09, 0, 0, 0, 0},
8676	{0x0A, 0, 0, 0, 0},
8677	{0x0B, 0, 0, 0, 0},
8678	{0x0C, 0, 0, 0, 0},
8679	{0x0D, 0, 0, 0, 0},
8680	{0x0E, 0, 0, 0, 0},
8681	{0x0F, 0, 0, 0, 0},
8682	{0x10, 0, 0, 0, 0},
8683	{0x11, 0, 0, 0, 0},
8684	{0x12, 0, 0, 0, 0},
8685	{0x13, 0, 0, 0, 0},
8686	{0x14, 0, 0, 0, 0},
8687	{0x15, 0, 0, 0, 0},
8688	{0x16, 0, 0, 0, 0},
8689	{0x17, 0, 0, 0, 0},
8690	{0x18, 0, 0, 0, 0},
8691	{0x19, 0, 0, 0, 0},
8692	{0x1A, 0, 0, 0, 0},
8693	{0x1B, 0, 0, 0, 0},
8694	{0x1C, 0, 0, 0, 0},
8695	{0x1D, 0, 0, 0, 0},
8696	{0x1E, 0, 0, 0, 0},
8697	{0x1F, 0, 0, 0, 0},
8698	{0x20, 0, 0, 0, 0},
8699	{0x21, 0x88, 0x88, 0, 0},
8700	{0x22, 0x88, 0x88, 0, 0},
8701	{0x23, 0x88, 0x88, 0, 0},
8702	{0x24, 0x88, 0x88, 0, 0},
8703	{0x25, 0xc, 0xc, 0, 0},
8704	{0x26, 0, 0, 0, 0},
8705	{0x27, 0x3, 0x3, 0, 0},
8706	{0x28, 0, 0, 0, 0},
8707	{0x29, 0x3, 0x3, 0, 0},
8708	{0x2A, 0x37, 0x37, 0, 0},
8709	{0x2B, 0x3, 0x3, 0, 0},
8710	{0x2C, 0, 0, 0, 0},
8711	{0x2D, 0, 0, 0, 0},
8712	{0x2E, 0x1, 0x1, 0, 0},
8713	{0x2F, 0x1, 0x1, 0, 0},
8714	{0x30, 0, 0, 0, 0},
8715	{0x31, 0, 0, 0, 0},
8716	{0x32, 0, 0, 0, 0},
8717	{0x33, 0x11, 0x11, 0, 0},
8718	{0x34, 0x11, 0x11, 0, 0},
8719	{0x35, 0, 0, 0, 0},
8720	{0x36, 0, 0, 0, 0},
8721	{0x37, 0x3, 0x3, 0, 0},
8722	{0x38, 0xf, 0xf, 0, 0},
8723	{0x39, 0, 0, 0, 0},
8724	{0x3A, 0x2d, 0x2d, 0, 0},
8725	{0x3B, 0, 0, 0, 0},
8726	{0x3C, 0x6e, 0x6e, 0, 0},
8727	{0x3D, 0xf0, 0xf0, 1, 1},
8728	{0x3E, 0, 0, 0, 0},
8729	{0x3F, 0, 0, 0, 0},
8730	{0x40, 0, 0, 0, 0},
8731	{0x41, 0x3, 0x3, 0, 0},
8732	{0x42, 0x3, 0x3, 0, 0},
8733	{0x43, 0, 0, 0, 0},
8734	{0x44, 0x1e, 0x1e, 0, 0},
8735	{0x45, 0, 0, 0, 0},
8736	{0x46, 0x6e, 0x6e, 0, 0},
8737	{0x47, 0xf0, 0xf0, 1, 1},
8738	{0x48, 0, 0, 0, 0},
8739	{0x49, 0x2, 0x2, 0, 0},
8740	{0x4A, 0xff, 0xff, 1, 1},
8741	{0x4B, 0xc, 0xc, 0, 0},
8742	{0x4C, 0, 0, 0, 0},
8743	{0x4D, 0x38, 0x38, 0, 0},
8744	{0x4E, 0x70, 0x70, 1, 1},
8745	{0x4F, 0x2, 0x2, 0, 0},
8746	{0x50, 0x88, 0x88, 0, 0},
8747	{0x51, 0xc, 0xc, 0, 0},
8748	{0x52, 0, 0, 0, 0},
8749	{0x53, 0x8, 0x8, 0, 0},
8750	{0x54, 0x70, 0x70, 1, 1},
8751	{0x55, 0x2, 0x2, 0, 0},
8752	{0x56, 0xff, 0xff, 1, 1},
8753	{0x57, 0, 0, 0, 0},
8754	{0x58, 0x83, 0x83, 0, 0},
8755	{0x59, 0x77, 0x77, 1, 1},
8756	{0x5A, 0, 0, 0, 0},
8757	{0x5B, 0x2, 0x2, 0, 0},
8758	{0x5C, 0x88, 0x88, 0, 0},
8759	{0x5D, 0, 0, 0, 0},
8760	{0x5E, 0x8, 0x8, 0, 0},
8761	{0x5F, 0x77, 0x77, 1, 1},
8762	{0x60, 0x1, 0x1, 0, 0},
8763	{0x61, 0, 0, 0, 0},
8764	{0x62, 0x7, 0x7, 0, 0},
8765	{0x63, 0, 0, 0, 0},
8766	{0x64, 0x7, 0x7, 0, 0},
8767	{0x65, 0, 0, 0, 0},
8768	{0x66, 0, 0, 0, 0},
8769	{0x67, 0x72, 0x72, 1, 1},
8770	{0x68, 0, 0, 0, 0},
8771	{0x69, 0xa, 0xa, 0, 0},
8772	{0x6A, 0, 0, 0, 0},
8773	{0x6B, 0, 0, 0, 0},
8774	{0x6C, 0, 0, 0, 0},
8775	{0x6D, 0, 0, 0, 0},
8776	{0x6E, 0, 0, 0, 0},
8777	{0x6F, 0, 0, 0, 0},
8778	{0x70, 0, 0, 0, 0},
8779	{0x71, 0x2, 0x2, 0, 0},
8780	{0x72, 0, 0, 0, 0},
8781	{0x73, 0, 0, 0, 0},
8782	{0x74, 0xe, 0xe, 0, 0},
8783	{0x75, 0xe, 0xe, 0, 0},
8784	{0x76, 0xe, 0xe, 0, 0},
8785	{0x77, 0x13, 0x13, 0, 0},
8786	{0x78, 0x13, 0x13, 0, 0},
8787	{0x79, 0x1b, 0x1b, 0, 0},
8788	{0x7A, 0x1b, 0x1b, 0, 0},
8789	{0x7B, 0x55, 0x55, 0, 0},
8790	{0x7C, 0x5b, 0x5b, 0, 0},
8791	{0x7D, 0, 0, 0, 0},
8792	{0x7E, 0, 0, 0, 0},
8793	{0x7F, 0, 0, 0, 0},
8794	{0x80, 0, 0, 0, 0},
8795	{0x81, 0, 0, 0, 0},
8796	{0x82, 0, 0, 0, 0},
8797	{0x83, 0, 0, 0, 0},
8798	{0x84, 0, 0, 0, 0},
8799	{0x85, 0, 0, 0, 0},
8800	{0x86, 0, 0, 0, 0},
8801	{0x87, 0, 0, 0, 0},
8802	{0x88, 0, 0, 0, 0},
8803	{0x89, 0, 0, 0, 0},
8804	{0x8A, 0, 0, 0, 0},
8805	{0x8B, 0, 0, 0, 0},
8806	{0x8C, 0, 0, 0, 0},
8807	{0x8D, 0, 0, 0, 0},
8808	{0x8E, 0, 0, 0, 0},
8809	{0x8F, 0, 0, 0, 0},
8810	{0x90, 0, 0, 0, 0},
8811	{0x91, 0, 0, 0, 0},
8812	{0x92, 0, 0, 0, 0},
8813	{0xFFFF, 0, 0, 0, 0}
8814};
8815
8816static struct radio_regs regs_RX_2056_A1[] = {
8817	{0x02, 0, 0, 0, 0},
8818	{0x03, 0, 0, 0, 0},
8819	{0x04, 0, 0, 0, 0},
8820	{0x05, 0, 0, 0, 0},
8821	{0x06, 0, 0, 0, 0},
8822	{0x07, 0, 0, 0, 0},
8823	{0x08, 0, 0, 0, 0},
8824	{0x09, 0, 0, 0, 0},
8825	{0x0A, 0, 0, 0, 0},
8826	{0x0B, 0, 0, 0, 0},
8827	{0x0C, 0, 0, 0, 0},
8828	{0x0D, 0, 0, 0, 0},
8829	{0x0E, 0, 0, 0, 0},
8830	{0x0F, 0, 0, 0, 0},
8831	{0x10, 0, 0, 0, 0},
8832	{0x11, 0, 0, 0, 0},
8833	{0x12, 0, 0, 0, 0},
8834	{0x13, 0, 0, 0, 0},
8835	{0x14, 0, 0, 0, 0},
8836	{0x15, 0, 0, 0, 0},
8837	{0x16, 0, 0, 0, 0},
8838	{0x17, 0, 0, 0, 0},
8839	{0x18, 0, 0, 0, 0},
8840	{0x19, 0, 0, 0, 0},
8841	{0x1A, 0, 0, 0, 0},
8842	{0x1B, 0, 0, 0, 0},
8843	{0x1C, 0, 0, 0, 0},
8844	{0x1D, 0, 0, 0, 0},
8845	{0x1E, 0, 0, 0, 0},
8846	{0x1F, 0, 0, 0, 0},
8847	{0x20, 0x3, 0x3, 0, 0},
8848	{0x21, 0, 0, 0, 0},
8849	{0x22, 0, 0, 0, 0},
8850	{0x23, 0x90, 0x90, 0, 0},
8851	{0x24, 0x55, 0x55, 0, 0},
8852	{0x25, 0x15, 0x15, 0, 0},
8853	{0x26, 0x5, 0x5, 0, 0},
8854	{0x27, 0x15, 0x15, 0, 0},
8855	{0x28, 0x5, 0x5, 0, 0},
8856	{0x29, 0x20, 0x20, 0, 0},
8857	{0x2A, 0x11, 0x11, 0, 0},
8858	{0x2B, 0x90, 0x90, 0, 0},
8859	{0x2C, 0, 0, 0, 0},
8860	{0x2D, 0x88, 0x88, 0, 0},
8861	{0x2E, 0x32, 0x32, 0, 0},
8862	{0x2F, 0x77, 0x77, 0, 0},
8863	{0x30, 0x17, 0x17, 1, 1},
8864	{0x31, 0xff, 0xff, 1, 1},
8865	{0x32, 0x20, 0x20, 0, 0},
8866	{0x33, 0, 0, 0, 0},
8867	{0x34, 0x88, 0x88, 0, 0},
8868	{0x35, 0x32, 0x32, 0, 0},
8869	{0x36, 0x77, 0x77, 0, 0},
8870	{0x37, 0x17, 0x17, 1, 1},
8871	{0x38, 0xf0, 0xf0, 1, 1},
8872	{0x39, 0x20, 0x20, 0, 0},
8873	{0x3A, 0x8, 0x8, 0, 0},
8874	{0x3B, 0x55, 0x55, 1, 1},
8875	{0x3C, 0, 0, 0, 0},
8876	{0x3D, 0x44, 0x44, 1, 1},
8877	{0x3E, 0, 0, 0, 0},
8878	{0x3F, 0x44, 0x44, 0, 0},
8879	{0x40, 0xf, 0xf, 1, 1},
8880	{0x41, 0x6, 0x6, 0, 0},
8881	{0x42, 0x4, 0x4, 0, 0},
8882	{0x43, 0x50, 0x50, 1, 1},
8883	{0x44, 0x8, 0x8, 0, 0},
8884	{0x45, 0x55, 0x55, 1, 1},
8885	{0x46, 0, 0, 0, 0},
8886	{0x47, 0x11, 0x11, 0, 0},
8887	{0x48, 0, 0, 0, 0},
8888	{0x49, 0x44, 0x44, 0, 0},
8889	{0x4A, 0x7, 0x7, 0, 0},
8890	{0x4B, 0x6, 0x6, 0, 0},
8891	{0x4C, 0x4, 0x4, 0, 0},
8892	{0x4D, 0, 0, 0, 0},
8893	{0x4E, 0, 0, 0, 0},
8894	{0x4F, 0x26, 0x26, 1, 1},
8895	{0x50, 0x26, 0x26, 1, 1},
8896	{0x51, 0xf, 0xf, 1, 1},
8897	{0x52, 0xf, 0xf, 1, 1},
8898	{0x53, 0x44, 0x44, 0, 0},
8899	{0x54, 0, 0, 0, 0},
8900	{0x55, 0, 0, 0, 0},
8901	{0x56, 0x8, 0x8, 0, 0},
8902	{0x57, 0x8, 0x8, 0, 0},
8903	{0x58, 0x7, 0x7, 0, 0},
8904	{0x59, 0x22, 0x22, 0, 0},
8905	{0x5A, 0x22, 0x22, 0, 0},
8906	{0x5B, 0x2, 0x2, 0, 0},
8907	{0x5C, 0x2f, 0x2f, 1, 1},
8908	{0x5D, 0x7, 0x7, 0, 0},
8909	{0x5E, 0x55, 0x55, 0, 0},
8910	{0x5F, 0x23, 0x23, 0, 0},
8911	{0x60, 0x41, 0x41, 0, 0},
8912	{0x61, 0x1, 0x1, 0, 0},
8913	{0x62, 0xa, 0xa, 0, 0},
8914	{0x63, 0, 0, 0, 0},
8915	{0x64, 0, 0, 0, 0},
8916	{0x65, 0, 0, 0, 0},
8917	{0x66, 0, 0, 0, 0},
8918	{0x67, 0, 0, 0, 0},
8919	{0x68, 0, 0, 0, 0},
8920	{0x69, 0, 0, 0, 0},
8921	{0x6A, 0, 0, 0, 0},
8922	{0x6B, 0xc, 0xc, 0, 0},
8923	{0x6C, 0, 0, 0, 0},
8924	{0x6D, 0, 0, 0, 0},
8925	{0x6E, 0, 0, 0, 0},
8926	{0x6F, 0, 0, 0, 0},
8927	{0x70, 0, 0, 0, 0},
8928	{0x71, 0, 0, 0, 0},
8929	{0x72, 0x22, 0x22, 0, 0},
8930	{0x73, 0x22, 0x22, 0, 0},
8931	{0x74, 0, 0, 1, 1},
8932	{0x75, 0xa, 0xa, 0, 0},
8933	{0x76, 0x1, 0x1, 0, 0},
8934	{0x77, 0x22, 0x22, 0, 0},
8935	{0x78, 0x30, 0x30, 0, 0},
8936	{0x79, 0, 0, 0, 0},
8937	{0x7A, 0, 0, 0, 0},
8938	{0x7B, 0, 0, 0, 0},
8939	{0x7C, 0, 0, 0, 0},
8940	{0x7D, 0, 0, 0, 0},
8941	{0x7E, 0, 0, 0, 0},
8942	{0x7F, 0, 0, 0, 0},
8943	{0x80, 0, 0, 0, 0},
8944	{0x81, 0, 0, 0, 0},
8945	{0x82, 0, 0, 0, 0},
8946	{0x83, 0, 0, 0, 0},
8947	{0x84, 0, 0, 0, 0},
8948	{0x85, 0, 0, 0, 0},
8949	{0x86, 0, 0, 0, 0},
8950	{0x87, 0, 0, 0, 0},
8951	{0x88, 0, 0, 0, 0},
8952	{0x89, 0, 0, 0, 0},
8953	{0x8A, 0, 0, 0, 0},
8954	{0x8B, 0, 0, 0, 0},
8955	{0x8C, 0, 0, 0, 0},
8956	{0x8D, 0, 0, 0, 0},
8957	{0x8E, 0, 0, 0, 0},
8958	{0x8F, 0, 0, 0, 0},
8959	{0x90, 0, 0, 0, 0},
8960	{0x91, 0, 0, 0, 0},
8961	{0x92, 0, 0, 0, 0},
8962	{0x93, 0, 0, 0, 0},
8963	{0x94, 0, 0, 0, 0},
8964	{0xFFFF, 0, 0, 0, 0}
8965};
8966
8967static struct radio_regs regs_SYN_2056_rev5[] = {
8968	{0x02, 0, 0, 0, 0},
8969	{0x03, 0, 0, 0, 0},
8970	{0x04, 0, 0, 0, 0},
8971	{0x05, 0, 0, 0, 0},
8972	{0x06, 0, 0, 0, 0},
8973	{0x07, 0, 0, 0, 0},
8974	{0x08, 0, 0, 0, 0},
8975	{0x09, 0x1, 0x1, 0, 0},
8976	{0x0A, 0, 0, 0, 0},
8977	{0x0B, 0, 0, 0, 0},
8978	{0x0C, 0, 0, 0, 0},
8979	{0x0D, 0, 0, 0, 0},
8980	{0x0E, 0, 0, 0, 0},
8981	{0x0F, 0, 0, 0, 0},
8982	{0x10, 0, 0, 0, 0},
8983	{0x11, 0, 0, 0, 0},
8984	{0x12, 0, 0, 0, 0},
8985	{0x13, 0, 0, 0, 0},
8986	{0x14, 0, 0, 0, 0},
8987	{0x15, 0, 0, 0, 0},
8988	{0x16, 0, 0, 0, 0},
8989	{0x17, 0, 0, 0, 0},
8990	{0x18, 0, 0, 0, 0},
8991	{0x19, 0, 0, 0, 0},
8992	{0x1A, 0, 0, 0, 0},
8993	{0x1B, 0, 0, 0, 0},
8994	{0x1C, 0, 0, 0, 0},
8995	{0x1D, 0, 0, 0, 0},
8996	{0x1E, 0, 0, 0, 0},
8997	{0x1F, 0, 0, 0, 0},
8998	{0x20, 0, 0, 0, 0},
8999	{0x21, 0, 0, 0, 0},
9000	{0x22, 0x60, 0x60, 0, 0},
9001	{0x23, 0x6, 0x6, 0, 0},
9002	{0x24, 0xc, 0xc, 0, 0},
9003	{0x25, 0, 0, 0, 0},
9004	{0x26, 0, 0, 0, 0},
9005	{0x27, 0, 0, 0, 0},
9006	{0x28, 0x1, 0x1, 0, 0},
9007	{0x29, 0, 0, 0, 0},
9008	{0x2A, 0, 0, 0, 0},
9009	{0x2B, 0, 0, 0, 0},
9010	{0x2C, 0, 0, 0, 0},
9011	{0x2D, 0, 0, 0, 0},
9012	{0x2E, 0, 0, 0, 0},
9013	{0x2F, 0x1f, 0x1f, 0, 0},
9014	{0x30, 0x15, 0x15, 0, 0},
9015	{0x31, 0xf, 0xf, 0, 0},
9016	{0x32, 0, 0, 0, 0},
9017	{0x33, 0, 0, 0, 0},
9018	{0x34, 0, 0, 0, 0},
9019	{0x35, 0, 0, 0, 0},
9020	{0x36, 0, 0, 0, 0},
9021	{0x37, 0, 0, 0, 0},
9022	{0x38, 0, 0, 0, 0},
9023	{0x39, 0, 0, 0, 0},
9024	{0x3A, 0, 0, 0, 0},
9025	{0x3B, 0, 0, 0, 0},
9026	{0x3C, 0x13, 0x13, 0, 0},
9027	{0x3D, 0xf, 0xf, 0, 0},
9028	{0x3E, 0x18, 0x18, 0, 0},
9029	{0x3F, 0, 0, 0, 0},
9030	{0x40, 0, 0, 0, 0},
9031	{0x41, 0x20, 0x20, 0, 0},
9032	{0x42, 0x20, 0x20, 0, 0},
9033	{0x43, 0, 0, 0, 0},
9034	{0x44, 0x77, 0x77, 0, 0},
9035	{0x45, 0x7, 0x7, 0, 0},
9036	{0x46, 0x1, 0x1, 0, 0},
9037	{0x47, 0x4, 0x4, 0, 0},
9038	{0x48, 0xf, 0xf, 0, 0},
9039	{0x49, 0x30, 0x30, 0, 0},
9040	{0x4A, 0x32, 0x32, 0, 0},
9041	{0x4B, 0xd, 0xd, 0, 0},
9042	{0x4C, 0xd, 0xd, 0, 0},
9043	{0x4D, 0x4, 0x4, 0, 0},
9044	{0x4E, 0x6, 0x6, 0, 0},
9045	{0x4F, 0x1, 0x1, 0, 0},
9046	{0x50, 0x1c, 0x1c, 0, 0},
9047	{0x51, 0x2, 0x2, 0, 0},
9048	{0x52, 0x2, 0x2, 0, 0},
9049	{0x53, 0xf7, 0xf7, 1, 1},
9050	{0x54, 0xb4, 0xb4, 0, 0},
9051	{0x55, 0xd2, 0xd2, 0, 0},
9052	{0x56, 0, 0, 0, 0},
9053	{0x57, 0, 0, 0, 0},
9054	{0x58, 0x4, 0x4, 0, 0},
9055	{0x59, 0x96, 0x96, 0, 0},
9056	{0x5A, 0x3e, 0x3e, 0, 0},
9057	{0x5B, 0x3e, 0x3e, 0, 0},
9058	{0x5C, 0x13, 0x13, 0, 0},
9059	{0x5D, 0x2, 0x2, 0, 0},
9060	{0x5E, 0, 0, 0, 0},
9061	{0x5F, 0x7, 0x7, 0, 0},
9062	{0x60, 0x7, 0x7, 1, 1},
9063	{0x61, 0x8, 0x8, 0, 0},
9064	{0x62, 0x3, 0x3, 0, 0},
9065	{0x63, 0, 0, 0, 0},
9066	{0x64, 0, 0, 0, 0},
9067	{0x65, 0, 0, 0, 0},
9068	{0x66, 0, 0, 0, 0},
9069	{0x67, 0, 0, 0, 0},
9070	{0x68, 0x40, 0x40, 0, 0},
9071	{0x69, 0, 0, 0, 0},
9072	{0x6A, 0, 0, 0, 0},
9073	{0x6B, 0, 0, 0, 0},
9074	{0x6C, 0, 0, 0, 0},
9075	{0x6D, 0x1, 0x1, 0, 0},
9076	{0x6E, 0, 0, 0, 0},
9077	{0x6F, 0, 0, 0, 0},
9078	{0x70, 0x60, 0x60, 0, 0},
9079	{0x71, 0x66, 0x66, 0, 0},
9080	{0x72, 0xc, 0xc, 0, 0},
9081	{0x73, 0x66, 0x66, 0, 0},
9082	{0x74, 0x8f, 0x8f, 1, 1},
9083	{0x75, 0, 0, 0, 0},
9084	{0x76, 0xcc, 0xcc, 0, 0},
9085	{0x77, 0x1, 0x1, 0, 0},
9086	{0x78, 0x66, 0x66, 0, 0},
9087	{0x79, 0x66, 0x66, 0, 0},
9088	{0x7A, 0, 0, 0, 0},
9089	{0x7B, 0, 0, 0, 0},
9090	{0x7C, 0, 0, 0, 0},
9091	{0x7D, 0, 0, 0, 0},
9092	{0x7E, 0, 0, 0, 0},
9093	{0x7F, 0, 0, 0, 0},
9094	{0x80, 0, 0, 0, 0},
9095	{0x81, 0, 0, 0, 0},
9096	{0x82, 0, 0, 0, 0},
9097	{0x83, 0, 0, 0, 0},
9098	{0x84, 0, 0, 0, 0},
9099	{0x85, 0xff, 0xff, 0, 0},
9100	{0x86, 0, 0, 0, 0},
9101	{0x87, 0, 0, 0, 0},
9102	{0x88, 0, 0, 0, 0},
9103	{0x89, 0, 0, 0, 0},
9104	{0x8A, 0, 0, 0, 0},
9105	{0x8B, 0, 0, 0, 0},
9106	{0x8C, 0, 0, 0, 0},
9107	{0x8D, 0, 0, 0, 0},
9108	{0x8E, 0, 0, 0, 0},
9109	{0x8F, 0, 0, 0, 0},
9110	{0x90, 0, 0, 0, 0},
9111	{0x91, 0, 0, 0, 0},
9112	{0x92, 0, 0, 0, 0},
9113	{0x93, 0, 0, 0, 0},
9114	{0x94, 0, 0, 0, 0},
9115	{0x95, 0, 0, 0, 0},
9116	{0x96, 0, 0, 0, 0},
9117	{0x97, 0, 0, 0, 0},
9118	{0x98, 0, 0, 0, 0},
9119	{0x99, 0, 0, 0, 0},
9120	{0x9A, 0, 0, 0, 0},
9121	{0x9B, 0, 0, 0, 0},
9122	{0x9C, 0, 0, 0, 0},
9123	{0x9D, 0, 0, 0, 0},
9124	{0x9E, 0, 0, 0, 0},
9125	{0x9F, 0x6, 0x6, 0, 0},
9126	{0xA0, 0x66, 0x66, 0, 0},
9127	{0xA1, 0x66, 0x66, 0, 0},
9128	{0xA2, 0x66, 0x66, 0, 0},
9129	{0xA3, 0x66, 0x66, 0, 0},
9130	{0xA4, 0x66, 0x66, 0, 0},
9131	{0xA5, 0x66, 0x66, 0, 0},
9132	{0xA6, 0x66, 0x66, 0, 0},
9133	{0xA7, 0x66, 0x66, 0, 0},
9134	{0xA8, 0x66, 0x66, 0, 0},
9135	{0xA9, 0x66, 0x66, 0, 0},
9136	{0xAA, 0x66, 0x66, 0, 0},
9137	{0xAB, 0x66, 0x66, 0, 0},
9138	{0xAC, 0x66, 0x66, 0, 0},
9139	{0xAD, 0x66, 0x66, 0, 0},
9140	{0xAE, 0x66, 0x66, 0, 0},
9141	{0xAF, 0x66, 0x66, 0, 0},
9142	{0xB0, 0x66, 0x66, 0, 0},
9143	{0xB1, 0x66, 0x66, 0, 0},
9144	{0xB2, 0x66, 0x66, 0, 0},
9145	{0xB3, 0xa, 0xa, 0, 0},
9146	{0xB4, 0, 0, 0, 0},
9147	{0xB5, 0, 0, 0, 0},
9148	{0xB6, 0, 0, 0, 0},
9149	{0xFFFF, 0, 0, 0, 0}
9150};
9151
9152static struct radio_regs regs_TX_2056_rev5[] = {
9153	{0x02, 0, 0, 0, 0},
9154	{0x03, 0, 0, 0, 0},
9155	{0x04, 0, 0, 0, 0},
9156	{0x05, 0, 0, 0, 0},
9157	{0x06, 0, 0, 0, 0},
9158	{0x07, 0, 0, 0, 0},
9159	{0x08, 0, 0, 0, 0},
9160	{0x09, 0, 0, 0, 0},
9161	{0x0A, 0, 0, 0, 0},
9162	{0x0B, 0, 0, 0, 0},
9163	{0x0C, 0, 0, 0, 0},
9164	{0x0D, 0, 0, 0, 0},
9165	{0x0E, 0, 0, 0, 0},
9166	{0x0F, 0, 0, 0, 0},
9167	{0x10, 0, 0, 0, 0},
9168	{0x11, 0, 0, 0, 0},
9169	{0x12, 0, 0, 0, 0},
9170	{0x13, 0, 0, 0, 0},
9171	{0x14, 0, 0, 0, 0},
9172	{0x15, 0, 0, 0, 0},
9173	{0x16, 0, 0, 0, 0},
9174	{0x17, 0, 0, 0, 0},
9175	{0x18, 0, 0, 0, 0},
9176	{0x19, 0, 0, 0, 0},
9177	{0x1A, 0, 0, 0, 0},
9178	{0x1B, 0, 0, 0, 0},
9179	{0x1C, 0, 0, 0, 0},
9180	{0x1D, 0, 0, 0, 0},
9181	{0x1E, 0, 0, 0, 0},
9182	{0x1F, 0, 0, 0, 0},
9183	{0x20, 0, 0, 0, 0},
9184	{0x21, 0x88, 0x88, 0, 0},
9185	{0x22, 0x88, 0x88, 0, 0},
9186	{0x23, 0x88, 0x88, 0, 0},
9187	{0x24, 0x88, 0x88, 0, 0},
9188	{0x25, 0xc, 0xc, 0, 0},
9189	{0x26, 0, 0, 0, 0},
9190	{0x27, 0x3, 0x3, 0, 0},
9191	{0x28, 0, 0, 0, 0},
9192	{0x29, 0x3, 0x3, 0, 0},
9193	{0x2A, 0x37, 0x37, 0, 0},
9194	{0x2B, 0x3, 0x3, 0, 0},
9195	{0x2C, 0, 0, 0, 0},
9196	{0x2D, 0, 0, 0, 0},
9197	{0x2E, 0x1, 0x1, 0, 0},
9198	{0x2F, 0x1, 0x1, 0, 0},
9199	{0x30, 0, 0, 0, 0},
9200	{0x31, 0, 0, 0, 0},
9201	{0x32, 0, 0, 0, 0},
9202	{0x33, 0x11, 0x11, 0, 0},
9203	{0x34, 0x11, 0x11, 0, 0},
9204	{0x35, 0, 0, 0, 0},
9205	{0x36, 0, 0, 0, 0},
9206	{0x37, 0x3, 0x3, 0, 0},
9207	{0x38, 0xf, 0xf, 0, 0},
9208	{0x39, 0, 0, 0, 0},
9209	{0x3A, 0x2d, 0x2d, 0, 0},
9210	{0x3B, 0, 0, 0, 0},
9211	{0x3C, 0x6e, 0x6e, 0, 0},
9212	{0x3D, 0xf0, 0xf0, 1, 1},
9213	{0x3E, 0, 0, 0, 0},
9214	{0x3F, 0, 0, 0, 0},
9215	{0x40, 0, 0, 0, 0},
9216	{0x41, 0x3, 0x3, 0, 0},
9217	{0x42, 0x3, 0x3, 0, 0},
9218	{0x43, 0, 0, 0, 0},
9219	{0x44, 0x1e, 0x1e, 0, 0},
9220	{0x45, 0, 0, 0, 0},
9221	{0x46, 0x6e, 0x6e, 0, 0},
9222	{0x47, 0xf0, 0xf0, 1, 1},
9223	{0x48, 0, 0, 0, 0},
9224	{0x49, 0x2, 0x2, 0, 0},
9225	{0x4A, 0xff, 0xff, 1, 1},
9226	{0x4B, 0xc, 0xc, 0, 0},
9227	{0x4C, 0, 0, 0, 0},
9228	{0x4D, 0x38, 0x38, 0, 0},
9229	{0x4E, 0x70, 0x70, 1, 1},
9230	{0x4F, 0x2, 0x2, 0, 0},
9231	{0x50, 0x88, 0x88, 0, 0},
9232	{0x51, 0xc, 0xc, 0, 0},
9233	{0x52, 0, 0, 0, 0},
9234	{0x53, 0x8, 0x8, 0, 0},
9235	{0x54, 0x70, 0x70, 1, 1},
9236	{0x55, 0x2, 0x2, 0, 0},
9237	{0x56, 0xff, 0xff, 1, 1},
9238	{0x57, 0, 0, 0, 0},
9239	{0x58, 0x83, 0x83, 0, 0},
9240	{0x59, 0x77, 0x77, 1, 1},
9241	{0x5A, 0, 0, 0, 0},
9242	{0x5B, 0x2, 0x2, 0, 0},
9243	{0x5C, 0x88, 0x88, 0, 0},
9244	{0x5D, 0, 0, 0, 0},
9245	{0x5E, 0x8, 0x8, 0, 0},
9246	{0x5F, 0x77, 0x77, 1, 1},
9247	{0x60, 0x1, 0x1, 0, 0},
9248	{0x61, 0, 0, 0, 0},
9249	{0x62, 0x7, 0x7, 0, 0},
9250	{0x63, 0, 0, 0, 0},
9251	{0x64, 0x7, 0x7, 0, 0},
9252	{0x65, 0, 0, 0, 0},
9253	{0x66, 0, 0, 0, 0},
9254	{0x67, 0, 0, 1, 1},
9255	{0x68, 0, 0, 0, 0},
9256	{0x69, 0xa, 0xa, 0, 0},
9257	{0x6A, 0, 0, 0, 0},
9258	{0x6B, 0, 0, 0, 0},
9259	{0x6C, 0, 0, 0, 0},
9260	{0x6D, 0, 0, 0, 0},
9261	{0x6E, 0, 0, 0, 0},
9262	{0x6F, 0, 0, 0, 0},
9263	{0x70, 0, 0, 0, 0},
9264	{0x71, 0x2, 0x2, 0, 0},
9265	{0x72, 0, 0, 0, 0},
9266	{0x73, 0, 0, 0, 0},
9267	{0x74, 0xe, 0xe, 0, 0},
9268	{0x75, 0xe, 0xe, 0, 0},
9269	{0x76, 0xe, 0xe, 0, 0},
9270	{0x77, 0x13, 0x13, 0, 0},
9271	{0x78, 0x13, 0x13, 0, 0},
9272	{0x79, 0x1b, 0x1b, 0, 0},
9273	{0x7A, 0x1b, 0x1b, 0, 0},
9274	{0x7B, 0x55, 0x55, 0, 0},
9275	{0x7C, 0x5b, 0x5b, 0, 0},
9276	{0x7D, 0, 0, 0, 0},
9277	{0x7E, 0, 0, 0, 0},
9278	{0x7F, 0, 0, 0, 0},
9279	{0x80, 0, 0, 0, 0},
9280	{0x81, 0, 0, 0, 0},
9281	{0x82, 0, 0, 0, 0},
9282	{0x83, 0, 0, 0, 0},
9283	{0x84, 0, 0, 0, 0},
9284	{0x85, 0, 0, 0, 0},
9285	{0x86, 0, 0, 0, 0},
9286	{0x87, 0, 0, 0, 0},
9287	{0x88, 0, 0, 0, 0},
9288	{0x89, 0, 0, 0, 0},
9289	{0x8A, 0, 0, 0, 0},
9290	{0x8B, 0, 0, 0, 0},
9291	{0x8C, 0, 0, 0, 0},
9292	{0x8D, 0, 0, 0, 0},
9293	{0x8E, 0, 0, 0, 0},
9294	{0x8F, 0, 0, 0, 0},
9295	{0x90, 0, 0, 0, 0},
9296	{0x91, 0, 0, 0, 0},
9297	{0x92, 0, 0, 0, 0},
9298	{0x93, 0x70, 0x70, 0, 0},
9299	{0x94, 0x70, 0x70, 0, 0},
9300	{0x95, 0x71, 0x71, 1, 1},
9301	{0x96, 0x71, 0x71, 1, 1},
9302	{0x97, 0x72, 0x72, 1, 1},
9303	{0x98, 0x73, 0x73, 1, 1},
9304	{0x99, 0x74, 0x74, 1, 1},
9305	{0x9A, 0x75, 0x75, 1, 1},
9306	{0xFFFF, 0, 0, 0, 0}
9307};
9308
9309static struct radio_regs regs_RX_2056_rev5[] = {
9310	{0x02, 0, 0, 0, 0},
9311	{0x03, 0, 0, 0, 0},
9312	{0x04, 0, 0, 0, 0},
9313	{0x05, 0, 0, 0, 0},
9314	{0x06, 0, 0, 0, 0},
9315	{0x07, 0, 0, 0, 0},
9316	{0x08, 0, 0, 0, 0},
9317	{0x09, 0, 0, 0, 0},
9318	{0x0A, 0, 0, 0, 0},
9319	{0x0B, 0, 0, 0, 0},
9320	{0x0C, 0, 0, 0, 0},
9321	{0x0D, 0, 0, 0, 0},
9322	{0x0E, 0, 0, 0, 0},
9323	{0x0F, 0, 0, 0, 0},
9324	{0x10, 0, 0, 0, 0},
9325	{0x11, 0, 0, 0, 0},
9326	{0x12, 0, 0, 0, 0},
9327	{0x13, 0, 0, 0, 0},
9328	{0x14, 0, 0, 0, 0},
9329	{0x15, 0, 0, 0, 0},
9330	{0x16, 0, 0, 0, 0},
9331	{0x17, 0, 0, 0, 0},
9332	{0x18, 0, 0, 0, 0},
9333	{0x19, 0, 0, 0, 0},
9334	{0x1A, 0, 0, 0, 0},
9335	{0x1B, 0, 0, 0, 0},
9336	{0x1C, 0, 0, 0, 0},
9337	{0x1D, 0, 0, 0, 0},
9338	{0x1E, 0, 0, 0, 0},
9339	{0x1F, 0, 0, 0, 0},
9340	{0x20, 0x3, 0x3, 0, 0},
9341	{0x21, 0, 0, 0, 0},
9342	{0x22, 0, 0, 0, 0},
9343	{0x23, 0x90, 0x90, 0, 0},
9344	{0x24, 0x55, 0x55, 0, 0},
9345	{0x25, 0x15, 0x15, 0, 0},
9346	{0x26, 0x5, 0x5, 0, 0},
9347	{0x27, 0x15, 0x15, 0, 0},
9348	{0x28, 0x5, 0x5, 0, 0},
9349	{0x29, 0x20, 0x20, 0, 0},
9350	{0x2A, 0x11, 0x11, 0, 0},
9351	{0x2B, 0x90, 0x90, 0, 0},
9352	{0x2C, 0, 0, 0, 0},
9353	{0x2D, 0x88, 0x88, 0, 0},
9354	{0x2E, 0x32, 0x32, 0, 0},
9355	{0x2F, 0x77, 0x77, 0, 0},
9356	{0x30, 0x17, 0x17, 1, 1},
9357	{0x31, 0xff, 0xff, 1, 1},
9358	{0x32, 0x20, 0x20, 0, 0},
9359	{0x33, 0, 0, 0, 0},
9360	{0x34, 0x88, 0x88, 0, 0},
9361	{0x35, 0x32, 0x32, 0, 0},
9362	{0x36, 0x77, 0x77, 0, 0},
9363	{0x37, 0x17, 0x17, 1, 1},
9364	{0x38, 0xf0, 0xf0, 1, 1},
9365	{0x39, 0x20, 0x20, 0, 0},
9366	{0x3A, 0x8, 0x8, 0, 0},
9367	{0x3B, 0x55, 0x55, 1, 1},
9368	{0x3C, 0, 0, 0, 0},
9369	{0x3D, 0x88, 0x88, 1, 1},
9370	{0x3E, 0, 0, 0, 0},
9371	{0x3F, 0, 0, 1, 1},
9372	{0x40, 0x7, 0x7, 1, 1},
9373	{0x41, 0x6, 0x6, 0, 0},
9374	{0x42, 0x4, 0x4, 0, 0},
9375	{0x43, 0, 0, 0, 0},
9376	{0x44, 0x8, 0x8, 0, 0},
9377	{0x45, 0x55, 0x55, 1, 1},
9378	{0x46, 0, 0, 0, 0},
9379	{0x47, 0x11, 0x11, 0, 0},
9380	{0x48, 0, 0, 0, 0},
9381	{0x49, 0, 0, 1, 1},
9382	{0x4A, 0x7, 0x7, 0, 0},
9383	{0x4B, 0x6, 0x6, 0, 0},
9384	{0x4C, 0x4, 0x4, 0, 0},
9385	{0x4D, 0, 0, 0, 0},
9386	{0x4E, 0, 0, 0, 0},
9387	{0x4F, 0x26, 0x26, 1, 1},
9388	{0x50, 0x26, 0x26, 1, 1},
9389	{0x51, 0xf, 0xf, 1, 1},
9390	{0x52, 0xf, 0xf, 1, 1},
9391	{0x53, 0x44, 0x44, 0, 0},
9392	{0x54, 0, 0, 0, 0},
9393	{0x55, 0, 0, 0, 0},
9394	{0x56, 0x8, 0x8, 0, 0},
9395	{0x57, 0x8, 0x8, 0, 0},
9396	{0x58, 0x7, 0x7, 0, 0},
9397	{0x59, 0x22, 0x22, 0, 0},
9398	{0x5A, 0x22, 0x22, 0, 0},
9399	{0x5B, 0x2, 0x2, 0, 0},
9400	{0x5C, 0x4, 0x4, 1, 1},
9401	{0x5D, 0x7, 0x7, 0, 0},
9402	{0x5E, 0x55, 0x55, 0, 0},
9403	{0x5F, 0x23, 0x23, 0, 0},
9404	{0x60, 0x41, 0x41, 0, 0},
9405	{0x61, 0x1, 0x1, 0, 0},
9406	{0x62, 0xa, 0xa, 0, 0},
9407	{0x63, 0, 0, 0, 0},
9408	{0x64, 0, 0, 0, 0},
9409	{0x65, 0, 0, 0, 0},
9410	{0x66, 0, 0, 0, 0},
9411	{0x67, 0, 0, 0, 0},
9412	{0x68, 0, 0, 0, 0},
9413	{0x69, 0, 0, 0, 0},
9414	{0x6A, 0, 0, 0, 0},
9415	{0x6B, 0xc, 0xc, 0, 0},
9416	{0x6C, 0, 0, 0, 0},
9417	{0x6D, 0, 0, 0, 0},
9418	{0x6E, 0, 0, 0, 0},
9419	{0x6F, 0, 0, 0, 0},
9420	{0x70, 0, 0, 0, 0},
9421	{0x71, 0, 0, 0, 0},
9422	{0x72, 0x22, 0x22, 0, 0},
9423	{0x73, 0x22, 0x22, 0, 0},
9424	{0x74, 0, 0, 1, 1},
9425	{0x75, 0xa, 0xa, 0, 0},
9426	{0x76, 0x1, 0x1, 0, 0},
9427	{0x77, 0x22, 0x22, 0, 0},
9428	{0x78, 0x30, 0x30, 0, 0},
9429	{0x79, 0, 0, 0, 0},
9430	{0x7A, 0, 0, 0, 0},
9431	{0x7B, 0, 0, 0, 0},
9432	{0x7C, 0, 0, 0, 0},
9433	{0x7D, 0, 0, 0, 0},
9434	{0x7E, 0, 0, 0, 0},
9435	{0x7F, 0, 0, 0, 0},
9436	{0x80, 0, 0, 0, 0},
9437	{0x81, 0, 0, 0, 0},
9438	{0x82, 0, 0, 0, 0},
9439	{0x83, 0, 0, 0, 0},
9440	{0x84, 0, 0, 0, 0},
9441	{0x85, 0, 0, 0, 0},
9442	{0x86, 0, 0, 0, 0},
9443	{0x87, 0, 0, 0, 0},
9444	{0x88, 0, 0, 0, 0},
9445	{0x89, 0, 0, 0, 0},
9446	{0x8A, 0, 0, 0, 0},
9447	{0x8B, 0, 0, 0, 0},
9448	{0x8C, 0, 0, 0, 0},
9449	{0x8D, 0, 0, 0, 0},
9450	{0x8E, 0, 0, 0, 0},
9451	{0x8F, 0, 0, 0, 0},
9452	{0x90, 0, 0, 0, 0},
9453	{0x91, 0, 0, 0, 0},
9454	{0x92, 0, 0, 0, 0},
9455	{0x93, 0, 0, 0, 0},
9456	{0x94, 0, 0, 0, 0},
9457	{0xFFFF, 0, 0, 0, 0}
9458};
9459
9460static struct radio_regs regs_SYN_2056_rev6[] = {
9461	{0x02, 0, 0, 0, 0},
9462	{0x03, 0, 0, 0, 0},
9463	{0x04, 0, 0, 0, 0},
9464	{0x05, 0, 0, 0, 0},
9465	{0x06, 0, 0, 0, 0},
9466	{0x07, 0, 0, 0, 0},
9467	{0x08, 0, 0, 0, 0},
9468	{0x09, 0x1, 0x1, 0, 0},
9469	{0x0A, 0, 0, 0, 0},
9470	{0x0B, 0, 0, 0, 0},
9471	{0x0C, 0, 0, 0, 0},
9472	{0x0D, 0, 0, 0, 0},
9473	{0x0E, 0, 0, 0, 0},
9474	{0x0F, 0, 0, 0, 0},
9475	{0x10, 0, 0, 0, 0},
9476	{0x11, 0, 0, 0, 0},
9477	{0x12, 0, 0, 0, 0},
9478	{0x13, 0, 0, 0, 0},
9479	{0x14, 0, 0, 0, 0},
9480	{0x15, 0, 0, 0, 0},
9481	{0x16, 0, 0, 0, 0},
9482	{0x17, 0, 0, 0, 0},
9483	{0x18, 0, 0, 0, 0},
9484	{0x19, 0, 0, 0, 0},
9485	{0x1A, 0, 0, 0, 0},
9486	{0x1B, 0, 0, 0, 0},
9487	{0x1C, 0, 0, 0, 0},
9488	{0x1D, 0, 0, 0, 0},
9489	{0x1E, 0, 0, 0, 0},
9490	{0x1F, 0, 0, 0, 0},
9491	{0x20, 0, 0, 0, 0},
9492	{0x21, 0, 0, 0, 0},
9493	{0x22, 0x60, 0x60, 0, 0},
9494	{0x23, 0x6, 0x6, 0, 0},
9495	{0x24, 0xc, 0xc, 0, 0},
9496	{0x25, 0, 0, 0, 0},
9497	{0x26, 0, 0, 0, 0},
9498	{0x27, 0, 0, 0, 0},
9499	{0x28, 0x1, 0x1, 0, 0},
9500	{0x29, 0, 0, 0, 0},
9501	{0x2A, 0, 0, 0, 0},
9502	{0x2B, 0, 0, 0, 0},
9503	{0x2C, 0, 0, 0, 0},
9504	{0x2D, 0, 0, 0, 0},
9505	{0x2E, 0, 0, 0, 0},
9506	{0x2F, 0x1f, 0x1f, 0, 0},
9507	{0x30, 0x15, 0x15, 0, 0},
9508	{0x31, 0xf, 0xf, 0, 0},
9509	{0x32, 0, 0, 0, 0},
9510	{0x33, 0, 0, 0, 0},
9511	{0x34, 0, 0, 0, 0},
9512	{0x35, 0, 0, 0, 0},
9513	{0x36, 0, 0, 0, 0},
9514	{0x37, 0, 0, 0, 0},
9515	{0x38, 0, 0, 0, 0},
9516	{0x39, 0, 0, 0, 0},
9517	{0x3A, 0, 0, 0, 0},
9518	{0x3B, 0, 0, 0, 0},
9519	{0x3C, 0x13, 0x13, 0, 0},
9520	{0x3D, 0xf, 0xf, 0, 0},
9521	{0x3E, 0x18, 0x18, 0, 0},
9522	{0x3F, 0, 0, 0, 0},
9523	{0x40, 0, 0, 0, 0},
9524	{0x41, 0x20, 0x20, 0, 0},
9525	{0x42, 0x20, 0x20, 0, 0},
9526	{0x43, 0, 0, 0, 0},
9527	{0x44, 0x77, 0x77, 0, 0},
9528	{0x45, 0x7, 0x7, 0, 0},
9529	{0x46, 0x1, 0x1, 0, 0},
9530	{0x47, 0x4, 0x4, 0, 0},
9531	{0x48, 0xf, 0xf, 0, 0},
9532	{0x49, 0x30, 0x30, 0, 0},
9533	{0x4A, 0x32, 0x32, 0, 0},
9534	{0x4B, 0xd, 0xd, 0, 0},
9535	{0x4C, 0xd, 0xd, 0, 0},
9536	{0x4D, 0x4, 0x4, 0, 0},
9537	{0x4E, 0x6, 0x6, 0, 0},
9538	{0x4F, 0x1, 0x1, 0, 0},
9539	{0x50, 0x1c, 0x1c, 0, 0},
9540	{0x51, 0x2, 0x2, 0, 0},
9541	{0x52, 0x2, 0x2, 0, 0},
9542	{0x53, 0xf7, 0xf7, 1, 1},
9543	{0x54, 0xb4, 0xb4, 0, 0},
9544	{0x55, 0xd2, 0xd2, 0, 0},
9545	{0x56, 0, 0, 0, 0},
9546	{0x57, 0, 0, 0, 0},
9547	{0x58, 0x4, 0x4, 0, 0},
9548	{0x59, 0x96, 0x96, 0, 0},
9549	{0x5A, 0x3e, 0x3e, 0, 0},
9550	{0x5B, 0x3e, 0x3e, 0, 0},
9551	{0x5C, 0x13, 0x13, 0, 0},
9552	{0x5D, 0x2, 0x2, 0, 0},
9553	{0x5E, 0, 0, 0, 0},
9554	{0x5F, 0x7, 0x7, 0, 0},
9555	{0x60, 0x7, 0x7, 1, 1},
9556	{0x61, 0x8, 0x8, 0, 0},
9557	{0x62, 0x3, 0x3, 0, 0},
9558	{0x63, 0, 0, 0, 0},
9559	{0x64, 0, 0, 0, 0},
9560	{0x65, 0, 0, 0, 0},
9561	{0x66, 0, 0, 0, 0},
9562	{0x67, 0, 0, 0, 0},
9563	{0x68, 0x40, 0x40, 0, 0},
9564	{0x69, 0, 0, 0, 0},
9565	{0x6A, 0, 0, 0, 0},
9566	{0x6B, 0, 0, 0, 0},
9567	{0x6C, 0, 0, 0, 0},
9568	{0x6D, 0x1, 0x1, 0, 0},
9569	{0x6E, 0, 0, 0, 0},
9570	{0x6F, 0, 0, 0, 0},
9571	{0x70, 0x60, 0x60, 0, 0},
9572	{0x71, 0x66, 0x66, 0, 0},
9573	{0x72, 0xc, 0xc, 0, 0},
9574	{0x73, 0x66, 0x66, 0, 0},
9575	{0x74, 0x8f, 0x8f, 1, 1},
9576	{0x75, 0, 0, 0, 0},
9577	{0x76, 0xcc, 0xcc, 0, 0},
9578	{0x77, 0x1, 0x1, 0, 0},
9579	{0x78, 0x66, 0x66, 0, 0},
9580	{0x79, 0x66, 0x66, 0, 0},
9581	{0x7A, 0, 0, 0, 0},
9582	{0x7B, 0, 0, 0, 0},
9583	{0x7C, 0, 0, 0, 0},
9584	{0x7D, 0, 0, 0, 0},
9585	{0x7E, 0, 0, 0, 0},
9586	{0x7F, 0, 0, 0, 0},
9587	{0x80, 0, 0, 0, 0},
9588	{0x81, 0, 0, 0, 0},
9589	{0x82, 0, 0, 0, 0},
9590	{0x83, 0, 0, 0, 0},
9591	{0x84, 0, 0, 0, 0},
9592	{0x85, 0xff, 0xff, 0, 0},
9593	{0x86, 0, 0, 0, 0},
9594	{0x87, 0, 0, 0, 0},
9595	{0x88, 0, 0, 0, 0},
9596	{0x89, 0, 0, 0, 0},
9597	{0x8A, 0, 0, 0, 0},
9598	{0x8B, 0, 0, 0, 0},
9599	{0x8C, 0, 0, 0, 0},
9600	{0x8D, 0, 0, 0, 0},
9601	{0x8E, 0, 0, 0, 0},
9602	{0x8F, 0, 0, 0, 0},
9603	{0x90, 0, 0, 0, 0},
9604	{0x91, 0, 0, 0, 0},
9605	{0x92, 0, 0, 0, 0},
9606	{0x93, 0, 0, 0, 0},
9607	{0x94, 0, 0, 0, 0},
9608	{0x95, 0, 0, 0, 0},
9609	{0x96, 0, 0, 0, 0},
9610	{0x97, 0, 0, 0, 0},
9611	{0x98, 0, 0, 0, 0},
9612	{0x99, 0, 0, 0, 0},
9613	{0x9A, 0, 0, 0, 0},
9614	{0x9B, 0, 0, 0, 0},
9615	{0x9C, 0, 0, 0, 0},
9616	{0x9D, 0, 0, 0, 0},
9617	{0x9E, 0, 0, 0, 0},
9618	{0x9F, 0x6, 0x6, 0, 0},
9619	{0xA0, 0x66, 0x66, 0, 0},
9620	{0xA1, 0x66, 0x66, 0, 0},
9621	{0xA2, 0x66, 0x66, 0, 0},
9622	{0xA3, 0x66, 0x66, 0, 0},
9623	{0xA4, 0x66, 0x66, 0, 0},
9624	{0xA5, 0x66, 0x66, 0, 0},
9625	{0xA6, 0x66, 0x66, 0, 0},
9626	{0xA7, 0x66, 0x66, 0, 0},
9627	{0xA8, 0x66, 0x66, 0, 0},
9628	{0xA9, 0x66, 0x66, 0, 0},
9629	{0xAA, 0x66, 0x66, 0, 0},
9630	{0xAB, 0x66, 0x66, 0, 0},
9631	{0xAC, 0x66, 0x66, 0, 0},
9632	{0xAD, 0x66, 0x66, 0, 0},
9633	{0xAE, 0x66, 0x66, 0, 0},
9634	{0xAF, 0x66, 0x66, 0, 0},
9635	{0xB0, 0x66, 0x66, 0, 0},
9636	{0xB1, 0x66, 0x66, 0, 0},
9637	{0xB2, 0x66, 0x66, 0, 0},
9638	{0xB3, 0xa, 0xa, 0, 0},
9639	{0xB4, 0, 0, 0, 0},
9640	{0xB5, 0, 0, 0, 0},
9641	{0xB6, 0, 0, 0, 0},
9642	{0xFFFF, 0, 0, 0, 0}
9643};
9644
9645static struct radio_regs regs_TX_2056_rev6[] = {
9646	{0x02, 0, 0, 0, 0},
9647	{0x03, 0, 0, 0, 0},
9648	{0x04, 0, 0, 0, 0},
9649	{0x05, 0, 0, 0, 0},
9650	{0x06, 0, 0, 0, 0},
9651	{0x07, 0, 0, 0, 0},
9652	{0x08, 0, 0, 0, 0},
9653	{0x09, 0, 0, 0, 0},
9654	{0x0A, 0, 0, 0, 0},
9655	{0x0B, 0, 0, 0, 0},
9656	{0x0C, 0, 0, 0, 0},
9657	{0x0D, 0, 0, 0, 0},
9658	{0x0E, 0, 0, 0, 0},
9659	{0x0F, 0, 0, 0, 0},
9660	{0x10, 0, 0, 0, 0},
9661	{0x11, 0, 0, 0, 0},
9662	{0x12, 0, 0, 0, 0},
9663	{0x13, 0, 0, 0, 0},
9664	{0x14, 0, 0, 0, 0},
9665	{0x15, 0, 0, 0, 0},
9666	{0x16, 0, 0, 0, 0},
9667	{0x17, 0, 0, 0, 0},
9668	{0x18, 0, 0, 0, 0},
9669	{0x19, 0, 0, 0, 0},
9670	{0x1A, 0, 0, 0, 0},
9671	{0x1B, 0, 0, 0, 0},
9672	{0x1C, 0, 0, 0, 0},
9673	{0x1D, 0, 0, 0, 0},
9674	{0x1E, 0, 0, 0, 0},
9675	{0x1F, 0, 0, 0, 0},
9676	{0x20, 0, 0, 0, 0},
9677	{0x21, 0x88, 0x88, 0, 0},
9678	{0x22, 0x88, 0x88, 0, 0},
9679	{0x23, 0x88, 0x88, 0, 0},
9680	{0x24, 0x88, 0x88, 0, 0},
9681	{0x25, 0xc, 0xc, 0, 0},
9682	{0x26, 0, 0, 0, 0},
9683	{0x27, 0x3, 0x3, 0, 0},
9684	{0x28, 0, 0, 0, 0},
9685	{0x29, 0x3, 0x3, 0, 0},
9686	{0x2A, 0x37, 0x37, 0, 0},
9687	{0x2B, 0x3, 0x3, 0, 0},
9688	{0x2C, 0, 0, 0, 0},
9689	{0x2D, 0, 0, 0, 0},
9690	{0x2E, 0x1, 0x1, 0, 0},
9691	{0x2F, 0x1, 0x1, 0, 0},
9692	{0x30, 0, 0, 0, 0},
9693	{0x31, 0, 0, 0, 0},
9694	{0x32, 0, 0, 0, 0},
9695	{0x33, 0x11, 0x11, 0, 0},
9696	{0x34, 0xee, 0xee, 1, 1},
9697	{0x35, 0, 0, 0, 0},
9698	{0x36, 0, 0, 0, 0},
9699	{0x37, 0x3, 0x3, 0, 0},
9700	{0x38, 0x50, 0x50, 1, 1},
9701	{0x39, 0, 0, 0, 0},
9702	{0x3A, 0x50, 0x50, 1, 1},
9703	{0x3B, 0, 0, 0, 0},
9704	{0x3C, 0x6e, 0x6e, 0, 0},
9705	{0x3D, 0xf0, 0xf0, 1, 1},
9706	{0x3E, 0, 0, 0, 0},
9707	{0x3F, 0, 0, 0, 0},
9708	{0x40, 0, 0, 0, 0},
9709	{0x41, 0x3, 0x3, 0, 0},
9710	{0x42, 0x3, 0x3, 0, 0},
9711	{0x43, 0, 0, 0, 0},
9712	{0x44, 0x1e, 0x1e, 0, 0},
9713	{0x45, 0, 0, 0, 0},
9714	{0x46, 0x6e, 0x6e, 0, 0},
9715	{0x47, 0xf0, 0xf0, 1, 1},
9716	{0x48, 0, 0, 0, 0},
9717	{0x49, 0x2, 0x2, 0, 0},
9718	{0x4A, 0xff, 0xff, 1, 1},
9719	{0x4B, 0xc, 0xc, 0, 0},
9720	{0x4C, 0, 0, 0, 0},
9721	{0x4D, 0x38, 0x38, 0, 0},
9722	{0x4E, 0x70, 0x70, 1, 1},
9723	{0x4F, 0x2, 0x2, 0, 0},
9724	{0x50, 0x88, 0x88, 0, 0},
9725	{0x51, 0xc, 0xc, 0, 0},
9726	{0x52, 0, 0, 0, 0},
9727	{0x53, 0x8, 0x8, 0, 0},
9728	{0x54, 0x70, 0x70, 1, 1},
9729	{0x55, 0x2, 0x2, 0, 0},
9730	{0x56, 0xff, 0xff, 1, 1},
9731	{0x57, 0, 0, 0, 0},
9732	{0x58, 0x83, 0x83, 0, 0},
9733	{0x59, 0x77, 0x77, 1, 1},
9734	{0x5A, 0, 0, 0, 0},
9735	{0x5B, 0x2, 0x2, 0, 0},
9736	{0x5C, 0x88, 0x88, 0, 0},
9737	{0x5D, 0, 0, 0, 0},
9738	{0x5E, 0x8, 0x8, 0, 0},
9739	{0x5F, 0x77, 0x77, 1, 1},
9740	{0x60, 0x1, 0x1, 0, 0},
9741	{0x61, 0, 0, 0, 0},
9742	{0x62, 0x7, 0x7, 0, 0},
9743	{0x63, 0, 0, 0, 0},
9744	{0x64, 0x7, 0x7, 0, 0},
9745	{0x65, 0, 0, 0, 0},
9746	{0x66, 0, 0, 0, 0},
9747	{0x67, 0, 0, 1, 1},
9748	{0x68, 0, 0, 0, 0},
9749	{0x69, 0xa, 0xa, 0, 0},
9750	{0x6A, 0, 0, 0, 0},
9751	{0x6B, 0, 0, 0, 0},
9752	{0x6C, 0, 0, 0, 0},
9753	{0x6D, 0, 0, 0, 0},
9754	{0x6E, 0, 0, 0, 0},
9755	{0x6F, 0, 0, 0, 0},
9756	{0x70, 0, 0, 0, 0},
9757	{0x71, 0x2, 0x2, 0, 0},
9758	{0x72, 0, 0, 0, 0},
9759	{0x73, 0, 0, 0, 0},
9760	{0x74, 0xe, 0xe, 0, 0},
9761	{0x75, 0xe, 0xe, 0, 0},
9762	{0x76, 0xe, 0xe, 0, 0},
9763	{0x77, 0x13, 0x13, 0, 0},
9764	{0x78, 0x13, 0x13, 0, 0},
9765	{0x79, 0x1b, 0x1b, 0, 0},
9766	{0x7A, 0x1b, 0x1b, 0, 0},
9767	{0x7B, 0x55, 0x55, 0, 0},
9768	{0x7C, 0x5b, 0x5b, 0, 0},
9769	{0x7D, 0x30, 0x30, 1, 1},
9770	{0x7E, 0, 0, 0, 0},
9771	{0x7F, 0, 0, 0, 0},
9772	{0x80, 0, 0, 0, 0},
9773	{0x81, 0, 0, 0, 0},
9774	{0x82, 0, 0, 0, 0},
9775	{0x83, 0, 0, 0, 0},
9776	{0x84, 0, 0, 0, 0},
9777	{0x85, 0, 0, 0, 0},
9778	{0x86, 0, 0, 0, 0},
9779	{0x87, 0, 0, 0, 0},
9780	{0x88, 0, 0, 0, 0},
9781	{0x89, 0, 0, 0, 0},
9782	{0x8A, 0, 0, 0, 0},
9783	{0x8B, 0, 0, 0, 0},
9784	{0x8C, 0, 0, 0, 0},
9785	{0x8D, 0, 0, 0, 0},
9786	{0x8E, 0, 0, 0, 0},
9787	{0x8F, 0, 0, 0, 0},
9788	{0x90, 0, 0, 0, 0},
9789	{0x91, 0, 0, 0, 0},
9790	{0x92, 0, 0, 0, 0},
9791	{0x93, 0x70, 0x70, 0, 0},
9792	{0x94, 0x70, 0x70, 0, 0},
9793	{0x95, 0x70, 0x70, 0, 0},
9794	{0x96, 0x70, 0x70, 0, 0},
9795	{0x97, 0x70, 0x70, 0, 0},
9796	{0x98, 0x70, 0x70, 0, 0},
9797	{0x99, 0x70, 0x70, 0, 0},
9798	{0x9A, 0x70, 0x70, 0, 0},
9799	{0xFFFF, 0, 0, 0, 0}
9800};
9801
9802static struct radio_regs regs_RX_2056_rev6[] = {
9803	{0x02, 0, 0, 0, 0},
9804	{0x03, 0, 0, 0, 0},
9805	{0x04, 0, 0, 0, 0},
9806	{0x05, 0, 0, 0, 0},
9807	{0x06, 0, 0, 0, 0},
9808	{0x07, 0, 0, 0, 0},
9809	{0x08, 0, 0, 0, 0},
9810	{0x09, 0, 0, 0, 0},
9811	{0x0A, 0, 0, 0, 0},
9812	{0x0B, 0, 0, 0, 0},
9813	{0x0C, 0, 0, 0, 0},
9814	{0x0D, 0, 0, 0, 0},
9815	{0x0E, 0, 0, 0, 0},
9816	{0x0F, 0, 0, 0, 0},
9817	{0x10, 0, 0, 0, 0},
9818	{0x11, 0, 0, 0, 0},
9819	{0x12, 0, 0, 0, 0},
9820	{0x13, 0, 0, 0, 0},
9821	{0x14, 0, 0, 0, 0},
9822	{0x15, 0, 0, 0, 0},
9823	{0x16, 0, 0, 0, 0},
9824	{0x17, 0, 0, 0, 0},
9825	{0x18, 0, 0, 0, 0},
9826	{0x19, 0, 0, 0, 0},
9827	{0x1A, 0, 0, 0, 0},
9828	{0x1B, 0, 0, 0, 0},
9829	{0x1C, 0, 0, 0, 0},
9830	{0x1D, 0, 0, 0, 0},
9831	{0x1E, 0, 0, 0, 0},
9832	{0x1F, 0, 0, 0, 0},
9833	{0x20, 0x3, 0x3, 0, 0},
9834	{0x21, 0, 0, 0, 0},
9835	{0x22, 0, 0, 0, 0},
9836	{0x23, 0x90, 0x90, 0, 0},
9837	{0x24, 0x55, 0x55, 0, 0},
9838	{0x25, 0x15, 0x15, 0, 0},
9839	{0x26, 0x5, 0x5, 0, 0},
9840	{0x27, 0x15, 0x15, 0, 0},
9841	{0x28, 0x5, 0x5, 0, 0},
9842	{0x29, 0x20, 0x20, 0, 0},
9843	{0x2A, 0x11, 0x11, 0, 0},
9844	{0x2B, 0x90, 0x90, 0, 0},
9845	{0x2C, 0, 0, 0, 0},
9846	{0x2D, 0x88, 0x88, 0, 0},
9847	{0x2E, 0x32, 0x32, 0, 0},
9848	{0x2F, 0x77, 0x77, 0, 0},
9849	{0x30, 0x17, 0x17, 1, 1},
9850	{0x31, 0xff, 0xff, 1, 1},
9851	{0x32, 0x20, 0x20, 0, 0},
9852	{0x33, 0, 0, 0, 0},
9853	{0x34, 0x88, 0x88, 0, 0},
9854	{0x35, 0x32, 0x32, 0, 0},
9855	{0x36, 0x77, 0x77, 0, 0},
9856	{0x37, 0x17, 0x17, 1, 1},
9857	{0x38, 0xf0, 0xf0, 1, 1},
9858	{0x39, 0x20, 0x20, 0, 0},
9859	{0x3A, 0x8, 0x8, 0, 0},
9860	{0x3B, 0x55, 0x55, 1, 1},
9861	{0x3C, 0, 0, 0, 0},
9862	{0x3D, 0x88, 0x88, 1, 1},
9863	{0x3E, 0, 0, 0, 0},
9864	{0x3F, 0x44, 0x44, 0, 0},
9865	{0x40, 0x7, 0x7, 1, 1},
9866	{0x41, 0x6, 0x6, 0, 0},
9867	{0x42, 0x4, 0x4, 0, 0},
9868	{0x43, 0, 0, 0, 0},
9869	{0x44, 0x8, 0x8, 0, 0},
9870	{0x45, 0x55, 0x55, 1, 1},
9871	{0x46, 0, 0, 0, 0},
9872	{0x47, 0x11, 0x11, 0, 0},
9873	{0x48, 0, 0, 0, 0},
9874	{0x49, 0x44, 0x44, 0, 0},
9875	{0x4A, 0x7, 0x7, 0, 0},
9876	{0x4B, 0x6, 0x6, 0, 0},
9877	{0x4C, 0x4, 0x4, 0, 0},
9878	{0x4D, 0, 0, 0, 0},
9879	{0x4E, 0, 0, 0, 0},
9880	{0x4F, 0x26, 0x26, 1, 1},
9881	{0x50, 0x26, 0x26, 1, 1},
9882	{0x51, 0xf, 0xf, 1, 1},
9883	{0x52, 0xf, 0xf, 1, 1},
9884	{0x53, 0x44, 0x44, 0, 0},
9885	{0x54, 0, 0, 0, 0},
9886	{0x55, 0, 0, 0, 0},
9887	{0x56, 0x8, 0x8, 0, 0},
9888	{0x57, 0x8, 0x8, 0, 0},
9889	{0x58, 0x7, 0x7, 0, 0},
9890	{0x59, 0x22, 0x22, 0, 0},
9891	{0x5A, 0x22, 0x22, 0, 0},
9892	{0x5B, 0x2, 0x2, 0, 0},
9893	{0x5C, 0x4, 0x4, 1, 1},
9894	{0x5D, 0x7, 0x7, 0, 0},
9895	{0x5E, 0x55, 0x55, 0, 0},
9896	{0x5F, 0x23, 0x23, 0, 0},
9897	{0x60, 0x41, 0x41, 0, 0},
9898	{0x61, 0x1, 0x1, 0, 0},
9899	{0x62, 0xa, 0xa, 0, 0},
9900	{0x63, 0, 0, 0, 0},
9901	{0x64, 0, 0, 0, 0},
9902	{0x65, 0, 0, 0, 0},
9903	{0x66, 0, 0, 0, 0},
9904	{0x67, 0, 0, 0, 0},
9905	{0x68, 0, 0, 0, 0},
9906	{0x69, 0, 0, 0, 0},
9907	{0x6A, 0, 0, 0, 0},
9908	{0x6B, 0xc, 0xc, 0, 0},
9909	{0x6C, 0, 0, 0, 0},
9910	{0x6D, 0, 0, 0, 0},
9911	{0x6E, 0, 0, 0, 0},
9912	{0x6F, 0, 0, 0, 0},
9913	{0x70, 0, 0, 0, 0},
9914	{0x71, 0, 0, 0, 0},
9915	{0x72, 0x22, 0x22, 0, 0},
9916	{0x73, 0x22, 0x22, 0, 0},
9917	{0x74, 0, 0, 1, 1},
9918	{0x75, 0xa, 0xa, 0, 0},
9919	{0x76, 0x1, 0x1, 0, 0},
9920	{0x77, 0x22, 0x22, 0, 0},
9921	{0x78, 0x30, 0x30, 0, 0},
9922	{0x79, 0, 0, 0, 0},
9923	{0x7A, 0, 0, 0, 0},
9924	{0x7B, 0, 0, 0, 0},
9925	{0x7C, 0, 0, 0, 0},
9926	{0x7D, 0x5, 0x5, 1, 1},
9927	{0x7E, 0, 0, 0, 0},
9928	{0x7F, 0, 0, 0, 0},
9929	{0x80, 0, 0, 0, 0},
9930	{0x81, 0, 0, 0, 0},
9931	{0x82, 0, 0, 0, 0},
9932	{0x83, 0, 0, 0, 0},
9933	{0x84, 0, 0, 0, 0},
9934	{0x85, 0, 0, 0, 0},
9935	{0x86, 0, 0, 0, 0},
9936	{0x87, 0, 0, 0, 0},
9937	{0x88, 0, 0, 0, 0},
9938	{0x89, 0, 0, 0, 0},
9939	{0x8A, 0, 0, 0, 0},
9940	{0x8B, 0, 0, 0, 0},
9941	{0x8C, 0, 0, 0, 0},
9942	{0x8D, 0, 0, 0, 0},
9943	{0x8E, 0, 0, 0, 0},
9944	{0x8F, 0, 0, 0, 0},
9945	{0x90, 0, 0, 0, 0},
9946	{0x91, 0, 0, 0, 0},
9947	{0x92, 0, 0, 0, 0},
9948	{0x93, 0, 0, 0, 0},
9949	{0x94, 0, 0, 0, 0},
9950	{0xFFFF, 0, 0, 0, 0}
9951};
9952
9953static struct radio_regs regs_SYN_2056_rev7[] = {
9954	{0x02, 0, 0, 0, 0},
9955	{0x03, 0, 0, 0, 0},
9956	{0x04, 0, 0, 0, 0},
9957	{0x05, 0, 0, 0, 0},
9958	{0x06, 0, 0, 0, 0},
9959	{0x07, 0, 0, 0, 0},
9960	{0x08, 0, 0, 0, 0},
9961	{0x09, 0x1, 0x1, 0, 0},
9962	{0x0A, 0, 0, 0, 0},
9963	{0x0B, 0, 0, 0, 0},
9964	{0x0C, 0, 0, 0, 0},
9965	{0x0D, 0, 0, 0, 0},
9966	{0x0E, 0, 0, 0, 0},
9967	{0x0F, 0, 0, 0, 0},
9968	{0x10, 0, 0, 0, 0},
9969	{0x11, 0, 0, 0, 0},
9970	{0x12, 0, 0, 0, 0},
9971	{0x13, 0, 0, 0, 0},
9972	{0x14, 0, 0, 0, 0},
9973	{0x15, 0, 0, 0, 0},
9974	{0x16, 0, 0, 0, 0},
9975	{0x17, 0, 0, 0, 0},
9976	{0x18, 0, 0, 0, 0},
9977	{0x19, 0, 0, 0, 0},
9978	{0x1A, 0, 0, 0, 0},
9979	{0x1B, 0, 0, 0, 0},
9980	{0x1C, 0, 0, 0, 0},
9981	{0x1D, 0, 0, 0, 0},
9982	{0x1E, 0, 0, 0, 0},
9983	{0x1F, 0, 0, 0, 0},
9984	{0x20, 0, 0, 0, 0},
9985	{0x21, 0, 0, 0, 0},
9986	{0x22, 0x60, 0x60, 0, 0},
9987	{0x23, 0x6, 0x6, 0, 0},
9988	{0x24, 0xc, 0xc, 0, 0},
9989	{0x25, 0, 0, 0, 0},
9990	{0x26, 0, 0, 0, 0},
9991	{0x27, 0, 0, 0, 0},
9992	{0x28, 0x1, 0x1, 0, 0},
9993	{0x29, 0, 0, 0, 0},
9994	{0x2A, 0, 0, 0, 0},
9995	{0x2B, 0, 0, 0, 0},
9996	{0x2C, 0, 0, 0, 0},
9997	{0x2D, 0, 0, 0, 0},
9998	{0x2E, 0, 0, 0, 0},
9999	{0x2F, 0x1f, 0x1f, 0, 0},
10000	{0x30, 0x15, 0x15, 0, 0},
10001	{0x31, 0xf, 0xf, 0, 0},
10002	{0x32, 0, 0, 0, 0},
10003	{0x33, 0, 0, 0, 0},
10004	{0x34, 0, 0, 0, 0},
10005	{0x35, 0, 0, 0, 0},
10006	{0x36, 0, 0, 0, 0},
10007	{0x37, 0, 0, 0, 0},
10008	{0x38, 0, 0, 0, 0},
10009	{0x39, 0, 0, 0, 0},
10010	{0x3A, 0, 0, 0, 0},
10011	{0x3B, 0, 0, 0, 0},
10012	{0x3C, 0x13, 0x13, 0, 0},
10013	{0x3D, 0xf, 0xf, 0, 0},
10014	{0x3E, 0x18, 0x18, 0, 0},
10015	{0x3F, 0, 0, 0, 0},
10016	{0x40, 0, 0, 0, 0},
10017	{0x41, 0x20, 0x20, 0, 0},
10018	{0x42, 0x20, 0x20, 0, 0},
10019	{0x43, 0, 0, 0, 0},
10020	{0x44, 0x77, 0x77, 0, 0},
10021	{0x45, 0x7, 0x7, 0, 0},
10022	{0x46, 0x1, 0x1, 0, 0},
10023	{0x47, 0x4, 0x4, 0, 0},
10024	{0x48, 0xf, 0xf, 0, 0},
10025	{0x49, 0x30, 0x30, 0, 0},
10026	{0x4A, 0x32, 0x32, 0, 0},
10027	{0x4B, 0xd, 0xd, 0, 0},
10028	{0x4C, 0xd, 0xd, 0, 0},
10029	{0x4D, 0x4, 0x4, 0, 0},
10030	{0x4E, 0x6, 0x6, 0, 0},
10031	{0x4F, 0x1, 0x1, 0, 0},
10032	{0x50, 0x1c, 0x1c, 0, 0},
10033	{0x51, 0x2, 0x2, 0, 0},
10034	{0x52, 0x2, 0x2, 0, 0},
10035	{0x53, 0xf7, 0xf7, 1, 1},
10036	{0x54, 0xb4, 0xb4, 0, 0},
10037	{0x55, 0xd2, 0xd2, 0, 0},
10038	{0x56, 0, 0, 0, 0},
10039	{0x57, 0, 0, 0, 0},
10040	{0x58, 0x4, 0x4, 0, 0},
10041	{0x59, 0x96, 0x96, 0, 0},
10042	{0x5A, 0x3e, 0x3e, 0, 0},
10043	{0x5B, 0x3e, 0x3e, 0, 0},
10044	{0x5C, 0x13, 0x13, 0, 0},
10045	{0x5D, 0x2, 0x2, 0, 0},
10046	{0x5E, 0, 0, 0, 0},
10047	{0x5F, 0x7, 0x7, 0, 0},
10048	{0x60, 0x7, 0x7, 1, 1},
10049	{0x61, 0x8, 0x8, 0, 0},
10050	{0x62, 0x3, 0x3, 0, 0},
10051	{0x63, 0, 0, 0, 0},
10052	{0x64, 0, 0, 0, 0},
10053	{0x65, 0, 0, 0, 0},
10054	{0x66, 0, 0, 0, 0},
10055	{0x67, 0, 0, 0, 0},
10056	{0x68, 0x40, 0x40, 0, 0},
10057	{0x69, 0, 0, 0, 0},
10058	{0x6A, 0, 0, 0, 0},
10059	{0x6B, 0, 0, 0, 0},
10060	{0x6C, 0, 0, 0, 0},
10061	{0x6D, 0x1, 0x1, 0, 0},
10062	{0x6E, 0, 0, 0, 0},
10063	{0x6F, 0, 0, 0, 0},
10064	{0x70, 0x60, 0x60, 0, 0},
10065	{0x71, 0x66, 0x66, 0, 0},
10066	{0x72, 0xc, 0xc, 0, 0},
10067	{0x73, 0x66, 0x66, 0, 0},
10068	{0x74, 0x8f, 0x8f, 1, 1},
10069	{0x75, 0, 0, 0, 0},
10070	{0x76, 0xcc, 0xcc, 0, 0},
10071	{0x77, 0x1, 0x1, 0, 0},
10072	{0x78, 0x66, 0x66, 0, 0},
10073	{0x79, 0x66, 0x66, 0, 0},
10074	{0x7A, 0, 0, 0, 0},
10075	{0x7B, 0, 0, 0, 0},
10076	{0x7C, 0, 0, 0, 0},
10077	{0x7D, 0, 0, 0, 0},
10078	{0x7E, 0, 0, 0, 0},
10079	{0x7F, 0, 0, 0, 0},
10080	{0x80, 0, 0, 0, 0},
10081	{0x81, 0, 0, 0, 0},
10082	{0x82, 0, 0, 0, 0},
10083	{0x83, 0, 0, 0, 0},
10084	{0x84, 0, 0, 0, 0},
10085	{0x85, 0xff, 0xff, 0, 0},
10086	{0x86, 0, 0, 0, 0},
10087	{0x87, 0, 0, 0, 0},
10088	{0x88, 0, 0, 0, 0},
10089	{0x89, 0, 0, 0, 0},
10090	{0x8A, 0, 0, 0, 0},
10091	{0x8B, 0, 0, 0, 0},
10092	{0x8C, 0, 0, 0, 0},
10093	{0x8D, 0, 0, 0, 0},
10094	{0x8E, 0, 0, 0, 0},
10095	{0x8F, 0, 0, 0, 0},
10096	{0x90, 0, 0, 0, 0},
10097	{0x91, 0, 0, 0, 0},
10098	{0x92, 0, 0, 0, 0},
10099	{0x93, 0, 0, 0, 0},
10100	{0x94, 0, 0, 0, 0},
10101	{0x95, 0, 0, 0, 0},
10102	{0x96, 0, 0, 0, 0},
10103	{0x97, 0, 0, 0, 0},
10104	{0x98, 0, 0, 0, 0},
10105	{0x99, 0, 0, 0, 0},
10106	{0x9A, 0, 0, 0, 0},
10107	{0x9B, 0, 0, 0, 0},
10108	{0x9C, 0, 0, 0, 0},
10109	{0x9D, 0, 0, 0, 0},
10110	{0x9E, 0, 0, 0, 0},
10111	{0x9F, 0x6, 0x6, 0, 0},
10112	{0xA0, 0x66, 0x66, 0, 0},
10113	{0xA1, 0x66, 0x66, 0, 0},
10114	{0xA2, 0x66, 0x66, 0, 0},
10115	{0xA3, 0x66, 0x66, 0, 0},
10116	{0xA4, 0x66, 0x66, 0, 0},
10117	{0xA5, 0x66, 0x66, 0, 0},
10118	{0xA6, 0x66, 0x66, 0, 0},
10119	{0xA7, 0x66, 0x66, 0, 0},
10120	{0xA8, 0x66, 0x66, 0, 0},
10121	{0xA9, 0x66, 0x66, 0, 0},
10122	{0xAA, 0x66, 0x66, 0, 0},
10123	{0xAB, 0x66, 0x66, 0, 0},
10124	{0xAC, 0x66, 0x66, 0, 0},
10125	{0xAD, 0x66, 0x66, 0, 0},
10126	{0xAE, 0x66, 0x66, 0, 0},
10127	{0xAF, 0x66, 0x66, 0, 0},
10128	{0xB0, 0x66, 0x66, 0, 0},
10129	{0xB1, 0x66, 0x66, 0, 0},
10130	{0xB2, 0x66, 0x66, 0, 0},
10131	{0xB3, 0xa, 0xa, 0, 0},
10132	{0xB4, 0, 0, 0, 0},
10133	{0xB5, 0, 0, 0, 0},
10134	{0xB6, 0, 0, 0, 0},
10135	{0xFFFF, 0, 0, 0, 0},
10136};
10137
10138static struct radio_regs regs_TX_2056_rev7[] = {
10139	{0x02, 0, 0, 0, 0},
10140	{0x03, 0, 0, 0, 0},
10141	{0x04, 0, 0, 0, 0},
10142	{0x05, 0, 0, 0, 0},
10143	{0x06, 0, 0, 0, 0},
10144	{0x07, 0, 0, 0, 0},
10145	{0x08, 0, 0, 0, 0},
10146	{0x09, 0, 0, 0, 0},
10147	{0x0A, 0, 0, 0, 0},
10148	{0x0B, 0, 0, 0, 0},
10149	{0x0C, 0, 0, 0, 0},
10150	{0x0D, 0, 0, 0, 0},
10151	{0x0E, 0, 0, 0, 0},
10152	{0x0F, 0, 0, 0, 0},
10153	{0x10, 0, 0, 0, 0},
10154	{0x11, 0, 0, 0, 0},
10155	{0x12, 0, 0, 0, 0},
10156	{0x13, 0, 0, 0, 0},
10157	{0x14, 0, 0, 0, 0},
10158	{0x15, 0, 0, 0, 0},
10159	{0x16, 0, 0, 0, 0},
10160	{0x17, 0, 0, 0, 0},
10161	{0x18, 0, 0, 0, 0},
10162	{0x19, 0, 0, 0, 0},
10163	{0x1A, 0, 0, 0, 0},
10164	{0x1B, 0, 0, 0, 0},
10165	{0x1C, 0, 0, 0, 0},
10166	{0x1D, 0, 0, 0, 0},
10167	{0x1E, 0, 0, 0, 0},
10168	{0x1F, 0, 0, 0, 0},
10169	{0x20, 0, 0, 0, 0},
10170	{0x21, 0x88, 0x88, 0, 0},
10171	{0x22, 0x88, 0x88, 0, 0},
10172	{0x23, 0x88, 0x88, 0, 0},
10173	{0x24, 0x88, 0x88, 0, 0},
10174	{0x25, 0xc, 0xc, 0, 0},
10175	{0x26, 0, 0, 0, 0},
10176	{0x27, 0x3, 0x3, 0, 0},
10177	{0x28, 0, 0, 0, 0},
10178	{0x29, 0x3, 0x3, 0, 0},
10179	{0x2A, 0x37, 0x37, 0, 0},
10180	{0x2B, 0x3, 0x3, 0, 0},
10181	{0x2C, 0, 0, 0, 0},
10182	{0x2D, 0, 0, 0, 0},
10183	{0x2E, 0x1, 0x1, 0, 0},
10184	{0x2F, 0x1, 0x1, 0, 0},
10185	{0x30, 0, 0, 0, 0},
10186	{0x31, 0, 0, 0, 0},
10187	{0x32, 0, 0, 0, 0},
10188	{0x33, 0x11, 0x11, 0, 0},
10189	{0x34, 0xee, 0xee, 1, 1},
10190	{0x35, 0, 0, 0, 0},
10191	{0x36, 0, 0, 0, 0},
10192	{0x37, 0x3, 0x3, 0, 0},
10193	{0x38, 0x50, 0x50, 1, 1},
10194	{0x39, 0, 0, 0, 0},
10195	{0x3A, 0x50, 0x50, 1, 1},
10196	{0x3B, 0, 0, 0, 0},
10197	{0x3C, 0x6e, 0x6e, 0, 0},
10198	{0x3D, 0xf0, 0xf0, 1, 1},
10199	{0x3E, 0, 0, 0, 0},
10200	{0x3F, 0, 0, 0, 0},
10201	{0x40, 0, 0, 0, 0},
10202	{0x41, 0x3, 0x3, 0, 0},
10203	{0x42, 0x3, 0x3, 0, 0},
10204	{0x43, 0, 0, 0, 0},
10205	{0x44, 0x1e, 0x1e, 0, 0},
10206	{0x45, 0, 0, 0, 0},
10207	{0x46, 0x6e, 0x6e, 0, 0},
10208	{0x47, 0xf0, 0xf0, 1, 1},
10209	{0x48, 0, 0, 0, 0},
10210	{0x49, 0x2, 0x2, 0, 0},
10211	{0x4A, 0xff, 0xff, 1, 1},
10212	{0x4B, 0xc, 0xc, 0, 0},
10213	{0x4C, 0, 0, 0, 0},
10214	{0x4D, 0x38, 0x38, 0, 0},
10215	{0x4E, 0x70, 0x70, 1, 1},
10216	{0x4F, 0x2, 0x2, 0, 0},
10217	{0x50, 0x88, 0x88, 0, 0},
10218	{0x51, 0xc, 0xc, 0, 0},
10219	{0x52, 0, 0, 0, 0},
10220	{0x53, 0x8, 0x8, 0, 0},
10221	{0x54, 0x70, 0x70, 1, 1},
10222	{0x55, 0x2, 0x2, 0, 0},
10223	{0x56, 0xff, 0xff, 1, 1},
10224	{0x57, 0, 0, 0, 0},
10225	{0x58, 0x83, 0x83, 0, 0},
10226	{0x59, 0x77, 0x77, 1, 1},
10227	{0x5A, 0, 0, 0, 0},
10228	{0x5B, 0x2, 0x2, 0, 0},
10229	{0x5C, 0x88, 0x88, 0, 0},
10230	{0x5D, 0, 0, 0, 0},
10231	{0x5E, 0x8, 0x8, 0, 0},
10232	{0x5F, 0x77, 0x77, 1, 1},
10233	{0x60, 0x1, 0x1, 0, 0},
10234	{0x61, 0, 0, 0, 0},
10235	{0x62, 0x7, 0x7, 0, 0},
10236	{0x63, 0, 0, 0, 0},
10237	{0x64, 0x7, 0x7, 0, 0},
10238	{0x65, 0, 0, 0, 0},
10239	{0x66, 0, 0, 0, 0},
10240	{0x67, 0, 0, 1, 1},
10241	{0x68, 0, 0, 0, 0},
10242	{0x69, 0xa, 0xa, 0, 0},
10243	{0x6A, 0, 0, 0, 0},
10244	{0x6B, 0, 0, 0, 0},
10245	{0x6C, 0, 0, 0, 0},
10246	{0x6D, 0, 0, 0, 0},
10247	{0x6E, 0, 0, 0, 0},
10248	{0x6F, 0, 0, 0, 0},
10249	{0x70, 0, 0, 0, 0},
10250	{0x71, 0x2, 0x2, 0, 0},
10251	{0x72, 0, 0, 0, 0},
10252	{0x73, 0, 0, 0, 0},
10253	{0x74, 0xe, 0xe, 0, 0},
10254	{0x75, 0xe, 0xe, 0, 0},
10255	{0x76, 0xe, 0xe, 0, 0},
10256	{0x77, 0x13, 0x13, 0, 0},
10257	{0x78, 0x13, 0x13, 0, 0},
10258	{0x79, 0x1b, 0x1b, 0, 0},
10259	{0x7A, 0x1b, 0x1b, 0, 0},
10260	{0x7B, 0x55, 0x55, 0, 0},
10261	{0x7C, 0x5b, 0x5b, 0, 0},
10262	{0x7D, 0x30, 0x30, 1, 1},
10263	{0x7E, 0, 0, 0, 0},
10264	{0x7F, 0, 0, 0, 0},
10265	{0x80, 0, 0, 0, 0},
10266	{0x81, 0, 0, 0, 0},
10267	{0x82, 0, 0, 0, 0},
10268	{0x83, 0, 0, 0, 0},
10269	{0x84, 0, 0, 0, 0},
10270	{0x85, 0, 0, 0, 0},
10271	{0x86, 0, 0, 0, 0},
10272	{0x87, 0, 0, 0, 0},
10273	{0x88, 0, 0, 0, 0},
10274	{0x89, 0, 0, 0, 0},
10275	{0x8A, 0, 0, 0, 0},
10276	{0x8B, 0, 0, 0, 0},
10277	{0x8C, 0, 0, 0, 0},
10278	{0x8D, 0, 0, 0, 0},
10279	{0x8E, 0, 0, 0, 0},
10280	{0x8F, 0, 0, 0, 0},
10281	{0x90, 0, 0, 0, 0},
10282	{0x91, 0, 0, 0, 0},
10283	{0x92, 0, 0, 0, 0},
10284	{0x93, 0x70, 0x70, 0, 0},
10285	{0x94, 0x70, 0x70, 0, 0},
10286	{0x95, 0x71, 0x71, 1, 1},
10287	{0x96, 0x71, 0x71, 1, 1},
10288	{0x97, 0x72, 0x72, 1, 1},
10289	{0x98, 0x73, 0x73, 1, 1},
10290	{0x99, 0x74, 0x74, 1, 1},
10291	{0x9A, 0x75, 0x75, 1, 1},
10292	{0xFFFF, 0, 0, 0, 0},
10293};
10294
10295static struct radio_regs regs_RX_2056_rev7[] = {
10296	{0x02, 0, 0, 0, 0},
10297	{0x03, 0, 0, 0, 0},
10298	{0x04, 0, 0, 0, 0},
10299	{0x05, 0, 0, 0, 0},
10300	{0x06, 0, 0, 0, 0},
10301	{0x07, 0, 0, 0, 0},
10302	{0x08, 0, 0, 0, 0},
10303	{0x09, 0, 0, 0, 0},
10304	{0x0A, 0, 0, 0, 0},
10305	{0x0B, 0, 0, 0, 0},
10306	{0x0C, 0, 0, 0, 0},
10307	{0x0D, 0, 0, 0, 0},
10308	{0x0E, 0, 0, 0, 0},
10309	{0x0F, 0, 0, 0, 0},
10310	{0x10, 0, 0, 0, 0},
10311	{0x11, 0, 0, 0, 0},
10312	{0x12, 0, 0, 0, 0},
10313	{0x13, 0, 0, 0, 0},
10314	{0x14, 0, 0, 0, 0},
10315	{0x15, 0, 0, 0, 0},
10316	{0x16, 0, 0, 0, 0},
10317	{0x17, 0, 0, 0, 0},
10318	{0x18, 0, 0, 0, 0},
10319	{0x19, 0, 0, 0, 0},
10320	{0x1A, 0, 0, 0, 0},
10321	{0x1B, 0, 0, 0, 0},
10322	{0x1C, 0, 0, 0, 0},
10323	{0x1D, 0, 0, 0, 0},
10324	{0x1E, 0, 0, 0, 0},
10325	{0x1F, 0, 0, 0, 0},
10326	{0x20, 0x3, 0x3, 0, 0},
10327	{0x21, 0, 0, 0, 0},
10328	{0x22, 0, 0, 0, 0},
10329	{0x23, 0x90, 0x90, 0, 0},
10330	{0x24, 0x55, 0x55, 0, 0},
10331	{0x25, 0x15, 0x15, 0, 0},
10332	{0x26, 0x5, 0x5, 0, 0},
10333	{0x27, 0x15, 0x15, 0, 0},
10334	{0x28, 0x5, 0x5, 0, 0},
10335	{0x29, 0x20, 0x20, 0, 0},
10336	{0x2A, 0x11, 0x11, 0, 0},
10337	{0x2B, 0x90, 0x90, 0, 0},
10338	{0x2C, 0, 0, 0, 0},
10339	{0x2D, 0x88, 0x88, 0, 0},
10340	{0x2E, 0x32, 0x32, 0, 0},
10341	{0x2F, 0x77, 0x77, 0, 0},
10342	{0x30, 0x17, 0x17, 1, 1},
10343	{0x31, 0xff, 0xff, 1, 1},
10344	{0x32, 0x20, 0x20, 0, 0},
10345	{0x33, 0, 0, 0, 0},
10346	{0x34, 0x88, 0x88, 0, 0},
10347	{0x35, 0x32, 0x32, 0, 0},
10348	{0x36, 0x77, 0x77, 0, 0},
10349	{0x37, 0x17, 0x17, 1, 1},
10350	{0x38, 0xf0, 0xf0, 1, 1},
10351	{0x39, 0x20, 0x20, 0, 0},
10352	{0x3A, 0x8, 0x8, 0, 0},
10353	{0x3B, 0x55, 0x55, 1, 1},
10354	{0x3C, 0, 0, 0, 0},
10355	{0x3D, 0x88, 0x88, 1, 1},
10356	{0x3E, 0, 0, 0, 0},
10357	{0x3F, 0, 0, 1, 1},
10358	{0x40, 0x7, 0x7, 1, 1},
10359	{0x41, 0x6, 0x6, 0, 0},
10360	{0x42, 0x4, 0x4, 0, 0},
10361	{0x43, 0, 0, 0, 0},
10362	{0x44, 0x8, 0x8, 0, 0},
10363	{0x45, 0x55, 0x55, 1, 1},
10364	{0x46, 0, 0, 0, 0},
10365	{0x47, 0x11, 0x11, 0, 0},
10366	{0x48, 0, 0, 0, 0},
10367	{0x49, 0, 0, 1, 1},
10368	{0x4A, 0x7, 0x7, 0, 0},
10369	{0x4B, 0x6, 0x6, 0, 0},
10370	{0x4C, 0x4, 0x4, 0, 0},
10371	{0x4D, 0, 0, 0, 0},
10372	{0x4E, 0, 0, 0, 0},
10373	{0x4F, 0x26, 0x26, 1, 1},
10374	{0x50, 0x26, 0x26, 1, 1},
10375	{0x51, 0xf, 0xf, 1, 1},
10376	{0x52, 0xf, 0xf, 1, 1},
10377	{0x53, 0x44, 0x44, 0, 0},
10378	{0x54, 0, 0, 0, 0},
10379	{0x55, 0, 0, 0, 0},
10380	{0x56, 0x8, 0x8, 0, 0},
10381	{0x57, 0x8, 0x8, 0, 0},
10382	{0x58, 0x7, 0x7, 0, 0},
10383	{0x59, 0x22, 0x22, 0, 0},
10384	{0x5A, 0x22, 0x22, 0, 0},
10385	{0x5B, 0x2, 0x2, 0, 0},
10386	{0x5C, 0x4, 0x4, 1, 1},
10387	{0x5D, 0x7, 0x7, 0, 0},
10388	{0x5E, 0x55, 0x55, 0, 0},
10389	{0x5F, 0x23, 0x23, 0, 0},
10390	{0x60, 0x41, 0x41, 0, 0},
10391	{0x61, 0x1, 0x1, 0, 0},
10392	{0x62, 0xa, 0xa, 0, 0},
10393	{0x63, 0, 0, 0, 0},
10394	{0x64, 0, 0, 0, 0},
10395	{0x65, 0, 0, 0, 0},
10396	{0x66, 0, 0, 0, 0},
10397	{0x67, 0, 0, 0, 0},
10398	{0x68, 0, 0, 0, 0},
10399	{0x69, 0, 0, 0, 0},
10400	{0x6A, 0, 0, 0, 0},
10401	{0x6B, 0xc, 0xc, 0, 0},
10402	{0x6C, 0, 0, 0, 0},
10403	{0x6D, 0, 0, 0, 0},
10404	{0x6E, 0, 0, 0, 0},
10405	{0x6F, 0, 0, 0, 0},
10406	{0x70, 0, 0, 0, 0},
10407	{0x71, 0, 0, 0, 0},
10408	{0x72, 0x22, 0x22, 0, 0},
10409	{0x73, 0x22, 0x22, 0, 0},
10410	{0x74, 0, 0, 1, 1},
10411	{0x75, 0xa, 0xa, 0, 0},
10412	{0x76, 0x1, 0x1, 0, 0},
10413	{0x77, 0x22, 0x22, 0, 0},
10414	{0x78, 0x30, 0x30, 0, 0},
10415	{0x79, 0, 0, 0, 0},
10416	{0x7A, 0, 0, 0, 0},
10417	{0x7B, 0, 0, 0, 0},
10418	{0x7C, 0, 0, 0, 0},
10419	{0x7D, 0, 0, 0, 0},
10420	{0x7E, 0, 0, 0, 0},
10421	{0x7F, 0, 0, 0, 0},
10422	{0x80, 0, 0, 0, 0},
10423	{0x81, 0, 0, 0, 0},
10424	{0x82, 0, 0, 0, 0},
10425	{0x83, 0, 0, 0, 0},
10426	{0x84, 0, 0, 0, 0},
10427	{0x85, 0, 0, 0, 0},
10428	{0x86, 0, 0, 0, 0},
10429	{0x87, 0, 0, 0, 0},
10430	{0x88, 0, 0, 0, 0},
10431	{0x89, 0, 0, 0, 0},
10432	{0x8A, 0, 0, 0, 0},
10433	{0x8B, 0, 0, 0, 0},
10434	{0x8C, 0, 0, 0, 0},
10435	{0x8D, 0, 0, 0, 0},
10436	{0x8E, 0, 0, 0, 0},
10437	{0x8F, 0, 0, 0, 0},
10438	{0x90, 0, 0, 0, 0},
10439	{0x91, 0, 0, 0, 0},
10440	{0x92, 0, 0, 0, 0},
10441	{0x93, 0, 0, 0, 0},
10442	{0x94, 0, 0, 0, 0},
10443	{0xFFFF, 0, 0, 0, 0},
10444};
10445
10446static struct radio_regs regs_SYN_2056_rev8[] = {
10447	{0x02, 0, 0, 0, 0},
10448	{0x03, 0, 0, 0, 0},
10449	{0x04, 0, 0, 0, 0},
10450	{0x05, 0, 0, 0, 0},
10451	{0x06, 0, 0, 0, 0},
10452	{0x07, 0, 0, 0, 0},
10453	{0x08, 0, 0, 0, 0},
10454	{0x09, 0x1, 0x1, 0, 0},
10455	{0x0A, 0, 0, 0, 0},
10456	{0x0B, 0, 0, 0, 0},
10457	{0x0C, 0, 0, 0, 0},
10458	{0x0D, 0, 0, 0, 0},
10459	{0x0E, 0, 0, 0, 0},
10460	{0x0F, 0, 0, 0, 0},
10461	{0x10, 0, 0, 0, 0},
10462	{0x11, 0, 0, 0, 0},
10463	{0x12, 0, 0, 0, 0},
10464	{0x13, 0, 0, 0, 0},
10465	{0x14, 0, 0, 0, 0},
10466	{0x15, 0, 0, 0, 0},
10467	{0x16, 0, 0, 0, 0},
10468	{0x17, 0, 0, 0, 0},
10469	{0x18, 0, 0, 0, 0},
10470	{0x19, 0, 0, 0, 0},
10471	{0x1A, 0, 0, 0, 0},
10472	{0x1B, 0, 0, 0, 0},
10473	{0x1C, 0, 0, 0, 0},
10474	{0x1D, 0, 0, 0, 0},
10475	{0x1E, 0, 0, 0, 0},
10476	{0x1F, 0, 0, 0, 0},
10477	{0x20, 0, 0, 0, 0},
10478	{0x21, 0, 0, 0, 0},
10479	{0x22, 0x60, 0x60, 0, 0},
10480	{0x23, 0x6, 0x6, 0, 0},
10481	{0x24, 0xc, 0xc, 0, 0},
10482	{0x25, 0, 0, 0, 0},
10483	{0x26, 0, 0, 0, 0},
10484	{0x27, 0, 0, 0, 0},
10485	{0x28, 0x1, 0x1, 0, 0},
10486	{0x29, 0, 0, 0, 0},
10487	{0x2A, 0, 0, 0, 0},
10488	{0x2B, 0, 0, 0, 0},
10489	{0x2C, 0, 0, 0, 0},
10490	{0x2D, 0, 0, 0, 0},
10491	{0x2E, 0, 0, 0, 0},
10492	{0x2F, 0x1f, 0x1f, 0, 0},
10493	{0x30, 0x15, 0x15, 0, 0},
10494	{0x31, 0xf, 0xf, 0, 0},
10495	{0x32, 0, 0, 0, 0},
10496	{0x33, 0, 0, 0, 0},
10497	{0x34, 0, 0, 0, 0},
10498	{0x35, 0, 0, 0, 0},
10499	{0x36, 0, 0, 0, 0},
10500	{0x37, 0, 0, 0, 0},
10501	{0x38, 0, 0, 0, 0},
10502	{0x39, 0, 0, 0, 0},
10503	{0x3A, 0, 0, 0, 0},
10504	{0x3B, 0, 0, 0, 0},
10505	{0x3C, 0x13, 0x13, 0, 0},
10506	{0x3D, 0xf, 0xf, 0, 0},
10507	{0x3E, 0x18, 0x18, 0, 0},
10508	{0x3F, 0, 0, 0, 0},
10509	{0x40, 0, 0, 0, 0},
10510	{0x41, 0x20, 0x20, 0, 0},
10511	{0x42, 0x20, 0x20, 0, 0},
10512	{0x43, 0, 0, 0, 0},
10513	{0x44, 0x77, 0x77, 0, 0},
10514	{0x45, 0x7, 0x7, 0, 0},
10515	{0x46, 0x1, 0x1, 0, 0},
10516	{0x47, 0x4, 0x4, 0, 0},
10517	{0x48, 0xf, 0xf, 0, 0},
10518	{0x49, 0x30, 0x30, 0, 0},
10519	{0x4A, 0x32, 0x32, 0, 0},
10520	{0x4B, 0xd, 0xd, 0, 0},
10521	{0x4C, 0xd, 0xd, 0, 0},
10522	{0x4D, 0x4, 0x4, 0, 0},
10523	{0x4E, 0x6, 0x6, 0, 0},
10524	{0x4F, 0x1, 0x1, 0, 0},
10525	{0x50, 0x1c, 0x1c, 0, 0},
10526	{0x51, 0x2, 0x2, 0, 0},
10527	{0x52, 0x2, 0x2, 0, 0},
10528	{0x53, 0xf7, 0xf7, 1, 1},
10529	{0x54, 0xb4, 0xb4, 0, 0},
10530	{0x55, 0xd2, 0xd2, 0, 0},
10531	{0x56, 0, 0, 0, 0},
10532	{0x57, 0, 0, 0, 0},
10533	{0x58, 0x4, 0x4, 0, 0},
10534	{0x59, 0x96, 0x96, 0, 0},
10535	{0x5A, 0x3e, 0x3e, 0, 0},
10536	{0x5B, 0x3e, 0x3e, 0, 0},
10537	{0x5C, 0x13, 0x13, 0, 0},
10538	{0x5D, 0x2, 0x2, 0, 0},
10539	{0x5E, 0, 0, 0, 0},
10540	{0x5F, 0x7, 0x7, 0, 0},
10541	{0x60, 0x7, 0x7, 1, 1},
10542	{0x61, 0x8, 0x8, 0, 0},
10543	{0x62, 0x3, 0x3, 0, 0},
10544	{0x63, 0, 0, 0, 0},
10545	{0x64, 0, 0, 0, 0},
10546	{0x65, 0, 0, 0, 0},
10547	{0x66, 0, 0, 0, 0},
10548	{0x67, 0, 0, 0, 0},
10549	{0x68, 0x40, 0x40, 0, 0},
10550	{0x69, 0, 0, 0, 0},
10551	{0x6A, 0, 0, 0, 0},
10552	{0x6B, 0, 0, 0, 0},
10553	{0x6C, 0, 0, 0, 0},
10554	{0x6D, 0x1, 0x1, 0, 0},
10555	{0x6E, 0, 0, 0, 0},
10556	{0x6F, 0, 0, 0, 0},
10557	{0x70, 0x60, 0x60, 0, 0},
10558	{0x71, 0x66, 0x66, 0, 0},
10559	{0x72, 0xc, 0xc, 0, 0},
10560	{0x73, 0x66, 0x66, 0, 0},
10561	{0x74, 0x8f, 0x8f, 1, 1},
10562	{0x75, 0, 0, 0, 0},
10563	{0x76, 0xcc, 0xcc, 0, 0},
10564	{0x77, 0x1, 0x1, 0, 0},
10565	{0x78, 0x66, 0x66, 0, 0},
10566	{0x79, 0x66, 0x66, 0, 0},
10567	{0x7A, 0, 0, 0, 0},
10568	{0x7B, 0, 0, 0, 0},
10569	{0x7C, 0, 0, 0, 0},
10570	{0x7D, 0, 0, 0, 0},
10571	{0x7E, 0, 0, 0, 0},
10572	{0x7F, 0, 0, 0, 0},
10573	{0x80, 0, 0, 0, 0},
10574	{0x81, 0, 0, 0, 0},
10575	{0x82, 0, 0, 0, 0},
10576	{0x83, 0, 0, 0, 0},
10577	{0x84, 0, 0, 0, 0},
10578	{0x85, 0xff, 0xff, 0, 0},
10579	{0x86, 0, 0, 0, 0},
10580	{0x87, 0, 0, 0, 0},
10581	{0x88, 0, 0, 0, 0},
10582	{0x89, 0, 0, 0, 0},
10583	{0x8A, 0, 0, 0, 0},
10584	{0x8B, 0, 0, 0, 0},
10585	{0x8C, 0, 0, 0, 0},
10586	{0x8D, 0, 0, 0, 0},
10587	{0x8E, 0, 0, 0, 0},
10588	{0x8F, 0, 0, 0, 0},
10589	{0x90, 0, 0, 0, 0},
10590	{0x91, 0, 0, 0, 0},
10591	{0x92, 0, 0, 0, 0},
10592	{0x93, 0, 0, 0, 0},
10593	{0x94, 0, 0, 0, 0},
10594	{0x95, 0, 0, 0, 0},
10595	{0x96, 0, 0, 0, 0},
10596	{0x97, 0, 0, 0, 0},
10597	{0x98, 0, 0, 0, 0},
10598	{0x99, 0, 0, 0, 0},
10599	{0x9A, 0, 0, 0, 0},
10600	{0x9B, 0, 0, 0, 0},
10601	{0x9C, 0, 0, 0, 0},
10602	{0x9D, 0, 0, 0, 0},
10603	{0x9E, 0, 0, 0, 0},
10604	{0x9F, 0x6, 0x6, 0, 0},
10605	{0xA0, 0x66, 0x66, 0, 0},
10606	{0xA1, 0x66, 0x66, 0, 0},
10607	{0xA2, 0x66, 0x66, 0, 0},
10608	{0xA3, 0x66, 0x66, 0, 0},
10609	{0xA4, 0x66, 0x66, 0, 0},
10610	{0xA5, 0x66, 0x66, 0, 0},
10611	{0xA6, 0x66, 0x66, 0, 0},
10612	{0xA7, 0x66, 0x66, 0, 0},
10613	{0xA8, 0x66, 0x66, 0, 0},
10614	{0xA9, 0x66, 0x66, 0, 0},
10615	{0xAA, 0x66, 0x66, 0, 0},
10616	{0xAB, 0x66, 0x66, 0, 0},
10617	{0xAC, 0x66, 0x66, 0, 0},
10618	{0xAD, 0x66, 0x66, 0, 0},
10619	{0xAE, 0x66, 0x66, 0, 0},
10620	{0xAF, 0x66, 0x66, 0, 0},
10621	{0xB0, 0x66, 0x66, 0, 0},
10622	{0xB1, 0x66, 0x66, 0, 0},
10623	{0xB2, 0x66, 0x66, 0, 0},
10624	{0xB3, 0xa, 0xa, 0, 0},
10625	{0xB4, 0, 0, 0, 0},
10626	{0xB5, 0, 0, 0, 0},
10627	{0xB6, 0, 0, 0, 0},
10628	{0xFFFF, 0, 0, 0, 0},
10629};
10630
10631static struct radio_regs regs_TX_2056_rev8[] = {
10632	{0x02, 0, 0, 0, 0},
10633	{0x03, 0, 0, 0, 0},
10634	{0x04, 0, 0, 0, 0},
10635	{0x05, 0, 0, 0, 0},
10636	{0x06, 0, 0, 0, 0},
10637	{0x07, 0, 0, 0, 0},
10638	{0x08, 0, 0, 0, 0},
10639	{0x09, 0, 0, 0, 0},
10640	{0x0A, 0, 0, 0, 0},
10641	{0x0B, 0, 0, 0, 0},
10642	{0x0C, 0, 0, 0, 0},
10643	{0x0D, 0, 0, 0, 0},
10644	{0x0E, 0, 0, 0, 0},
10645	{0x0F, 0, 0, 0, 0},
10646	{0x10, 0, 0, 0, 0},
10647	{0x11, 0, 0, 0, 0},
10648	{0x12, 0, 0, 0, 0},
10649	{0x13, 0, 0, 0, 0},
10650	{0x14, 0, 0, 0, 0},
10651	{0x15, 0, 0, 0, 0},
10652	{0x16, 0, 0, 0, 0},
10653	{0x17, 0, 0, 0, 0},
10654	{0x18, 0, 0, 0, 0},
10655	{0x19, 0, 0, 0, 0},
10656	{0x1A, 0, 0, 0, 0},
10657	{0x1B, 0, 0, 0, 0},
10658	{0x1C, 0, 0, 0, 0},
10659	{0x1D, 0, 0, 0, 0},
10660	{0x1E, 0, 0, 0, 0},
10661	{0x1F, 0, 0, 0, 0},
10662	{0x20, 0, 0, 0, 0},
10663	{0x21, 0x88, 0x88, 0, 0},
10664	{0x22, 0x88, 0x88, 0, 0},
10665	{0x23, 0x88, 0x88, 0, 0},
10666	{0x24, 0x88, 0x88, 0, 0},
10667	{0x25, 0xc, 0xc, 0, 0},
10668	{0x26, 0, 0, 0, 0},
10669	{0x27, 0x3, 0x3, 0, 0},
10670	{0x28, 0, 0, 0, 0},
10671	{0x29, 0x3, 0x3, 0, 0},
10672	{0x2A, 0x37, 0x37, 0, 0},
10673	{0x2B, 0x3, 0x3, 0, 0},
10674	{0x2C, 0, 0, 0, 0},
10675	{0x2D, 0, 0, 0, 0},
10676	{0x2E, 0x1, 0x1, 0, 0},
10677	{0x2F, 0x1, 0x1, 0, 0},
10678	{0x30, 0, 0, 0, 0},
10679	{0x31, 0, 0, 0, 0},
10680	{0x32, 0, 0, 0, 0},
10681	{0x33, 0x11, 0x11, 0, 0},
10682	{0x34, 0xee, 0xee, 1, 1},
10683	{0x35, 0, 0, 0, 0},
10684	{0x36, 0, 0, 0, 0},
10685	{0x37, 0x3, 0x3, 0, 0},
10686	{0x38, 0x50, 0x50, 1, 1},
10687	{0x39, 0, 0, 0, 0},
10688	{0x3A, 0x50, 0x50, 1, 1},
10689	{0x3B, 0, 0, 0, 0},
10690	{0x3C, 0x6e, 0x6e, 0, 0},
10691	{0x3D, 0xf0, 0xf0, 1, 1},
10692	{0x3E, 0, 0, 0, 0},
10693	{0x3F, 0, 0, 0, 0},
10694	{0x40, 0, 0, 0, 0},
10695	{0x41, 0x3, 0x3, 0, 0},
10696	{0x42, 0x3, 0x3, 0, 0},
10697	{0x43, 0, 0, 0, 0},
10698	{0x44, 0x1e, 0x1e, 0, 0},
10699	{0x45, 0, 0, 0, 0},
10700	{0x46, 0x6e, 0x6e, 0, 0},
10701	{0x47, 0xf0, 0xf0, 1, 1},
10702	{0x48, 0, 0, 0, 0},
10703	{0x49, 0x2, 0x2, 0, 0},
10704	{0x4A, 0xff, 0xff, 1, 1},
10705	{0x4B, 0xc, 0xc, 0, 0},
10706	{0x4C, 0, 0, 0, 0},
10707	{0x4D, 0x38, 0x38, 0, 0},
10708	{0x4E, 0x70, 0x70, 1, 1},
10709	{0x4F, 0x2, 0x2, 0, 0},
10710	{0x50, 0x88, 0x88, 0, 0},
10711	{0x51, 0xc, 0xc, 0, 0},
10712	{0x52, 0, 0, 0, 0},
10713	{0x53, 0x8, 0x8, 0, 0},
10714	{0x54, 0x70, 0x70, 1, 1},
10715	{0x55, 0x2, 0x2, 0, 0},
10716	{0x56, 0xff, 0xff, 1, 1},
10717	{0x57, 0, 0, 0, 0},
10718	{0x58, 0x83, 0x83, 0, 0},
10719	{0x59, 0x77, 0x77, 1, 1},
10720	{0x5A, 0, 0, 0, 0},
10721	{0x5B, 0x2, 0x2, 0, 0},
10722	{0x5C, 0x88, 0x88, 0, 0},
10723	{0x5D, 0, 0, 0, 0},
10724	{0x5E, 0x8, 0x8, 0, 0},
10725	{0x5F, 0x77, 0x77, 1, 1},
10726	{0x60, 0x1, 0x1, 0, 0},
10727	{0x61, 0, 0, 0, 0},
10728	{0x62, 0x7, 0x7, 0, 0},
10729	{0x63, 0, 0, 0, 0},
10730	{0x64, 0x7, 0x7, 0, 0},
10731	{0x65, 0, 0, 0, 0},
10732	{0x66, 0, 0, 0, 0},
10733	{0x67, 0, 0, 1, 1},
10734	{0x68, 0, 0, 0, 0},
10735	{0x69, 0xa, 0xa, 0, 0},
10736	{0x6A, 0, 0, 0, 0},
10737	{0x6B, 0, 0, 0, 0},
10738	{0x6C, 0, 0, 0, 0},
10739	{0x6D, 0, 0, 0, 0},
10740	{0x6E, 0, 0, 0, 0},
10741	{0x6F, 0, 0, 0, 0},
10742	{0x70, 0, 0, 0, 0},
10743	{0x71, 0x2, 0x2, 0, 0},
10744	{0x72, 0, 0, 0, 0},
10745	{0x73, 0, 0, 0, 0},
10746	{0x74, 0xe, 0xe, 0, 0},
10747	{0x75, 0xe, 0xe, 0, 0},
10748	{0x76, 0xe, 0xe, 0, 0},
10749	{0x77, 0x13, 0x13, 0, 0},
10750	{0x78, 0x13, 0x13, 0, 0},
10751	{0x79, 0x1b, 0x1b, 0, 0},
10752	{0x7A, 0x1b, 0x1b, 0, 0},
10753	{0x7B, 0x55, 0x55, 0, 0},
10754	{0x7C, 0x5b, 0x5b, 0, 0},
10755	{0x7D, 0x30, 0x30, 1, 1},
10756	{0x7E, 0, 0, 0, 0},
10757	{0x7F, 0, 0, 0, 0},
10758	{0x80, 0, 0, 0, 0},
10759	{0x81, 0, 0, 0, 0},
10760	{0x82, 0, 0, 0, 0},
10761	{0x83, 0, 0, 0, 0},
10762	{0x84, 0, 0, 0, 0},
10763	{0x85, 0, 0, 0, 0},
10764	{0x86, 0, 0, 0, 0},
10765	{0x87, 0, 0, 0, 0},
10766	{0x88, 0, 0, 0, 0},
10767	{0x89, 0, 0, 0, 0},
10768	{0x8A, 0, 0, 0, 0},
10769	{0x8B, 0, 0, 0, 0},
10770	{0x8C, 0, 0, 0, 0},
10771	{0x8D, 0, 0, 0, 0},
10772	{0x8E, 0, 0, 0, 0},
10773	{0x8F, 0, 0, 0, 0},
10774	{0x90, 0, 0, 0, 0},
10775	{0x91, 0, 0, 0, 0},
10776	{0x92, 0, 0, 0, 0},
10777	{0x93, 0x70, 0x70, 0, 0},
10778	{0x94, 0x70, 0x70, 0, 0},
10779	{0x95, 0x70, 0x70, 0, 0},
10780	{0x96, 0x70, 0x70, 0, 0},
10781	{0x97, 0x70, 0x70, 0, 0},
10782	{0x98, 0x70, 0x70, 0, 0},
10783	{0x99, 0x70, 0x70, 0, 0},
10784	{0x9A, 0x70, 0x70, 0, 0},
10785	{0xFFFF, 0, 0, 0, 0},
10786};
10787
10788static struct radio_regs regs_RX_2056_rev8[] = {
10789	{0x02, 0, 0, 0, 0},
10790	{0x03, 0, 0, 0, 0},
10791	{0x04, 0, 0, 0, 0},
10792	{0x05, 0, 0, 0, 0},
10793	{0x06, 0, 0, 0, 0},
10794	{0x07, 0, 0, 0, 0},
10795	{0x08, 0, 0, 0, 0},
10796	{0x09, 0, 0, 0, 0},
10797	{0x0A, 0, 0, 0, 0},
10798	{0x0B, 0, 0, 0, 0},
10799	{0x0C, 0, 0, 0, 0},
10800	{0x0D, 0, 0, 0, 0},
10801	{0x0E, 0, 0, 0, 0},
10802	{0x0F, 0, 0, 0, 0},
10803	{0x10, 0, 0, 0, 0},
10804	{0x11, 0, 0, 0, 0},
10805	{0x12, 0, 0, 0, 0},
10806	{0x13, 0, 0, 0, 0},
10807	{0x14, 0, 0, 0, 0},
10808	{0x15, 0, 0, 0, 0},
10809	{0x16, 0, 0, 0, 0},
10810	{0x17, 0, 0, 0, 0},
10811	{0x18, 0, 0, 0, 0},
10812	{0x19, 0, 0, 0, 0},
10813	{0x1A, 0, 0, 0, 0},
10814	{0x1B, 0, 0, 0, 0},
10815	{0x1C, 0, 0, 0, 0},
10816	{0x1D, 0, 0, 0, 0},
10817	{0x1E, 0, 0, 0, 0},
10818	{0x1F, 0, 0, 0, 0},
10819	{0x20, 0x3, 0x3, 0, 0},
10820	{0x21, 0, 0, 0, 0},
10821	{0x22, 0, 0, 0, 0},
10822	{0x23, 0x90, 0x90, 0, 0},
10823	{0x24, 0x55, 0x55, 0, 0},
10824	{0x25, 0x15, 0x15, 0, 0},
10825	{0x26, 0x5, 0x5, 0, 0},
10826	{0x27, 0x15, 0x15, 0, 0},
10827	{0x28, 0x5, 0x5, 0, 0},
10828	{0x29, 0x20, 0x20, 0, 0},
10829	{0x2A, 0x11, 0x11, 0, 0},
10830	{0x2B, 0x90, 0x90, 0, 0},
10831	{0x2C, 0, 0, 0, 0},
10832	{0x2D, 0x88, 0x88, 0, 0},
10833	{0x2E, 0x32, 0x32, 0, 0},
10834	{0x2F, 0x77, 0x77, 0, 0},
10835	{0x30, 0x17, 0x17, 1, 1},
10836	{0x31, 0xff, 0xff, 1, 1},
10837	{0x32, 0x20, 0x20, 0, 0},
10838	{0x33, 0, 0, 0, 0},
10839	{0x34, 0x88, 0x88, 0, 0},
10840	{0x35, 0x32, 0x32, 0, 0},
10841	{0x36, 0x77, 0x77, 0, 0},
10842	{0x37, 0x17, 0x17, 1, 1},
10843	{0x38, 0xf0, 0xf0, 1, 1},
10844	{0x39, 0x20, 0x20, 0, 0},
10845	{0x3A, 0x8, 0x8, 0, 0},
10846	{0x3B, 0x55, 0x55, 1, 1},
10847	{0x3C, 0, 0, 0, 0},
10848	{0x3D, 0x88, 0x88, 1, 1},
10849	{0x3E, 0, 0, 0, 0},
10850	{0x3F, 0x44, 0x44, 0, 0},
10851	{0x40, 0x7, 0x7, 1, 1},
10852	{0x41, 0x6, 0x6, 0, 0},
10853	{0x42, 0x4, 0x4, 0, 0},
10854	{0x43, 0, 0, 0, 0},
10855	{0x44, 0x8, 0x8, 0, 0},
10856	{0x45, 0x55, 0x55, 1, 1},
10857	{0x46, 0, 0, 0, 0},
10858	{0x47, 0x11, 0x11, 0, 0},
10859	{0x48, 0, 0, 0, 0},
10860	{0x49, 0x44, 0x44, 0, 0},
10861	{0x4A, 0x7, 0x7, 0, 0},
10862	{0x4B, 0x6, 0x6, 0, 0},
10863	{0x4C, 0x4, 0x4, 0, 0},
10864	{0x4D, 0, 0, 0, 0},
10865	{0x4E, 0, 0, 0, 0},
10866	{0x4F, 0x26, 0x26, 1, 1},
10867	{0x50, 0x26, 0x26, 1, 1},
10868	{0x51, 0xf, 0xf, 1, 1},
10869	{0x52, 0xf, 0xf, 1, 1},
10870	{0x53, 0x44, 0x44, 0, 0},
10871	{0x54, 0, 0, 0, 0},
10872	{0x55, 0, 0, 0, 0},
10873	{0x56, 0x8, 0x8, 0, 0},
10874	{0x57, 0x8, 0x8, 0, 0},
10875	{0x58, 0x7, 0x7, 0, 0},
10876	{0x59, 0x22, 0x22, 0, 0},
10877	{0x5A, 0x22, 0x22, 0, 0},
10878	{0x5B, 0x2, 0x2, 0, 0},
10879	{0x5C, 0x4, 0x4, 1, 1},
10880	{0x5D, 0x7, 0x7, 0, 0},
10881	{0x5E, 0x55, 0x55, 0, 0},
10882	{0x5F, 0x23, 0x23, 0, 0},
10883	{0x60, 0x41, 0x41, 0, 0},
10884	{0x61, 0x1, 0x1, 0, 0},
10885	{0x62, 0xa, 0xa, 0, 0},
10886	{0x63, 0, 0, 0, 0},
10887	{0x64, 0, 0, 0, 0},
10888	{0x65, 0, 0, 0, 0},
10889	{0x66, 0, 0, 0, 0},
10890	{0x67, 0, 0, 0, 0},
10891	{0x68, 0, 0, 0, 0},
10892	{0x69, 0, 0, 0, 0},
10893	{0x6A, 0, 0, 0, 0},
10894	{0x6B, 0xc, 0xc, 0, 0},
10895	{0x6C, 0, 0, 0, 0},
10896	{0x6D, 0, 0, 0, 0},
10897	{0x6E, 0, 0, 0, 0},
10898	{0x6F, 0, 0, 0, 0},
10899	{0x70, 0, 0, 0, 0},
10900	{0x71, 0, 0, 0, 0},
10901	{0x72, 0x22, 0x22, 0, 0},
10902	{0x73, 0x22, 0x22, 0, 0},
10903	{0x74, 0, 0, 1, 1},
10904	{0x75, 0xa, 0xa, 0, 0},
10905	{0x76, 0x1, 0x1, 0, 0},
10906	{0x77, 0x22, 0x22, 0, 0},
10907	{0x78, 0x30, 0x30, 0, 0},
10908	{0x79, 0, 0, 0, 0},
10909	{0x7A, 0, 0, 0, 0},
10910	{0x7B, 0, 0, 0, 0},
10911	{0x7C, 0, 0, 0, 0},
10912	{0x7D, 0x5, 0x5, 1, 1},
10913	{0x7E, 0, 0, 0, 0},
10914	{0x7F, 0, 0, 0, 0},
10915	{0x80, 0, 0, 0, 0},
10916	{0x81, 0, 0, 0, 0},
10917	{0x82, 0, 0, 0, 0},
10918	{0x83, 0, 0, 0, 0},
10919	{0x84, 0, 0, 0, 0},
10920	{0x85, 0, 0, 0, 0},
10921	{0x86, 0, 0, 0, 0},
10922	{0x87, 0, 0, 0, 0},
10923	{0x88, 0, 0, 0, 0},
10924	{0x89, 0, 0, 0, 0},
10925	{0x8A, 0, 0, 0, 0},
10926	{0x8B, 0, 0, 0, 0},
10927	{0x8C, 0, 0, 0, 0},
10928	{0x8D, 0, 0, 0, 0},
10929	{0x8E, 0, 0, 0, 0},
10930	{0x8F, 0, 0, 0, 0},
10931	{0x90, 0, 0, 0, 0},
10932	{0x91, 0, 0, 0, 0},
10933	{0x92, 0, 0, 0, 0},
10934	{0x93, 0, 0, 0, 0},
10935	{0x94, 0, 0, 0, 0},
10936	{0xFFFF, 0, 0, 0, 0},
10937};
10938
10939static const struct radio_regs regs_SYN_2056_rev11[] = {
10940	{0x02, 0, 0, 0, 0},
10941	{0x03, 0, 0, 0, 0},
10942	{0x04, 0, 0, 0, 0},
10943	{0x05, 0, 0, 0, 0},
10944	{0x06, 0, 0, 0, 0},
10945	{0x07, 0, 0, 0, 0},
10946	{0x08, 0, 0, 0, 0},
10947	{0x09, 0x1, 0x1, 0, 0},
10948	{0x0A, 0, 0, 0, 0},
10949	{0x0B, 0, 0, 0, 0},
10950	{0x0C, 0, 0, 0, 0},
10951	{0x0D, 0, 0, 0, 0},
10952	{0x0E, 0, 0, 0, 0},
10953	{0x0F, 0, 0, 0, 0},
10954	{0x10, 0, 0, 0, 0},
10955	{0x11, 0, 0, 0, 0},
10956	{0x12, 0, 0, 0, 0},
10957	{0x13, 0, 0, 0, 0},
10958	{0x14, 0, 0, 0, 0},
10959	{0x15, 0, 0, 0, 0},
10960	{0x16, 0, 0, 0, 0},
10961	{0x17, 0, 0, 0, 0},
10962	{0x18, 0, 0, 0, 0},
10963	{0x19, 0, 0, 0, 0},
10964	{0x1A, 0, 0, 0, 0},
10965	{0x1B, 0, 0, 0, 0},
10966	{0x1C, 0, 0, 0, 0},
10967	{0x1D, 0, 0, 0, 0},
10968	{0x1E, 0, 0, 0, 0},
10969	{0x1F, 0, 0, 0, 0},
10970	{0x20, 0, 0, 0, 0},
10971	{0x21, 0, 0, 0, 0},
10972	{0x22, 0x60, 0x60, 0, 0},
10973	{0x23, 0x6, 0x6, 0, 0},
10974	{0x24, 0xc, 0xc, 0, 0},
10975	{0x25, 0, 0, 0, 0},
10976	{0x26, 0, 0, 0, 0},
10977	{0x27, 0, 0, 0, 0},
10978	{0x28, 0x1, 0x1, 0, 0},
10979	{0x29, 0, 0, 0, 0},
10980	{0x2A, 0, 0, 0, 0},
10981	{0x2B, 0, 0, 0, 0},
10982	{0x2C, 0, 0, 0, 0},
10983	{0x2D, 0, 0, 0, 0},
10984	{0x2E, 0, 0, 0, 0},
10985	{0x2F, 0x1f, 0x1f, 0, 0},
10986	{0x30, 0x15, 0x15, 0, 0},
10987	{0x31, 0xf, 0xf, 0, 0},
10988	{0x32, 0, 0, 0, 0},
10989	{0x33, 0, 0, 0, 0},
10990	{0x34, 0, 0, 0, 0},
10991	{0x35, 0, 0, 0, 0},
10992	{0x36, 0, 0, 0, 0},
10993	{0x37, 0, 0, 0, 0},
10994	{0x38, 0, 0, 0, 0},
10995	{0x39, 0, 0, 0, 0},
10996	{0x3A, 0, 0, 0, 0},
10997	{0x3B, 0, 0, 0, 0},
10998	{0x3C, 0x13, 0x13, 0, 0},
10999	{0x3D, 0xf, 0xf, 0, 0},
11000	{0x3E, 0x18, 0x18, 0, 0},
11001	{0x3F, 0, 0, 0, 0},
11002	{0x40, 0, 0, 0, 0},
11003	{0x41, 0x20, 0x20, 0, 0},
11004	{0x42, 0x20, 0x20, 0, 0},
11005	{0x43, 0, 0, 0, 0},
11006	{0x44, 0x77, 0x77, 0, 0},
11007	{0x45, 0x7, 0x7, 0, 0},
11008	{0x46, 0x1, 0x1, 0, 0},
11009	{0x47, 0x6, 0x6, 1, 1},
11010	{0x48, 0xf, 0xf, 0, 0},
11011	{0x49, 0x3f, 0x3f, 1, 1},
11012	{0x4A, 0x32, 0x32, 0, 0},
11013	{0x4B, 0x6, 0x6, 1, 1},
11014	{0x4C, 0x6, 0x6, 1, 1},
11015	{0x4D, 0x4, 0x4, 0, 0},
11016	{0x4E, 0x2b, 0x2b, 1, 1},
11017	{0x4F, 0x1, 0x1, 0, 0},
11018	{0x50, 0x1c, 0x1c, 0, 0},
11019	{0x51, 0x2, 0x2, 0, 0},
11020	{0x52, 0x2, 0x2, 0, 0},
11021	{0x53, 0xf7, 0xf7, 1, 1},
11022	{0x54, 0xb4, 0xb4, 0, 0},
11023	{0x55, 0xd2, 0xd2, 0, 0},
11024	{0x56, 0, 0, 0, 0},
11025	{0x57, 0, 0, 0, 0},
11026	{0x58, 0x4, 0x4, 0, 0},
11027	{0x59, 0x96, 0x96, 0, 0},
11028	{0x5A, 0x3e, 0x3e, 0, 0},
11029	{0x5B, 0x3e, 0x3e, 0, 0},
11030	{0x5C, 0x13, 0x13, 0, 0},
11031	{0x5D, 0x2, 0x2, 0, 0},
11032	{0x5E, 0, 0, 0, 0},
11033	{0x5F, 0x7, 0x7, 0, 0},
11034	{0x60, 0x7, 0x7, 1, 1},
11035	{0x61, 0x8, 0x8, 0, 0},
11036	{0x62, 0x3, 0x3, 0, 0},
11037	{0x63, 0, 0, 0, 0},
11038	{0x64, 0, 0, 0, 0},
11039	{0x65, 0, 0, 0, 0},
11040	{0x66, 0, 0, 0, 0},
11041	{0x67, 0, 0, 0, 0},
11042	{0x68, 0x40, 0x40, 0, 0},
11043	{0x69, 0, 0, 0, 0},
11044	{0x6A, 0, 0, 0, 0},
11045	{0x6B, 0, 0, 0, 0},
11046	{0x6C, 0, 0, 0, 0},
11047	{0x6D, 0x1, 0x1, 0, 0},
11048	{0x6E, 0, 0, 0, 0},
11049	{0x6F, 0, 0, 0, 0},
11050	{0x70, 0x60, 0x60, 0, 0},
11051	{0x71, 0x66, 0x66, 0, 0},
11052	{0x72, 0xc, 0xc, 0, 0},
11053	{0x73, 0x66, 0x66, 0, 0},
11054	{0x74, 0x8f, 0x8f, 1, 1},
11055	{0x75, 0, 0, 0, 0},
11056	{0x76, 0xcc, 0xcc, 0, 0},
11057	{0x77, 0x1, 0x1, 0, 0},
11058	{0x78, 0x66, 0x66, 0, 0},
11059	{0x79, 0x66, 0x66, 0, 0},
11060	{0x7A, 0, 0, 0, 0},
11061	{0x7B, 0, 0, 0, 0},
11062	{0x7C, 0, 0, 0, 0},
11063	{0x7D, 0, 0, 0, 0},
11064	{0x7E, 0, 0, 0, 0},
11065	{0x7F, 0, 0, 0, 0},
11066	{0x80, 0, 0, 0, 0},
11067	{0x81, 0, 0, 0, 0},
11068	{0x82, 0, 0, 0, 0},
11069	{0x83, 0, 0, 0, 0},
11070	{0x84, 0, 0, 0, 0},
11071	{0x85, 0xff, 0xff, 0, 0},
11072	{0x86, 0, 0, 0, 0},
11073	{0x87, 0, 0, 0, 0},
11074	{0x88, 0, 0, 0, 0},
11075	{0x89, 0, 0, 0, 0},
11076	{0x8A, 0, 0, 0, 0},
11077	{0x8B, 0, 0, 0, 0},
11078	{0x8C, 0, 0, 0, 0},
11079	{0x8D, 0, 0, 0, 0},
11080	{0x8E, 0, 0, 0, 0},
11081	{0x8F, 0, 0, 0, 0},
11082	{0x90, 0, 0, 0, 0},
11083	{0x91, 0, 0, 0, 0},
11084	{0x92, 0, 0, 0, 0},
11085	{0x93, 0, 0, 0, 0},
11086	{0x94, 0, 0, 0, 0},
11087	{0x95, 0, 0, 0, 0},
11088	{0x96, 0, 0, 0, 0},
11089	{0x97, 0, 0, 0, 0},
11090	{0x98, 0, 0, 0, 0},
11091	{0x99, 0, 0, 0, 0},
11092	{0x9A, 0, 0, 0, 0},
11093	{0x9B, 0, 0, 0, 0},
11094	{0x9C, 0, 0, 0, 0},
11095	{0x9D, 0, 0, 0, 0},
11096	{0x9E, 0, 0, 0, 0},
11097	{0x9F, 0x6, 0x6, 0, 0},
11098	{0xA0, 0x66, 0x66, 0, 0},
11099	{0xA1, 0x66, 0x66, 0, 0},
11100	{0xA2, 0x66, 0x66, 0, 0},
11101	{0xA3, 0x66, 0x66, 0, 0},
11102	{0xA4, 0x66, 0x66, 0, 0},
11103	{0xA5, 0x66, 0x66, 0, 0},
11104	{0xA6, 0x66, 0x66, 0, 0},
11105	{0xA7, 0x66, 0x66, 0, 0},
11106	{0xA8, 0x66, 0x66, 0, 0},
11107	{0xA9, 0x66, 0x66, 0, 0},
11108	{0xAA, 0x66, 0x66, 0, 0},
11109	{0xAB, 0x66, 0x66, 0, 0},
11110	{0xAC, 0x66, 0x66, 0, 0},
11111	{0xAD, 0x66, 0x66, 0, 0},
11112	{0xAE, 0x66, 0x66, 0, 0},
11113	{0xAF, 0x66, 0x66, 0, 0},
11114	{0xB0, 0x66, 0x66, 0, 0},
11115	{0xB1, 0x66, 0x66, 0, 0},
11116	{0xB2, 0x66, 0x66, 0, 0},
11117	{0xB3, 0xa, 0xa, 0, 0},
11118	{0xB4, 0, 0, 0, 0},
11119	{0xB5, 0, 0, 0, 0},
11120	{0xB6, 0, 0, 0, 0},
11121	{0xFFFF, 0, 0, 0, 0},
11122};
11123
11124static const struct radio_regs regs_TX_2056_rev11[] = {
11125	{0x02, 0, 0, 0, 0},
11126	{0x03, 0, 0, 0, 0},
11127	{0x04, 0, 0, 0, 0},
11128	{0x05, 0, 0, 0, 0},
11129	{0x06, 0, 0, 0, 0},
11130	{0x07, 0, 0, 0, 0},
11131	{0x08, 0, 0, 0, 0},
11132	{0x09, 0, 0, 0, 0},
11133	{0x0A, 0, 0, 0, 0},
11134	{0x0B, 0, 0, 0, 0},
11135	{0x0C, 0, 0, 0, 0},
11136	{0x0D, 0, 0, 0, 0},
11137	{0x0E, 0, 0, 0, 0},
11138	{0x0F, 0, 0, 0, 0},
11139	{0x10, 0, 0, 0, 0},
11140	{0x11, 0, 0, 0, 0},
11141	{0x12, 0, 0, 0, 0},
11142	{0x13, 0, 0, 0, 0},
11143	{0x14, 0, 0, 0, 0},
11144	{0x15, 0, 0, 0, 0},
11145	{0x16, 0, 0, 0, 0},
11146	{0x17, 0, 0, 0, 0},
11147	{0x18, 0, 0, 0, 0},
11148	{0x19, 0, 0, 0, 0},
11149	{0x1A, 0, 0, 0, 0},
11150	{0x1B, 0, 0, 0, 0},
11151	{0x1C, 0, 0, 0, 0},
11152	{0x1D, 0, 0, 0, 0},
11153	{0x1E, 0, 0, 0, 0},
11154	{0x1F, 0, 0, 0, 0},
11155	{0x20, 0, 0, 0, 0},
11156	{0x21, 0x88, 0x88, 0, 0},
11157	{0x22, 0x88, 0x88, 0, 0},
11158	{0x23, 0x88, 0x88, 0, 0},
11159	{0x24, 0x88, 0x88, 0, 0},
11160	{0x25, 0xc, 0xc, 0, 0},
11161	{0x26, 0, 0, 0, 0},
11162	{0x27, 0x3, 0x3, 0, 0},
11163	{0x28, 0, 0, 0, 0},
11164	{0x29, 0x3, 0x3, 0, 0},
11165	{0x2A, 0x37, 0x37, 0, 0},
11166	{0x2B, 0x3, 0x3, 0, 0},
11167	{0x2C, 0, 0, 0, 0},
11168	{0x2D, 0, 0, 0, 0},
11169	{0x2E, 0x1, 0x1, 0, 0},
11170	{0x2F, 0x1, 0x1, 0, 0},
11171	{0x30, 0, 0, 0, 0},
11172	{0x31, 0, 0, 0, 0},
11173	{0x32, 0, 0, 0, 0},
11174	{0x33, 0x11, 0x11, 0, 0},
11175	{0x34, 0xee, 0xee, 1, 1},
11176	{0x35, 0, 0, 0, 0},
11177	{0x36, 0, 0, 0, 0},
11178	{0x37, 0x3, 0x3, 0, 0},
11179	{0x38, 0x50, 0x50, 1, 1},
11180	{0x39, 0, 0, 0, 0},
11181	{0x3A, 0x50, 0x50, 1, 1},
11182	{0x3B, 0, 0, 0, 0},
11183	{0x3C, 0x6e, 0x6e, 0, 0},
11184	{0x3D, 0xf0, 0xf0, 1, 1},
11185	{0x3E, 0, 0, 0, 0},
11186	{0x3F, 0, 0, 0, 0},
11187	{0x40, 0, 0, 0, 0},
11188	{0x41, 0x3, 0x3, 0, 0},
11189	{0x42, 0x3, 0x3, 0, 0},
11190	{0x43, 0, 0, 0, 0},
11191	{0x44, 0x1e, 0x1e, 0, 0},
11192	{0x45, 0, 0, 0, 0},
11193	{0x46, 0x6e, 0x6e, 0, 0},
11194	{0x47, 0xf0, 0xf0, 1, 1},
11195	{0x48, 0, 0, 0, 0},
11196	{0x49, 0x2, 0x2, 0, 0},
11197	{0x4A, 0xff, 0xff, 1, 1},
11198	{0x4B, 0xc, 0xc, 0, 0},
11199	{0x4C, 0, 0, 0, 0},
11200	{0x4D, 0x38, 0x38, 0, 0},
11201	{0x4E, 0x70, 0x70, 1, 1},
11202	{0x4F, 0x2, 0x2, 0, 0},
11203	{0x50, 0x88, 0x88, 0, 0},
11204	{0x51, 0xc, 0xc, 0, 0},
11205	{0x52, 0, 0, 0, 0},
11206	{0x53, 0x8, 0x8, 0, 0},
11207	{0x54, 0x70, 0x70, 1, 1},
11208	{0x55, 0x2, 0x2, 0, 0},
11209	{0x56, 0xff, 0xff, 1, 1},
11210	{0x57, 0, 0, 0, 0},
11211	{0x58, 0x83, 0x83, 0, 0},
11212	{0x59, 0x77, 0x77, 1, 1},
11213	{0x5A, 0, 0, 0, 0},
11214	{0x5B, 0x2, 0x2, 0, 0},
11215	{0x5C, 0x88, 0x88, 0, 0},
11216	{0x5D, 0, 0, 0, 0},
11217	{0x5E, 0x8, 0x8, 0, 0},
11218	{0x5F, 0x77, 0x77, 1, 1},
11219	{0x60, 0x1, 0x1, 0, 0},
11220	{0x61, 0, 0, 0, 0},
11221	{0x62, 0x7, 0x7, 0, 0},
11222	{0x63, 0, 0, 0, 0},
11223	{0x64, 0x7, 0x7, 0, 0},
11224	{0x65, 0, 0, 0, 0},
11225	{0x66, 0, 0, 0, 0},
11226	{0x67, 0, 0, 1, 1},
11227	{0x68, 0, 0, 0, 0},
11228	{0x69, 0xa, 0xa, 0, 0},
11229	{0x6A, 0, 0, 0, 0},
11230	{0x6B, 0, 0, 0, 0},
11231	{0x6C, 0, 0, 0, 0},
11232	{0x6D, 0, 0, 0, 0},
11233	{0x6E, 0, 0, 0, 0},
11234	{0x6F, 0, 0, 0, 0},
11235	{0x70, 0, 0, 0, 0},
11236	{0x71, 0x2, 0x2, 0, 0},
11237	{0x72, 0, 0, 0, 0},
11238	{0x73, 0, 0, 0, 0},
11239	{0x74, 0xe, 0xe, 0, 0},
11240	{0x75, 0xe, 0xe, 0, 0},
11241	{0x76, 0xe, 0xe, 0, 0},
11242	{0x77, 0x13, 0x13, 0, 0},
11243	{0x78, 0x13, 0x13, 0, 0},
11244	{0x79, 0x1b, 0x1b, 0, 0},
11245	{0x7A, 0x1b, 0x1b, 0, 0},
11246	{0x7B, 0x55, 0x55, 0, 0},
11247	{0x7C, 0x5b, 0x5b, 0, 0},
11248	{0x7D, 0x30, 0x30, 1, 1},
11249	{0x7E, 0, 0, 0, 0},
11250	{0x7F, 0, 0, 0, 0},
11251	{0x80, 0, 0, 0, 0},
11252	{0x81, 0, 0, 0, 0},
11253	{0x82, 0, 0, 0, 0},
11254	{0x83, 0, 0, 0, 0},
11255	{0x84, 0, 0, 0, 0},
11256	{0x85, 0, 0, 0, 0},
11257	{0x86, 0, 0, 0, 0},
11258	{0x87, 0, 0, 0, 0},
11259	{0x88, 0, 0, 0, 0},
11260	{0x89, 0, 0, 0, 0},
11261	{0x8A, 0, 0, 0, 0},
11262	{0x8B, 0, 0, 0, 0},
11263	{0x8C, 0, 0, 0, 0},
11264	{0x8D, 0, 0, 0, 0},
11265	{0x8E, 0, 0, 0, 0},
11266	{0x8F, 0, 0, 0, 0},
11267	{0x90, 0, 0, 0, 0},
11268	{0x91, 0, 0, 0, 0},
11269	{0x92, 0, 0, 0, 0},
11270	{0x93, 0x70, 0x70, 0, 0},
11271	{0x94, 0x70, 0x70, 0, 0},
11272	{0x95, 0x70, 0x70, 0, 0},
11273	{0x96, 0x70, 0x70, 0, 0},
11274	{0x97, 0x70, 0x70, 0, 0},
11275	{0x98, 0x70, 0x70, 0, 0},
11276	{0x99, 0x70, 0x70, 0, 0},
11277	{0x9A, 0x70, 0x70, 0, 0},
11278	{0xFFFF, 0, 0, 0, 0},
11279};
11280
11281static const struct radio_regs regs_RX_2056_rev11[] = {
11282	{0x02, 0, 0, 0, 0},
11283	{0x03, 0, 0, 0, 0},
11284	{0x04, 0, 0, 0, 0},
11285	{0x05, 0, 0, 0, 0},
11286	{0x06, 0, 0, 0, 0},
11287	{0x07, 0, 0, 0, 0},
11288	{0x08, 0, 0, 0, 0},
11289	{0x09, 0, 0, 0, 0},
11290	{0x0A, 0, 0, 0, 0},
11291	{0x0B, 0, 0, 0, 0},
11292	{0x0C, 0, 0, 0, 0},
11293	{0x0D, 0, 0, 0, 0},
11294	{0x0E, 0, 0, 0, 0},
11295	{0x0F, 0, 0, 0, 0},
11296	{0x10, 0, 0, 0, 0},
11297	{0x11, 0, 0, 0, 0},
11298	{0x12, 0, 0, 0, 0},
11299	{0x13, 0, 0, 0, 0},
11300	{0x14, 0, 0, 0, 0},
11301	{0x15, 0, 0, 0, 0},
11302	{0x16, 0, 0, 0, 0},
11303	{0x17, 0, 0, 0, 0},
11304	{0x18, 0, 0, 0, 0},
11305	{0x19, 0, 0, 0, 0},
11306	{0x1A, 0, 0, 0, 0},
11307	{0x1B, 0, 0, 0, 0},
11308	{0x1C, 0, 0, 0, 0},
11309	{0x1D, 0, 0, 0, 0},
11310	{0x1E, 0, 0, 0, 0},
11311	{0x1F, 0, 0, 0, 0},
11312	{0x20, 0x3, 0x3, 0, 0},
11313	{0x21, 0, 0, 0, 0},
11314	{0x22, 0, 0, 0, 0},
11315	{0x23, 0x90, 0x90, 0, 0},
11316	{0x24, 0x55, 0x55, 0, 0},
11317	{0x25, 0x15, 0x15, 0, 0},
11318	{0x26, 0x5, 0x5, 0, 0},
11319	{0x27, 0x15, 0x15, 0, 0},
11320	{0x28, 0x5, 0x5, 0, 0},
11321	{0x29, 0x20, 0x20, 0, 0},
11322	{0x2A, 0x11, 0x11, 0, 0},
11323	{0x2B, 0x90, 0x90, 0, 0},
11324	{0x2C, 0, 0, 0, 0},
11325	{0x2D, 0x88, 0x88, 0, 0},
11326	{0x2E, 0x32, 0x32, 0, 0},
11327	{0x2F, 0x77, 0x77, 0, 0},
11328	{0x30, 0x17, 0x17, 1, 1},
11329	{0x31, 0xff, 0xff, 1, 1},
11330	{0x32, 0x20, 0x20, 0, 0},
11331	{0x33, 0, 0, 0, 0},
11332	{0x34, 0x88, 0x88, 0, 0},
11333	{0x35, 0x32, 0x32, 0, 0},
11334	{0x36, 0x77, 0x77, 0, 0},
11335	{0x37, 0x17, 0x17, 1, 1},
11336	{0x38, 0xf0, 0xf0, 1, 1},
11337	{0x39, 0x20, 0x20, 0, 0},
11338	{0x3A, 0x8, 0x8, 0, 0},
11339	{0x3B, 0x55, 0x55, 1, 1},
11340	{0x3C, 0, 0, 0, 0},
11341	{0x3D, 0x88, 0x88, 1, 1},
11342	{0x3E, 0, 0, 0, 0},
11343	{0x3F, 0x44, 0x44, 0, 0},
11344	{0x40, 0x7, 0x7, 1, 1},
11345	{0x41, 0x6, 0x6, 0, 0},
11346	{0x42, 0x4, 0x4, 0, 0},
11347	{0x43, 0, 0, 0, 0},
11348	{0x44, 0x8, 0x8, 0, 0},
11349	{0x45, 0x55, 0x55, 1, 1},
11350	{0x46, 0, 0, 0, 0},
11351	{0x47, 0x11, 0x11, 0, 0},
11352	{0x48, 0, 0, 0, 0},
11353	{0x49, 0x44, 0x44, 0, 0},
11354	{0x4A, 0x7, 0x7, 0, 0},
11355	{0x4B, 0x6, 0x6, 0, 0},
11356	{0x4C, 0x4, 0x4, 0, 0},
11357	{0x4D, 0, 0, 0, 0},
11358	{0x4E, 0, 0, 0, 0},
11359	{0x4F, 0x26, 0x26, 1, 1},
11360	{0x50, 0x26, 0x26, 1, 1},
11361	{0x51, 0xf, 0xf, 1, 1},
11362	{0x52, 0xf, 0xf, 1, 1},
11363	{0x53, 0x44, 0x44, 0, 0},
11364	{0x54, 0, 0, 0, 0},
11365	{0x55, 0, 0, 0, 0},
11366	{0x56, 0x8, 0x8, 0, 0},
11367	{0x57, 0x8, 0x8, 0, 0},
11368	{0x58, 0x7, 0x7, 0, 0},
11369	{0x59, 0x22, 0x22, 0, 0},
11370	{0x5A, 0x22, 0x22, 0, 0},
11371	{0x5B, 0x2, 0x2, 0, 0},
11372	{0x5C, 0x4, 0x4, 1, 1},
11373	{0x5D, 0x7, 0x7, 0, 0},
11374	{0x5E, 0x55, 0x55, 0, 0},
11375	{0x5F, 0x23, 0x23, 0, 0},
11376	{0x60, 0x41, 0x41, 0, 0},
11377	{0x61, 0x1, 0x1, 0, 0},
11378	{0x62, 0xa, 0xa, 0, 0},
11379	{0x63, 0, 0, 0, 0},
11380	{0x64, 0, 0, 0, 0},
11381	{0x65, 0, 0, 0, 0},
11382	{0x66, 0, 0, 0, 0},
11383	{0x67, 0, 0, 0, 0},
11384	{0x68, 0, 0, 0, 0},
11385	{0x69, 0, 0, 0, 0},
11386	{0x6A, 0, 0, 0, 0},
11387	{0x6B, 0xc, 0xc, 0, 0},
11388	{0x6C, 0, 0, 0, 0},
11389	{0x6D, 0, 0, 0, 0},
11390	{0x6E, 0, 0, 0, 0},
11391	{0x6F, 0, 0, 0, 0},
11392	{0x70, 0, 0, 0, 0},
11393	{0x71, 0, 0, 0, 0},
11394	{0x72, 0x22, 0x22, 0, 0},
11395	{0x73, 0x22, 0x22, 0, 0},
11396	{0x74, 0, 0, 1, 1},
11397	{0x75, 0xa, 0xa, 0, 0},
11398	{0x76, 0x1, 0x1, 0, 0},
11399	{0x77, 0x22, 0x22, 0, 0},
11400	{0x78, 0x30, 0x30, 0, 0},
11401	{0x79, 0, 0, 0, 0},
11402	{0x7A, 0, 0, 0, 0},
11403	{0x7B, 0, 0, 0, 0},
11404	{0x7C, 0, 0, 0, 0},
11405	{0x7D, 0x5, 0x5, 1, 1},
11406	{0x7E, 0, 0, 0, 0},
11407	{0x7F, 0, 0, 0, 0},
11408	{0x80, 0, 0, 0, 0},
11409	{0x81, 0, 0, 0, 0},
11410	{0x82, 0, 0, 0, 0},
11411	{0x83, 0, 0, 0, 0},
11412	{0x84, 0, 0, 0, 0},
11413	{0x85, 0, 0, 0, 0},
11414	{0x86, 0, 0, 0, 0},
11415	{0x87, 0, 0, 0, 0},
11416	{0x88, 0, 0, 0, 0},
11417	{0x89, 0, 0, 0, 0},
11418	{0x8A, 0, 0, 0, 0},
11419	{0x8B, 0, 0, 0, 0},
11420	{0x8C, 0, 0, 0, 0},
11421	{0x8D, 0, 0, 0, 0},
11422	{0x8E, 0, 0, 0, 0},
11423	{0x8F, 0, 0, 0, 0},
11424	{0x90, 0, 0, 0, 0},
11425	{0x91, 0, 0, 0, 0},
11426	{0x92, 0, 0, 0, 0},
11427	{0x93, 0, 0, 0, 0},
11428	{0x94, 0, 0, 0, 0},
11429	{0xFFFF, 0, 0, 0, 0},
11430};
11431
11432static struct radio_20xx_regs regs_2057_rev4[] = {
11433	{0x00, 0x84, 0},
11434	{0x01, 0, 0},
11435	{0x02, 0x60, 0},
11436	{0x03, 0x1f, 0},
11437	{0x04, 0x4, 0},
11438	{0x05, 0x2, 0},
11439	{0x06, 0x1, 0},
11440	{0x07, 0x1, 0},
11441	{0x08, 0x1, 0},
11442	{0x09, 0x69, 0},
11443	{0x0A, 0x66, 0},
11444	{0x0B, 0x6, 0},
11445	{0x0C, 0x18, 0},
11446	{0x0D, 0x3, 0},
11447	{0x0E, 0x20, 1},
11448	{0x0F, 0x20, 0},
11449	{0x10, 0, 0},
11450	{0x11, 0x7c, 0},
11451	{0x12, 0x42, 0},
11452	{0x13, 0xbd, 0},
11453	{0x14, 0x7, 0},
11454	{0x15, 0xf7, 0},
11455	{0x16, 0x8, 0},
11456	{0x17, 0x17, 0},
11457	{0x18, 0x7, 0},
11458	{0x19, 0, 0},
11459	{0x1A, 0x2, 0},
11460	{0x1B, 0x13, 0},
11461	{0x1C, 0x3e, 0},
11462	{0x1D, 0x3e, 0},
11463	{0x1E, 0x96, 0},
11464	{0x1F, 0x4, 0},
11465	{0x20, 0, 0},
11466	{0x21, 0, 0},
11467	{0x22, 0x17, 0},
11468	{0x23, 0x4, 0},
11469	{0x24, 0x1, 0},
11470	{0x25, 0x6, 0},
11471	{0x26, 0x4, 0},
11472	{0x27, 0xd, 0},
11473	{0x28, 0xd, 0},
11474	{0x29, 0x30, 0},
11475	{0x2A, 0x32, 0},
11476	{0x2B, 0x8, 0},
11477	{0x2C, 0x1c, 0},
11478	{0x2D, 0x2, 0},
11479	{0x2E, 0x4, 0},
11480	{0x2F, 0x7f, 0},
11481	{0x30, 0x27, 0},
11482	{0x31, 0, 1},
11483	{0x32, 0, 1},
11484	{0x33, 0, 1},
11485	{0x34, 0, 0},
11486	{0x35, 0x26, 1},
11487	{0x36, 0x18, 0},
11488	{0x37, 0x7, 0},
11489	{0x38, 0x66, 0},
11490	{0x39, 0x66, 0},
11491	{0x3A, 0x66, 0},
11492	{0x3B, 0x66, 0},
11493	{0x3C, 0xff, 1},
11494	{0x3D, 0xff, 1},
11495	{0x3E, 0xff, 1},
11496	{0x3F, 0xff, 1},
11497	{0x40, 0x16, 0},
11498	{0x41, 0x7, 0},
11499	{0x42, 0x19, 0},
11500	{0x43, 0x7, 0},
11501	{0x44, 0x6, 0},
11502	{0x45, 0x3, 0},
11503	{0x46, 0x1, 0},
11504	{0x47, 0x7, 0},
11505	{0x48, 0x33, 0},
11506	{0x49, 0x5, 0},
11507	{0x4A, 0x77, 0},
11508	{0x4B, 0x66, 0},
11509	{0x4C, 0x66, 0},
11510	{0x4D, 0, 0},
11511	{0x4E, 0x4, 0},
11512	{0x4F, 0xc, 0},
11513	{0x50, 0, 0},
11514	{0x51, 0x75, 0},
11515	{0x56, 0x7, 0},
11516	{0x57, 0, 0},
11517	{0x58, 0, 0},
11518	{0x59, 0xa8, 0},
11519	{0x5A, 0, 0},
11520	{0x5B, 0x1f, 0},
11521	{0x5C, 0x30, 0},
11522	{0x5D, 0x1, 0},
11523	{0x5E, 0x30, 0},
11524	{0x5F, 0x70, 0},
11525	{0x60, 0, 0},
11526	{0x61, 0, 0},
11527	{0x62, 0x33, 1},
11528	{0x63, 0x19, 0},
11529	{0x64, 0x62, 0},
11530	{0x65, 0, 0},
11531	{0x66, 0x11, 0},
11532	{0x69, 0, 0},
11533	{0x6A, 0x7e, 0},
11534	{0x6B, 0x3f, 0},
11535	{0x6C, 0x7f, 0},
11536	{0x6D, 0x78, 0},
11537	{0x6E, 0xc8, 0},
11538	{0x6F, 0x88, 0},
11539	{0x70, 0x8, 0},
11540	{0x71, 0xf, 0},
11541	{0x72, 0xbc, 0},
11542	{0x73, 0x8, 0},
11543	{0x74, 0x60, 0},
11544	{0x75, 0x1e, 0},
11545	{0x76, 0x70, 0},
11546	{0x77, 0, 0},
11547	{0x78, 0, 0},
11548	{0x79, 0, 0},
11549	{0x7A, 0x33, 0},
11550	{0x7B, 0x1e, 0},
11551	{0x7C, 0x62, 0},
11552	{0x7D, 0x11, 0},
11553	{0x80, 0x3c, 0},
11554	{0x81, 0x9c, 0},
11555	{0x82, 0xa, 0},
11556	{0x83, 0x9d, 0},
11557	{0x84, 0xa, 0},
11558	{0x85, 0, 0},
11559	{0x86, 0x40, 0},
11560	{0x87, 0x40, 0},
11561	{0x88, 0x88, 0},
11562	{0x89, 0x10, 0},
11563	{0x8A, 0xf0, 1},
11564	{0x8B, 0x10, 1},
11565	{0x8C, 0xf0, 1},
11566	{0x8D, 0, 0},
11567	{0x8E, 0, 0},
11568	{0x8F, 0x10, 0},
11569	{0x90, 0x55, 0},
11570	{0x91, 0x3f, 1},
11571	{0x92, 0x36, 1},
11572	{0x93, 0, 0},
11573	{0x94, 0, 0},
11574	{0x95, 0, 0},
11575	{0x96, 0x87, 0},
11576	{0x97, 0x11, 0},
11577	{0x98, 0, 0},
11578	{0x99, 0x33, 0},
11579	{0x9A, 0x88, 0},
11580	{0x9B, 0, 0},
11581	{0x9C, 0x87, 0},
11582	{0x9D, 0x11, 0},
11583	{0x9E, 0, 0},
11584	{0x9F, 0x33, 0},
11585	{0xA0, 0x88, 0},
11586	{0xA1, 0xe1, 0},
11587	{0xA2, 0x3f, 0},
11588	{0xA3, 0x44, 0},
11589	{0xA4, 0x8c, 1},
11590	{0xA5, 0x6d, 0},
11591	{0xA6, 0x22, 0},
11592	{0xA7, 0xbe, 0},
11593	{0xA8, 0x55, 1},
11594	{0xA9, 0xc, 0},
11595	{0xAA, 0xc, 0},
11596	{0xAB, 0xaa, 0},
11597	{0xAC, 0x2, 0},
11598	{0xAD, 0, 0},
11599	{0xAE, 0x10, 0},
11600	{0xAF, 0x1, 1},
11601	{0xB0, 0, 0},
11602	{0xB1, 0, 0},
11603	{0xB2, 0x80, 0},
11604	{0xB3, 0x60, 0},
11605	{0xB4, 0x44, 0},
11606	{0xB5, 0x55, 0},
11607	{0xB6, 0x1, 0},
11608	{0xB7, 0x55, 0},
11609	{0xB8, 0x1, 0},
11610	{0xB9, 0x5, 0},
11611	{0xBA, 0x55, 0},
11612	{0xBB, 0x55, 0},
11613	{0xC1, 0, 0},
11614	{0xC2, 0, 0},
11615	{0xC3, 0, 0},
11616	{0xC4, 0, 0},
11617	{0xC5, 0, 0},
11618	{0xC6, 0, 0},
11619	{0xC7, 0, 0},
11620	{0xC8, 0, 0},
11621	{0xC9, 0, 0},
11622	{0xCA, 0, 0},
11623	{0xCB, 0, 0},
11624	{0xCC, 0, 0},
11625	{0xCD, 0, 0},
11626	{0xCE, 0x5e, 0},
11627	{0xCF, 0xc, 0},
11628	{0xD0, 0xc, 0},
11629	{0xD1, 0xc, 0},
11630	{0xD2, 0, 0},
11631	{0xD3, 0x2b, 0},
11632	{0xD4, 0xc, 0},
11633	{0xD5, 0, 0},
11634	{0xD6, 0x75, 0},
11635	{0xDB, 0x7, 0},
11636	{0xDC, 0, 0},
11637	{0xDD, 0, 0},
11638	{0xDE, 0xa8, 0},
11639	{0xDF, 0, 0},
11640	{0xE0, 0x1f, 0},
11641	{0xE1, 0x30, 0},
11642	{0xE2, 0x1, 0},
11643	{0xE3, 0x30, 0},
11644	{0xE4, 0x70, 0},
11645	{0xE5, 0, 0},
11646	{0xE6, 0, 0},
11647	{0xE7, 0x33, 0},
11648	{0xE8, 0x19, 0},
11649	{0xE9, 0x62, 0},
11650	{0xEA, 0, 0},
11651	{0xEB, 0x11, 0},
11652	{0xEE, 0, 0},
11653	{0xEF, 0x7e, 0},
11654	{0xF0, 0x3f, 0},
11655	{0xF1, 0x7f, 0},
11656	{0xF2, 0x78, 0},
11657	{0xF3, 0xc8, 0},
11658	{0xF4, 0x88, 0},
11659	{0xF5, 0x8, 0},
11660	{0xF6, 0xf, 0},
11661	{0xF7, 0xbc, 0},
11662	{0xF8, 0x8, 0},
11663	{0xF9, 0x60, 0},
11664	{0xFA, 0x1e, 0},
11665	{0xFB, 0x70, 0},
11666	{0xFC, 0, 0},
11667	{0xFD, 0, 0},
11668	{0xFE, 0, 0},
11669	{0xFF, 0x33, 0},
11670	{0x100, 0x1e, 0},
11671	{0x101, 0x62, 0},
11672	{0x102, 0x11, 0},
11673	{0x105, 0x3c, 0},
11674	{0x106, 0x9c, 0},
11675	{0x107, 0xa, 0},
11676	{0x108, 0x9d, 0},
11677	{0x109, 0xa, 0},
11678	{0x10A, 0, 0},
11679	{0x10B, 0x40, 0},
11680	{0x10C, 0x40, 0},
11681	{0x10D, 0x88, 0},
11682	{0x10E, 0x10, 0},
11683	{0x10F, 0xf0, 1},
11684	{0x110, 0x10, 1},
11685	{0x111, 0xf0, 1},
11686	{0x112, 0, 0},
11687	{0x113, 0, 0},
11688	{0x114, 0x10, 0},
11689	{0x115, 0x55, 0},
11690	{0x116, 0x3f, 1},
11691	{0x117, 0x36, 1},
11692	{0x118, 0, 0},
11693	{0x119, 0, 0},
11694	{0x11A, 0, 0},
11695	{0x11B, 0x87, 0},
11696	{0x11C, 0x11, 0},
11697	{0x11D, 0, 0},
11698	{0x11E, 0x33, 0},
11699	{0x11F, 0x88, 0},
11700	{0x120, 0, 0},
11701	{0x121, 0x87, 0},
11702	{0x122, 0x11, 0},
11703	{0x123, 0, 0},
11704	{0x124, 0x33, 0},
11705	{0x125, 0x88, 0},
11706	{0x126, 0xe1, 0},
11707	{0x127, 0x3f, 0},
11708	{0x128, 0x44, 0},
11709	{0x129, 0x8c, 1},
11710	{0x12A, 0x6d, 0},
11711	{0x12B, 0x22, 0},
11712	{0x12C, 0xbe, 0},
11713	{0x12D, 0x55, 1},
11714	{0x12E, 0xc, 0},
11715	{0x12F, 0xc, 0},
11716	{0x130, 0xaa, 0},
11717	{0x131, 0x2, 0},
11718	{0x132, 0, 0},
11719	{0x133, 0x10, 0},
11720	{0x134, 0x1, 1},
11721	{0x135, 0, 0},
11722	{0x136, 0, 0},
11723	{0x137, 0x80, 0},
11724	{0x138, 0x60, 0},
11725	{0x139, 0x44, 0},
11726	{0x13A, 0x55, 0},
11727	{0x13B, 0x1, 0},
11728	{0x13C, 0x55, 0},
11729	{0x13D, 0x1, 0},
11730	{0x13E, 0x5, 0},
11731	{0x13F, 0x55, 0},
11732	{0x140, 0x55, 0},
11733	{0x146, 0, 0},
11734	{0x147, 0, 0},
11735	{0x148, 0, 0},
11736	{0x149, 0, 0},
11737	{0x14A, 0, 0},
11738	{0x14B, 0, 0},
11739	{0x14C, 0, 0},
11740	{0x14D, 0, 0},
11741	{0x14E, 0, 0},
11742	{0x14F, 0, 0},
11743	{0x150, 0, 0},
11744	{0x151, 0, 0},
11745	{0x152, 0, 0},
11746	{0x153, 0, 0},
11747	{0x154, 0xc, 0},
11748	{0x155, 0xc, 0},
11749	{0x156, 0xc, 0},
11750	{0x157, 0, 0},
11751	{0x158, 0x2b, 0},
11752	{0x159, 0x84, 0},
11753	{0x15A, 0x15, 0},
11754	{0x15B, 0xf, 0},
11755	{0x15C, 0, 0},
11756	{0x15D, 0, 0},
11757	{0x15E, 0, 1},
11758	{0x15F, 0, 1},
11759	{0x160, 0, 1},
11760	{0x161, 0, 1},
11761	{0x162, 0, 1},
11762	{0x163, 0, 1},
11763	{0x164, 0, 0},
11764	{0x165, 0, 0},
11765	{0x166, 0, 0},
11766	{0x167, 0, 0},
11767	{0x168, 0, 0},
11768	{0x169, 0x2, 1},
11769	{0x16A, 0, 1},
11770	{0x16B, 0, 1},
11771	{0x16C, 0, 1},
11772	{0x16D, 0, 0},
11773	{0x170, 0, 0},
11774	{0x171, 0x77, 0},
11775	{0x172, 0x77, 0},
11776	{0x173, 0x77, 0},
11777	{0x174, 0x77, 0},
11778	{0x175, 0, 0},
11779	{0x176, 0x3, 0},
11780	{0x177, 0x37, 0},
11781	{0x178, 0x3, 0},
11782	{0x179, 0, 0},
11783	{0x17A, 0x21, 0},
11784	{0x17B, 0x21, 0},
11785	{0x17C, 0, 0},
11786	{0x17D, 0xaa, 0},
11787	{0x17E, 0, 0},
11788	{0x17F, 0xaa, 0},
11789	{0x180, 0, 0},
11790	{0x190, 0, 0},
11791	{0x191, 0x77, 0},
11792	{0x192, 0x77, 0},
11793	{0x193, 0x77, 0},
11794	{0x194, 0x77, 0},
11795	{0x195, 0, 0},
11796	{0x196, 0x3, 0},
11797	{0x197, 0x37, 0},
11798	{0x198, 0x3, 0},
11799	{0x199, 0, 0},
11800	{0x19A, 0x21, 0},
11801	{0x19B, 0x21, 0},
11802	{0x19C, 0, 0},
11803	{0x19D, 0xaa, 0},
11804	{0x19E, 0, 0},
11805	{0x19F, 0xaa, 0},
11806	{0x1A0, 0, 0},
11807	{0x1A1, 0x2, 0},
11808	{0x1A2, 0xf, 0},
11809	{0x1A3, 0xf, 0},
11810	{0x1A4, 0, 1},
11811	{0x1A5, 0, 1},
11812	{0x1A6, 0, 1},
11813	{0x1A7, 0x2, 0},
11814	{0x1A8, 0xf, 0},
11815	{0x1A9, 0xf, 0},
11816	{0x1AA, 0, 1},
11817	{0x1AB, 0, 1},
11818	{0x1AC, 0, 1},
11819	{0xFFFF, 0, 0},
11820};
11821
11822static struct radio_20xx_regs regs_2057_rev5[] = {
11823	{0x00, 0, 1},
11824	{0x01, 0x57, 1},
11825	{0x02, 0x20, 1},
11826	{0x03, 0x1f, 0},
11827	{0x04, 0x4, 0},
11828	{0x05, 0x2, 0},
11829	{0x06, 0x1, 0},
11830	{0x07, 0x1, 0},
11831	{0x08, 0x1, 0},
11832	{0x09, 0x69, 0},
11833	{0x0A, 0x66, 0},
11834	{0x0B, 0x6, 0},
11835	{0x0C, 0x18, 0},
11836	{0x0D, 0x3, 0},
11837	{0x0E, 0x20, 0},
11838	{0x0F, 0x20, 0},
11839	{0x10, 0, 0},
11840	{0x11, 0x7c, 0},
11841	{0x12, 0x42, 0},
11842	{0x13, 0xbd, 0},
11843	{0x14, 0x7, 0},
11844	{0x15, 0x87, 0},
11845	{0x16, 0x8, 0},
11846	{0x17, 0x17, 0},
11847	{0x18, 0x7, 0},
11848	{0x19, 0, 0},
11849	{0x1A, 0x2, 0},
11850	{0x1B, 0x13, 0},
11851	{0x1C, 0x3e, 0},
11852	{0x1D, 0x3e, 0},
11853	{0x1E, 0x96, 0},
11854	{0x1F, 0x4, 0},
11855	{0x20, 0, 0},
11856	{0x21, 0, 0},
11857	{0x22, 0x17, 0},
11858	{0x23, 0x6, 1},
11859	{0x24, 0x1, 0},
11860	{0x25, 0x6, 0},
11861	{0x26, 0x4, 0},
11862	{0x27, 0xd, 0},
11863	{0x28, 0xd, 0},
11864	{0x29, 0x30, 0},
11865	{0x2A, 0x32, 0},
11866	{0x2B, 0x8, 0},
11867	{0x2C, 0x1c, 0},
11868	{0x2D, 0x2, 0},
11869	{0x2E, 0x4, 0},
11870	{0x2F, 0x7f, 0},
11871	{0x30, 0x27, 0},
11872	{0x31, 0, 1},
11873	{0x32, 0, 1},
11874	{0x33, 0, 1},
11875	{0x34, 0, 0},
11876	{0x35, 0x20, 0},
11877	{0x36, 0x18, 0},
11878	{0x37, 0x7, 0},
11879	{0x38, 0x66, 0},
11880	{0x39, 0x66, 0},
11881	{0x3C, 0xff, 0},
11882	{0x3D, 0xff, 0},
11883	{0x40, 0x16, 0},
11884	{0x41, 0x7, 0},
11885	{0x45, 0x3, 0},
11886	{0x46, 0x1, 0},
11887	{0x47, 0x7, 0},
11888	{0x4B, 0x66, 0},
11889	{0x4C, 0x66, 0},
11890	{0x4D, 0, 0},
11891	{0x4E, 0x4, 0},
11892	{0x4F, 0xc, 0},
11893	{0x50, 0, 0},
11894	{0x51, 0x70, 1},
11895	{0x56, 0x7, 0},
11896	{0x57, 0, 0},
11897	{0x58, 0, 0},
11898	{0x59, 0x88, 1},
11899	{0x5A, 0, 0},
11900	{0x5B, 0x1f, 0},
11901	{0x5C, 0x20, 1},
11902	{0x5D, 0x1, 0},
11903	{0x5E, 0x30, 0},
11904	{0x5F, 0x70, 0},
11905	{0x60, 0, 0},
11906	{0x61, 0, 0},
11907	{0x62, 0x33, 1},
11908	{0x63, 0xf, 1},
11909	{0x64, 0xf, 1},
11910	{0x65, 0, 0},
11911	{0x66, 0x11, 0},
11912	{0x80, 0x3c, 0},
11913	{0x81, 0x1, 1},
11914	{0x82, 0xa, 0},
11915	{0x85, 0, 0},
11916	{0x86, 0x40, 0},
11917	{0x87, 0x40, 0},
11918	{0x88, 0x88, 0},
11919	{0x89, 0x10, 0},
11920	{0x8A, 0xf0, 0},
11921	{0x8B, 0x10, 0},
11922	{0x8C, 0xf0, 0},
11923	{0x8F, 0x10, 0},
11924	{0x90, 0x55, 0},
11925	{0x91, 0x3f, 1},
11926	{0x92, 0x36, 1},
11927	{0x93, 0, 0},
11928	{0x94, 0, 0},
11929	{0x95, 0, 0},
11930	{0x96, 0x87, 0},
11931	{0x97, 0x11, 0},
11932	{0x98, 0, 0},
11933	{0x99, 0x33, 0},
11934	{0x9A, 0x88, 0},
11935	{0xA1, 0x20, 1},
11936	{0xA2, 0x3f, 0},
11937	{0xA3, 0x44, 0},
11938	{0xA4, 0x8c, 0},
11939	{0xA5, 0x6c, 0},
11940	{0xA6, 0x22, 0},
11941	{0xA7, 0xbe, 0},
11942	{0xA8, 0x55, 0},
11943	{0xAA, 0xc, 0},
11944	{0xAB, 0xaa, 0},
11945	{0xAC, 0x2, 0},
11946	{0xAD, 0, 0},
11947	{0xAE, 0x10, 0},
11948	{0xAF, 0x1, 0},
11949	{0xB0, 0, 0},
11950	{0xB1, 0, 0},
11951	{0xB2, 0x80, 0},
11952	{0xB3, 0x60, 0},
11953	{0xB4, 0x44, 0},
11954	{0xB5, 0x55, 0},
11955	{0xB6, 0x1, 0},
11956	{0xB7, 0x55, 0},
11957	{0xB8, 0x1, 0},
11958	{0xB9, 0x5, 0},
11959	{0xBA, 0x55, 0},
11960	{0xBB, 0x55, 0},
11961	{0xC3, 0, 0},
11962	{0xC4, 0, 0},
11963	{0xC5, 0, 0},
11964	{0xC6, 0, 0},
11965	{0xC7, 0, 0},
11966	{0xC8, 0, 0},
11967	{0xC9, 0, 0},
11968	{0xCA, 0, 0},
11969	{0xCB, 0, 0},
11970	{0xCD, 0, 0},
11971	{0xCE, 0x5e, 0},
11972	{0xCF, 0xc, 0},
11973	{0xD0, 0xc, 0},
11974	{0xD1, 0xc, 0},
11975	{0xD2, 0, 0},
11976	{0xD3, 0x2b, 0},
11977	{0xD4, 0xc, 0},
11978	{0xD5, 0, 0},
11979	{0xD6, 0x70, 1},
11980	{0xDB, 0x7, 0},
11981	{0xDC, 0, 0},
11982	{0xDD, 0, 0},
11983	{0xDE, 0x88, 1},
11984	{0xDF, 0, 0},
11985	{0xE0, 0x1f, 0},
11986	{0xE1, 0x20, 1},
11987	{0xE2, 0x1, 0},
11988	{0xE3, 0x30, 0},
11989	{0xE4, 0x70, 0},
11990	{0xE5, 0, 0},
11991	{0xE6, 0, 0},
11992	{0xE7, 0x33, 0},
11993	{0xE8, 0xf, 1},
11994	{0xE9, 0xf, 1},
11995	{0xEA, 0, 0},
11996	{0xEB, 0x11, 0},
11997	{0x105, 0x3c, 0},
11998	{0x106, 0x1, 1},
11999	{0x107, 0xa, 0},
12000	{0x10A, 0, 0},
12001	{0x10B, 0x40, 0},
12002	{0x10C, 0x40, 0},
12003	{0x10D, 0x88, 0},
12004	{0x10E, 0x10, 0},
12005	{0x10F, 0xf0, 0},
12006	{0x110, 0x10, 0},
12007	{0x111, 0xf0, 0},
12008	{0x114, 0x10, 0},
12009	{0x115, 0x55, 0},
12010	{0x116, 0x3f, 1},
12011	{0x117, 0x36, 1},
12012	{0x118, 0, 0},
12013	{0x119, 0, 0},
12014	{0x11A, 0, 0},
12015	{0x11B, 0x87, 0},
12016	{0x11C, 0x11, 0},
12017	{0x11D, 0, 0},
12018	{0x11E, 0x33, 0},
12019	{0x11F, 0x88, 0},
12020	{0x126, 0x20, 1},
12021	{0x127, 0x3f, 0},
12022	{0x128, 0x44, 0},
12023	{0x129, 0x8c, 0},
12024	{0x12A, 0x6c, 0},
12025	{0x12B, 0x22, 0},
12026	{0x12C, 0xbe, 0},
12027	{0x12D, 0x55, 0},
12028	{0x12F, 0xc, 0},
12029	{0x130, 0xaa, 0},
12030	{0x131, 0x2, 0},
12031	{0x132, 0, 0},
12032	{0x133, 0x10, 0},
12033	{0x134, 0x1, 0},
12034	{0x135, 0, 0},
12035	{0x136, 0, 0},
12036	{0x137, 0x80, 0},
12037	{0x138, 0x60, 0},
12038	{0x139, 0x44, 0},
12039	{0x13A, 0x55, 0},
12040	{0x13B, 0x1, 0},
12041	{0x13C, 0x55, 0},
12042	{0x13D, 0x1, 0},
12043	{0x13E, 0x5, 0},
12044	{0x13F, 0x55, 0},
12045	{0x140, 0x55, 0},
12046	{0x148, 0, 0},
12047	{0x149, 0, 0},
12048	{0x14A, 0, 0},
12049	{0x14B, 0, 0},
12050	{0x14C, 0, 0},
12051	{0x14D, 0, 0},
12052	{0x14E, 0, 0},
12053	{0x14F, 0, 0},
12054	{0x150, 0, 0},
12055	{0x154, 0xc, 0},
12056	{0x155, 0xc, 0},
12057	{0x156, 0xc, 0},
12058	{0x157, 0, 0},
12059	{0x158, 0x2b, 0},
12060	{0x159, 0x84, 0},
12061	{0x15A, 0x15, 0},
12062	{0x15B, 0xf, 0},
12063	{0x15C, 0, 0},
12064	{0x15D, 0, 0},
12065	{0x15E, 0, 1},
12066	{0x15F, 0, 1},
12067	{0x160, 0, 1},
12068	{0x161, 0, 1},
12069	{0x162, 0, 1},
12070	{0x163, 0, 1},
12071	{0x164, 0, 0},
12072	{0x165, 0, 0},
12073	{0x166, 0, 0},
12074	{0x167, 0, 0},
12075	{0x168, 0, 0},
12076	{0x169, 0, 0},
12077	{0x16A, 0, 1},
12078	{0x16B, 0, 1},
12079	{0x16C, 0, 1},
12080	{0x16D, 0, 0},
12081	{0x170, 0, 0},
12082	{0x171, 0x77, 0},
12083	{0x172, 0x77, 0},
12084	{0x173, 0x77, 0},
12085	{0x174, 0x77, 0},
12086	{0x175, 0, 0},
12087	{0x176, 0x3, 0},
12088	{0x177, 0x37, 0},
12089	{0x178, 0x3, 0},
12090	{0x179, 0, 0},
12091	{0x17B, 0x21, 0},
12092	{0x17C, 0, 0},
12093	{0x17D, 0xaa, 0},
12094	{0x17E, 0, 0},
12095	{0x190, 0, 0},
12096	{0x191, 0x77, 0},
12097	{0x192, 0x77, 0},
12098	{0x193, 0x77, 0},
12099	{0x194, 0x77, 0},
12100	{0x195, 0, 0},
12101	{0x196, 0x3, 0},
12102	{0x197, 0x37, 0},
12103	{0x198, 0x3, 0},
12104	{0x199, 0, 0},
12105	{0x19B, 0x21, 0},
12106	{0x19C, 0, 0},
12107	{0x19D, 0xaa, 0},
12108	{0x19E, 0, 0},
12109	{0x1A1, 0x2, 0},
12110	{0x1A2, 0xf, 0},
12111	{0x1A3, 0xf, 0},
12112	{0x1A4, 0, 1},
12113	{0x1A5, 0, 1},
12114	{0x1A6, 0, 1},
12115	{0x1A7, 0x2, 0},
12116	{0x1A8, 0xf, 0},
12117	{0x1A9, 0xf, 0},
12118	{0x1AA, 0, 1},
12119	{0x1AB, 0, 1},
12120	{0x1AC, 0, 1},
12121	{0x1AD, 0x84, 0},
12122	{0x1AE, 0x60, 0},
12123	{0x1AF, 0x47, 0},
12124	{0x1B0, 0x47, 0},
12125	{0x1B1, 0, 0},
12126	{0x1B2, 0, 0},
12127	{0x1B3, 0, 0},
12128	{0x1B4, 0, 0},
12129	{0x1B5, 0, 0},
12130	{0x1B6, 0, 0},
12131	{0x1B7, 0xc, 1},
12132	{0x1B8, 0, 0},
12133	{0x1B9, 0, 0},
12134	{0x1BA, 0, 0},
12135	{0x1BB, 0, 0},
12136	{0x1BC, 0, 0},
12137	{0x1BD, 0, 0},
12138	{0x1BE, 0, 0},
12139	{0x1BF, 0, 0},
12140	{0x1C0, 0, 0},
12141	{0x1C1, 0x1, 1},
12142	{0x1C2, 0x80, 1},
12143	{0x1C3, 0, 0},
12144	{0x1C4, 0, 0},
12145	{0x1C5, 0, 0},
12146	{0x1C6, 0, 0},
12147	{0x1C7, 0, 0},
12148	{0x1C8, 0, 0},
12149	{0x1C9, 0, 0},
12150	{0x1CA, 0, 0},
12151	{0xFFFF, 0, 0}
12152};
12153
12154static struct radio_20xx_regs regs_2057_rev5v1[] = {
12155	{0x00, 0x15, 1},
12156	{0x01, 0x57, 1},
12157	{0x02, 0x20, 1},
12158	{0x03, 0x1f, 0},
12159	{0x04, 0x4, 0},
12160	{0x05, 0x2, 0},
12161	{0x06, 0x1, 0},
12162	{0x07, 0x1, 0},
12163	{0x08, 0x1, 0},
12164	{0x09, 0x69, 0},
12165	{0x0A, 0x66, 0},
12166	{0x0B, 0x6, 0},
12167	{0x0C, 0x18, 0},
12168	{0x0D, 0x3, 0},
12169	{0x0E, 0x20, 0},
12170	{0x0F, 0x20, 0},
12171	{0x10, 0, 0},
12172	{0x11, 0x7c, 0},
12173	{0x12, 0x42, 0},
12174	{0x13, 0xbd, 0},
12175	{0x14, 0x7, 0},
12176	{0x15, 0x87, 0},
12177	{0x16, 0x8, 0},
12178	{0x17, 0x17, 0},
12179	{0x18, 0x7, 0},
12180	{0x19, 0, 0},
12181	{0x1A, 0x2, 0},
12182	{0x1B, 0x13, 0},
12183	{0x1C, 0x3e, 0},
12184	{0x1D, 0x3e, 0},
12185	{0x1E, 0x96, 0},
12186	{0x1F, 0x4, 0},
12187	{0x20, 0, 0},
12188	{0x21, 0, 0},
12189	{0x22, 0x17, 0},
12190	{0x23, 0x6, 1},
12191	{0x24, 0x1, 0},
12192	{0x25, 0x6, 0},
12193	{0x26, 0x4, 0},
12194	{0x27, 0xd, 0},
12195	{0x28, 0xd, 0},
12196	{0x29, 0x30, 0},
12197	{0x2A, 0x32, 0},
12198	{0x2B, 0x8, 0},
12199	{0x2C, 0x1c, 0},
12200	{0x2D, 0x2, 0},
12201	{0x2E, 0x4, 0},
12202	{0x2F, 0x7f, 0},
12203	{0x30, 0x27, 0},
12204	{0x31, 0, 1},
12205	{0x32, 0, 1},
12206	{0x33, 0, 1},
12207	{0x34, 0, 0},
12208	{0x35, 0x20, 0},
12209	{0x36, 0x18, 0},
12210	{0x37, 0x7, 0},
12211	{0x38, 0x66, 0},
12212	{0x39, 0x66, 0},
12213	{0x3C, 0xff, 0},
12214	{0x3D, 0xff, 0},
12215	{0x40, 0x16, 0},
12216	{0x41, 0x7, 0},
12217	{0x45, 0x3, 0},
12218	{0x46, 0x1, 0},
12219	{0x47, 0x7, 0},
12220	{0x4B, 0x66, 0},
12221	{0x4C, 0x66, 0},
12222	{0x4D, 0, 0},
12223	{0x4E, 0x4, 0},
12224	{0x4F, 0xc, 0},
12225	{0x50, 0, 0},
12226	{0x51, 0x70, 1},
12227	{0x56, 0x7, 0},
12228	{0x57, 0, 0},
12229	{0x58, 0, 0},
12230	{0x59, 0x88, 1},
12231	{0x5A, 0, 0},
12232	{0x5B, 0x1f, 0},
12233	{0x5C, 0x20, 1},
12234	{0x5D, 0x1, 0},
12235	{0x5E, 0x30, 0},
12236	{0x5F, 0x70, 0},
12237	{0x60, 0, 0},
12238	{0x61, 0, 0},
12239	{0x62, 0x33, 1},
12240	{0x63, 0xf, 1},
12241	{0x64, 0xf, 1},
12242	{0x65, 0, 0},
12243	{0x66, 0x11, 0},
12244	{0x80, 0x3c, 0},
12245	{0x81, 0x1, 1},
12246	{0x82, 0xa, 0},
12247	{0x85, 0, 0},
12248	{0x86, 0x40, 0},
12249	{0x87, 0x40, 0},
12250	{0x88, 0x88, 0},
12251	{0x89, 0x10, 0},
12252	{0x8A, 0xf0, 0},
12253	{0x8B, 0x10, 0},
12254	{0x8C, 0xf0, 0},
12255	{0x8F, 0x10, 0},
12256	{0x90, 0x55, 0},
12257	{0x91, 0x3f, 1},
12258	{0x92, 0x36, 1},
12259	{0x93, 0, 0},
12260	{0x94, 0, 0},
12261	{0x95, 0, 0},
12262	{0x96, 0x87, 0},
12263	{0x97, 0x11, 0},
12264	{0x98, 0, 0},
12265	{0x99, 0x33, 0},
12266	{0x9A, 0x88, 0},
12267	{0xA1, 0x20, 1},
12268	{0xA2, 0x3f, 0},
12269	{0xA3, 0x44, 0},
12270	{0xA4, 0x8c, 0},
12271	{0xA5, 0x6c, 0},
12272	{0xA6, 0x22, 0},
12273	{0xA7, 0xbe, 0},
12274	{0xA8, 0x55, 0},
12275	{0xAA, 0xc, 0},
12276	{0xAB, 0xaa, 0},
12277	{0xAC, 0x2, 0},
12278	{0xAD, 0, 0},
12279	{0xAE, 0x10, 0},
12280	{0xAF, 0x1, 0},
12281	{0xB0, 0, 0},
12282	{0xB1, 0, 0},
12283	{0xB2, 0x80, 0},
12284	{0xB3, 0x60, 0},
12285	{0xB4, 0x44, 0},
12286	{0xB5, 0x55, 0},
12287	{0xB6, 0x1, 0},
12288	{0xB7, 0x55, 0},
12289	{0xB8, 0x1, 0},
12290	{0xB9, 0x5, 0},
12291	{0xBA, 0x55, 0},
12292	{0xBB, 0x55, 0},
12293	{0xC3, 0, 0},
12294	{0xC4, 0, 0},
12295	{0xC5, 0, 0},
12296	{0xC6, 0, 0},
12297	{0xC7, 0, 0},
12298	{0xC8, 0, 0},
12299	{0xC9, 0x1, 1},
12300	{0xCA, 0, 0},
12301	{0xCB, 0, 0},
12302	{0xCD, 0, 0},
12303	{0xCE, 0x5e, 0},
12304	{0xCF, 0xc, 0},
12305	{0xD0, 0xc, 0},
12306	{0xD1, 0xc, 0},
12307	{0xD2, 0, 0},
12308	{0xD3, 0x2b, 0},
12309	{0xD4, 0xc, 0},
12310	{0xD5, 0, 0},
12311	{0xD6, 0x70, 1},
12312	{0xDB, 0x7, 0},
12313	{0xDC, 0, 0},
12314	{0xDD, 0, 0},
12315	{0xDE, 0x88, 1},
12316	{0xDF, 0, 0},
12317	{0xE0, 0x1f, 0},
12318	{0xE1, 0x20, 1},
12319	{0xE2, 0x1, 0},
12320	{0xE3, 0x30, 0},
12321	{0xE4, 0x70, 0},
12322	{0xE5, 0, 0},
12323	{0xE6, 0, 0},
12324	{0xE7, 0x33, 0},
12325	{0xE8, 0xf, 1},
12326	{0xE9, 0xf, 1},
12327	{0xEA, 0, 0},
12328	{0xEB, 0x11, 0},
12329	{0x105, 0x3c, 0},
12330	{0x106, 0x1, 1},
12331	{0x107, 0xa, 0},
12332	{0x10A, 0, 0},
12333	{0x10B, 0x40, 0},
12334	{0x10C, 0x40, 0},
12335	{0x10D, 0x88, 0},
12336	{0x10E, 0x10, 0},
12337	{0x10F, 0xf0, 0},
12338	{0x110, 0x10, 0},
12339	{0x111, 0xf0, 0},
12340	{0x114, 0x10, 0},
12341	{0x115, 0x55, 0},
12342	{0x116, 0x3f, 1},
12343	{0x117, 0x36, 1},
12344	{0x118, 0, 0},
12345	{0x119, 0, 0},
12346	{0x11A, 0, 0},
12347	{0x11B, 0x87, 0},
12348	{0x11C, 0x11, 0},
12349	{0x11D, 0, 0},
12350	{0x11E, 0x33, 0},
12351	{0x11F, 0x88, 0},
12352	{0x126, 0x20, 1},
12353	{0x127, 0x3f, 0},
12354	{0x128, 0x44, 0},
12355	{0x129, 0x8c, 0},
12356	{0x12A, 0x6c, 0},
12357	{0x12B, 0x22, 0},
12358	{0x12C, 0xbe, 0},
12359	{0x12D, 0x55, 0},
12360	{0x12F, 0xc, 0},
12361	{0x130, 0xaa, 0},
12362	{0x131, 0x2, 0},
12363	{0x132, 0, 0},
12364	{0x133, 0x10, 0},
12365	{0x134, 0x1, 0},
12366	{0x135, 0, 0},
12367	{0x136, 0, 0},
12368	{0x137, 0x80, 0},
12369	{0x138, 0x60, 0},
12370	{0x139, 0x44, 0},
12371	{0x13A, 0x55, 0},
12372	{0x13B, 0x1, 0},
12373	{0x13C, 0x55, 0},
12374	{0x13D, 0x1, 0},
12375	{0x13E, 0x5, 0},
12376	{0x13F, 0x55, 0},
12377	{0x140, 0x55, 0},
12378	{0x148, 0, 0},
12379	{0x149, 0, 0},
12380	{0x14A, 0, 0},
12381	{0x14B, 0, 0},
12382	{0x14C, 0, 0},
12383	{0x14D, 0, 0},
12384	{0x14E, 0x1, 1},
12385	{0x14F, 0, 0},
12386	{0x150, 0, 0},
12387	{0x154, 0xc, 0},
12388	{0x155, 0xc, 0},
12389	{0x156, 0xc, 0},
12390	{0x157, 0, 0},
12391	{0x158, 0x2b, 0},
12392	{0x159, 0x84, 0},
12393	{0x15A, 0x15, 0},
12394	{0x15B, 0xf, 0},
12395	{0x15C, 0, 0},
12396	{0x15D, 0, 0},
12397	{0x15E, 0, 1},
12398	{0x15F, 0, 1},
12399	{0x160, 0, 1},
12400	{0x161, 0, 1},
12401	{0x162, 0, 1},
12402	{0x163, 0, 1},
12403	{0x164, 0, 0},
12404	{0x165, 0, 0},
12405	{0x166, 0, 0},
12406	{0x167, 0, 0},
12407	{0x168, 0, 0},
12408	{0x169, 0, 0},
12409	{0x16A, 0, 1},
12410	{0x16B, 0, 1},
12411	{0x16C, 0, 1},
12412	{0x16D, 0, 0},
12413	{0x170, 0, 0},
12414	{0x171, 0x77, 0},
12415	{0x172, 0x77, 0},
12416	{0x173, 0x77, 0},
12417	{0x174, 0x77, 0},
12418	{0x175, 0, 0},
12419	{0x176, 0x3, 0},
12420	{0x177, 0x37, 0},
12421	{0x178, 0x3, 0},
12422	{0x179, 0, 0},
12423	{0x17B, 0x21, 0},
12424	{0x17C, 0, 0},
12425	{0x17D, 0xaa, 0},
12426	{0x17E, 0, 0},
12427	{0x190, 0, 0},
12428	{0x191, 0x77, 0},
12429	{0x192, 0x77, 0},
12430	{0x193, 0x77, 0},
12431	{0x194, 0x77, 0},
12432	{0x195, 0, 0},
12433	{0x196, 0x3, 0},
12434	{0x197, 0x37, 0},
12435	{0x198, 0x3, 0},
12436	{0x199, 0, 0},
12437	{0x19B, 0x21, 0},
12438	{0x19C, 0, 0},
12439	{0x19D, 0xaa, 0},
12440	{0x19E, 0, 0},
12441	{0x1A1, 0x2, 0},
12442	{0x1A2, 0xf, 0},
12443	{0x1A3, 0xf, 0},
12444	{0x1A4, 0, 1},
12445	{0x1A5, 0, 1},
12446	{0x1A6, 0, 1},
12447	{0x1A7, 0x2, 0},
12448	{0x1A8, 0xf, 0},
12449	{0x1A9, 0xf, 0},
12450	{0x1AA, 0, 1},
12451	{0x1AB, 0, 1},
12452	{0x1AC, 0, 1},
12453	{0x1AD, 0x84, 0},
12454	{0x1AE, 0x60, 0},
12455	{0x1AF, 0x47, 0},
12456	{0x1B0, 0x47, 0},
12457	{0x1B1, 0, 0},
12458	{0x1B2, 0, 0},
12459	{0x1B3, 0, 0},
12460	{0x1B4, 0, 0},
12461	{0x1B5, 0, 0},
12462	{0x1B6, 0, 0},
12463	{0x1B7, 0xc, 1},
12464	{0x1B8, 0, 0},
12465	{0x1B9, 0, 0},
12466	{0x1BA, 0, 0},
12467	{0x1BB, 0, 0},
12468	{0x1BC, 0, 0},
12469	{0x1BD, 0, 0},
12470	{0x1BE, 0, 0},
12471	{0x1BF, 0, 0},
12472	{0x1C0, 0, 0},
12473	{0x1C1, 0x1, 1},
12474	{0x1C2, 0x80, 1},
12475	{0x1C3, 0, 0},
12476	{0x1C4, 0, 0},
12477	{0x1C5, 0, 0},
12478	{0x1C6, 0, 0},
12479	{0x1C7, 0, 0},
12480	{0x1C8, 0, 0},
12481	{0x1C9, 0, 0},
12482	{0x1CA, 0, 0},
12483	{0xFFFF, 0, 0}
12484};
12485
12486static struct radio_20xx_regs regs_2057_rev7[] = {
12487	{0x00, 0, 1},
12488	{0x01, 0x57, 1},
12489	{0x02, 0x20, 1},
12490	{0x03, 0x1f, 0},
12491	{0x04, 0x4, 0},
12492	{0x05, 0x2, 0},
12493	{0x06, 0x1, 0},
12494	{0x07, 0x1, 0},
12495	{0x08, 0x1, 0},
12496	{0x09, 0x69, 0},
12497	{0x0A, 0x66, 0},
12498	{0x0B, 0x6, 0},
12499	{0x0C, 0x18, 0},
12500	{0x0D, 0x3, 0},
12501	{0x0E, 0x20, 0},
12502	{0x0F, 0x20, 0},
12503	{0x10, 0, 0},
12504	{0x11, 0x7c, 0},
12505	{0x12, 0x42, 0},
12506	{0x13, 0xbd, 0},
12507	{0x14, 0x7, 0},
12508	{0x15, 0x87, 0},
12509	{0x16, 0x8, 0},
12510	{0x17, 0x17, 0},
12511	{0x18, 0x7, 0},
12512	{0x19, 0, 0},
12513	{0x1A, 0x2, 0},
12514	{0x1B, 0x13, 0},
12515	{0x1C, 0x3e, 0},
12516	{0x1D, 0x3e, 0},
12517	{0x1E, 0x96, 0},
12518	{0x1F, 0x4, 0},
12519	{0x20, 0, 0},
12520	{0x21, 0, 0},
12521	{0x22, 0x17, 0},
12522	{0x23, 0x6, 0},
12523	{0x24, 0x1, 0},
12524	{0x25, 0x6, 0},
12525	{0x26, 0x4, 0},
12526	{0x27, 0xd, 0},
12527	{0x28, 0xd, 0},
12528	{0x29, 0x30, 0},
12529	{0x2A, 0x32, 0},
12530	{0x2B, 0x8, 0},
12531	{0x2C, 0x1c, 0},
12532	{0x2D, 0x2, 0},
12533	{0x2E, 0x4, 0},
12534	{0x2F, 0x7f, 0},
12535	{0x30, 0x27, 0},
12536	{0x31, 0, 1},
12537	{0x32, 0, 1},
12538	{0x33, 0, 1},
12539	{0x34, 0, 0},
12540	{0x35, 0x20, 0},
12541	{0x36, 0x18, 0},
12542	{0x37, 0x7, 0},
12543	{0x38, 0x66, 0},
12544	{0x39, 0x66, 0},
12545	{0x3A, 0x66, 0},
12546	{0x3B, 0x66, 0},
12547	{0x3C, 0xff, 0},
12548	{0x3D, 0xff, 0},
12549	{0x3E, 0xff, 0},
12550	{0x3F, 0xff, 0},
12551	{0x40, 0x16, 0},
12552	{0x41, 0x7, 0},
12553	{0x42, 0x19, 0},
12554	{0x43, 0x7, 0},
12555	{0x44, 0x6, 0},
12556	{0x45, 0x3, 0},
12557	{0x46, 0x1, 0},
12558	{0x47, 0x7, 0},
12559	{0x48, 0x33, 0},
12560	{0x49, 0x5, 0},
12561	{0x4A, 0x77, 0},
12562	{0x4B, 0x66, 0},
12563	{0x4C, 0x66, 0},
12564	{0x4D, 0, 0},
12565	{0x4E, 0x4, 0},
12566	{0x4F, 0xc, 0},
12567	{0x50, 0, 0},
12568	{0x51, 0x70, 1},
12569	{0x56, 0x7, 0},
12570	{0x57, 0, 0},
12571	{0x58, 0, 0},
12572	{0x59, 0x88, 1},
12573	{0x5A, 0, 0},
12574	{0x5B, 0x1f, 0},
12575	{0x5C, 0x20, 1},
12576	{0x5D, 0x1, 0},
12577	{0x5E, 0x30, 0},
12578	{0x5F, 0x70, 0},
12579	{0x60, 0, 0},
12580	{0x61, 0, 0},
12581	{0x62, 0x33, 1},
12582	{0x63, 0xf, 1},
12583	{0x64, 0x13, 1},
12584	{0x65, 0, 0},
12585	{0x66, 0xee, 1},
12586	{0x69, 0, 0},
12587	{0x6A, 0x7e, 0},
12588	{0x6B, 0x3f, 0},
12589	{0x6C, 0x7f, 0},
12590	{0x6D, 0x78, 0},
12591	{0x6E, 0x58, 1},
12592	{0x6F, 0x88, 0},
12593	{0x70, 0x8, 0},
12594	{0x71, 0xf, 0},
12595	{0x72, 0xbc, 0},
12596	{0x73, 0x8, 0},
12597	{0x74, 0x60, 0},
12598	{0x75, 0x13, 1},
12599	{0x76, 0x70, 0},
12600	{0x77, 0, 0},
12601	{0x78, 0, 0},
12602	{0x79, 0, 0},
12603	{0x7A, 0x33, 0},
12604	{0x7B, 0x13, 1},
12605	{0x7C, 0x14, 1},
12606	{0x7D, 0xee, 1},
12607	{0x80, 0x3c, 0},
12608	{0x81, 0x1, 1},
12609	{0x82, 0xa, 0},
12610	{0x83, 0x9d, 0},
12611	{0x84, 0xa, 0},
12612	{0x85, 0, 0},
12613	{0x86, 0x40, 0},
12614	{0x87, 0x40, 0},
12615	{0x88, 0x88, 0},
12616	{0x89, 0x10, 0},
12617	{0x8A, 0xf0, 0},
12618	{0x8B, 0x10, 0},
12619	{0x8C, 0xf0, 0},
12620	{0x8D, 0, 0},
12621	{0x8E, 0, 0},
12622	{0x8F, 0x10, 0},
12623	{0x90, 0x55, 0},
12624	{0x91, 0x3f, 1},
12625	{0x92, 0x36, 1},
12626	{0x93, 0, 0},
12627	{0x94, 0, 0},
12628	{0x95, 0, 0},
12629	{0x96, 0x87, 0},
12630	{0x97, 0x11, 0},
12631	{0x98, 0, 0},
12632	{0x99, 0x33, 0},
12633	{0x9A, 0x88, 0},
12634	{0x9B, 0, 0},
12635	{0x9C, 0x87, 0},
12636	{0x9D, 0x11, 0},
12637	{0x9E, 0, 0},
12638	{0x9F, 0x33, 0},
12639	{0xA0, 0x88, 0},
12640	{0xA1, 0x20, 1},
12641	{0xA2, 0x3f, 0},
12642	{0xA3, 0x44, 0},
12643	{0xA4, 0x8c, 0},
12644	{0xA5, 0x6c, 0},
12645	{0xA6, 0x22, 0},
12646	{0xA7, 0xbe, 0},
12647	{0xA8, 0x55, 0},
12648	{0xAA, 0xc, 0},
12649	{0xAB, 0xaa, 0},
12650	{0xAC, 0x2, 0},
12651	{0xAD, 0, 0},
12652	{0xAE, 0x10, 0},
12653	{0xAF, 0x1, 0},
12654	{0xB0, 0, 0},
12655	{0xB1, 0, 0},
12656	{0xB2, 0x80, 0},
12657	{0xB3, 0x60, 0},
12658	{0xB4, 0x44, 0},
12659	{0xB5, 0x55, 0},
12660	{0xB6, 0x1, 0},
12661	{0xB7, 0x55, 0},
12662	{0xB8, 0x1, 0},
12663	{0xB9, 0x5, 0},
12664	{0xBA, 0x55, 0},
12665	{0xBB, 0x55, 0},
12666	{0xC1, 0, 0},
12667	{0xC2, 0, 0},
12668	{0xC3, 0, 0},
12669	{0xC4, 0, 0},
12670	{0xC5, 0, 0},
12671	{0xC6, 0, 0},
12672	{0xC7, 0, 0},
12673	{0xC8, 0, 0},
12674	{0xC9, 0, 0},
12675	{0xCA, 0, 0},
12676	{0xCB, 0, 0},
12677	{0xCC, 0, 0},
12678	{0xCD, 0, 0},
12679	{0xCE, 0x5e, 0},
12680	{0xCF, 0xc, 0},
12681	{0xD0, 0xc, 0},
12682	{0xD1, 0xc, 0},
12683	{0xD2, 0, 0},
12684	{0xD3, 0x2b, 0},
12685	{0xD4, 0xc, 0},
12686	{0xD5, 0, 0},
12687	{0xD6, 0x70, 1},
12688	{0xDB, 0x7, 0},
12689	{0xDC, 0, 0},
12690	{0xDD, 0, 0},
12691	{0xDE, 0x88, 1},
12692	{0xDF, 0, 0},
12693	{0xE0, 0x1f, 0},
12694	{0xE1, 0x20, 1},
12695	{0xE2, 0x1, 0},
12696	{0xE3, 0x30, 0},
12697	{0xE4, 0x70, 0},
12698	{0xE5, 0, 0},
12699	{0xE6, 0, 0},
12700	{0xE7, 0x33, 0},
12701	{0xE8, 0xf, 1},
12702	{0xE9, 0x13, 1},
12703	{0xEA, 0, 0},
12704	{0xEB, 0xee, 1},
12705	{0xEE, 0, 0},
12706	{0xEF, 0x7e, 0},
12707	{0xF0, 0x3f, 0},
12708	{0xF1, 0x7f, 0},
12709	{0xF2, 0x78, 0},
12710	{0xF3, 0x58, 1},
12711	{0xF4, 0x88, 0},
12712	{0xF5, 0x8, 0},
12713	{0xF6, 0xf, 0},
12714	{0xF7, 0xbc, 0},
12715	{0xF8, 0x8, 0},
12716	{0xF9, 0x60, 0},
12717	{0xFA, 0x13, 1},
12718	{0xFB, 0x70, 0},
12719	{0xFC, 0, 0},
12720	{0xFD, 0, 0},
12721	{0xFE, 0, 0},
12722	{0xFF, 0x33, 0},
12723	{0x100, 0x13, 1},
12724	{0x101, 0x14, 1},
12725	{0x102, 0xee, 1},
12726	{0x105, 0x3c, 0},
12727	{0x106, 0x1, 1},
12728	{0x107, 0xa, 0},
12729	{0x108, 0x9d, 0},
12730	{0x109, 0xa, 0},
12731	{0x10A, 0, 0},
12732	{0x10B, 0x40, 0},
12733	{0x10C, 0x40, 0},
12734	{0x10D, 0x88, 0},
12735	{0x10E, 0x10, 0},
12736	{0x10F, 0xf0, 0},
12737	{0x110, 0x10, 0},
12738	{0x111, 0xf0, 0},
12739	{0x112, 0, 0},
12740	{0x113, 0, 0},
12741	{0x114, 0x10, 0},
12742	{0x115, 0x55, 0},
12743	{0x116, 0x3f, 1},
12744	{0x117, 0x36, 1},
12745	{0x118, 0, 0},
12746	{0x119, 0, 0},
12747	{0x11A, 0, 0},
12748	{0x11B, 0x87, 0},
12749	{0x11C, 0x11, 0},
12750	{0x11D, 0, 0},
12751	{0x11E, 0x33, 0},
12752	{0x11F, 0x88, 0},
12753	{0x120, 0, 0},
12754	{0x121, 0x87, 0},
12755	{0x122, 0x11, 0},
12756	{0x123, 0, 0},
12757	{0x124, 0x33, 0},
12758	{0x125, 0x88, 0},
12759	{0x126, 0x20, 1},
12760	{0x127, 0x3f, 0},
12761	{0x128, 0x44, 0},
12762	{0x129, 0x8c, 0},
12763	{0x12A, 0x6c, 0},
12764	{0x12B, 0x22, 0},
12765	{0x12C, 0xbe, 0},
12766	{0x12D, 0x55, 0},
12767	{0x12F, 0xc, 0},
12768	{0x130, 0xaa, 0},
12769	{0x131, 0x2, 0},
12770	{0x132, 0, 0},
12771	{0x133, 0x10, 0},
12772	{0x134, 0x1, 0},
12773	{0x135, 0, 0},
12774	{0x136, 0, 0},
12775	{0x137, 0x80, 0},
12776	{0x138, 0x60, 0},
12777	{0x139, 0x44, 0},
12778	{0x13A, 0x55, 0},
12779	{0x13B, 0x1, 0},
12780	{0x13C, 0x55, 0},
12781	{0x13D, 0x1, 0},
12782	{0x13E, 0x5, 0},
12783	{0x13F, 0x55, 0},
12784	{0x140, 0x55, 0},
12785	{0x146, 0, 0},
12786	{0x147, 0, 0},
12787	{0x148, 0, 0},
12788	{0x149, 0, 0},
12789	{0x14A, 0, 0},
12790	{0x14B, 0, 0},
12791	{0x14C, 0, 0},
12792	{0x14D, 0, 0},
12793	{0x14E, 0, 0},
12794	{0x14F, 0, 0},
12795	{0x150, 0, 0},
12796	{0x151, 0, 0},
12797	{0x154, 0xc, 0},
12798	{0x155, 0xc, 0},
12799	{0x156, 0xc, 0},
12800	{0x157, 0, 0},
12801	{0x158, 0x2b, 0},
12802	{0x159, 0x84, 0},
12803	{0x15A, 0x15, 0},
12804	{0x15B, 0xf, 0},
12805	{0x15C, 0, 0},
12806	{0x15D, 0, 0},
12807	{0x15E, 0, 1},
12808	{0x15F, 0, 1},
12809	{0x160, 0, 1},
12810	{0x161, 0, 1},
12811	{0x162, 0, 1},
12812	{0x163, 0, 1},
12813	{0x164, 0, 0},
12814	{0x165, 0, 0},
12815	{0x166, 0, 0},
12816	{0x167, 0, 0},
12817	{0x168, 0, 0},
12818	{0x169, 0, 0},
12819	{0x16A, 0, 1},
12820	{0x16B, 0, 1},
12821	{0x16C, 0, 1},
12822	{0x16D, 0, 0},
12823	{0x170, 0, 0},
12824	{0x171, 0x77, 0},
12825	{0x172, 0x77, 0},
12826	{0x173, 0x77, 0},
12827	{0x174, 0x77, 0},
12828	{0x175, 0, 0},
12829	{0x176, 0x3, 0},
12830	{0x177, 0x37, 0},
12831	{0x178, 0x3, 0},
12832	{0x179, 0, 0},
12833	{0x17A, 0x21, 0},
12834	{0x17B, 0x21, 0},
12835	{0x17C, 0, 0},
12836	{0x17D, 0xaa, 0},
12837	{0x17E, 0, 0},
12838	{0x17F, 0xaa, 0},
12839	{0x180, 0, 0},
12840	{0x190, 0, 0},
12841	{0x191, 0x77, 0},
12842	{0x192, 0x77, 0},
12843	{0x193, 0x77, 0},
12844	{0x194, 0x77, 0},
12845	{0x195, 0, 0},
12846	{0x196, 0x3, 0},
12847	{0x197, 0x37, 0},
12848	{0x198, 0x3, 0},
12849	{0x199, 0, 0},
12850	{0x19A, 0x21, 0},
12851	{0x19B, 0x21, 0},
12852	{0x19C, 0, 0},
12853	{0x19D, 0xaa, 0},
12854	{0x19E, 0, 0},
12855	{0x19F, 0xaa, 0},
12856	{0x1A0, 0, 0},
12857	{0x1A1, 0x2, 0},
12858	{0x1A2, 0xf, 0},
12859	{0x1A3, 0xf, 0},
12860	{0x1A4, 0, 1},
12861	{0x1A5, 0, 1},
12862	{0x1A6, 0, 1},
12863	{0x1A7, 0x2, 0},
12864	{0x1A8, 0xf, 0},
12865	{0x1A9, 0xf, 0},
12866	{0x1AA, 0, 1},
12867	{0x1AB, 0, 1},
12868	{0x1AC, 0, 1},
12869	{0x1AD, 0x84, 0},
12870	{0x1AE, 0x60, 0},
12871	{0x1AF, 0x47, 0},
12872	{0x1B0, 0x47, 0},
12873	{0x1B1, 0, 0},
12874	{0x1B2, 0, 0},
12875	{0x1B3, 0, 0},
12876	{0x1B4, 0, 0},
12877	{0x1B5, 0, 0},
12878	{0x1B6, 0, 0},
12879	{0x1B7, 0x5, 1},
12880	{0x1B8, 0, 0},
12881	{0x1B9, 0, 0},
12882	{0x1BA, 0, 0},
12883	{0x1BB, 0, 0},
12884	{0x1BC, 0, 0},
12885	{0x1BD, 0, 0},
12886	{0x1BE, 0, 0},
12887	{0x1BF, 0, 0},
12888	{0x1C0, 0, 0},
12889	{0x1C1, 0, 0},
12890	{0x1C2, 0xa0, 1},
12891	{0x1C3, 0, 0},
12892	{0x1C4, 0, 0},
12893	{0x1C5, 0, 0},
12894	{0x1C6, 0, 0},
12895	{0x1C7, 0, 0},
12896	{0x1C8, 0, 0},
12897	{0x1C9, 0, 0},
12898	{0x1CA, 0, 0},
12899	{0xFFFF, 0, 0}
12900};
12901
12902static struct radio_20xx_regs regs_2057_rev8[] = {
12903	{0x00, 0x8, 1},
12904	{0x01, 0x57, 1},
12905	{0x02, 0x20, 1},
12906	{0x03, 0x1f, 0},
12907	{0x04, 0x4, 0},
12908	{0x05, 0x2, 0},
12909	{0x06, 0x1, 0},
12910	{0x07, 0x1, 0},
12911	{0x08, 0x1, 0},
12912	{0x09, 0x69, 0},
12913	{0x0A, 0x66, 0},
12914	{0x0B, 0x6, 0},
12915	{0x0C, 0x18, 0},
12916	{0x0D, 0x3, 0},
12917	{0x0E, 0x20, 0},
12918	{0x0F, 0x20, 0},
12919	{0x10, 0, 0},
12920	{0x11, 0x7c, 0},
12921	{0x12, 0x42, 0},
12922	{0x13, 0xbd, 0},
12923	{0x14, 0x7, 0},
12924	{0x15, 0x87, 0},
12925	{0x16, 0x8, 0},
12926	{0x17, 0x17, 0},
12927	{0x18, 0x7, 0},
12928	{0x19, 0, 0},
12929	{0x1A, 0x2, 0},
12930	{0x1B, 0x13, 0},
12931	{0x1C, 0x3e, 0},
12932	{0x1D, 0x3e, 0},
12933	{0x1E, 0x96, 0},
12934	{0x1F, 0x4, 0},
12935	{0x20, 0, 0},
12936	{0x21, 0, 0},
12937	{0x22, 0x17, 0},
12938	{0x23, 0x6, 0},
12939	{0x24, 0x1, 0},
12940	{0x25, 0x6, 0},
12941	{0x26, 0x4, 0},
12942	{0x27, 0xd, 0},
12943	{0x28, 0xd, 0},
12944	{0x29, 0x30, 0},
12945	{0x2A, 0x32, 0},
12946	{0x2B, 0x8, 0},
12947	{0x2C, 0x1c, 0},
12948	{0x2D, 0x2, 0},
12949	{0x2E, 0x4, 0},
12950	{0x2F, 0x7f, 0},
12951	{0x30, 0x27, 0},
12952	{0x31, 0, 1},
12953	{0x32, 0, 1},
12954	{0x33, 0, 1},
12955	{0x34, 0, 0},
12956	{0x35, 0x20, 0},
12957	{0x36, 0x18, 0},
12958	{0x37, 0x7, 0},
12959	{0x38, 0x66, 0},
12960	{0x39, 0x66, 0},
12961	{0x3A, 0x66, 0},
12962	{0x3B, 0x66, 0},
12963	{0x3C, 0xff, 0},
12964	{0x3D, 0xff, 0},
12965	{0x3E, 0xff, 0},
12966	{0x3F, 0xff, 0},
12967	{0x40, 0x16, 0},
12968	{0x41, 0x7, 0},
12969	{0x42, 0x19, 0},
12970	{0x43, 0x7, 0},
12971	{0x44, 0x6, 0},
12972	{0x45, 0x3, 0},
12973	{0x46, 0x1, 0},
12974	{0x47, 0x7, 0},
12975	{0x48, 0x33, 0},
12976	{0x49, 0x5, 0},
12977	{0x4A, 0x77, 0},
12978	{0x4B, 0x66, 0},
12979	{0x4C, 0x66, 0},
12980	{0x4D, 0, 0},
12981	{0x4E, 0x4, 0},
12982	{0x4F, 0xc, 0},
12983	{0x50, 0, 0},
12984	{0x51, 0x70, 1},
12985	{0x56, 0x7, 0},
12986	{0x57, 0, 0},
12987	{0x58, 0, 0},
12988	{0x59, 0x88, 1},
12989	{0x5A, 0, 0},
12990	{0x5B, 0x1f, 0},
12991	{0x5C, 0x20, 1},
12992	{0x5D, 0x1, 0},
12993	{0x5E, 0x30, 0},
12994	{0x5F, 0x70, 0},
12995	{0x60, 0, 0},
12996	{0x61, 0, 0},
12997	{0x62, 0x33, 1},
12998	{0x63, 0xf, 1},
12999	{0x64, 0xf, 1},
13000	{0x65, 0, 0},
13001	{0x66, 0x11, 0},
13002	{0x69, 0, 0},
13003	{0x6A, 0x7e, 0},
13004	{0x6B, 0x3f, 0},
13005	{0x6C, 0x7f, 0},
13006	{0x6D, 0x78, 0},
13007	{0x6E, 0x58, 1},
13008	{0x6F, 0x88, 0},
13009	{0x70, 0x8, 0},
13010	{0x71, 0xf, 0},
13011	{0x72, 0xbc, 0},
13012	{0x73, 0x8, 0},
13013	{0x74, 0x60, 0},
13014	{0x75, 0x13, 1},
13015	{0x76, 0x70, 0},
13016	{0x77, 0, 0},
13017	{0x78, 0, 0},
13018	{0x79, 0, 0},
13019	{0x7A, 0x33, 0},
13020	{0x7B, 0x13, 1},
13021	{0x7C, 0xf, 1},
13022	{0x7D, 0xee, 1},
13023	{0x80, 0x3c, 0},
13024	{0x81, 0x1, 1},
13025	{0x82, 0xa, 0},
13026	{0x83, 0x9d, 0},
13027	{0x84, 0xa, 0},
13028	{0x85, 0, 0},
13029	{0x86, 0x40, 0},
13030	{0x87, 0x40, 0},
13031	{0x88, 0x88, 0},
13032	{0x89, 0x10, 0},
13033	{0x8A, 0xf0, 0},
13034	{0x8B, 0x10, 0},
13035	{0x8C, 0xf0, 0},
13036	{0x8D, 0, 0},
13037	{0x8E, 0, 0},
13038	{0x8F, 0x10, 0},
13039	{0x90, 0x55, 0},
13040	{0x91, 0x3f, 1},
13041	{0x92, 0x36, 1},
13042	{0x93, 0, 0},
13043	{0x94, 0, 0},
13044	{0x95, 0, 0},
13045	{0x96, 0x87, 0},
13046	{0x97, 0x11, 0},
13047	{0x98, 0, 0},
13048	{0x99, 0x33, 0},
13049	{0x9A, 0x88, 0},
13050	{0x9B, 0, 0},
13051	{0x9C, 0x87, 0},
13052	{0x9D, 0x11, 0},
13053	{0x9E, 0, 0},
13054	{0x9F, 0x33, 0},
13055	{0xA0, 0x88, 0},
13056	{0xA1, 0x20, 1},
13057	{0xA2, 0x3f, 0},
13058	{0xA3, 0x44, 0},
13059	{0xA4, 0x8c, 0},
13060	{0xA5, 0x6c, 0},
13061	{0xA6, 0x22, 0},
13062	{0xA7, 0xbe, 0},
13063	{0xA8, 0x55, 0},
13064	{0xAA, 0xc, 0},
13065	{0xAB, 0xaa, 0},
13066	{0xAC, 0x2, 0},
13067	{0xAD, 0, 0},
13068	{0xAE, 0x10, 0},
13069	{0xAF, 0x1, 0},
13070	{0xB0, 0, 0},
13071	{0xB1, 0, 0},
13072	{0xB2, 0x80, 0},
13073	{0xB3, 0x60, 0},
13074	{0xB4, 0x44, 0},
13075	{0xB5, 0x55, 0},
13076	{0xB6, 0x1, 0},
13077	{0xB7, 0x55, 0},
13078	{0xB8, 0x1, 0},
13079	{0xB9, 0x5, 0},
13080	{0xBA, 0x55, 0},
13081	{0xBB, 0x55, 0},
13082	{0xC1, 0, 0},
13083	{0xC2, 0, 0},
13084	{0xC3, 0, 0},
13085	{0xC4, 0, 0},
13086	{0xC5, 0, 0},
13087	{0xC6, 0, 0},
13088	{0xC7, 0, 0},
13089	{0xC8, 0, 0},
13090	{0xC9, 0x1, 1},
13091	{0xCA, 0, 0},
13092	{0xCB, 0, 0},
13093	{0xCC, 0, 0},
13094	{0xCD, 0, 0},
13095	{0xCE, 0x5e, 0},
13096	{0xCF, 0xc, 0},
13097	{0xD0, 0xc, 0},
13098	{0xD1, 0xc, 0},
13099	{0xD2, 0, 0},
13100	{0xD3, 0x2b, 0},
13101	{0xD4, 0xc, 0},
13102	{0xD5, 0, 0},
13103	{0xD6, 0x70, 1},
13104	{0xDB, 0x7, 0},
13105	{0xDC, 0, 0},
13106	{0xDD, 0, 0},
13107	{0xDE, 0x88, 1},
13108	{0xDF, 0, 0},
13109	{0xE0, 0x1f, 0},
13110	{0xE1, 0x20, 1},
13111	{0xE2, 0x1, 0},
13112	{0xE3, 0x30, 0},
13113	{0xE4, 0x70, 0},
13114	{0xE5, 0, 0},
13115	{0xE6, 0, 0},
13116	{0xE7, 0x33, 0},
13117	{0xE8, 0xf, 1},
13118	{0xE9, 0xf, 1},
13119	{0xEA, 0, 0},
13120	{0xEB, 0x11, 0},
13121	{0xEE, 0, 0},
13122	{0xEF, 0x7e, 0},
13123	{0xF0, 0x3f, 0},
13124	{0xF1, 0x7f, 0},
13125	{0xF2, 0x78, 0},
13126	{0xF3, 0x58, 1},
13127	{0xF4, 0x88, 0},
13128	{0xF5, 0x8, 0},
13129	{0xF6, 0xf, 0},
13130	{0xF7, 0xbc, 0},
13131	{0xF8, 0x8, 0},
13132	{0xF9, 0x60, 0},
13133	{0xFA, 0x13, 1},
13134	{0xFB, 0x70, 0},
13135	{0xFC, 0, 0},
13136	{0xFD, 0, 0},
13137	{0xFE, 0, 0},
13138	{0xFF, 0x33, 0},
13139	{0x100, 0x13, 1},
13140	{0x101, 0xf, 1},
13141	{0x102, 0xee, 1},
13142	{0x105, 0x3c, 0},
13143	{0x106, 0x1, 1},
13144	{0x107, 0xa, 0},
13145	{0x108, 0x9d, 0},
13146	{0x109, 0xa, 0},
13147	{0x10A, 0, 0},
13148	{0x10B, 0x40, 0},
13149	{0x10C, 0x40, 0},
13150	{0x10D, 0x88, 0},
13151	{0x10E, 0x10, 0},
13152	{0x10F, 0xf0, 0},
13153	{0x110, 0x10, 0},
13154	{0x111, 0xf0, 0},
13155	{0x112, 0, 0},
13156	{0x113, 0, 0},
13157	{0x114, 0x10, 0},
13158	{0x115, 0x55, 0},
13159	{0x116, 0x3f, 1},
13160	{0x117, 0x36, 1},
13161	{0x118, 0, 0},
13162	{0x119, 0, 0},
13163	{0x11A, 0, 0},
13164	{0x11B, 0x87, 0},
13165	{0x11C, 0x11, 0},
13166	{0x11D, 0, 0},
13167	{0x11E, 0x33, 0},
13168	{0x11F, 0x88, 0},
13169	{0x120, 0, 0},
13170	{0x121, 0x87, 0},
13171	{0x122, 0x11, 0},
13172	{0x123, 0, 0},
13173	{0x124, 0x33, 0},
13174	{0x125, 0x88, 0},
13175	{0x126, 0x20, 1},
13176	{0x127, 0x3f, 0},
13177	{0x128, 0x44, 0},
13178	{0x129, 0x8c, 0},
13179	{0x12A, 0x6c, 0},
13180	{0x12B, 0x22, 0},
13181	{0x12C, 0xbe, 0},
13182	{0x12D, 0x55, 0},
13183	{0x12F, 0xc, 0},
13184	{0x130, 0xaa, 0},
13185	{0x131, 0x2, 0},
13186	{0x132, 0, 0},
13187	{0x133, 0x10, 0},
13188	{0x134, 0x1, 0},
13189	{0x135, 0, 0},
13190	{0x136, 0, 0},
13191	{0x137, 0x80, 0},
13192	{0x138, 0x60, 0},
13193	{0x139, 0x44, 0},
13194	{0x13A, 0x55, 0},
13195	{0x13B, 0x1, 0},
13196	{0x13C, 0x55, 0},
13197	{0x13D, 0x1, 0},
13198	{0x13E, 0x5, 0},
13199	{0x13F, 0x55, 0},
13200	{0x140, 0x55, 0},
13201	{0x146, 0, 0},
13202	{0x147, 0, 0},
13203	{0x148, 0, 0},
13204	{0x149, 0, 0},
13205	{0x14A, 0, 0},
13206	{0x14B, 0, 0},
13207	{0x14C, 0, 0},
13208	{0x14D, 0, 0},
13209	{0x14E, 0x1, 1},
13210	{0x14F, 0, 0},
13211	{0x150, 0, 0},
13212	{0x151, 0, 0},
13213	{0x154, 0xc, 0},
13214	{0x155, 0xc, 0},
13215	{0x156, 0xc, 0},
13216	{0x157, 0, 0},
13217	{0x158, 0x2b, 0},
13218	{0x159, 0x84, 0},
13219	{0x15A, 0x15, 0},
13220	{0x15B, 0xf, 0},
13221	{0x15C, 0, 0},
13222	{0x15D, 0, 0},
13223	{0x15E, 0, 1},
13224	{0x15F, 0, 1},
13225	{0x160, 0, 1},
13226	{0x161, 0, 1},
13227	{0x162, 0, 1},
13228	{0x163, 0, 1},
13229	{0x164, 0, 0},
13230	{0x165, 0, 0},
13231	{0x166, 0, 0},
13232	{0x167, 0, 0},
13233	{0x168, 0, 0},
13234	{0x169, 0, 0},
13235	{0x16A, 0, 1},
13236	{0x16B, 0, 1},
13237	{0x16C, 0, 1},
13238	{0x16D, 0, 0},
13239	{0x170, 0, 0},
13240	{0x171, 0x77, 0},
13241	{0x172, 0x77, 0},
13242	{0x173, 0x77, 0},
13243	{0x174, 0x77, 0},
13244	{0x175, 0, 0},
13245	{0x176, 0x3, 0},
13246	{0x177, 0x37, 0},
13247	{0x178, 0x3, 0},
13248	{0x179, 0, 0},
13249	{0x17A, 0x21, 0},
13250	{0x17B, 0x21, 0},
13251	{0x17C, 0, 0},
13252	{0x17D, 0xaa, 0},
13253	{0x17E, 0, 0},
13254	{0x17F, 0xaa, 0},
13255	{0x180, 0, 0},
13256	{0x190, 0, 0},
13257	{0x191, 0x77, 0},
13258	{0x192, 0x77, 0},
13259	{0x193, 0x77, 0},
13260	{0x194, 0x77, 0},
13261	{0x195, 0, 0},
13262	{0x196, 0x3, 0},
13263	{0x197, 0x37, 0},
13264	{0x198, 0x3, 0},
13265	{0x199, 0, 0},
13266	{0x19A, 0x21, 0},
13267	{0x19B, 0x21, 0},
13268	{0x19C, 0, 0},
13269	{0x19D, 0xaa, 0},
13270	{0x19E, 0, 0},
13271	{0x19F, 0xaa, 0},
13272	{0x1A0, 0, 0},
13273	{0x1A1, 0x2, 0},
13274	{0x1A2, 0xf, 0},
13275	{0x1A3, 0xf, 0},
13276	{0x1A4, 0, 1},
13277	{0x1A5, 0, 1},
13278	{0x1A6, 0, 1},
13279	{0x1A7, 0x2, 0},
13280	{0x1A8, 0xf, 0},
13281	{0x1A9, 0xf, 0},
13282	{0x1AA, 0, 1},
13283	{0x1AB, 0, 1},
13284	{0x1AC, 0, 1},
13285	{0x1AD, 0x84, 0},
13286	{0x1AE, 0x60, 0},
13287	{0x1AF, 0x47, 0},
13288	{0x1B0, 0x47, 0},
13289	{0x1B1, 0, 0},
13290	{0x1B2, 0, 0},
13291	{0x1B3, 0, 0},
13292	{0x1B4, 0, 0},
13293	{0x1B5, 0, 0},
13294	{0x1B6, 0, 0},
13295	{0x1B7, 0x5, 1},
13296	{0x1B8, 0, 0},
13297	{0x1B9, 0, 0},
13298	{0x1BA, 0, 0},
13299	{0x1BB, 0, 0},
13300	{0x1BC, 0, 0},
13301	{0x1BD, 0, 0},
13302	{0x1BE, 0, 0},
13303	{0x1BF, 0, 0},
13304	{0x1C0, 0, 0},
13305	{0x1C1, 0, 0},
13306	{0x1C2, 0xa0, 1},
13307	{0x1C3, 0, 0},
13308	{0x1C4, 0, 0},
13309	{0x1C5, 0, 0},
13310	{0x1C6, 0, 0},
13311	{0x1C7, 0, 0},
13312	{0x1C8, 0, 0},
13313	{0x1C9, 0, 0},
13314	{0x1CA, 0, 0},
13315	{0xFFFF, 0, 0}
13316};
13317
13318static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13319
13320static s32 nphy_lnagain_est0[] = { -315, 40370 };
13321static s32 nphy_lnagain_est1[] = { -224, 23242 };
13322
13323static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13324	{
13325		{0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13326		{0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13327		{0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13328		{0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13329		{0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13330		{0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13331		{0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13332		{0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13333		{0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13334	},
13335	{
13336		{0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13337		{0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13338		{0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13339		{0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13340		{0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13341		{0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13342		{0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13343		{0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13344		{0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13345	}
13346};
13347
13348static const u32 nphy_tpc_txgain[] = {
13349	0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13350	0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13351	0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13352	0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13353	0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13354	0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13355	0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13356	0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13357	0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13358	0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13359	0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13360	0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13361	0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13362	0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13363	0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13364	0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13365	0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13366	0x03902942, 0x03902844, 0x03902842, 0x03902744,
13367	0x03902742, 0x03902644, 0x03902642, 0x03902544,
13368	0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13369	0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13370	0x03802842, 0x03802744, 0x03802742, 0x03802644,
13371	0x03802642, 0x03802544, 0x03802542, 0x03802444,
13372	0x03802442, 0x03802344, 0x03802342, 0x03802244,
13373	0x03802242, 0x03802144, 0x03802142, 0x03802044,
13374	0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13375	0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13376	0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13377	0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13378	0x03801842, 0x03801744, 0x03801742, 0x03801644,
13379	0x03801642, 0x03801544, 0x03801542, 0x03801444,
13380	0x03801442, 0x03801344, 0x03801342, 0x00002b00
13381};
13382
13383static const u16 nphy_tpc_loscale[] = {
13384	256, 256, 271, 271, 287, 256, 256, 271,
13385	271, 287, 287, 304, 304, 256, 256, 271,
13386	271, 287, 287, 304, 304, 322, 322, 341,
13387	341, 362, 362, 383, 383, 256, 256, 271,
13388	271, 287, 287, 304, 304, 322, 322, 256,
13389	256, 271, 271, 287, 287, 304, 304, 322,
13390	322, 341, 341, 362, 362, 256, 256, 271,
13391	271, 287, 287, 304, 304, 322, 322, 256,
13392	256, 271, 271, 287, 287, 304, 304, 322,
13393	322, 341, 341, 362, 362, 256, 256, 271,
13394	271, 287, 287, 304, 304, 322, 322, 341,
13395	341, 362, 362, 383, 383, 406, 406, 430,
13396	430, 455, 455, 482, 482, 511, 511, 541,
13397	541, 573, 573, 607, 607, 643, 643, 681,
13398	681, 722, 722, 764, 764, 810, 810, 858,
13399	858, 908, 908, 962, 962, 1019, 1019, 256
13400};
13401
13402static u32 nphy_tpc_txgain_ipa[] = {
13403	0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13404	0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13405	0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13406	0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13407	0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13408	0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13409	0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13410	0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13411	0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13412	0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13413	0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13414	0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13415	0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13416	0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13417	0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13418	0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13419	0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13420	0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13421	0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13422	0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13423	0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13424	0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13425	0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13426	0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13427	0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13428	0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13429	0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13430	0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13431	0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13432	0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13433	0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13434	0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13435};
13436
13437static u32 nphy_tpc_txgain_ipa_rev5[] = {
13438	0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13439	0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13440	0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13441	0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13442	0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13443	0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13444	0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13445	0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13446	0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13447	0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13448	0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13449	0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13450	0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13451	0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13452	0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13453	0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13454	0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13455	0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13456	0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13457	0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13458	0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13459	0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13460	0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13461	0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13462	0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13463	0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13464	0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13465	0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13466	0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13467	0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13468	0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13469	0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13470};
13471
13472static u32 nphy_tpc_txgain_ipa_rev6[] = {
13473	0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13474	0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13475	0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13476	0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13477	0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13478	0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13479	0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13480	0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13481	0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13482	0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13483	0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13484	0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13485	0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13486	0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13487	0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13488	0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13489	0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13490	0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13491	0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13492	0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13493	0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13494	0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13495	0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13496	0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13497	0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13498	0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13499	0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13500	0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13501	0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13502	0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13503	0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13504	0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13505};
13506
13507static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13508	0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13509	0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13510	0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13511	0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13512	0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13513	0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13514	0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13515	0x70470028, 0x70470026, 0x70470024, 0x70470022,
13516	0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13517	0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13518	0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13519	0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13520	0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13521	0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13522	0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13523	0x70170019, 0x70170018, 0x70170016, 0x70170015,
13524	0x70170014, 0x70170013, 0x70170012, 0x70170010,
13525	0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13526	0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13527	0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13528	0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13529	0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13530	0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13531	0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13532	0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13533	0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13534	0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13535	0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13536	0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13537	0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13538	0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13539	0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13540};
13541
13542static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13543	0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13544	0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13545	0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13546	0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13547	0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13548	0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13549	0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13550	0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13551	0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13552	0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13553	0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13554	0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13555	0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13556	0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13557	0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13558	0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13559	0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13560	0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13561	0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13562	0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13563	0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13564	0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13565	0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13566	0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13567	0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13568	0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13569	0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13570	0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13571	0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13572	0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13573	0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13574	0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13575};
13576
13577static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13578	0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13579	0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13580	0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13581	0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13582	0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13583	0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13584	0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13585	0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13586	0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13587	0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13588	0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13589	0x30170028, 0x30170026, 0x30170024, 0x30170022,
13590	0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13591	0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13592	0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13593	0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13594	0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13595	0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13596	0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13597	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13598	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13599	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13600	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13601	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13602	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13603	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13604	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13605	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13606	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13607	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13608	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13609	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13610};
13611
13612static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13613	0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13614	0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13615	0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13616	0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13617	0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13618	0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13619	0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13620	0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13621	0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13622	0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13623	0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13624	0x30170028, 0x30170026, 0x30170024, 0x30170022,
13625	0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13626	0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13627	0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13628	0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13629	0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13630	0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13631	0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13632	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13633	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13634	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13635	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13636	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13637	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13638	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13639	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13640	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13641	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13642	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13643	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13644	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13645};
13646
13647static u32 nphy_tpc_txgain_ipa_5g[] = {
13648	0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13649	0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13650	0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13651	0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13652	0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13653	0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13654	0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13655	0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13656	0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13657	0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13658	0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13659	0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13660	0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13661	0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13662	0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13663	0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13664	0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13665	0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13666	0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13667	0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13668	0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13669	0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13670	0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13671	0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13672	0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13673	0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13674	0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13675	0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13676	0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13677	0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13678	0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13679	0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13680};
13681
13682static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13683	0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13684	0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13685	0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13686	0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13687	0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13688	0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13689	0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13690	0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13691	0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13692	0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13693	0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13694	0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13695	0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13696	0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13697	0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13698	0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13699	0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13700	0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13701	0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13702	0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13703	0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13704	0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13705	0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13706	0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13707	0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13708	0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13709	0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13710	0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13711	0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13712	0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13713	0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13714	0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13715};
13716
13717static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13718	0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13719	0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13720	0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13721	0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13722	0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13723	0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13724	0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13725	0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13726	0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13727	0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13728	0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13729	0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13730	0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13731	0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13732	0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13733	0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13734	0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13735	0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13736	0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13737	0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13738	0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13739	0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13740	0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13741	0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13742	0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13743	0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13744	0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13745	0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13746	0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13747	0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13748	0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13749	0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13750};
13751
13752static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13753	-114, -108, -98, -91, -84, -78, -70, -62,
13754	-54, -46, -39, -31, -23, -15, -8, 0
13755};
13756
13757static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13758	-100, -95, -89, -83, -77, -70, -63, -56,
13759	-48, -41, -33, -25, -19, -12, -6, 0
13760};
13761
13762static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13763	-159, -113, -86, -72, -62, -54, -48, -43,
13764	-39, -35, -31, -28, -25, -23, -20, -18,
13765	-17, -15, -13, -11, -10, -8, -7, -6,
13766	-5, -4, -3, -3, -2, -1, -1, 0
13767};
13768
13769static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13770	-109, -109, -82, -68, -58, -50, -44, -39,
13771	-35, -31, -28, -26, -23, -21, -19, -17,
13772	-16, -14, -13, -11, -10, -9, -8, -7,
13773	-5, -5, -4, -3, -2, -1, -1, 0
13774};
13775
13776static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13777	-122, -122, -95, -80, -69, -61, -54, -49,
13778	-43, -39, -35, -32, -28, -26, -23, -21,
13779	-18, -16, -15, -13, -11, -10, -8, -7,
13780	-6, -5, -4, -3, -2, -1, -1, 0
13781};
13782
13783static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13784	-107, -101, -92, -85, -78, -71, -62, -55,
13785	-47, -39, -32, -24, -19, -12, -6, 0
13786};
13787
13788static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13789	-110, -104, -95, -88, -81, -74, -66, -58,
13790	-50, -44, -36, -28, -23, -15, -8, 0
13791};
13792
13793static u8 pad_gain_codes_used_2057rev5[] = {
13794	20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13795	10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13796};
13797
13798static u8 pad_gain_codes_used_2057rev7[] = {
13799	15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13800	5, 4, 3, 2, 1
13801};
13802
13803static u8 pad_all_gain_codes_2057[] = {
13804	31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13805	21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13806	11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13807	1, 0
13808};
13809
13810static u8 pga_all_gain_codes_2057[] = {
13811	15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13812};
13813
13814static u32 nphy_papd_scaltbl[] = {
13815	0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13816	0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13817	0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13818	0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13819	0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13820	0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13821	0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13822	0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13823	0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13824	0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13825	0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13826	0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13827	0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13828	0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13829	0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13830	0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13831};
13832
13833static u32 nphy_tpc_txgain_rev3[] = {
13834	0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13835	0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13836	0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13837	0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13838	0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13839	0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13840	0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13841	0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13842	0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13843	0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13844	0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13845	0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13846	0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13847	0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13848	0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13849	0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13850	0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13851	0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13852	0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13853	0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13854	0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13855	0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13856	0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13857	0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13858	0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13859	0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13860	0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13861	0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13862	0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13863	0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13864	0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13865	0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13866};
13867
13868static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13869	0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13870	0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13871	0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13872	0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13873	0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13874	0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13875	0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13876	0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13877	0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13878	0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13879	0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13880	0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13881	0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13882	0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13883	0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13884	0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13885	0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13886	0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13887	0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13888	0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13889	0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13890	0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13891	0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13892	0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13893	0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13894	0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13895	0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13896	0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13897	0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13898	0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13899	0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13900	0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13901};
13902
13903static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13904	0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13905	0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13906	0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13907	0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13908	0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13909	0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13910	0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13911	0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13912	0x80290031, 0x80210039, 0x80210036, 0x80210033,
13913	0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13914	0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13915	0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13916	0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13917	0x80110027, 0x80110024, 0x80110022, 0x80110020,
13918	0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13919	0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13920	0x80090029, 0x80090027, 0x80090025, 0x80090023,
13921	0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13922	0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13923	0x8009061d, 0x8009071d, 0x8009071d, 0x8009071d,
13924	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13925	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13926	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13927	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13928	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13929	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13930	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13931	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13932	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13933	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13934	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13935	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d
13936};
13937
13938static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13939	0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13940	0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13941	0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13942	0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13943	0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13944	0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13945	0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13946	0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13947	0x10290031, 0x10210039, 0x10210036, 0x10210033,
13948	0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13949	0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13950	0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13951	0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13952	0x10110027, 0x10110024, 0x10110022, 0x10110020,
13953	0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13954	0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13955	0x10090029, 0x10090027, 0x10090025, 0x10090023,
13956	0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13957	0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13958	0x10090015, 0x10090013, 0x10090012, 0x10090011,
13959	0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13960	0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13961	0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13962	0x10090008, 0x10090008, 0x10090007, 0x10090007,
13963	0x10090007, 0x10090006, 0x10090006, 0x10090005,
13964	0x10090005, 0x10090005, 0x10090005, 0x10090004,
13965	0x10090004, 0x10090004, 0x10090004, 0x10090003,
13966	0x10090003, 0x10090003, 0x10090003, 0x10090003,
13967	0x10090003, 0x10090002, 0x10090002, 0x10090002,
13968	0x10090002, 0x10090002, 0x10090002, 0x10090002,
13969	0x10090002, 0x10090002, 0x10090001, 0x10090001,
13970	0x10090001, 0x10090001, 0x10090001, 0x10090001
13971};
13972
13973static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13974	0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13975	0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13976	0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13977	0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13978	0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13979	0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13980	0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13981	0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13982	0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13983	0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13984	0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13985	0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13986	0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13987	0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13988	0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13989	0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13990	0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13991	0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13992	0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13993	0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13994	0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13995	0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13996	0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13997	0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13998	0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13999	0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
14000	0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
14001	0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
14002	0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
14003	0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
14004	0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
14005	0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
14006};
14007
14008static u32 nphy_tpc_5GHz_txgain_rev4[] = {
14009	0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
14010	0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
14011	0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
14012	0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
14013	0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
14014	0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
14015	0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
14016	0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
14017	0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
14018	0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
14019	0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
14020	0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
14021	0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
14022	0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
14023	0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
14024	0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
14025	0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
14026	0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
14027	0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
14028	0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
14029	0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
14030	0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
14031	0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
14032	0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
14033	0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
14034	0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
14035	0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14036	0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14037	0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14038	0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14039	0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14040	0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14041};
14042
14043static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14044	0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14045	0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14046	0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14047	0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14048	0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14049	0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14050	0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14051	0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14052	0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14053	0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14054	0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14055	0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14056	0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14057	0x09620039, 0x09620037, 0x09620035, 0x09620033,
14058	0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14059	0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14060	0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14061	0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14062	0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14063	0x06620039, 0x06620037, 0x06620035, 0x06620033,
14064	0x05620046, 0x05620044, 0x05620042, 0x05620040,
14065	0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14066	0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14067	0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14068	0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14069	0x03620038, 0x03620037, 0x03620035, 0x03620033,
14070	0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14071	0x02620046, 0x02620044, 0x02620043, 0x02620042,
14072	0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14073	0x01620043, 0x01620042, 0x01620041, 0x01620040,
14074	0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14075	0x0062003b, 0x00620039, 0x00620037, 0x00620035
14076};
14077
14078static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14079	0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14080	0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14081	0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14082	0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14083	0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14084	0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14085	0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14086	0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14087	0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14088	0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14089	0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14090	0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14091	0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14092	0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14093	0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14094	0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14095	0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14096	0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14097	0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14098	0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14099	0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14100	0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14101	0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14102	0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14103	0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14104	0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14105	0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14106	0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14107	0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14108	0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14109	0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14110	0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14111};
14112
14113static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14114static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14115static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14116	0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a
14117};
14118static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14119	0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16
14120};
14121
14122bool wlc_phy_bist_check_phy(struct brcms_phy_pub *pih)
14123{
14124	struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
14125	u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14126
14127	if (NREV_GE(pi->pubpi.phy_rev, 16))
14128		return true;
14129
14130	phybist0 = read_phy_reg(pi, 0x0e);
14131	phybist1 = read_phy_reg(pi, 0x0f);
14132	phybist2 = read_phy_reg(pi, 0xea);
14133	phybist3 = read_phy_reg(pi, 0xeb);
14134	phybist4 = read_phy_reg(pi, 0x156);
14135
14136	if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14137	    (phybist3 == 0) && (phybist4 == 0))
14138		return true;
14139
14140	return false;
14141}
14142
14143static void wlc_phy_bphy_init_nphy(struct brcms_phy *pi)
14144{
14145	u16 addr, val;
14146
14147	val = 0x1e1f;
14148	for (addr = (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT);
14149	     addr <= (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT_END); addr++) {
14150		write_phy_reg(pi, addr, val);
14151		if (addr == (NPHY_TO_BPHY_OFF + 0x97))
14152			val = 0x3e3f;
14153		else
14154			val -= 0x0202;
14155	}
14156
14157	write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_STEP, 0x668);
14158}
14159
14160void
14161wlc_phy_table_write_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14162			 u32 width, const void *data)
14163{
14164	struct phytbl_info tbl;
14165
14166	tbl.tbl_id = id;
14167	tbl.tbl_len = len;
14168	tbl.tbl_offset = offset;
14169	tbl.tbl_width = width;
14170	tbl.tbl_ptr = data;
14171	wlc_phy_write_table_nphy(pi, &tbl);
14172}
14173
14174void
14175wlc_phy_table_read_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14176			u32 width, void *data)
14177{
14178	struct phytbl_info tbl;
14179
14180	tbl.tbl_id = id;
14181	tbl.tbl_len = len;
14182	tbl.tbl_offset = offset;
14183	tbl.tbl_width = width;
14184	tbl.tbl_ptr = data;
14185	wlc_phy_read_table_nphy(pi, &tbl);
14186}
14187
14188static void
14189wlc_phy_static_table_download_nphy(struct brcms_phy *pi)
14190{
14191	uint idx;
14192
14193	if (NREV_GE(pi->pubpi.phy_rev, 16)) {
14194		for (idx = 0; idx < mimophytbl_info_sz_rev16; idx++)
14195			wlc_phy_write_table_nphy(pi,
14196						 &mimophytbl_info_rev16[idx]);
14197	} else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14198		for (idx = 0; idx < mimophytbl_info_sz_rev7; idx++)
14199			wlc_phy_write_table_nphy(pi,
14200						 &mimophytbl_info_rev7[idx]);
14201	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14202		for (idx = 0; idx < mimophytbl_info_sz_rev3; idx++)
14203			wlc_phy_write_table_nphy(pi,
14204						 &mimophytbl_info_rev3[idx]);
14205	} else {
14206		for (idx = 0; idx < mimophytbl_info_sz_rev0; idx++)
14207			wlc_phy_write_table_nphy(pi,
14208						 &mimophytbl_info_rev0[idx]);
14209	}
14210}
14211
14212static void wlc_phy_tbl_init_nphy(struct brcms_phy *pi)
14213{
14214	uint idx = 0;
14215	u8 antswctrllut;
14216
14217	if (pi->phy_init_por)
14218		wlc_phy_static_table_download_nphy(pi);
14219
14220	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14221
14222		antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14223			       pi->srom_fem2g.antswctrllut : pi->srom_fem5g.
14224			       antswctrllut;
14225
14226		switch (antswctrllut) {
14227		case 0:
14228
14229			break;
14230
14231		case 1:
14232
14233			if (pi->aa2g == 7)
14234				wlc_phy_table_write_nphy(
14235					pi,
14236					NPHY_TBL_ID_ANTSWCTRLLUT,
14237					2, 0x21, 8,
14238					&ant_sw_ctrl_tbl_rev8_2o3[0]);
14239			else
14240				wlc_phy_table_write_nphy(
14241					pi,
14242					NPHY_TBL_ID_ANTSWCTRLLUT,
14243					2, 0x21, 8,
14244					&ant_sw_ctrl_tbl_rev8
14245					[0]);
14246
14247			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14248						 2, 0x25, 8,
14249						 &ant_sw_ctrl_tbl_rev8[2]);
14250			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14251						 2, 0x29, 8,
14252						 &ant_sw_ctrl_tbl_rev8[4]);
14253			break;
14254
14255		case 2:
14256
14257			wlc_phy_table_write_nphy(
14258				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14259				2, 0x1, 8,
14260				&ant_sw_ctrl_tbl_rev8_2057v7_core0[0]);
14261			wlc_phy_table_write_nphy(
14262				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14263				2, 0x5, 8,
14264				&ant_sw_ctrl_tbl_rev8_2057v7_core0[2]);
14265			wlc_phy_table_write_nphy(
14266				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14267				2, 0x9, 8,
14268				&ant_sw_ctrl_tbl_rev8_2057v7_core0[4]);
14269
14270			wlc_phy_table_write_nphy(
14271				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14272				2, 0x21, 8,
14273				&ant_sw_ctrl_tbl_rev8_2057v7_core1[0]);
14274			wlc_phy_table_write_nphy(
14275				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14276				2, 0x25, 8,
14277				&ant_sw_ctrl_tbl_rev8_2057v7_core1[2]);
14278			wlc_phy_table_write_nphy(
14279				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14280				2, 0x29, 8,
14281				&ant_sw_ctrl_tbl_rev8_2057v7_core1[4]);
14282			break;
14283
14284		default:
14285			break;
14286		}
14287
14288	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14289		for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14290
14291			if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14292				antswctrllut =
14293					CHSPEC_IS2G(pi->radio_chanspec) ?
14294					pi->srom_fem2g.antswctrllut :
14295					pi->srom_fem5g.antswctrllut;
14296				switch (antswctrllut) {
14297				case 0:
14298					wlc_phy_write_table_nphy(
14299						pi,
14300						&mimophytbl_info_rev3_volatile
14301						[idx]);
14302					break;
14303				case 1:
14304					wlc_phy_write_table_nphy(
14305						pi,
14306						&mimophytbl_info_rev3_volatile1
14307						[idx]);
14308					break;
14309				case 2:
14310					wlc_phy_write_table_nphy(
14311						pi,
14312						&mimophytbl_info_rev3_volatile2
14313						[idx]);
14314					break;
14315				case 3:
14316					wlc_phy_write_table_nphy(
14317						pi,
14318						&mimophytbl_info_rev3_volatile3
14319						[idx]);
14320					break;
14321				default:
14322					break;
14323				}
14324			} else {
14325				wlc_phy_write_table_nphy(
14326					pi,
14327					&mimophytbl_info_rev3_volatile[idx]);
14328			}
14329		}
14330	} else {
14331		for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++)
14332			wlc_phy_write_table_nphy(pi,
14333						 &mimophytbl_info_rev0_volatile
14334						 [idx]);
14335	}
14336}
14337
14338static void
14339wlc_phy_write_txmacreg_nphy(struct brcms_phy *pi, u16 holdoff, u16 delay)
14340{
14341	write_phy_reg(pi, 0x77, holdoff);
14342	write_phy_reg(pi, 0xb4, delay);
14343}
14344
14345void wlc_phy_nphy_tkip_rifs_war(struct brcms_phy *pi, u8 rifs)
14346{
14347	u16 holdoff, delay;
14348
14349	if (rifs) {
14350
14351		holdoff = 0x10;
14352		delay = 0x258;
14353	} else {
14354
14355		holdoff = 0x15;
14356		delay = 0x320;
14357	}
14358
14359	wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14360
14361	if (pi->sh && (pi->sh->_rifs_phy != rifs))
14362		pi->sh->_rifs_phy = rifs;
14363}
14364
14365static void wlc_phy_txpwrctrl_config_nphy(struct brcms_phy *pi)
14366{
14367
14368	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14369		pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14370		pi->phy_5g_pwrgain = true;
14371		return;
14372	}
14373
14374	pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14375	pi->phy_5g_pwrgain = false;
14376
14377	if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14378	    NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14379		pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14380	else if ((pi->sh->sromrev >= 4)
14381		 && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14382		pi->phy_5g_pwrgain = true;
14383}
14384
14385static void wlc_phy_txpwr_srom_read_ppr_nphy(struct brcms_phy *pi)
14386{
14387	u16 bw40po, cddpo, stbcpo, bwduppo;
14388	uint band_num;
14389	struct ssb_sprom *sprom = &pi->d11core->bus->sprom;
14390
14391	if (pi->sh->sromrev >= 9)
14392		return;
14393
14394	bw40po = sprom->bw40po;
14395	pi->bw402gpo = bw40po & 0xf;
14396	pi->bw405gpo = (bw40po & 0xf0) >> 4;
14397	pi->bw405glpo = (bw40po & 0xf00) >> 8;
14398	pi->bw405ghpo = (bw40po & 0xf000) >> 12;
14399
14400	cddpo = sprom->cddpo;
14401	pi->cdd2gpo = cddpo & 0xf;
14402	pi->cdd5gpo = (cddpo & 0xf0) >> 4;
14403	pi->cdd5glpo = (cddpo & 0xf00) >> 8;
14404	pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
14405
14406	stbcpo = sprom->stbcpo;
14407	pi->stbc2gpo = stbcpo & 0xf;
14408	pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
14409	pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
14410	pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
14411
14412	bwduppo = sprom->bwduppo;
14413	pi->bwdup2gpo = bwduppo & 0xf;
14414	pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
14415	pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
14416	pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
14417
14418	for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
14419	     band_num++) {
14420		switch (band_num) {
14421		case 0:
14422			pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
14423				sprom->core_pwr_info[0].maxpwr_2g;
14424			pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
14425				sprom->core_pwr_info[1].maxpwr_2g;
14426			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
14427				sprom->core_pwr_info[0].pa_2g[0];
14428			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
14429				sprom->core_pwr_info[1].pa_2g[0];
14430			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
14431				sprom->core_pwr_info[0].pa_2g[1];
14432			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
14433				sprom->core_pwr_info[1].pa_2g[1];
14434			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
14435				sprom->core_pwr_info[0].pa_2g[2];
14436			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
14437				sprom->core_pwr_info[1].pa_2g[2];
14438			pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
14439				sprom->core_pwr_info[0].itssi_2g;
14440			pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
14441				sprom->core_pwr_info[1].itssi_2g;
14442
14443			pi->cck2gpo = sprom->cck2gpo;
14444
14445			pi->ofdm2gpo = sprom->ofdm2gpo;
14446
14447			pi->mcs2gpo[0] = sprom->mcs2gpo[0];
14448			pi->mcs2gpo[1] = sprom->mcs2gpo[1];
14449			pi->mcs2gpo[2] = sprom->mcs2gpo[2];
14450			pi->mcs2gpo[3] = sprom->mcs2gpo[3];
14451			pi->mcs2gpo[4] = sprom->mcs2gpo[4];
14452			pi->mcs2gpo[5] = sprom->mcs2gpo[5];
14453			pi->mcs2gpo[6] = sprom->mcs2gpo[6];
14454			pi->mcs2gpo[7] = sprom->mcs2gpo[7];
14455			break;
14456		case 1:
14457
14458			pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
14459				sprom->core_pwr_info[0].maxpwr_5g;
14460			pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
14461				sprom->core_pwr_info[1].maxpwr_5g;
14462			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
14463				sprom->core_pwr_info[0].pa_5g[0];
14464			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
14465				sprom->core_pwr_info[1].pa_5g[0];
14466			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
14467				sprom->core_pwr_info[0].pa_5g[1];
14468			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
14469				sprom->core_pwr_info[1].pa_5g[1];
14470			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
14471				sprom->core_pwr_info[0].pa_5g[2];
14472			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
14473				sprom->core_pwr_info[1].pa_5g[2];
14474			pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
14475				sprom->core_pwr_info[0].itssi_5g;
14476			pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
14477				sprom->core_pwr_info[1].itssi_5g;
14478
14479			pi->ofdm5gpo = sprom->ofdm5gpo;
14480
14481			pi->mcs5gpo[0] = sprom->mcs5gpo[0];
14482			pi->mcs5gpo[1] = sprom->mcs5gpo[1];
14483			pi->mcs5gpo[2] = sprom->mcs5gpo[2];
14484			pi->mcs5gpo[3] = sprom->mcs5gpo[3];
14485			pi->mcs5gpo[4] = sprom->mcs5gpo[4];
14486			pi->mcs5gpo[5] = sprom->mcs5gpo[5];
14487			pi->mcs5gpo[6] = sprom->mcs5gpo[6];
14488			pi->mcs5gpo[7] = sprom->mcs5gpo[7];
14489			break;
14490		case 2:
14491
14492			pi->nphy_pwrctrl_info[0].max_pwr_5gl =
14493				sprom->core_pwr_info[0].maxpwr_5gl;
14494			pi->nphy_pwrctrl_info[1].max_pwr_5gl =
14495				sprom->core_pwr_info[1].maxpwr_5gl;
14496			pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
14497				sprom->core_pwr_info[0].pa_5gl[0];
14498			pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
14499				sprom->core_pwr_info[1].pa_5gl[0];
14500			pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
14501				sprom->core_pwr_info[0].pa_5gl[1];
14502			pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
14503				sprom->core_pwr_info[1].pa_5gl[1];
14504			pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
14505				sprom->core_pwr_info[0].pa_5gl[2];
14506			pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
14507				sprom->core_pwr_info[1].pa_5gl[2];
14508			pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
14509			pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
14510
14511			pi->ofdm5glpo = sprom->ofdm5glpo;
14512
14513			pi->mcs5glpo[0] = sprom->mcs5glpo[0];
14514			pi->mcs5glpo[1] = sprom->mcs5glpo[1];
14515			pi->mcs5glpo[2] = sprom->mcs5glpo[2];
14516			pi->mcs5glpo[3] = sprom->mcs5glpo[3];
14517			pi->mcs5glpo[4] = sprom->mcs5glpo[4];
14518			pi->mcs5glpo[5] = sprom->mcs5glpo[5];
14519			pi->mcs5glpo[6] = sprom->mcs5glpo[6];
14520			pi->mcs5glpo[7] = sprom->mcs5glpo[7];
14521			break;
14522		case 3:
14523
14524			pi->nphy_pwrctrl_info[0].max_pwr_5gh =
14525				sprom->core_pwr_info[0].maxpwr_5gh;
14526			pi->nphy_pwrctrl_info[1].max_pwr_5gh =
14527				sprom->core_pwr_info[1].maxpwr_5gh;
14528			pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
14529				sprom->core_pwr_info[0].pa_5gh[0];
14530			pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
14531				sprom->core_pwr_info[1].pa_5gh[0];
14532			pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
14533				sprom->core_pwr_info[0].pa_5gh[1];
14534			pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
14535				sprom->core_pwr_info[1].pa_5gh[1];
14536			pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
14537				sprom->core_pwr_info[0].pa_5gh[2];
14538			pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
14539				sprom->core_pwr_info[1].pa_5gh[2];
14540			pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
14541			pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
14542
14543			pi->ofdm5ghpo = sprom->ofdm5ghpo;
14544
14545			pi->mcs5ghpo[0] = sprom->mcs5ghpo[0];
14546			pi->mcs5ghpo[1] = sprom->mcs5ghpo[1];
14547			pi->mcs5ghpo[2] = sprom->mcs5ghpo[2];
14548			pi->mcs5ghpo[3] = sprom->mcs5ghpo[3];
14549			pi->mcs5ghpo[4] = sprom->mcs5ghpo[4];
14550			pi->mcs5ghpo[5] = sprom->mcs5ghpo[5];
14551			pi->mcs5ghpo[6] = sprom->mcs5ghpo[6];
14552			pi->mcs5ghpo[7] = sprom->mcs5ghpo[7];
14553			break;
14554		}
14555	}
14556
14557	wlc_phy_txpwr_apply_nphy(pi);
14558}
14559
14560static bool wlc_phy_txpwr_srom_read_nphy(struct brcms_phy *pi)
14561{
14562	struct ssb_sprom *sprom = &pi->d11core->bus->sprom;
14563
14564	pi->antswitch = sprom->antswitch;
14565	pi->aa2g = sprom->ant_available_bg;
14566	pi->aa5g = sprom->ant_available_a;
14567
14568	pi->srom_fem2g.tssipos = sprom->fem.ghz2.tssipos;
14569	pi->srom_fem2g.extpagain = sprom->fem.ghz2.extpa_gain;
14570	pi->srom_fem2g.pdetrange = sprom->fem.ghz2.pdet_range;
14571	pi->srom_fem2g.triso = sprom->fem.ghz2.tr_iso;
14572	pi->srom_fem2g.antswctrllut = sprom->fem.ghz2.antswlut;
14573
14574	pi->srom_fem5g.tssipos = sprom->fem.ghz5.tssipos;
14575	pi->srom_fem5g.extpagain = sprom->fem.ghz5.extpa_gain;
14576	pi->srom_fem5g.pdetrange = sprom->fem.ghz5.pdet_range;
14577	pi->srom_fem5g.triso = sprom->fem.ghz5.tr_iso;
14578	if (sprom->fem.ghz5.antswlut)
14579		pi->srom_fem5g.antswctrllut = sprom->fem.ghz5.antswlut;
14580	else
14581		pi->srom_fem5g.antswctrllut = sprom->fem.ghz2.antswlut;
14582
14583	wlc_phy_txpower_ipa_upd(pi);
14584
14585	pi->phy_txcore_disable_temp = sprom->tempthresh;
14586	if (pi->phy_txcore_disable_temp == 0)
14587		pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
14588
14589	pi->phy_tempsense_offset = sprom->tempoffset;
14590	if (pi->phy_tempsense_offset != 0) {
14591		if (pi->phy_tempsense_offset >
14592		    (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET))
14593			pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
14594		else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
14595						     NPHY_SROM_MINTEMPOFFSET))
14596			pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
14597		else
14598			pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
14599	}
14600
14601	pi->phy_txcore_enable_temp =
14602		pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
14603
14604	pi->phycal_tempdelta = sprom->phycal_tempdelta;
14605	if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA)
14606		pi->phycal_tempdelta = 0;
14607
14608	wlc_phy_txpwr_srom_read_ppr_nphy(pi);
14609
14610	return true;
14611}
14612
14613bool wlc_phy_attach_nphy(struct brcms_phy *pi)
14614{
14615	uint i;
14616
14617	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6))
14618		pi->phyhang_avoid = true;
14619
14620	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14621		pi->nphy_gband_spurwar_en = true;
14622		if (pi->sh->boardflags2 & BFL2_SPUR_WAR)
14623			pi->nphy_aband_spurwar_en = true;
14624	}
14625	if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14626		if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR)
14627			pi->nphy_gband_spurwar2_en = true;
14628	}
14629
14630	pi->n_preamble_override = AUTO;
14631	if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14632		pi->n_preamble_override = BRCMS_N_PREAMBLE_MIXEDMODE;
14633
14634	pi->nphy_txrx_chain = AUTO;
14635	pi->phy_scraminit = AUTO;
14636
14637	pi->nphy_rxcalparams = 0x010100B5;
14638
14639	pi->nphy_perical = PHY_PERICAL_MPHASE;
14640	pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14641	pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14642
14643	pi->nphy_gain_boost = true;
14644	pi->nphy_elna_gain_config = false;
14645	pi->radio_is_on = false;
14646
14647	for (i = 0; i < pi->pubpi.phy_corenum; i++)
14648		pi->nphy_txpwrindex[i].index = AUTO;
14649
14650	wlc_phy_txpwrctrl_config_nphy(pi);
14651	if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14652		pi->hwpwrctrl_capable = true;
14653
14654	pi->pi_fptr.init = wlc_phy_init_nphy;
14655	pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14656	pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14657	pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14658
14659	if (!wlc_phy_txpwr_srom_read_nphy(pi))
14660		return false;
14661
14662	return true;
14663}
14664
14665static s32 get_rf_pwr_offset(struct brcms_phy *pi, s16 pga_gn, s16 pad_gn)
14666{
14667	s32 rfpwr_offset = 0;
14668
14669	if (CHSPEC_IS2G(pi->radio_chanspec)) {
14670		if ((pi->pubpi.radiorev == 3) ||
14671		    (pi->pubpi.radiorev == 4) ||
14672		    (pi->pubpi.radiorev == 6))
14673			rfpwr_offset = (s16)
14674				       nphy_papd_padgain_dlt_2g_2057rev3n4
14675				       [pad_gn];
14676		else if (pi->pubpi.radiorev == 5)
14677			rfpwr_offset = (s16)
14678				       nphy_papd_padgain_dlt_2g_2057rev5
14679				       [pad_gn];
14680		else if ((pi->pubpi.radiorev == 7)
14681			 || (pi->pubpi.radiorev ==
14682			     8))
14683			rfpwr_offset = (s16)
14684				       nphy_papd_padgain_dlt_2g_2057rev7
14685				       [pad_gn];
14686	} else {
14687		if ((pi->pubpi.radiorev == 3) ||
14688		    (pi->pubpi.radiorev == 4) ||
14689		    (pi->pubpi.radiorev == 6))
14690			rfpwr_offset = (s16)
14691				       nphy_papd_pgagain_dlt_5g_2057
14692				       [pga_gn];
14693		else if ((pi->pubpi.radiorev == 7)
14694			 || (pi->pubpi.radiorev ==
14695			     8))
14696			rfpwr_offset = (s16)
14697				       nphy_papd_pgagain_dlt_5g_2057rev7
14698				       [pga_gn];
14699	}
14700	return rfpwr_offset;
14701}
14702
14703static void wlc_phy_update_mimoconfig_nphy(struct brcms_phy *pi, s32 preamble)
14704{
14705	bool gf_preamble = false;
14706	u16 val;
14707
14708	if (preamble == BRCMS_N_PREAMBLE_GF)
14709		gf_preamble = true;
14710
14711	val = read_phy_reg(pi, 0xed);
14712
14713	val |= RX_GF_MM_AUTO;
14714	val &= ~RX_GF_OR_MM;
14715	if (gf_preamble)
14716		val |= RX_GF_OR_MM;
14717
14718	write_phy_reg(pi, 0xed, val);
14719}
14720
14721static void wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
14722{
14723	int j, type;
14724	u16 addr_offset[] = { 0x186, 0x195, 0x2c5};
14725
14726	for (type = 0; type < 3; type++) {
14727		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14728			write_phy_reg(pi, addr_offset[type] + j,
14729				      NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
14730	}
14731
14732	if (pi->bw == WL_CHANSPEC_BW_40) {
14733		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14734			write_phy_reg(pi, 0x186 + j,
14735				      NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14736	} else {
14737		if (CHSPEC_IS5G(pi->radio_chanspec)) {
14738			for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14739				write_phy_reg(pi, 0x186 + j,
14740					NPHY_IPA_REV4_txdigi_filtcoeffs[5][j]);
14741		}
14742
14743		if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
14744			for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14745				write_phy_reg(pi, 0x2c5 + j,
14746					NPHY_IPA_REV4_txdigi_filtcoeffs[6][j]);
14747		}
14748	}
14749}
14750
14751static void wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy *pi)
14752{
14753	int j;
14754
14755	if (pi->bw == WL_CHANSPEC_BW_40) {
14756		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14757			write_phy_reg(pi, 0x195 + j,
14758				      NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
14759	} else {
14760		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14761			write_phy_reg(pi, 0x186 + j,
14762				      NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14763	}
14764}
14765
14766static void
14767wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, u8 *events, u8 *dlys,
14768		       u8 len)
14769{
14770	u32 t1_offset, t2_offset;
14771	u8 ctr;
14772	u8 end_event =
14773		NREV_GE(pi->pubpi.phy_rev,
14774			3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
14775	u8 end_dly = 1;
14776
14777	if (pi->phyhang_avoid)
14778		wlc_phy_stay_in_carriersearch_nphy(pi, true);
14779
14780	t1_offset = cmd << 4;
14781	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
14782				 events);
14783	t2_offset = t1_offset + 0x080;
14784	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
14785				 dlys);
14786
14787	for (ctr = len; ctr < 16; ctr++) {
14788		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14789					 t1_offset + ctr, 8, &end_event);
14790		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14791					 t2_offset + ctr, 8, &end_dly);
14792	}
14793
14794	if (pi->phyhang_avoid)
14795		wlc_phy_stay_in_carriersearch_nphy(pi, false);
14796}
14797
14798static u16 wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy *pi, u16 offset)
14799{
14800	u16 lpf_bw_ctl_val = 0;
14801	u16 rx2tx_lpf_rc_lut_offset = 0;
14802
14803	if (offset == 0) {
14804		if (CHSPEC_IS40(pi->radio_chanspec))
14805			rx2tx_lpf_rc_lut_offset = 0x159;
14806		else
14807			rx2tx_lpf_rc_lut_offset = 0x154;
14808	} else {
14809		rx2tx_lpf_rc_lut_offset = offset;
14810	}
14811	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14812				(u32) rx2tx_lpf_rc_lut_offset, 16,
14813				&lpf_bw_ctl_val);
14814
14815	lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
14816
14817	return lpf_bw_ctl_val;
14818}
14819
14820static void
14821wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy *pi, u16 field, u16 value,
14822				  u8 core_mask, u8 off, u8 override_id)
14823{
14824	u8 core_num;
14825	u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
14826	u8 val_shift = 0;
14827
14828	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14829		en_mask = field;
14830		for (core_num = 0; core_num < 2; core_num++) {
14831			if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
14832
14833				switch (field) {
14834				case (0x1 << 2):
14835					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14836					val_addr = (core_num == 0) ? 0x7a :
14837						   0x7d;
14838					val_mask = (0x1 << 1);
14839					val_shift = 1;
14840					break;
14841				case (0x1 << 3):
14842					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14843					val_addr = (core_num == 0) ? 0x7a :
14844						   0x7d;
14845					val_mask = (0x1 << 2);
14846					val_shift = 2;
14847					break;
14848				case (0x1 << 4):
14849					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14850					val_addr = (core_num == 0) ? 0x7a :
14851						   0x7d;
14852					val_mask = (0x1 << 4);
14853					val_shift = 4;
14854					break;
14855				case (0x1 << 5):
14856					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14857					val_addr = (core_num == 0) ? 0x7a :
14858						   0x7d;
14859					val_mask = (0x1 << 5);
14860					val_shift = 5;
14861					break;
14862				case (0x1 << 6):
14863					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14864					val_addr = (core_num == 0) ? 0x7a :
14865						   0x7d;
14866					val_mask = (0x1 << 6);
14867					val_shift = 6;
14868					break;
14869				case (0x1 << 7):
14870					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14871					val_addr = (core_num == 0) ? 0x7a :
14872						   0x7d;
14873					val_mask = (0x1 << 7);
14874					val_shift = 7;
14875					break;
14876				case (0x1 << 10):
14877					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14878					val_addr = (core_num == 0) ? 0xf8 :
14879						   0xfa;
14880					val_mask = (0x7 << 4);
14881					val_shift = 4;
14882					break;
14883				case (0x1 << 11):
14884					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14885					val_addr = (core_num == 0) ? 0x7b :
14886						   0x7e;
14887					val_mask = (0xffff << 0);
14888					val_shift = 0;
14889					break;
14890				case (0x1 << 12):
14891					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14892					val_addr = (core_num == 0) ? 0x7c :
14893						   0x7f;
14894					val_mask = (0xffff << 0);
14895					val_shift = 0;
14896					break;
14897				case (0x3 << 13):
14898					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14899					val_addr = (core_num == 0) ? 0x348 :
14900						   0x349;
14901					val_mask = (0xff << 0);
14902					val_shift = 0;
14903					break;
14904				case (0x1 << 13):
14905					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14906					val_addr = (core_num == 0) ? 0x348 :
14907						   0x349;
14908					val_mask = (0xf << 0);
14909					val_shift = 0;
14910					break;
14911				default:
14912					addr = 0xffff;
14913					break;
14914				}
14915			} else if (override_id ==
14916				   NPHY_REV7_RFCTRLOVERRIDE_ID1) {
14917
14918				switch (field) {
14919				case (0x1 << 1):
14920					en_addr = (core_num == 0) ? 0x342 :
14921						  0x343;
14922					val_addr = (core_num == 0) ? 0x340 :
14923						   0x341;
14924					val_mask = (0x1 << 1);
14925					val_shift = 1;
14926					break;
14927				case (0x1 << 3):
14928					en_addr = (core_num == 0) ? 0x342 :
14929						  0x343;
14930					val_addr = (core_num == 0) ? 0x340 :
14931						   0x341;
14932					val_mask = (0x1 << 3);
14933					val_shift = 3;
14934					break;
14935				case (0x1 << 5):
14936					en_addr = (core_num == 0) ? 0x342 :
14937						  0x343;
14938					val_addr = (core_num == 0) ? 0x340 :
14939						   0x341;
14940					val_mask = (0x1 << 5);
14941					val_shift = 5;
14942					break;
14943				case (0x1 << 4):
14944					en_addr = (core_num == 0) ? 0x342 :
14945						  0x343;
14946					val_addr = (core_num == 0) ? 0x340 :
14947						   0x341;
14948					val_mask = (0x1 << 4);
14949					val_shift = 4;
14950					break;
14951				case (0x1 << 2):
14952
14953					en_addr = (core_num == 0) ? 0x342 :
14954						  0x343;
14955					val_addr = (core_num == 0) ? 0x340 :
14956						   0x341;
14957					val_mask = (0x1 << 2);
14958					val_shift = 2;
14959					break;
14960				case (0x1 << 7):
14961
14962					en_addr = (core_num == 0) ? 0x342 :
14963						  0x343;
14964					val_addr = (core_num == 0) ? 0x340 :
14965						   0x341;
14966					val_mask = (0x7 << 8);
14967					val_shift = 8;
14968					break;
14969				case (0x1 << 11):
14970					en_addr = (core_num == 0) ? 0x342 :
14971						  0x343;
14972					val_addr = (core_num == 0) ? 0x340 :
14973						   0x341;
14974					val_mask = (0x1 << 14);
14975					val_shift = 14;
14976					break;
14977				case (0x1 << 10):
14978					en_addr = (core_num == 0) ? 0x342 :
14979						  0x343;
14980					val_addr = (core_num == 0) ? 0x340 :
14981						   0x341;
14982					val_mask = (0x1 << 13);
14983					val_shift = 13;
14984					break;
14985				case (0x1 << 9):
14986					en_addr = (core_num == 0) ? 0x342 :
14987						  0x343;
14988					val_addr = (core_num == 0) ? 0x340 :
14989						   0x341;
14990					val_mask = (0x1 << 12);
14991					val_shift = 12;
14992					break;
14993				case (0x1 << 8):
14994					en_addr = (core_num == 0) ? 0x342 :
14995						  0x343;
14996					val_addr = (core_num == 0) ? 0x340 :
14997						   0x341;
14998					val_mask = (0x1 << 11);
14999					val_shift = 11;
15000					break;
15001				case (0x1 << 6):
15002					en_addr = (core_num == 0) ? 0x342 :
15003						  0x343;
15004					val_addr = (core_num == 0) ? 0x340 :
15005						   0x341;
15006					val_mask = (0x1 << 6);
15007					val_shift = 6;
15008					break;
15009				case (0x1 << 0):
15010					en_addr = (core_num == 0) ? 0x342 :
15011						  0x343;
15012					val_addr = (core_num == 0) ? 0x340 :
15013						   0x341;
15014					val_mask = (0x1 << 0);
15015					val_shift = 0;
15016					break;
15017				default:
15018					addr = 0xffff;
15019					break;
15020				}
15021			} else if (override_id ==
15022				   NPHY_REV7_RFCTRLOVERRIDE_ID2) {
15023
15024				switch (field) {
15025				case (0x1 << 3):
15026					en_addr = (core_num == 0) ? 0x346 :
15027						  0x347;
15028					val_addr = (core_num == 0) ? 0x344 :
15029						   0x345;
15030					val_mask = (0x1 << 3);
15031					val_shift = 3;
15032					break;
15033				case (0x1 << 1):
15034					en_addr = (core_num == 0) ? 0x346 :
15035						  0x347;
15036					val_addr = (core_num == 0) ? 0x344 :
15037						   0x345;
15038					val_mask = (0x1 << 1);
15039					val_shift = 1;
15040					break;
15041				case (0x1 << 0):
15042					en_addr = (core_num == 0) ? 0x346 :
15043						  0x347;
15044					val_addr = (core_num == 0) ? 0x344 :
15045						   0x345;
15046					val_mask = (0x1 << 0);
15047					val_shift = 0;
15048					break;
15049				case (0x1 << 2):
15050					en_addr = (core_num == 0) ? 0x346 :
15051						  0x347;
15052					val_addr = (core_num == 0) ? 0x344 :
15053						   0x345;
15054					val_mask = (0x1 << 2);
15055					val_shift = 2;
15056					break;
15057				case (0x1 << 4):
15058					en_addr = (core_num == 0) ? 0x346 :
15059						  0x347;
15060					val_addr = (core_num == 0) ? 0x344 :
15061						   0x345;
15062					val_mask = (0x1 << 4);
15063					val_shift = 4;
15064					break;
15065				default:
15066					addr = 0xffff;
15067					break;
15068				}
15069			}
15070
15071			if (off) {
15072				and_phy_reg(pi, en_addr, ~en_mask);
15073				and_phy_reg(pi, val_addr, ~val_mask);
15074			} else {
15075
15076				if ((core_mask == 0)
15077				    || (core_mask & (1 << core_num))) {
15078					or_phy_reg(pi, en_addr, en_mask);
15079
15080					if (addr != 0xffff)
15081						mod_phy_reg(pi, val_addr,
15082							    val_mask,
15083							    (value <<
15084							     val_shift));
15085				}
15086			}
15087		}
15088	}
15089}
15090
15091static void wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy *pi)
15092{
15093	uint core;
15094	int ctr;
15095	s16 gain_delta[2];
15096	u8 curr_channel;
15097	u16 minmax_gain[2];
15098	u16 regval[4];
15099
15100	if (pi->phyhang_avoid)
15101		wlc_phy_stay_in_carriersearch_nphy(pi, true);
15102
15103	if (pi->nphy_gain_boost) {
15104		if ((CHSPEC_IS2G(pi->radio_chanspec))) {
15105
15106			gain_delta[0] = 6;
15107			gain_delta[1] = 6;
15108		} else {
15109
15110			curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
15111			gain_delta[0] =
15112				(s16)
15113				PHY_HW_ROUND(((nphy_lnagain_est0[0] *
15114					       curr_channel) +
15115					      nphy_lnagain_est0[1]), 13);
15116			gain_delta[1] =
15117				(s16)
15118				PHY_HW_ROUND(((nphy_lnagain_est1[0] *
15119					       curr_channel) +
15120					      nphy_lnagain_est1[1]), 13);
15121		}
15122	} else {
15123
15124		gain_delta[0] = 0;
15125		gain_delta[1] = 0;
15126	}
15127
15128	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
15129		if (pi->nphy_elna_gain_config) {
15130
15131			regval[0] = nphy_def_lnagains[2] + gain_delta[core];
15132			regval[1] = nphy_def_lnagains[3] + gain_delta[core];
15133			regval[2] = nphy_def_lnagains[3] + gain_delta[core];
15134			regval[3] = nphy_def_lnagains[3] + gain_delta[core];
15135		} else {
15136			for (ctr = 0; ctr < 4; ctr++)
15137				regval[ctr] =
15138					nphy_def_lnagains[ctr] +
15139					gain_delta[core];
15140		}
15141		wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
15142
15143		minmax_gain[core] =
15144			(u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
15145	}
15146
15147	mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
15148	mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
15149
15150	if (pi->phyhang_avoid)
15151		wlc_phy_stay_in_carriersearch_nphy(pi, false);
15152}
15153
15154static void
15155wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy *pi, u8 core)
15156{
15157	if (core == PHY_CORE_0) {
15158		write_phy_reg(pi, 0x38, 0x4);
15159		if (CHSPEC_IS2G(pi->radio_chanspec))
15160			write_phy_reg(pi, 0x37, 0x0060);
15161		else
15162			write_phy_reg(pi, 0x37, 0x1080);
15163	} else if (core == PHY_CORE_1) {
15164		write_phy_reg(pi, 0x2ae, 0x4);
15165		if (CHSPEC_IS2G(pi->radio_chanspec))
15166			write_phy_reg(pi, 0x2ad, 0x0060);
15167		else
15168			write_phy_reg(pi, 0x2ad, 0x1080);
15169	}
15170}
15171
15172static void wlc_phy_war_txchain_upd_nphy(struct brcms_phy *pi, u8 txchain)
15173{
15174	u8 txchain0, txchain1;
15175
15176	txchain0 = txchain & 0x1;
15177	txchain1 = (txchain & 0x2) >> 1;
15178	if (!txchain0)
15179		wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15180
15181	if (!txchain1)
15182		wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15183}
15184
15185static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy *pi)
15186{
15187	s8 lna1_gain_db[] = { 8, 13, 17, 22 };
15188	s8 lna2_gain_db[] = { -2, 7, 11, 15 };
15189	s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
15190	s8 tia_gainbits[] = {
15191		0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15192
15193	mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15194	mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15195
15196	mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15197
15198	mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
15199	mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
15200
15201	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
15202				 lna1_gain_db);
15203	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
15204				 lna1_gain_db);
15205
15206	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
15207				 lna2_gain_db);
15208	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
15209				 lna2_gain_db);
15210
15211	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15212				 tia_gain_db);
15213	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15214				 tia_gain_db);
15215
15216	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15217				 tia_gainbits);
15218	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15219				 tia_gainbits);
15220
15221	write_phy_reg(pi, 0x37, 0x74);
15222	write_phy_reg(pi, 0x2ad, 0x74);
15223	write_phy_reg(pi, 0x38, 0x18);
15224	write_phy_reg(pi, 0x2ae, 0x18);
15225
15226	write_phy_reg(pi, 0x2b, 0xe8);
15227	write_phy_reg(pi, 0x41, 0xe8);
15228
15229	if (CHSPEC_IS20(pi->radio_chanspec)) {
15230
15231		mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
15232		mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
15233	} else {
15234
15235		mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
15236		mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
15237	}
15238}
15239
15240static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
15241{
15242	u16 currband;
15243	s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
15244	s8 *lna1_gain_db = NULL;
15245	s8 *lna1_gain_db_2 = NULL;
15246	s8 *lna2_gain_db = NULL;
15247	s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
15248	s8 *tia_gain_db;
15249	s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
15250	s8 *tia_gainbits;
15251	u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
15252	u16 *rfseq_init_gain;
15253	u16 init_gaincode;
15254	u16 clip1hi_gaincode;
15255	u16 clip1md_gaincode = 0;
15256	u16 clip1md_gaincode_B;
15257	u16 clip1lo_gaincode;
15258	u16 clip1lo_gaincode_B;
15259	u8 crsminl_th = 0;
15260	u8 crsminu_th;
15261	u16 nbclip_th = 0;
15262	u8 w1clip_th;
15263	u16 freq;
15264	s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
15265	u8 chg_nbclip_th = 0;
15266
15267	mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15268	mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15269
15270	currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15271	if (currband == 0) {
15272
15273		lna1_gain_db = lna1G_gain_db_rev7;
15274
15275		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15276					 lna1_gain_db);
15277		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15278					 lna1_gain_db);
15279
15280		mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
15281
15282		if (CHSPEC_IS40(pi->radio_chanspec)) {
15283			mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
15284			mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
15285		}
15286
15287		mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15288
15289		if (CHSPEC_IS20(pi->radio_chanspec)) {
15290			mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
15291			mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
15292		}
15293	} else {
15294
15295		init_gaincode = 0x9e;
15296		clip1hi_gaincode = 0x9e;
15297		clip1md_gaincode_B = 0x24;
15298		clip1lo_gaincode = 0x8a;
15299		clip1lo_gaincode_B = 8;
15300		rfseq_init_gain = rfseqA_init_gain_rev7;
15301
15302		tia_gain_db = tiaA_gain_db_rev7;
15303		tia_gainbits = tiaA_gainbits_rev7;
15304
15305		freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
15306		if (CHSPEC_IS20(pi->radio_chanspec)) {
15307
15308			w1clip_th = 25;
15309			clip1md_gaincode = 0x82;
15310
15311			if ((freq <= 5080) || (freq == 5825)) {
15312
15313				s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
15314				s8 lna1A_gain_db_2_rev7[] = {
15315					11, 17, 22, 25};
15316				s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15317
15318				crsminu_th = 0x3e;
15319				lna1_gain_db = lna1A_gain_db_rev7;
15320				lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15321				lna2_gain_db = lna2A_gain_db_rev7;
15322			} else if ((freq >= 5500) && (freq <= 5700)) {
15323
15324				s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
15325				s8 lna1A_gain_db_2_rev7[] = {
15326					12, 18, 22, 26};
15327				s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
15328
15329				crsminu_th = 0x45;
15330				clip1md_gaincode_B = 0x14;
15331				nbclip_th = 0xff;
15332				chg_nbclip_th = 1;
15333				lna1_gain_db = lna1A_gain_db_rev7;
15334				lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15335				lna2_gain_db = lna2A_gain_db_rev7;
15336			} else {
15337
15338				s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
15339				s8 lna1A_gain_db_2_rev7[] = {
15340					12, 18, 22, 26};
15341				s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15342
15343				crsminu_th = 0x41;
15344				lna1_gain_db = lna1A_gain_db_rev7;
15345				lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15346				lna2_gain_db = lna2A_gain_db_rev7;
15347			}
15348
15349			if (freq <= 4920) {
15350				nvar_baseline_offset0 = 5;
15351				nvar_baseline_offset1 = 5;
15352			} else if ((freq > 4920) && (freq <= 5320)) {
15353				nvar_baseline_offset0 = 3;
15354				nvar_baseline_offset1 = 5;
15355			} else if ((freq > 5320) && (freq <= 5700)) {
15356				nvar_baseline_offset0 = 3;
15357				nvar_baseline_offset1 = 2;
15358			} else {
15359				nvar_baseline_offset0 = 4;
15360				nvar_baseline_offset1 = 0;
15361			}
15362		} else {
15363
15364			crsminu_th = 0x3a;
15365			crsminl_th = 0x3a;
15366			w1clip_th = 20;
15367
15368			if ((freq >= 4920) && (freq <= 5320)) {
15369				nvar_baseline_offset0 = 4;
15370				nvar_baseline_offset1 = 5;
15371			} else if ((freq > 5320) && (freq <= 5550)) {
15372				nvar_baseline_offset0 = 4;
15373				nvar_baseline_offset1 = 2;
15374			} else {
15375				nvar_baseline_offset0 = 5;
15376				nvar_baseline_offset1 = 3;
15377			}
15378		}
15379
15380		write_phy_reg(pi, 0x20, init_gaincode);
15381		write_phy_reg(pi, 0x2a7, init_gaincode);
15382
15383		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15384					 pi->pubpi.phy_corenum, 0x106, 16,
15385					 rfseq_init_gain);
15386
15387		write_phy_reg(pi, 0x22, clip1hi_gaincode);
15388		write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15389
15390		write_phy_reg(pi, 0x36, clip1md_gaincode_B);
15391		write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
15392
15393		write_phy_reg(pi, 0x37, clip1lo_gaincode);
15394		write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15395		write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
15396		write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
15397
15398		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15399					 tia_gain_db);
15400		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15401					 tia_gain_db);
15402
15403		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15404					 tia_gainbits);
15405		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15406					 tia_gainbits);
15407
15408		mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15409
15410		if (chg_nbclip_th == 1) {
15411			write_phy_reg(pi, 0x2b, nbclip_th);
15412			write_phy_reg(pi, 0x41, nbclip_th);
15413		}
15414
15415		mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
15416		mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
15417
15418		mod_phy_reg(pi, 0x2e4,
15419			    (0x3f << 0), (nvar_baseline_offset0 << 0));
15420
15421		mod_phy_reg(pi, 0x2e4,
15422			    (0x3f << 6), (nvar_baseline_offset1 << 6));
15423
15424		if (CHSPEC_IS20(pi->radio_chanspec)) {
15425
15426			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15427						 lna1_gain_db);
15428			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15429						 lna1_gain_db_2);
15430
15431			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15432						 8, lna2_gain_db);
15433			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15434						 8, lna2_gain_db);
15435
15436			write_phy_reg(pi, 0x24, clip1md_gaincode);
15437			write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15438		} else {
15439			mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15440		}
15441	}
15442}
15443
15444static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
15445{
15446	u16 w1th, hpf_code, currband;
15447	int ctr;
15448	u8 rfseq_updategainu_events[] = {
15449		NPHY_RFSEQ_CMD_RX_GAIN,
15450		NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15451		NPHY_RFSEQ_CMD_SET_HPF_BW
15452	};
15453	u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
15454	s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
15455	s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
15456	s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
15457	s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
15458	s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
15459	s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
15460	s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
15461	s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
15462	s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
15463	s8 *lna1_gain_db = NULL;
15464	s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
15465	s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
15466	s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
15467	s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
15468	s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
15469	s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
15470	s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
15471	s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
15472	s8 *lna2_gain_db = NULL;
15473	s8 tiaG_gain_db[] = {
15474		0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
15475	s8 tiaA_gain_db[] = {
15476		0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
15477	s8 tiaA_gain_db_rev4[] = {
15478		0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15479	s8 tiaA_gain_db_rev5[] = {
15480		0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15481	s8 tiaA_gain_db_rev6[] = {
15482		0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15483	s8 *tia_gain_db;
15484	s8 tiaG_gainbits[] = {
15485		0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15486	s8 tiaA_gainbits[] = {
15487		0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
15488	s8 tiaA_gainbits_rev4[] = {
15489		0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15490	s8 tiaA_gainbits_rev5[] = {
15491		0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15492	s8 tiaA_gainbits_rev6[] = {
15493		0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15494	s8 *tia_gainbits;
15495	s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
15496	s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
15497	u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
15498	u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
15499	u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
15500	u16 rfseqG_init_gain_rev5_elna[] = {
15501		0x013f, 0x013f, 0x013f, 0x013f };
15502	u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
15503	u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
15504	u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
15505	u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
15506	u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
15507	u16 rfseqA_init_gain_rev4_elna[] = {
15508		0x314f, 0x314f, 0x314f, 0x314f };
15509	u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
15510	u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
15511	u16 *rfseq_init_gain;
15512	u16 initG_gaincode = 0x627e;
15513	u16 initG_gaincode_rev4 = 0x527e;
15514	u16 initG_gaincode_rev5 = 0x427e;
15515	u16 initG_gaincode_rev5_elna = 0x027e;
15516	u16 initG_gaincode_rev6 = 0x527e;
15517	u16 initG_gaincode_rev6_224B0 = 0x427e;
15518	u16 initG_gaincode_rev6_elna = 0x127e;
15519	u16 initA_gaincode = 0x52de;
15520	u16 initA_gaincode_rev4 = 0x629e;
15521	u16 initA_gaincode_rev4_elna = 0x329e;
15522	u16 initA_gaincode_rev5 = 0x729e;
15523	u16 initA_gaincode_rev6 = 0x729e;
15524	u16 init_gaincode;
15525	u16 clip1hiG_gaincode = 0x107e;
15526	u16 clip1hiG_gaincode_rev4 = 0x007e;
15527	u16 clip1hiG_gaincode_rev5 = 0x1076;
15528	u16 clip1hiG_gaincode_rev6 = 0x007e;
15529	u16 clip1hiA_gaincode = 0x00de;
15530	u16 clip1hiA_gaincode_rev4 = 0x029e;
15531	u16 clip1hiA_gaincode_rev5 = 0x029e;
15532	u16 clip1hiA_gaincode_rev6 = 0x029e;
15533	u16 clip1hi_gaincode;
15534	u16 clip1mdG_gaincode = 0x0066;
15535	u16 clip1mdA_gaincode = 0x00ca;
15536	u16 clip1mdA_gaincode_rev4 = 0x1084;
15537	u16 clip1mdA_gaincode_rev5 = 0x2084;
15538	u16 clip1mdA_gaincode_rev6 = 0x2084;
15539	u16 clip1md_gaincode = 0;
15540	u16 clip1loG_gaincode = 0x0074;
15541	u16 clip1loG_gaincode_rev5[] = {
15542		0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
15543	};
15544	u16 clip1loG_gaincode_rev6[] = {
15545		0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
15546	};
15547	u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
15548	u16 clip1loA_gaincode = 0x00cc;
15549	u16 clip1loA_gaincode_rev4 = 0x0086;
15550	u16 clip1loA_gaincode_rev5 = 0x2086;
15551	u16 clip1loA_gaincode_rev6 = 0x2086;
15552	u16 clip1lo_gaincode;
15553	u8 crsminG_th = 0x18;
15554	u8 crsminG_th_rev5 = 0x18;
15555	u8 crsminG_th_rev6 = 0x18;
15556	u8 crsminA_th = 0x1e;
15557	u8 crsminA_th_rev4 = 0x24;
15558	u8 crsminA_th_rev5 = 0x24;
15559	u8 crsminA_th_rev6 = 0x24;
15560	u8 crsmin_th;
15561	u8 crsminlG_th = 0x18;
15562	u8 crsminlG_th_rev5 = 0x18;
15563	u8 crsminlG_th_rev6 = 0x18;
15564	u8 crsminlA_th = 0x1e;
15565	u8 crsminlA_th_rev4 = 0x24;
15566	u8 crsminlA_th_rev5 = 0x24;
15567	u8 crsminlA_th_rev6 = 0x24;
15568	u8 crsminl_th = 0;
15569	u8 crsminuG_th = 0x18;
15570	u8 crsminuG_th_rev5 = 0x18;
15571	u8 crsminuG_th_rev6 = 0x18;
15572	u8 crsminuA_th = 0x1e;
15573	u8 crsminuA_th_rev4 = 0x24;
15574	u8 crsminuA_th_rev5 = 0x24;
15575	u8 crsminuA_th_rev6 = 0x24;
15576	u8 crsminuA_th_rev6_224B0 = 0x2d;
15577	u8 crsminu_th;
15578	u16 nbclipG_th = 0x20d;
15579	u16 nbclipG_th_rev4 = 0x1a1;
15580	u16 nbclipG_th_rev5 = 0x1d0;
15581	u16 nbclipG_th_rev6 = 0x1d0;
15582	u16 nbclipA_th = 0x1a1;
15583	u16 nbclipA_th_rev4 = 0x107;
15584	u16 nbclipA_th_rev5 = 0x0a9;
15585	u16 nbclipA_th_rev6 = 0x0f0;
15586	u16 nbclip_th = 0;
15587	u8 w1clipG_th = 5;
15588	u8 w1clipG_th_rev5 = 9;
15589	u8 w1clipG_th_rev6 = 5;
15590	u8 w1clipA_th = 25, w1clip_th;
15591	u8 rssi_gain_default = 0x50;
15592	u8 rssiG_gain_rev6_224B0 = 0x50;
15593	u8 rssiA_gain_rev5 = 0x90;
15594	u8 rssiA_gain_rev6 = 0x90;
15595	u8 rssi_gain;
15596	u16 regval[21];
15597	u8 triso;
15598
15599	triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
15600		pi->srom_fem2g.triso;
15601
15602	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15603		if (pi->pubpi.radiorev == 5) {
15604			wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
15605		} else if (pi->pubpi.radiorev == 7) {
15606			wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15607
15608			mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
15609			mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
15610
15611		} else if ((pi->pubpi.radiorev == 3)
15612			   || (pi->pubpi.radiorev == 8)) {
15613			wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15614
15615			if (pi->pubpi.radiorev == 8) {
15616				mod_phy_reg(pi, 0x283,
15617					    (0xff << 0), (0x44 << 0));
15618				mod_phy_reg(pi, 0x280,
15619					    (0xff << 0), (0x44 << 0));
15620			}
15621		} else {
15622			wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15623		}
15624	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15625
15626		mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
15627
15628		mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15629		mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15630
15631		currband =
15632			read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15633		if (currband == 0) {
15634			if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15635				if (pi->pubpi.radiorev == 11) {
15636					lna1_gain_db = lna1G_gain_db_rev6_224B0;
15637					lna2_gain_db = lna2G_gain_db_rev6_224B0;
15638					rfseq_init_gain =
15639						rfseqG_init_gain_rev6_224B0;
15640					init_gaincode =
15641						initG_gaincode_rev6_224B0;
15642					clip1hi_gaincode =
15643						clip1hiG_gaincode_rev6;
15644					clip1lo_gaincode =
15645						clip1loG_gaincode_rev6_224B0;
15646					nbclip_th = nbclipG_th_rev6;
15647					w1clip_th = w1clipG_th_rev6;
15648					crsmin_th = crsminG_th_rev6;
15649					crsminl_th = crsminlG_th_rev6;
15650					crsminu_th = crsminuG_th_rev6;
15651					rssi_gain = rssiG_gain_rev6_224B0;
15652				} else {
15653					lna1_gain_db = lna1G_gain_db_rev6;
15654					lna2_gain_db = lna2G_gain_db_rev6;
15655					if (pi->sh->boardflags & BFL_EXTLNA) {
15656
15657						rfseq_init_gain =
15658						     rfseqG_init_gain_rev6_elna;
15659						init_gaincode =
15660						       initG_gaincode_rev6_elna;
15661					} else {
15662						rfseq_init_gain =
15663							rfseqG_init_gain_rev6;
15664						init_gaincode =
15665							initG_gaincode_rev6;
15666					}
15667					clip1hi_gaincode =
15668						clip1hiG_gaincode_rev6;
15669					switch (triso) {
15670					case 0:
15671						clip1lo_gaincode =
15672							clip1loG_gaincode_rev6
15673							[0];
15674						break;
15675					case 1:
15676						clip1lo_gaincode =
15677							clip1loG_gaincode_rev6
15678							[1];
15679						break;
15680					case 2:
15681						clip1lo_gaincode =
15682							clip1loG_gaincode_rev6
15683							[2];
15684						break;
15685					case 3:
15686					default:
15687
15688						clip1lo_gaincode =
15689							clip1loG_gaincode_rev6
15690							[3];
15691						break;
15692					case 4:
15693						clip1lo_gaincode =
15694							clip1loG_gaincode_rev6
15695							[4];
15696						break;
15697					case 5:
15698						clip1lo_gaincode =
15699							clip1loG_gaincode_rev6
15700							[5];
15701						break;
15702					case 6:
15703						clip1lo_gaincode =
15704							clip1loG_gaincode_rev6
15705							[6];
15706						break;
15707					case 7:
15708						clip1lo_gaincode =
15709							clip1loG_gaincode_rev6
15710							[7];
15711						break;
15712					}
15713					nbclip_th = nbclipG_th_rev6;
15714					w1clip_th = w1clipG_th_rev6;
15715					crsmin_th = crsminG_th_rev6;
15716					crsminl_th = crsminlG_th_rev6;
15717					crsminu_th = crsminuG_th_rev6;
15718					rssi_gain = rssi_gain_default;
15719				}
15720			} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15721				lna1_gain_db = lna1G_gain_db_rev5;
15722				lna2_gain_db = lna2G_gain_db_rev5;
15723				if (pi->sh->boardflags & BFL_EXTLNA) {
15724
15725					rfseq_init_gain =
15726						rfseqG_init_gain_rev5_elna;
15727					init_gaincode =
15728						initG_gaincode_rev5_elna;
15729				} else {
15730					rfseq_init_gain = rfseqG_init_gain_rev5;
15731					init_gaincode = initG_gaincode_rev5;
15732				}
15733				clip1hi_gaincode = clip1hiG_gaincode_rev5;
15734				switch (triso) {
15735				case 0:
15736					clip1lo_gaincode =
15737						clip1loG_gaincode_rev5[0];
15738					break;
15739				case 1:
15740					clip1lo_gaincode =
15741						clip1loG_gaincode_rev5[1];
15742					break;
15743				case 2:
15744					clip1lo_gaincode =
15745						clip1loG_gaincode_rev5[2];
15746					break;
15747				case 3:
15748
15749					clip1lo_gaincode =
15750						clip1loG_gaincode_rev5[3];
15751					break;
15752				case 4:
15753					clip1lo_gaincode =
15754						clip1loG_gaincode_rev5[4];
15755					break;
15756				case 5:
15757					clip1lo_gaincode =
15758						clip1loG_gaincode_rev5[5];
15759					break;
15760				case 6:
15761					clip1lo_gaincode =
15762						clip1loG_gaincode_rev5[6];
15763					break;
15764				case 7:
15765					clip1lo_gaincode =
15766						clip1loG_gaincode_rev5[7];
15767					break;
15768				default:
15769					clip1lo_gaincode =
15770						clip1loG_gaincode_rev5[3];
15771					break;
15772				}
15773				nbclip_th = nbclipG_th_rev5;
15774				w1clip_th = w1clipG_th_rev5;
15775				crsmin_th = crsminG_th_rev5;
15776				crsminl_th = crsminlG_th_rev5;
15777				crsminu_th = crsminuG_th_rev5;
15778				rssi_gain = rssi_gain_default;
15779			} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15780				lna1_gain_db = lna1G_gain_db_rev4;
15781				lna2_gain_db = lna2G_gain_db;
15782				rfseq_init_gain = rfseqG_init_gain_rev4;
15783				init_gaincode = initG_gaincode_rev4;
15784				clip1hi_gaincode = clip1hiG_gaincode_rev4;
15785				clip1lo_gaincode = clip1loG_gaincode;
15786				nbclip_th = nbclipG_th_rev4;
15787				w1clip_th = w1clipG_th;
15788				crsmin_th = crsminG_th;
15789				crsminl_th = crsminlG_th;
15790				crsminu_th = crsminuG_th;
15791				rssi_gain = rssi_gain_default;
15792			} else {
15793				lna1_gain_db = lna1G_gain_db;
15794				lna2_gain_db = lna2G_gain_db;
15795				rfseq_init_gain = rfseqG_init_gain;
15796				init_gaincode = initG_gaincode;
15797				clip1hi_gaincode = clip1hiG_gaincode;
15798				clip1lo_gaincode = clip1loG_gaincode;
15799				nbclip_th = nbclipG_th;
15800				w1clip_th = w1clipG_th;
15801				crsmin_th = crsminG_th;
15802				crsminl_th = crsminlG_th;
15803				crsminu_th = crsminuG_th;
15804				rssi_gain = rssi_gain_default;
15805			}
15806			tia_gain_db = tiaG_gain_db;
15807			tia_gainbits = tiaG_gainbits;
15808			clip1md_gaincode = clip1mdG_gaincode;
15809		} else {
15810			if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15811				lna1_gain_db = lna1A_gain_db_rev6;
15812				lna2_gain_db = lna2A_gain_db_rev6;
15813				tia_gain_db = tiaA_gain_db_rev6;
15814				tia_gainbits = tiaA_gainbits_rev6;
15815				rfseq_init_gain = rfseqA_init_gain_rev6;
15816				init_gaincode = initA_gaincode_rev6;
15817				clip1hi_gaincode = clip1hiA_gaincode_rev6;
15818				clip1md_gaincode = clip1mdA_gaincode_rev6;
15819				clip1lo_gaincode = clip1loA_gaincode_rev6;
15820				crsmin_th = crsminA_th_rev6;
15821				crsminl_th = crsminlA_th_rev6;
15822				if ((pi->pubpi.radiorev == 11) &&
15823				    (CHSPEC_IS40(pi->radio_chanspec) == 0))
15824					crsminu_th = crsminuA_th_rev6_224B0;
15825				else
15826					crsminu_th = crsminuA_th_rev6;
15827
15828				nbclip_th = nbclipA_th_rev6;
15829				rssi_gain = rssiA_gain_rev6;
15830			} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15831				lna1_gain_db = lna1A_gain_db_rev5;
15832				lna2_gain_db = lna2A_gain_db_rev5;
15833				tia_gain_db = tiaA_gain_db_rev5;
15834				tia_gainbits = tiaA_gainbits_rev5;
15835				rfseq_init_gain = rfseqA_init_gain_rev5;
15836				init_gaincode = initA_gaincode_rev5;
15837				clip1hi_gaincode = clip1hiA_gaincode_rev5;
15838				clip1md_gaincode = clip1mdA_gaincode_rev5;
15839				clip1lo_gaincode = clip1loA_gaincode_rev5;
15840				crsmin_th = crsminA_th_rev5;
15841				crsminl_th = crsminlA_th_rev5;
15842				crsminu_th = crsminuA_th_rev5;
15843				nbclip_th = nbclipA_th_rev5;
15844				rssi_gain = rssiA_gain_rev5;
15845			} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15846				lna1_gain_db = lna1A_gain_db_rev4;
15847				lna2_gain_db = lna2A_gain_db_rev4;
15848				tia_gain_db = tiaA_gain_db_rev4;
15849				tia_gainbits = tiaA_gainbits_rev4;
15850				if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
15851
15852					rfseq_init_gain =
15853						rfseqA_init_gain_rev4_elna;
15854					init_gaincode =
15855						initA_gaincode_rev4_elna;
15856				} else {
15857					rfseq_init_gain = rfseqA_init_gain_rev4;
15858					init_gaincode = initA_gaincode_rev4;
15859				}
15860				clip1hi_gaincode = clip1hiA_gaincode_rev4;
15861				clip1md_gaincode = clip1mdA_gaincode_rev4;
15862				clip1lo_gaincode = clip1loA_gaincode_rev4;
15863				crsmin_th = crsminA_th_rev4;
15864				crsminl_th = crsminlA_th_rev4;
15865				crsminu_th = crsminuA_th_rev4;
15866				nbclip_th = nbclipA_th_rev4;
15867				rssi_gain = rssi_gain_default;
15868			} else {
15869				lna1_gain_db = lna1A_gain_db;
15870				lna2_gain_db = lna2A_gain_db;
15871				tia_gain_db = tiaA_gain_db;
15872				tia_gainbits = tiaA_gainbits;
15873				rfseq_init_gain = rfseqA_init_gain;
15874				init_gaincode = initA_gaincode;
15875				clip1hi_gaincode = clip1hiA_gaincode;
15876				clip1md_gaincode = clip1mdA_gaincode;
15877				clip1lo_gaincode = clip1loA_gaincode;
15878				crsmin_th = crsminA_th;
15879				crsminl_th = crsminlA_th;
15880				crsminu_th = crsminuA_th;
15881				nbclip_th = nbclipA_th;
15882				rssi_gain = rssi_gain_default;
15883			}
15884			w1clip_th = w1clipA_th;
15885		}
15886
15887		write_radio_reg(pi,
15888				(RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15889				 RADIO_2056_RX0), 0x17);
15890		write_radio_reg(pi,
15891				(RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15892				 RADIO_2056_RX1), 0x17);
15893
15894		write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
15895				0xf0);
15896		write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
15897				0xf0);
15898
15899		write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
15900				0x0);
15901		write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
15902				0x0);
15903
15904		write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
15905				rssi_gain);
15906		write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
15907				rssi_gain);
15908
15909		write_radio_reg(pi,
15910				(RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15911				 RADIO_2056_RX0), 0x17);
15912		write_radio_reg(pi,
15913				(RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15914				 RADIO_2056_RX1), 0x17);
15915
15916		write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
15917				0xFF);
15918		write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
15919				0xFF);
15920
15921		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
15922					 8, lna1_gain_db);
15923		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
15924					 8, lna1_gain_db);
15925
15926		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15927					 8, lna2_gain_db);
15928		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15929					 8, lna2_gain_db);
15930
15931		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
15932					 8, tia_gain_db);
15933		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
15934					 8, tia_gain_db);
15935
15936		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
15937					 8, tia_gainbits);
15938		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
15939					 8, tia_gainbits);
15940
15941		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
15942					 8, &lpf_gain_db);
15943		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
15944					 8, &lpf_gain_db);
15945		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
15946					 8, &lpf_gainbits);
15947		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
15948					 8, &lpf_gainbits);
15949
15950		write_phy_reg(pi, 0x20, init_gaincode);
15951		write_phy_reg(pi, 0x2a7, init_gaincode);
15952
15953		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15954					 pi->pubpi.phy_corenum, 0x106, 16,
15955					 rfseq_init_gain);
15956
15957		write_phy_reg(pi, 0x22, clip1hi_gaincode);
15958		write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15959
15960		write_phy_reg(pi, 0x24, clip1md_gaincode);
15961		write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15962
15963		write_phy_reg(pi, 0x37, clip1lo_gaincode);
15964		write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15965
15966		mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
15967		mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15968		mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15969
15970		write_phy_reg(pi, 0x2b, nbclip_th);
15971		write_phy_reg(pi, 0x41, nbclip_th);
15972
15973		mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
15974		mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
15975
15976		write_phy_reg(pi, 0x150, 0x809c);
15977
15978	} else {
15979
15980		mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15981		mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15982
15983		write_phy_reg(pi, 0x2b, 0x84);
15984		write_phy_reg(pi, 0x41, 0x84);
15985
15986		if (CHSPEC_IS20(pi->radio_chanspec)) {
15987			write_phy_reg(pi, 0x6b, 0x2b);
15988			write_phy_reg(pi, 0x6c, 0x2b);
15989			write_phy_reg(pi, 0x6d, 0x9);
15990			write_phy_reg(pi, 0x6e, 0x9);
15991		}
15992
15993		w1th = NPHY_RSSICAL_W1_TARGET - 4;
15994		mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
15995		mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
15996
15997		if (CHSPEC_IS20(pi->radio_chanspec)) {
15998			mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
15999			mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
16000
16001			mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
16002			mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16003		}
16004
16005		write_phy_reg(pi, 0x150, 0x809c);
16006
16007		if (pi->nphy_gain_boost)
16008			if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16009			    (CHSPEC_IS40(pi->radio_chanspec)))
16010				hpf_code = 4;
16011			else
16012				hpf_code = 5;
16013		else if (CHSPEC_IS40(pi->radio_chanspec))
16014			hpf_code = 6;
16015		else
16016			hpf_code = 7;
16017
16018		mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16019		mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16020
16021		for (ctr = 0; ctr < 4; ctr++)
16022			regval[ctr] = (hpf_code << 8) | 0x7c;
16023		wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16024
16025		wlc_phy_adjust_lnagaintbl_nphy(pi);
16026
16027		if (pi->nphy_elna_gain_config) {
16028			regval[0] = 0;
16029			regval[1] = 1;
16030			regval[2] = 1;
16031			regval[3] = 1;
16032			wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16033			wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16034
16035			for (ctr = 0; ctr < 4; ctr++)
16036				regval[ctr] = (hpf_code << 8) | 0x74;
16037			wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16038		}
16039
16040		if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16041			for (ctr = 0; ctr < 21; ctr++)
16042				regval[ctr] = 3 * ctr;
16043			wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16044			wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16045
16046			for (ctr = 0; ctr < 21; ctr++)
16047				regval[ctr] = (u16) ctr;
16048			wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16049			wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16050		}
16051
16052		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16053				       rfseq_updategainu_events,
16054				       rfseq_updategainu_dlys,
16055				       sizeof(rfseq_updategainu_events) /
16056				       sizeof(rfseq_updategainu_events[0]));
16057
16058		mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16059
16060		if (CHSPEC_IS2G(pi->radio_chanspec))
16061			mod_phy_reg(pi,
16062				    (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16063				    0x7f, 0x4);
16064	}
16065}
16066
16067static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
16068{
16069	u8 rfseq_rx2tx_events[] = {
16070		NPHY_RFSEQ_CMD_NOP,
16071		NPHY_RFSEQ_CMD_RXG_FBW,
16072		NPHY_RFSEQ_CMD_TR_SWITCH,
16073		NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16074		NPHY_RFSEQ_CMD_RXPD_TXPD,
16075		NPHY_RFSEQ_CMD_TX_GAIN,
16076		NPHY_RFSEQ_CMD_EXT_PA
16077	};
16078	u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
16079	u8 rfseq_tx2rx_events[] = {
16080		NPHY_RFSEQ_CMD_NOP,
16081		NPHY_RFSEQ_CMD_EXT_PA,
16082		NPHY_RFSEQ_CMD_TX_GAIN,
16083		NPHY_RFSEQ_CMD_RXPD_TXPD,
16084		NPHY_RFSEQ_CMD_TR_SWITCH,
16085		NPHY_RFSEQ_CMD_RXG_FBW,
16086		NPHY_RFSEQ_CMD_CLR_HIQ_DIS
16087	};
16088	u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
16089	u8 rfseq_tx2rx_events_rev3[] = {
16090		NPHY_REV3_RFSEQ_CMD_EXT_PA,
16091		NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16092		NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16093		NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16094		NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16095		NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16096		NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16097		NPHY_REV3_RFSEQ_CMD_END
16098	};
16099	u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
16100	u8 rfseq_rx2tx_events_rev3[] = {
16101		NPHY_REV3_RFSEQ_CMD_NOP,
16102		NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16103		NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16104		NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16105		NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16106		NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16107		NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16108		NPHY_REV3_RFSEQ_CMD_EXT_PA,
16109		NPHY_REV3_RFSEQ_CMD_END
16110	};
16111	u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
16112
16113	u8 rfseq_rx2tx_events_rev3_ipa[] = {
16114		NPHY_REV3_RFSEQ_CMD_NOP,
16115		NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16116		NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16117		NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16118		NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16119		NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16120		NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16121		NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16122		NPHY_REV3_RFSEQ_CMD_END
16123	};
16124	u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16125	u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
16126
16127	s16 alpha0, alpha1, alpha2;
16128	s16 beta0, beta1, beta2;
16129	u32 leg_data_weights, ht_data_weights, nss1_data_weights,
16130	    stbc_data_weights;
16131	u8 chan_freq_range = 0;
16132	u16 dac_control = 0x0002;
16133	u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
16134	u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
16135	u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16136	u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16137	u16 *aux_adc_vmid;
16138	u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
16139	u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
16140	u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
16141	u16 *aux_adc_gain;
16142	u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
16143	u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
16144	s32 min_nvar_val = 0x18d;
16145	s32 min_nvar_offset_6mbps = 20;
16146	u8 pdetrange;
16147	u8 triso;
16148	u16 regval;
16149	u16 afectrl_adc_ctrl1_rev7 = 0x20;
16150	u16 afectrl_adc_ctrl2_rev7 = 0x0;
16151	u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
16152	u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
16153	u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
16154	u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
16155	u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16156	u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16157	u16 ipalvlshift_3p3_war_en = 0;
16158	u16 rccal_bcap_val, rccal_scap_val;
16159	u16 rccal_tx20_11b_bcap = 0;
16160	u16 rccal_tx20_11b_scap = 0;
16161	u16 rccal_tx20_11n_bcap = 0;
16162	u16 rccal_tx20_11n_scap = 0;
16163	u16 rccal_tx40_11n_bcap = 0;
16164	u16 rccal_tx40_11n_scap = 0;
16165	u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
16166	u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
16167	u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
16168	u16 tx_lpf_bw_ofdm_20mhz = 0;
16169	u16 tx_lpf_bw_ofdm_40mhz = 0;
16170	u16 tx_lpf_bw_11b = 0;
16171	u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
16172	u16 txgm_idac_bleed = 0;
16173	bool rccal_ovrd = false;
16174	u16 freq;
16175	int coreNum;
16176
16177	if (CHSPEC_IS5G(pi->radio_chanspec))
16178		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
16179	else
16180		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
16181
16182	if (pi->phyhang_avoid)
16183		wlc_phy_stay_in_carriersearch_nphy(pi, true);
16184
16185	or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
16186
16187	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
16188
16189		if (NREV_IS(pi->pubpi.phy_rev, 7)) {
16190			mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
16191
16192			mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
16193			mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
16194			mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
16195			mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
16196			mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
16197			mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
16198			mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
16199			mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
16200			mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
16201			mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
16202			mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
16203			mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
16204			mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
16205			mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
16206			mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
16207			mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
16208		}
16209
16210		if (NREV_LE(pi->pubpi.phy_rev, 8)) {
16211			write_phy_reg(pi, 0x23f, 0x1b0);
16212			write_phy_reg(pi, 0x240, 0x1b0);
16213		}
16214
16215		if (NREV_GE(pi->pubpi.phy_rev, 8))
16216			mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
16217
16218		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16219					 &dac_control);
16220		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16221					 &dac_control);
16222
16223		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16224					1, 0, 32, &leg_data_weights);
16225		leg_data_weights = leg_data_weights & 0xffffff;
16226		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16227					 1, 0, 32, &leg_data_weights);
16228
16229		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16230					 2, 0x15e, 16,
16231					 rfseq_rx2tx_dacbufpu_rev7);
16232		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
16233					 rfseq_rx2tx_dacbufpu_rev7);
16234
16235		if (PHY_IPA(pi))
16236			wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16237					       rfseq_rx2tx_events_rev3_ipa,
16238					       rfseq_rx2tx_dlys_rev3_ipa,
16239					       ARRAY_SIZE(rfseq_rx2tx_events_rev3_ipa));
16240
16241		mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
16242		mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
16243
16244		tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
16245		tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
16246		tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
16247
16248		if (PHY_IPA(pi)) {
16249
16250			if (((pi->pubpi.radiorev == 5)
16251			     && (CHSPEC_IS40(pi->radio_chanspec) == 1))
16252			    || (pi->pubpi.radiorev == 7)
16253			    || (pi->pubpi.radiorev == 8)) {
16254
16255				rccal_bcap_val =
16256					read_radio_reg(
16257						pi,
16258						RADIO_2057_RCCAL_BCAP_VAL);
16259				rccal_scap_val =
16260					read_radio_reg(
16261						pi,
16262						RADIO_2057_RCCAL_SCAP_VAL);
16263
16264				rccal_tx20_11b_bcap = rccal_bcap_val;
16265				rccal_tx20_11b_scap = rccal_scap_val;
16266
16267				if ((pi->pubpi.radiorev == 5) &&
16268				    (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
16269
16270					rccal_tx20_11n_bcap = rccal_bcap_val;
16271					rccal_tx20_11n_scap = rccal_scap_val;
16272					rccal_tx40_11n_bcap = 0xc;
16273					rccal_tx40_11n_scap = 0xc;
16274
16275					rccal_ovrd = true;
16276
16277				} else if ((pi->pubpi.radiorev == 7)
16278					   || (pi->pubpi.radiorev == 8)) {
16279
16280					tx_lpf_bw_ofdm_20mhz = 4;
16281					tx_lpf_bw_11b = 1;
16282
16283					if (CHSPEC_IS2G(pi->radio_chanspec)) {
16284						rccal_tx20_11n_bcap = 0xc;
16285						rccal_tx20_11n_scap = 0xc;
16286						rccal_tx40_11n_bcap = 0xa;
16287						rccal_tx40_11n_scap = 0xa;
16288					} else {
16289						rccal_tx20_11n_bcap = 0x14;
16290						rccal_tx20_11n_scap = 0x14;
16291						rccal_tx40_11n_bcap = 0xf;
16292						rccal_tx40_11n_scap = 0xf;
16293					}
16294
16295					rccal_ovrd = true;
16296				}
16297			}
16298
16299		} else {
16300
16301			if (pi->pubpi.radiorev == 5) {
16302
16303				tx_lpf_bw_ofdm_20mhz = 1;
16304				tx_lpf_bw_ofdm_40mhz = 3;
16305
16306				rccal_bcap_val =
16307					read_radio_reg(
16308						pi,
16309						RADIO_2057_RCCAL_BCAP_VAL);
16310				rccal_scap_val =
16311					read_radio_reg(
16312						pi,
16313						RADIO_2057_RCCAL_SCAP_VAL);
16314
16315				rccal_tx20_11b_bcap = rccal_bcap_val;
16316				rccal_tx20_11b_scap = rccal_scap_val;
16317
16318				rccal_tx20_11n_bcap = 0x13;
16319				rccal_tx20_11n_scap = 0x11;
16320				rccal_tx40_11n_bcap = 0x13;
16321				rccal_tx40_11n_scap = 0x11;
16322
16323				rccal_ovrd = true;
16324			}
16325		}
16326
16327		if (rccal_ovrd) {
16328
16329			rx2tx_lpf_rc_lut_tx20_11b =
16330				(rccal_tx20_11b_bcap << 8) |
16331				(rccal_tx20_11b_scap << 3) |
16332				tx_lpf_bw_11b;
16333			rx2tx_lpf_rc_lut_tx20_11n =
16334				(rccal_tx20_11n_bcap << 8) |
16335				(rccal_tx20_11n_scap << 3) |
16336				tx_lpf_bw_ofdm_20mhz;
16337			rx2tx_lpf_rc_lut_tx40_11n =
16338				(rccal_tx40_11n_bcap << 8) |
16339				(rccal_tx40_11n_scap << 3) |
16340				tx_lpf_bw_ofdm_40mhz;
16341
16342			for (coreNum = 0; coreNum <= 1; coreNum++) {
16343				wlc_phy_table_write_nphy(
16344					pi, NPHY_TBL_ID_RFSEQ,
16345					1,
16346					0x152 + coreNum * 0x10,
16347					16,
16348					&rx2tx_lpf_rc_lut_tx20_11b);
16349				wlc_phy_table_write_nphy(
16350					pi, NPHY_TBL_ID_RFSEQ,
16351					1,
16352					0x153 + coreNum * 0x10,
16353					16,
16354					&rx2tx_lpf_rc_lut_tx20_11n);
16355				wlc_phy_table_write_nphy(
16356					pi, NPHY_TBL_ID_RFSEQ,
16357					1,
16358					0x154 + coreNum * 0x10,
16359					16,
16360					&rx2tx_lpf_rc_lut_tx20_11n);
16361				wlc_phy_table_write_nphy(
16362					pi, NPHY_TBL_ID_RFSEQ,
16363					1,
16364					0x155 + coreNum * 0x10,
16365					16,
16366					&rx2tx_lpf_rc_lut_tx40_11n);
16367				wlc_phy_table_write_nphy(
16368					pi, NPHY_TBL_ID_RFSEQ,
16369					1,
16370					0x156 + coreNum * 0x10,
16371					16,
16372					&rx2tx_lpf_rc_lut_tx40_11n);
16373				wlc_phy_table_write_nphy(
16374					pi, NPHY_TBL_ID_RFSEQ,
16375					1,
16376					0x157 + coreNum * 0x10,
16377					16,
16378					&rx2tx_lpf_rc_lut_tx40_11n);
16379				wlc_phy_table_write_nphy(
16380					pi, NPHY_TBL_ID_RFSEQ,
16381					1,
16382					0x158 + coreNum * 0x10,
16383					16,
16384					&rx2tx_lpf_rc_lut_tx40_11n);
16385				wlc_phy_table_write_nphy(
16386					pi, NPHY_TBL_ID_RFSEQ,
16387					1,
16388					0x159 + coreNum * 0x10,
16389					16,
16390					&rx2tx_lpf_rc_lut_tx40_11n);
16391			}
16392
16393			wlc_phy_rfctrl_override_nphy_rev7(
16394				pi, (0x1 << 4),
16395				1, 0x3, 0,
16396				NPHY_REV7_RFCTRLOVERRIDE_ID2);
16397		}
16398
16399		write_phy_reg(pi, 0x32f, 0x3);
16400
16401		if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
16402			wlc_phy_rfctrl_override_nphy_rev7(
16403				pi, (0x1 << 2),
16404				1, 0x3, 0,
16405				NPHY_REV7_RFCTRLOVERRIDE_ID0);
16406
16407		if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
16408		    (pi->pubpi.radiorev == 6)) {
16409			if ((pi->sh->sromrev >= 8)
16410			    && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
16411				ipalvlshift_3p3_war_en = 1;
16412
16413			if (ipalvlshift_3p3_war_en) {
16414				write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG,
16415						0x5);
16416				write_radio_reg(pi, RADIO_2057_GPAIO_SEL1,
16417						0x30);
16418				write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
16419				or_radio_reg(pi,
16420					     RADIO_2057_RXTXBIAS_CONFIG_CORE0,
16421					     0x1);
16422				or_radio_reg(pi,
16423					     RADIO_2057_RXTXBIAS_CONFIG_CORE1,
16424					     0x1);
16425
16426				ipa2g_mainbias = 0x1f;
16427
16428				ipa2g_casconv = 0x6f;
16429
16430				ipa2g_biasfilt = 0xaa;
16431			} else {
16432
16433				ipa2g_mainbias = 0x2b;
16434
16435				ipa2g_casconv = 0x7f;
16436
16437				ipa2g_biasfilt = 0xee;
16438			}
16439
16440			if (CHSPEC_IS2G(pi->radio_chanspec)) {
16441				for (coreNum = 0; coreNum <= 1; coreNum++) {
16442					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16443							 coreNum, IPA2G_IMAIN,
16444							 ipa2g_mainbias);
16445					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16446							 coreNum, IPA2G_CASCONV,
16447							 ipa2g_casconv);
16448					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16449							 coreNum,
16450							 IPA2G_BIAS_FILTER,
16451							 ipa2g_biasfilt);
16452				}
16453			}
16454		}
16455
16456		if (PHY_IPA(pi)) {
16457			if (CHSPEC_IS2G(pi->radio_chanspec)) {
16458				if ((pi->pubpi.radiorev == 3)
16459				    || (pi->pubpi.radiorev == 4)
16460				    || (pi->pubpi.radiorev == 6))
16461					txgm_idac_bleed = 0x7f;
16462
16463				for (coreNum = 0; coreNum <= 1; coreNum++) {
16464					if (txgm_idac_bleed != 0)
16465						WRITE_RADIO_REG4(
16466							pi, RADIO_2057,
16467							CORE, coreNum,
16468							TXGM_IDAC_BLEED,
16469							txgm_idac_bleed);
16470				}
16471
16472				if (pi->pubpi.radiorev == 5) {
16473
16474					for (coreNum = 0; coreNum <= 1;
16475					     coreNum++) {
16476						WRITE_RADIO_REG4(pi, RADIO_2057,
16477								 CORE, coreNum,
16478								 IPA2G_CASCONV,
16479								 0x13);
16480						WRITE_RADIO_REG4(pi, RADIO_2057,
16481								 CORE, coreNum,
16482								 IPA2G_IMAIN,
16483								 0x1f);
16484						WRITE_RADIO_REG4(
16485							pi, RADIO_2057,
16486							CORE, coreNum,
16487							IPA2G_BIAS_FILTER,
16488							0xee);
16489						WRITE_RADIO_REG4(pi, RADIO_2057,
16490								 CORE, coreNum,
16491								 PAD2G_IDACS,
16492								 0x8a);
16493						WRITE_RADIO_REG4(
16494							pi, RADIO_2057,
16495							CORE, coreNum,
16496							PAD_BIAS_FILTER_BWS,
16497							0x3e);
16498					}
16499
16500				} else if ((pi->pubpi.radiorev == 7)
16501					   || (pi->pubpi.radiorev == 8)) {
16502
16503					if (CHSPEC_IS40(pi->radio_chanspec) ==
16504					    0) {
16505						WRITE_RADIO_REG4(pi, RADIO_2057,
16506								 CORE, 0,
16507								 IPA2G_IMAIN,
16508								 0x14);
16509						WRITE_RADIO_REG4(pi, RADIO_2057,
16510								 CORE, 1,
16511								 IPA2G_IMAIN,
16512								 0x12);
16513					} else {
16514						WRITE_RADIO_REG4(pi, RADIO_2057,
16515								 CORE, 0,
16516								 IPA2G_IMAIN,
16517								 0x16);
16518						WRITE_RADIO_REG4(pi, RADIO_2057,
16519								 CORE, 1,
16520								 IPA2G_IMAIN,
16521								 0x16);
16522					}
16523				}
16524
16525			} else {
16526				freq = CHAN5G_FREQ(CHSPEC_CHANNEL(
16527							pi->radio_chanspec));
16528				if (((freq >= 5180) && (freq <= 5230))
16529				    || ((freq >= 5745) && (freq <= 5805))) {
16530					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16531							 0, IPA5G_BIAS_FILTER,
16532							 0xff);
16533					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16534							 1, IPA5G_BIAS_FILTER,
16535							 0xff);
16536				}
16537			}
16538		} else {
16539
16540			if (pi->pubpi.radiorev != 5) {
16541				for (coreNum = 0; coreNum <= 1; coreNum++) {
16542					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16543							 coreNum,
16544							 TXMIX2G_TUNE_BOOST_PU,
16545							 0x61);
16546					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16547							 coreNum,
16548							 TXGM_IDAC_BLEED, 0x70);
16549				}
16550			}
16551		}
16552
16553		if (pi->pubpi.radiorev == 4) {
16554			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16555						 0x05, 16,
16556						 &afectrl_adc_ctrl1_rev7);
16557			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16558						 0x15, 16,
16559						 &afectrl_adc_ctrl1_rev7);
16560
16561			for (coreNum = 0; coreNum <= 1; coreNum++) {
16562				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16563						 AFE_VCM_CAL_MASTER, 0x0);
16564				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16565						 AFE_SET_VCM_I, 0x3f);
16566				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16567						 AFE_SET_VCM_Q, 0x3f);
16568			}
16569		} else {
16570			mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
16571			mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
16572			mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
16573			mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
16574
16575			mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
16576			mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
16577			mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
16578			mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
16579
16580			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16581						 0x05, 16,
16582						 &afectrl_adc_ctrl2_rev7);
16583			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16584						 0x15, 16,
16585						 &afectrl_adc_ctrl2_rev7);
16586
16587			mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
16588			mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
16589			mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
16590			mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
16591		}
16592
16593		write_phy_reg(pi, 0x6a, 0x2);
16594
16595		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
16596					 &min_nvar_offset_6mbps);
16597
16598		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
16599					 &rfseq_pktgn_lpf_hpc_rev7);
16600
16601		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
16602					 &rfseq_pktgn_lpf_h_hpc_rev7);
16603
16604		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
16605					 &rfseq_htpktgn_lpf_hpc_rev7);
16606
16607		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
16608					 &rfseq_cckpktgn_lpf_hpc_rev7);
16609
16610		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
16611					 &rfseq_tx2rx_lpf_h_hpc_rev7);
16612
16613		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
16614					 &rfseq_rx2tx_lpf_h_hpc_rev7);
16615
16616		if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16617			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16618						 32, &min_nvar_val);
16619			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16620						 127, 32, &min_nvar_val);
16621		} else {
16622			min_nvar_val = noise_var_tbl_rev7[3];
16623			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16624						 32, &min_nvar_val);
16625
16626			min_nvar_val = noise_var_tbl_rev7[127];
16627			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16628						 127, 32, &min_nvar_val);
16629		}
16630
16631		wlc_phy_workarounds_nphy_gainctrl(pi);
16632
16633		pdetrange =
16634			(CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16635			pdetrange : pi->srom_fem2g.pdetrange;
16636
16637		if (pdetrange == 0) {
16638			chan_freq_range =
16639				wlc_phy_get_chan_freq_range_nphy(pi, 0);
16640			if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16641				aux_adc_vmid_rev7_core0[3] = 0x70;
16642				aux_adc_vmid_rev7_core1[3] = 0x70;
16643				aux_adc_gain_rev7[3] = 2;
16644			} else {
16645				aux_adc_vmid_rev7_core0[3] = 0x80;
16646				aux_adc_vmid_rev7_core1[3] = 0x80;
16647				aux_adc_gain_rev7[3] = 3;
16648			}
16649		} else if (pdetrange == 1) {
16650			if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16651				aux_adc_vmid_rev7_core0[3] = 0x7c;
16652				aux_adc_vmid_rev7_core1[3] = 0x7c;
16653				aux_adc_gain_rev7[3] = 2;
16654			} else {
16655				aux_adc_vmid_rev7_core0[3] = 0x8c;
16656				aux_adc_vmid_rev7_core1[3] = 0x8c;
16657				aux_adc_gain_rev7[3] = 1;
16658			}
16659		} else if (pdetrange == 2) {
16660			if (pi->pubpi.radioid == BCM2057_ID) {
16661				if ((pi->pubpi.radiorev == 5)
16662				    || (pi->pubpi.radiorev == 7)
16663				    || (pi->pubpi.radiorev == 8)) {
16664					if (chan_freq_range ==
16665					    WL_CHAN_FREQ_RANGE_2G) {
16666						aux_adc_vmid_rev7_core0[3] =
16667							0x8c;
16668						aux_adc_vmid_rev7_core1[3] =
16669							0x8c;
16670						aux_adc_gain_rev7[3] = 0;
16671					} else {
16672						aux_adc_vmid_rev7_core0[3] =
16673							0x96;
16674						aux_adc_vmid_rev7_core1[3] =
16675							0x96;
16676						aux_adc_gain_rev7[3] = 0;
16677					}
16678				}
16679			}
16680
16681		} else if (pdetrange == 3) {
16682			if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
16683				aux_adc_vmid_rev7_core0[3] = 0x89;
16684				aux_adc_vmid_rev7_core1[3] = 0x89;
16685				aux_adc_gain_rev7[3] = 0;
16686			}
16687
16688		} else if (pdetrange == 5) {
16689
16690			if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16691				aux_adc_vmid_rev7_core0[3] = 0x80;
16692				aux_adc_vmid_rev7_core1[3] = 0x80;
16693				aux_adc_gain_rev7[3] = 3;
16694			} else {
16695				aux_adc_vmid_rev7_core0[3] = 0x70;
16696				aux_adc_vmid_rev7_core1[3] = 0x70;
16697				aux_adc_gain_rev7[3] = 2;
16698			}
16699		}
16700
16701		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
16702					 &aux_adc_vmid_rev7_core0);
16703		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
16704					 &aux_adc_vmid_rev7_core1);
16705		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
16706					 &aux_adc_gain_rev7);
16707		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
16708					 &aux_adc_gain_rev7);
16709
16710	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
16711
16712		write_phy_reg(pi, 0x23f, 0x1f8);
16713		write_phy_reg(pi, 0x240, 0x1f8);
16714
16715		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16716					1, 0, 32, &leg_data_weights);
16717		leg_data_weights = leg_data_weights & 0xffffff;
16718		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16719					 1, 0, 32, &leg_data_weights);
16720
16721		alpha0 = 293;
16722		alpha1 = 435;
16723		alpha2 = 261;
16724		beta0 = 366;
16725		beta1 = 205;
16726		beta2 = 32;
16727		write_phy_reg(pi, 0x145, alpha0);
16728		write_phy_reg(pi, 0x146, alpha1);
16729		write_phy_reg(pi, 0x147, alpha2);
16730		write_phy_reg(pi, 0x148, beta0);
16731		write_phy_reg(pi, 0x149, beta1);
16732		write_phy_reg(pi, 0x14a, beta2);
16733
16734		write_phy_reg(pi, 0x38, 0xC);
16735		write_phy_reg(pi, 0x2ae, 0xC);
16736
16737		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
16738				       rfseq_tx2rx_events_rev3,
16739				       rfseq_tx2rx_dlys_rev3,
16740				       ARRAY_SIZE(rfseq_tx2rx_events_rev3));
16741
16742		if (PHY_IPA(pi))
16743			wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16744					       rfseq_rx2tx_events_rev3_ipa,
16745					       rfseq_rx2tx_dlys_rev3_ipa,
16746					       ARRAY_SIZE(rfseq_rx2tx_events_rev3_ipa));
16747
16748		if ((pi->sh->hw_phyrxchain != 0x3) &&
16749		    (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
16750
16751			if (PHY_IPA(pi)) {
16752				rfseq_rx2tx_dlys_rev3[5] = 59;
16753				rfseq_rx2tx_dlys_rev3[6] = 1;
16754				rfseq_rx2tx_events_rev3[7] =
16755					NPHY_REV3_RFSEQ_CMD_END;
16756			}
16757
16758			wlc_phy_set_rfseq_nphy(
16759				pi, NPHY_RFSEQ_RX2TX,
16760				rfseq_rx2tx_events_rev3,
16761				rfseq_rx2tx_dlys_rev3,
16762				ARRAY_SIZE(rfseq_rx2tx_events_rev3));
16763		}
16764
16765		if (CHSPEC_IS2G(pi->radio_chanspec))
16766			write_phy_reg(pi, 0x6a, 0x2);
16767		else
16768			write_phy_reg(pi, 0x6a, 0x9c40);
16769
16770		mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
16771
16772		if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16773			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16774						 32, &min_nvar_val);
16775			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16776						 127, 32, &min_nvar_val);
16777		} else {
16778			min_nvar_val = noise_var_tbl_rev3[3];
16779			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16780						 32, &min_nvar_val);
16781
16782			min_nvar_val = noise_var_tbl_rev3[127];
16783			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16784						 127, 32, &min_nvar_val);
16785		}
16786
16787		wlc_phy_workarounds_nphy_gainctrl(pi);
16788
16789		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16790					 &dac_control);
16791		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16792					 &dac_control);
16793
16794		pdetrange =
16795			(CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16796			pdetrange : pi->srom_fem2g.pdetrange;
16797
16798		if (pdetrange == 0) {
16799			if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16800				aux_adc_vmid = aux_adc_vmid_rev4;
16801				aux_adc_gain = aux_adc_gain_rev4;
16802			} else {
16803				aux_adc_vmid = aux_adc_vmid_rev3;
16804				aux_adc_gain = aux_adc_gain_rev3;
16805			}
16806			chan_freq_range =
16807				wlc_phy_get_chan_freq_range_nphy(pi, 0);
16808			if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16809				switch (chan_freq_range) {
16810				case WL_CHAN_FREQ_RANGE_5GL:
16811					aux_adc_vmid[3] = 0x89;
16812					aux_adc_gain[3] = 0;
16813					break;
16814				case WL_CHAN_FREQ_RANGE_5GM:
16815					aux_adc_vmid[3] = 0x89;
16816					aux_adc_gain[3] = 0;
16817					break;
16818				case WL_CHAN_FREQ_RANGE_5GH:
16819					aux_adc_vmid[3] = 0x89;
16820					aux_adc_gain[3] = 0;
16821					break;
16822				default:
16823					break;
16824				}
16825			}
16826			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16827						 0x08, 16, aux_adc_vmid);
16828			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16829						 0x18, 16, aux_adc_vmid);
16830			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16831						 0x0c, 16, aux_adc_gain);
16832			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16833						 0x1c, 16, aux_adc_gain);
16834		} else if (pdetrange == 1) {
16835			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16836						 0x08, 16, sk_adc_vmid);
16837			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16838						 0x18, 16, sk_adc_vmid);
16839			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16840						 0x0c, 16, sk_adc_gain);
16841			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16842						 0x1c, 16, sk_adc_gain);
16843		} else if (pdetrange == 2) {
16844
16845			u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16846			u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16847
16848			if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16849				chan_freq_range =
16850					wlc_phy_get_chan_freq_range_nphy(pi, 0);
16851				if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16852					bcm_adc_vmid[3] = 0x8e;
16853					bcm_adc_gain[3] = 0x03;
16854				} else {
16855					bcm_adc_vmid[3] = 0x94;
16856					bcm_adc_gain[3] = 0x03;
16857				}
16858			} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16859				bcm_adc_vmid[3] = 0x84;
16860				bcm_adc_gain[3] = 0x02;
16861			}
16862
16863			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16864						 0x08, 16, bcm_adc_vmid);
16865			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16866						 0x18, 16, bcm_adc_vmid);
16867			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16868						 0x0c, 16, bcm_adc_gain);
16869			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16870						 0x1c, 16, bcm_adc_gain);
16871		} else if (pdetrange == 3) {
16872			chan_freq_range =
16873				wlc_phy_get_chan_freq_range_nphy(pi, 0);
16874			if ((NREV_GE(pi->pubpi.phy_rev, 4))
16875			    && (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16876
16877				u16 auxadc_vmid[] = {
16878					0xa2, 0xb4, 0xb4, 0x270
16879				};
16880				u16 auxadc_gain[] = {
16881					0x02, 0x02, 0x02, 0x00
16882				};
16883
16884				wlc_phy_table_write_nphy(pi,
16885							 NPHY_TBL_ID_AFECTRL, 4,
16886							 0x08, 16, auxadc_vmid);
16887				wlc_phy_table_write_nphy(pi,
16888							 NPHY_TBL_ID_AFECTRL, 4,
16889							 0x18, 16, auxadc_vmid);
16890				wlc_phy_table_write_nphy(pi,
16891							 NPHY_TBL_ID_AFECTRL, 4,
16892							 0x0c, 16, auxadc_gain);
16893				wlc_phy_table_write_nphy(pi,
16894							 NPHY_TBL_ID_AFECTRL, 4,
16895							 0x1c, 16, auxadc_gain);
16896			}
16897		} else if ((pdetrange == 4) || (pdetrange == 5)) {
16898			u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
16899			u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
16900			u16 Vmid[2], Av[2];
16901
16902			chan_freq_range =
16903				wlc_phy_get_chan_freq_range_nphy(pi, 0);
16904			if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16905				Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
16906				Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
16907				Av[0] = (pdetrange == 4) ? 2 : 0;
16908				Av[1] = (pdetrange == 4) ? 2 : 0;
16909			} else {
16910				Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
16911				Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
16912				Av[0] = (pdetrange == 4) ? 2 : 0;
16913				Av[1] = (pdetrange == 4) ? 2 : 0;
16914			}
16915
16916			bcm_adc_vmid[3] = Vmid[0];
16917			bcm_adc_gain[3] = Av[0];
16918			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16919						 0x08, 16, bcm_adc_vmid);
16920			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16921						 0x0c, 16, bcm_adc_gain);
16922
16923			bcm_adc_vmid[3] = Vmid[1];
16924			bcm_adc_gain[3] = Av[1];
16925			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16926						 0x18, 16, bcm_adc_vmid);
16927			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16928						 0x1c, 16, bcm_adc_gain);
16929		}
16930
16931		write_radio_reg(pi,
16932				(RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0),
16933				0x0);
16934		write_radio_reg(pi,
16935				(RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1),
16936				0x0);
16937
16938		write_radio_reg(pi,
16939				(RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0),
16940				0x6);
16941		write_radio_reg(pi,
16942				(RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1),
16943				0x6);
16944
16945		write_radio_reg(pi,
16946				(RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0),
16947				0x7);
16948		write_radio_reg(pi,
16949				(RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1),
16950				0x7);
16951
16952		write_radio_reg(pi,
16953				(RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0),
16954				0x88);
16955		write_radio_reg(pi,
16956				(RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1),
16957				0x88);
16958
16959		write_radio_reg(pi,
16960				(RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0),
16961				0x0);
16962		write_radio_reg(pi,
16963				(RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1),
16964				0x0);
16965
16966		write_radio_reg(pi,
16967				(RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0),
16968				0x0);
16969		write_radio_reg(pi,
16970				(RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1),
16971				0x0);
16972
16973		triso =
16974			(CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16975			triso : pi->srom_fem2g.triso;
16976		if (triso == 7) {
16977			wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
16978			wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
16979		}
16980
16981		wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
16982
16983		if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
16984		     (CHSPEC_IS5G(pi->radio_chanspec))) ||
16985		    (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
16986		      (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
16987		     (CHSPEC_IS2G(pi->radio_chanspec)))) {
16988			nss1_data_weights = 0x00088888;
16989			ht_data_weights = 0x00088888;
16990			stbc_data_weights = 0x00088888;
16991		} else {
16992			nss1_data_weights = 0x88888888;
16993			ht_data_weights = 0x88888888;
16994			stbc_data_weights = 0x88888888;
16995		}
16996		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16997					 1, 1, 32, &nss1_data_weights);
16998		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16999					 1, 2, 32, &ht_data_weights);
17000		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17001					 1, 3, 32, &stbc_data_weights);
17002
17003		if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17004			if (CHSPEC_IS5G(pi->radio_chanspec)) {
17005				write_radio_reg(pi,
17006						RADIO_2056_TX_GMBB_IDAC |
17007						RADIO_2056_TX0, 0x70);
17008				write_radio_reg(pi,
17009						RADIO_2056_TX_GMBB_IDAC |
17010						RADIO_2056_TX1, 0x70);
17011			}
17012		}
17013
17014		if (!pi->edcrs_threshold_lock) {
17015			write_phy_reg(pi, 0x224, 0x3eb);
17016			write_phy_reg(pi, 0x225, 0x3eb);
17017			write_phy_reg(pi, 0x226, 0x341);
17018			write_phy_reg(pi, 0x227, 0x341);
17019			write_phy_reg(pi, 0x228, 0x42b);
17020			write_phy_reg(pi, 0x229, 0x42b);
17021			write_phy_reg(pi, 0x22a, 0x381);
17022			write_phy_reg(pi, 0x22b, 0x381);
17023			write_phy_reg(pi, 0x22c, 0x42b);
17024			write_phy_reg(pi, 0x22d, 0x42b);
17025			write_phy_reg(pi, 0x22e, 0x381);
17026			write_phy_reg(pi, 0x22f, 0x381);
17027		}
17028
17029		if (NREV_GE(pi->pubpi.phy_rev, 6)) {
17030
17031			if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)
17032				wlapi_bmac_mhf(pi->sh->physhim, MHF4,
17033					      MHF4_BPHY_TXCORE0,
17034					      MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);
17035		}
17036	} else {
17037
17038		if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
17039		    (pi->sh->boardtype == 0x8b)) {
17040			uint i;
17041			u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
17042			for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
17043				rfseq_rx2tx_dlys[i] = war_dlys[i];
17044		}
17045
17046		if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
17047			and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
17048			and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
17049		} else {
17050			or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
17051			or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
17052		}
17053
17054		regval = 0x000a;
17055		wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
17056		wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
17057
17058		if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17059			regval = 0xcdaa;
17060			wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
17061			wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
17062		}
17063
17064		if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17065			regval = 0x0000;
17066			wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
17067			wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
17068
17069			regval = 0x7aab;
17070			wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
17071			wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
17072
17073			regval = 0x0800;
17074			wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
17075			wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
17076		}
17077
17078		write_phy_reg(pi, 0xf8, 0x02d8);
17079		write_phy_reg(pi, 0xf9, 0x0301);
17080		write_phy_reg(pi, 0xfa, 0x02d8);
17081		write_phy_reg(pi, 0xfb, 0x0301);
17082
17083		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
17084				       rfseq_rx2tx_dlys,
17085				       ARRAY_SIZE(rfseq_rx2tx_events));
17086
17087		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
17088				       rfseq_tx2rx_dlys,
17089				       ARRAY_SIZE(rfseq_tx2rx_events));
17090
17091		wlc_phy_workarounds_nphy_gainctrl(pi);
17092
17093		if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17094
17095			if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
17096				wlapi_bmac_mhf(pi->sh->physhim, MHF3,
17097					       MHF3_NPHY_MLADV_WAR,
17098					       MHF3_NPHY_MLADV_WAR,
17099					       BRCM_BAND_ALL);
17100
17101		} else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
17102			write_phy_reg(pi, 0x1e3, 0x0);
17103			write_phy_reg(pi, 0x1e4, 0x0);
17104		}
17105
17106		if (NREV_LT(pi->pubpi.phy_rev, 2))
17107			mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
17108
17109		alpha0 = 293;
17110		alpha1 = 435;
17111		alpha2 = 261;
17112		beta0 = 366;
17113		beta1 = 205;
17114		beta2 = 32;
17115		write_phy_reg(pi, 0x145, alpha0);
17116		write_phy_reg(pi, 0x146, alpha1);
17117		write_phy_reg(pi, 0x147, alpha2);
17118		write_phy_reg(pi, 0x148, beta0);
17119		write_phy_reg(pi, 0x149, beta1);
17120		write_phy_reg(pi, 0x14a, beta2);
17121
17122		if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17123			mod_phy_reg(pi, 0x142, (0xf << 12), 0);
17124
17125			write_phy_reg(pi, 0x192, 0xb5);
17126			write_phy_reg(pi, 0x193, 0xa4);
17127			write_phy_reg(pi, 0x194, 0x0);
17128		}
17129
17130		if (NREV_IS(pi->pubpi.phy_rev, 2))
17131			mod_phy_reg(pi, 0x221,
17132				    NPHY_FORCESIG_DECODEGATEDCLKS,
17133				    NPHY_FORCESIG_DECODEGATEDCLKS);
17134	}
17135
17136	if (pi->phyhang_avoid)
17137		wlc_phy_stay_in_carriersearch_nphy(pi, false);
17138}
17139
17140static void wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
17141{
17142	int j, type = 2;
17143	u16 addr_offset = 0x2c5;
17144
17145	for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
17146		write_phy_reg(pi, addr_offset + j,
17147			      NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
17148}
17149
17150static void wlc_phy_clip_det_nphy(struct brcms_phy *pi, u8 write, u16 *vals)
17151{
17152
17153	if (write == 0) {
17154		vals[0] = read_phy_reg(pi, 0x2c);
17155		vals[1] = read_phy_reg(pi, 0x42);
17156	} else {
17157		write_phy_reg(pi, 0x2c, vals[0]);
17158		write_phy_reg(pi, 0x42, vals[1]);
17159	}
17160}
17161
17162static void wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy *pi)
17163{
17164	u8 core;
17165
17166	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17167		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17168			if (CHSPEC_IS2G(pi->radio_chanspec)) {
17169				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17170						 TX_SSI_MASTER, 0x5);
17171				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17172						 TX_SSI_MUX, 0xe);
17173
17174				if (pi->pubpi.radiorev != 5)
17175					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17176							 core, TSSIA, 0);
17177
17178				if (!NREV_IS(pi->pubpi.phy_rev, 7))
17179					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17180							 core, TSSIG, 0x1);
17181				else
17182					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17183							 core, TSSIG, 0x31);
17184			} else {
17185				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17186						 TX_SSI_MASTER, 0x9);
17187				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17188						 TX_SSI_MUX, 0xc);
17189				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17190						 TSSIG, 0);
17191
17192				if (pi->pubpi.radiorev != 5) {
17193					if (!NREV_IS(pi->pubpi.phy_rev, 7))
17194						WRITE_RADIO_REG3(pi, RADIO_2057,
17195								 TX, core,
17196								 TSSIA, 0x1);
17197					else
17198						WRITE_RADIO_REG3(pi, RADIO_2057,
17199								 TX, core,
17200								 TSSIA, 0x31);
17201				}
17202			}
17203			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
17204					 0);
17205			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
17206					 0);
17207			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
17208					 0x3);
17209			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
17210					 0x0);
17211		}
17212	} else {
17213		WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
17214				(CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
17215				0x80);
17216		WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
17217		WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
17218
17219		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17220			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
17221					 0x0);
17222			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
17223					 0x0);
17224			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
17225					 0x3);
17226			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
17227					 0x0);
17228			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
17229					 0x8);
17230			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
17231					 0x0);
17232			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
17233					 0x0);
17234
17235			if (CHSPEC_IS2G(pi->radio_chanspec)) {
17236				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17237						 TX_SSI_MASTER, 0x5);
17238
17239				if (pi->pubpi.radiorev != 5)
17240					WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17241							 core, TSSIA, 0x0);
17242				if (NREV_GE(pi->pubpi.phy_rev, 5))
17243					WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17244							 core, TSSIG, 0x31);
17245				else
17246					WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17247							 core, TSSIG, 0x11);
17248				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17249						 TX_SSI_MUX, 0xe);
17250			} else {
17251				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17252						 TX_SSI_MASTER, 0x9);
17253				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17254						 TSSIA, 0x31);
17255				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17256						 TSSIG, 0x0);
17257				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17258						 TX_SSI_MUX, 0xc);
17259			}
17260		}
17261	}
17262}
17263
17264static void
17265wlc_phy_rfctrl_override_nphy(struct brcms_phy *pi, u16 field, u16 value,
17266			     u8 core_mask, u8 off)
17267{
17268	u8 core_num;
17269	u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
17270		0, val_mask = 0;
17271	u8 shift = 0, val_shift = 0;
17272
17273	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
17274
17275		en_mask = field;
17276		for (core_num = 0; core_num < 2; core_num++) {
17277
17278			switch (field) {
17279			case (0x1 << 1):
17280				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17281				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17282				val_mask = (0x1 << 0);
17283				val_shift = 0;
17284				break;
17285			case (0x1 << 2):
17286				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17287				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17288				val_mask = (0x1 << 1);
17289				val_shift = 1;
17290				break;
17291			case (0x1 << 3):
17292				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17293				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17294				val_mask = (0x1 << 2);
17295				val_shift = 2;
17296				break;
17297			case (0x1 << 4):
17298				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17299				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17300				val_mask = (0x1 << 4);
17301				val_shift = 4;
17302				break;
17303			case (0x1 << 5):
17304				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17305				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17306				val_mask = (0x1 << 5);
17307				val_shift = 5;
17308				break;
17309			case (0x1 << 6):
17310				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17311				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17312				val_mask = (0x1 << 6);
17313				val_shift = 6;
17314				break;
17315			case (0x1 << 7):
17316				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17317				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17318				val_mask = (0x1 << 7);
17319				val_shift = 7;
17320				break;
17321			case (0x1 << 8):
17322				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17323				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17324				val_mask = (0x7 << 8);
17325				val_shift = 8;
17326				break;
17327			case (0x1 << 11):
17328				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17329				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17330				val_mask = (0x7 << 13);
17331				val_shift = 13;
17332				break;
17333
17334			case (0x1 << 9):
17335				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17336				val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17337				val_mask = (0x7 << 0);
17338				val_shift = 0;
17339				break;
17340
17341			case (0x1 << 10):
17342				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17343				val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17344				val_mask = (0x7 << 4);
17345				val_shift = 4;
17346				break;
17347
17348			case (0x1 << 12):
17349				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17350				val_addr = (core_num == 0) ? 0x7b : 0x7e;
17351				val_mask = (0xffff << 0);
17352				val_shift = 0;
17353				break;
17354			case (0x1 << 13):
17355				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17356				val_addr = (core_num == 0) ? 0x7c : 0x7f;
17357				val_mask = (0xffff << 0);
17358				val_shift = 0;
17359				break;
17360			case (0x1 << 14):
17361				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17362				val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17363				val_mask = (0x3 << 6);
17364				val_shift = 6;
17365				break;
17366			case (0x1 << 0):
17367				en_addr = (core_num == 0) ? 0xe5 : 0xe6;
17368				val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17369				val_mask = (0x1 << 15);
17370				val_shift = 15;
17371				break;
17372			default:
17373				addr = 0xffff;
17374				break;
17375			}
17376
17377			if (off) {
17378				and_phy_reg(pi, en_addr, ~en_mask);
17379				and_phy_reg(pi, val_addr, ~val_mask);
17380			} else {
17381
17382				if ((core_mask == 0)
17383				    || (core_mask & (1 << core_num))) {
17384					or_phy_reg(pi, en_addr, en_mask);
17385
17386					if (addr != 0xffff)
17387						mod_phy_reg(pi, val_addr,
17388							    val_mask,
17389							    (value <<
17390							     val_shift));
17391				}
17392			}
17393		}
17394	} else {
17395
17396		if (off) {
17397			and_phy_reg(pi, 0xec, ~field);
17398			value = 0x0;
17399		} else {
17400			or_phy_reg(pi, 0xec, field);
17401		}
17402
17403		for (core_num = 0; core_num < 2; core_num++) {
17404
17405			switch (field) {
17406			case (0x1 << 1):
17407			case (0x1 << 9):
17408			case (0x1 << 12):
17409			case (0x1 << 13):
17410			case (0x1 << 14):
17411				addr = 0x78;
17412
17413				core_mask = 0x1;
17414				break;
17415			case (0x1 << 2):
17416			case (0x1 << 3):
17417			case (0x1 << 4):
17418			case (0x1 << 5):
17419			case (0x1 << 6):
17420			case (0x1 << 7):
17421			case (0x1 << 8):
17422				addr = (core_num == 0) ? 0x7a : 0x7d;
17423				break;
17424			case (0x1 << 10):
17425				addr = (core_num == 0) ? 0x7b : 0x7e;
17426				break;
17427			case (0x1 << 11):
17428				addr = (core_num == 0) ? 0x7c : 0x7f;
17429				break;
17430			default:
17431				addr = 0xffff;
17432			}
17433
17434			switch (field) {
17435			case (0x1 << 1):
17436				mask = (0x7 << 3);
17437				shift = 3;
17438				break;
17439			case (0x1 << 9):
17440				mask = (0x1 << 2);
17441				shift = 2;
17442				break;
17443			case (0x1 << 12):
17444				mask = (0x1 << 8);
17445				shift = 8;
17446				break;
17447			case (0x1 << 13):
17448				mask = (0x1 << 9);
17449				shift = 9;
17450				break;
17451			case (0x1 << 14):
17452				mask = (0xf << 12);
17453				shift = 12;
17454				break;
17455			case (0x1 << 2):
17456				mask = (0x1 << 0);
17457				shift = 0;
17458				break;
17459			case (0x1 << 3):
17460				mask = (0x1 << 1);
17461				shift = 1;
17462				break;
17463			case (0x1 << 4):
17464				mask = (0x1 << 2);
17465				shift = 2;
17466				break;
17467			case (0x1 << 5):
17468				mask = (0x3 << 4);
17469				shift = 4;
17470				break;
17471			case (0x1 << 6):
17472				mask = (0x3 << 6);
17473				shift = 6;
17474				break;
17475			case (0x1 << 7):
17476				mask = (0x1 << 8);
17477				shift = 8;
17478				break;
17479			case (0x1 << 8):
17480				mask = (0x1 << 9);
17481				shift = 9;
17482				break;
17483			case (0x1 << 10):
17484				mask = 0x1fff;
17485				shift = 0x0;
17486				break;
17487			case (0x1 << 11):
17488				mask = 0x1fff;
17489				shift = 0x0;
17490				break;
17491			default:
17492				mask = 0x0;
17493				shift = 0x0;
17494				break;
17495			}
17496
17497			if ((addr != 0xffff) && (core_mask & (1 << core_num)))
17498				mod_phy_reg(pi, addr, mask, (value << shift));
17499		}
17500
17501		or_phy_reg(pi, 0xec, (0x1 << 0));
17502		or_phy_reg(pi, 0x78, (0x1 << 0));
17503		udelay(1);
17504		and_phy_reg(pi, 0xec, ~(0x1 << 0));
17505	}
17506}
17507
17508static void wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy *pi)
17509{
17510	s32 rssi_buf[4];
17511	s32 int_val;
17512
17513	if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
17514
17515		return;
17516
17517	if (PHY_IPA(pi))
17518		wlc_phy_ipa_internal_tssi_setup_nphy(pi);
17519
17520	if (NREV_GE(pi->pubpi.phy_rev, 7))
17521		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17522						  0, 0x3, 0,
17523						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
17524	else if (NREV_GE(pi->pubpi.phy_rev, 3))
17525		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
17526
17527	wlc_phy_stopplayback_nphy(pi);
17528
17529	wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
17530
17531	udelay(20);
17532	int_val =
17533		wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
17534				       1);
17535	wlc_phy_stopplayback_nphy(pi);
17536	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
17537
17538	if (NREV_GE(pi->pubpi.phy_rev, 7))
17539		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17540						  0, 0x3, 1,
17541						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
17542	else if (NREV_GE(pi->pubpi.phy_rev, 3))
17543		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
17544
17545	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17546
17547		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17548			(u8) ((int_val >> 24) & 0xff);
17549		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17550			(u8) ((int_val >> 24) & 0xff);
17551
17552		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17553			(u8) ((int_val >> 8) & 0xff);
17554		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17555			(u8) ((int_val >> 8) & 0xff);
17556	} else {
17557		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17558			(u8) ((int_val >> 24) & 0xff);
17559
17560		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17561			(u8) ((int_val >> 8) & 0xff);
17562
17563		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17564			(u8) ((int_val >> 16) & 0xff);
17565		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17566			(u8) ((int_val) & 0xff);
17567	}
17568
17569}
17570
17571static void wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy *pi)
17572{
17573	u8 idx, idx2, i, delta_ind;
17574
17575	for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++)
17576		pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
17577
17578	for (i = 0; i < 4; i++) {
17579		idx2 = 0;
17580
17581		delta_ind = 0;
17582
17583		switch (i) {
17584		case 0:
17585
17586			if (CHSPEC_IS40(pi->radio_chanspec)
17587			    && NPHY_IS_SROM_REINTERPRET) {
17588				idx = TXP_FIRST_MCS_40_SISO;
17589			} else {
17590				idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17591				      TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
17592				delta_ind = 1;
17593			}
17594			break;
17595
17596		case 1:
17597
17598			idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17599			      TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
17600			break;
17601
17602		case 2:
17603
17604			idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17605			      TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
17606			break;
17607
17608		case 3:
17609
17610			idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17611			      TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
17612			break;
17613		}
17614
17615		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17616			pi->tx_power_offset[idx];
17617		idx = idx + delta_ind;
17618		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17619			pi->tx_power_offset[idx];
17620		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17621			pi->tx_power_offset[idx];
17622		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17623			pi->tx_power_offset[idx++];
17624
17625		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17626			pi->tx_power_offset[idx++];
17627		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17628			pi->tx_power_offset[idx];
17629		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17630			pi->tx_power_offset[idx];
17631		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17632			pi->tx_power_offset[idx++];
17633
17634		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17635			pi->tx_power_offset[idx++];
17636		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17637			pi->tx_power_offset[idx];
17638		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17639			pi->tx_power_offset[idx];
17640		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17641			pi->tx_power_offset[idx++];
17642
17643		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17644			pi->tx_power_offset[idx];
17645		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17646			pi->tx_power_offset[idx++];
17647		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17648			pi->tx_power_offset[idx];
17649		idx = idx + 1 - delta_ind;
17650		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17651			pi->tx_power_offset[idx];
17652
17653		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17654			pi->tx_power_offset[idx];
17655		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17656			pi->tx_power_offset[idx];
17657		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17658			pi->tx_power_offset[idx];
17659		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17660			pi->tx_power_offset[idx];
17661	}
17662}
17663
17664static void wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy *pi)
17665{
17666	u32 idx;
17667	s16 a1[2], b0[2], b1[2];
17668	s8 target_pwr_qtrdbm[2];
17669	s32 num, den, pwr_est;
17670	u8 chan_freq_range;
17671	u8 idle_tssi[2];
17672	u32 tbl_id, tbl_len, tbl_offset;
17673	u32 regval[64];
17674	u8 core;
17675
17676	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17677		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17678		(void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17679		udelay(1);
17680	}
17681
17682	if (pi->phyhang_avoid)
17683		wlc_phy_stay_in_carriersearch_nphy(pi, true);
17684
17685	or_phy_reg(pi, 0x122, (0x1 << 0));
17686
17687	if (NREV_GE(pi->pubpi.phy_rev, 3))
17688		and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
17689	else
17690		or_phy_reg(pi, 0x1e7, (0x1 << 15));
17691
17692	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17693		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17694
17695	if (pi->sh->sromrev < 4) {
17696		idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17697		idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17698		a1[0] = -424;
17699		a1[1] = -424;
17700		b0[0] = 5612;
17701		b0[1] = 5612;
17702		b1[1] = -1393;
17703		b1[0] = -1393;
17704	} else {
17705
17706		chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
17707		switch (chan_freq_range) {
17708		case WL_CHAN_FREQ_RANGE_2G:
17709			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17710			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17711			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
17712			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
17713			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
17714			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
17715			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
17716			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
17717			break;
17718		case WL_CHAN_FREQ_RANGE_5GL:
17719			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17720			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17721			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
17722			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
17723			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
17724			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
17725			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
17726			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
17727			break;
17728		case WL_CHAN_FREQ_RANGE_5GM:
17729			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17730			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17731			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
17732			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
17733			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
17734			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
17735			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
17736			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
17737			break;
17738		case WL_CHAN_FREQ_RANGE_5GH:
17739			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17740			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17741			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
17742			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
17743			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
17744			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
17745			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
17746			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
17747			break;
17748		default:
17749			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17750			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17751			a1[0] = -424;
17752			a1[1] = -424;
17753			b0[0] = 5612;
17754			b0[1] = 5612;
17755			b1[1] = -1393;
17756			b1[0] = -1393;
17757			break;
17758		}
17759	}
17760
17761	/* use the provided transmit power */
17762	target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
17763	target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
17764
17765	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17766		if (pi->srom_fem2g.tssipos)
17767			or_phy_reg(pi, 0x1e9, (0x1 << 14));
17768
17769		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17770			for (core = 0; core <= 1; core++) {
17771				if (PHY_IPA(pi)) {
17772					if (CHSPEC_IS2G(pi->radio_chanspec))
17773						WRITE_RADIO_REG3(pi, RADIO_2057,
17774								 TX, core,
17775								 TX_SSI_MUX,
17776								 0xe);
17777					else
17778						WRITE_RADIO_REG3(pi, RADIO_2057,
17779								 TX, core,
17780								 TX_SSI_MUX,
17781								 0xc);
17782				}
17783			}
17784		} else {
17785			if (PHY_IPA(pi)) {
17786
17787				write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17788						RADIO_2056_TX0,
17789						(CHSPEC_IS5G
17790						 (pi->radio_chanspec)) ?
17791						 0xc : 0xe);
17792				write_radio_reg(pi,
17793						RADIO_2056_TX_TX_SSI_MUX |
17794						RADIO_2056_TX1,
17795						(CHSPEC_IS5G
17796						 (pi->radio_chanspec)) ?
17797						 0xc : 0xe);
17798			} else {
17799
17800				write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17801						RADIO_2056_TX0, 0x11);
17802				write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17803						RADIO_2056_TX1, 0x11);
17804			}
17805		}
17806	}
17807
17808	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17809		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17810		(void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17811		udelay(1);
17812	}
17813
17814	if (NREV_GE(pi->pubpi.phy_rev, 7))
17815		mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17816			    (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17817	else
17818		mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17819			    (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17820
17821	if (NREV_GE(pi->pubpi.phy_rev, 7))
17822		mod_phy_reg(pi, 0x222, (0xff << 0),
17823			    (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17824	else if (NREV_GT(pi->pubpi.phy_rev, 1))
17825		mod_phy_reg(pi, 0x222, (0xff << 0),
17826			    (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17827
17828	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17829		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17830
17831	write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
17832
17833	write_phy_reg(pi, 0x1e9,
17834		      (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
17835
17836	write_phy_reg(pi, 0x1ea,
17837		      (target_pwr_qtrdbm[0] << 0) |
17838		      (target_pwr_qtrdbm[1] << 8));
17839
17840	tbl_len = 64;
17841	tbl_offset = 0;
17842	for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
17843	     tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
17844
17845		for (idx = 0; idx < tbl_len; idx++) {
17846			num = 8 *
17847			      (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
17848			den = 32768 + a1[tbl_id - 26] * idx;
17849			pwr_est = max(((4 * num + den / 2) / den), -8);
17850			if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17851				if (idx <=
17852				    (uint) (31 - idle_tssi[tbl_id - 26] + 1))
17853					pwr_est =
17854						max(pwr_est,
17855						    target_pwr_qtrdbm
17856						    [tbl_id - 26] + 1);
17857			}
17858			regval[idx] = (u32) pwr_est;
17859		}
17860		wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
17861					 regval);
17862	}
17863
17864	wlc_phy_txpwr_limit_to_tbl_nphy(pi);
17865	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
17866				 pi->adj_pwr_tbl_nphy);
17867	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
17868				 pi->adj_pwr_tbl_nphy);
17869
17870	if (pi->phyhang_avoid)
17871		wlc_phy_stay_in_carriersearch_nphy(pi, false);
17872}
17873
17874static u32 *wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy *pi)
17875{
17876	u32 *tx_pwrctrl_tbl = NULL;
17877
17878	if (CHSPEC_IS2G(pi->radio_chanspec)) {
17879		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17880			if ((pi->pubpi.radiorev == 4)
17881			    || (pi->pubpi.radiorev == 6))
17882				tx_pwrctrl_tbl =
17883					nphy_tpc_txgain_ipa_2g_2057rev4n6;
17884			else if (pi->pubpi.radiorev == 3)
17885				tx_pwrctrl_tbl =
17886					nphy_tpc_txgain_ipa_2g_2057rev3;
17887			else if (pi->pubpi.radiorev == 5)
17888				tx_pwrctrl_tbl =
17889					nphy_tpc_txgain_ipa_2g_2057rev5;
17890			else if ((pi->pubpi.radiorev == 7)
17891				 || (pi->pubpi.radiorev == 8))
17892				tx_pwrctrl_tbl =
17893					nphy_tpc_txgain_ipa_2g_2057rev7;
17894		} else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
17895			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
17896			if (pi->sh->chip == BCMA_CHIP_ID_BCM47162)
17897				tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17898		} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
17899			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17900		} else {
17901			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
17902		}
17903	} else {
17904
17905		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17906			if ((pi->pubpi.radiorev == 3) ||
17907			    (pi->pubpi.radiorev == 4) ||
17908			    (pi->pubpi.radiorev == 6))
17909				tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
17910			else if ((pi->pubpi.radiorev == 7)
17911				 || (pi->pubpi.radiorev == 8))
17912				tx_pwrctrl_tbl =
17913					nphy_tpc_txgain_ipa_5g_2057rev7;
17914		} else {
17915			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
17916		}
17917	}
17918
17919	return tx_pwrctrl_tbl;
17920}
17921
17922static void wlc_phy_restore_rssical_nphy(struct brcms_phy *pi)
17923{
17924	if (CHSPEC_IS2G(pi->radio_chanspec)) {
17925		if (pi->nphy_rssical_chanspec_2G == 0)
17926			return;
17927
17928		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17929			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17930				      RADIO_2057_VCM_MASK,
17931				      pi->rssical_cache.
17932				      rssical_radio_regs_2G[0]);
17933			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17934				      RADIO_2057_VCM_MASK,
17935				      pi->rssical_cache.
17936				      rssical_radio_regs_2G[1]);
17937		} else {
17938			mod_radio_reg(pi,
17939				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17940				      RADIO_2056_VCM_MASK,
17941				      pi->rssical_cache.
17942				      rssical_radio_regs_2G[0]);
17943			mod_radio_reg(pi,
17944				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17945				      RADIO_2056_VCM_MASK,
17946				      pi->rssical_cache.
17947				      rssical_radio_regs_2G[1]);
17948		}
17949
17950		write_phy_reg(pi, 0x1a6,
17951			      pi->rssical_cache.rssical_phyregs_2G[0]);
17952		write_phy_reg(pi, 0x1ac,
17953			      pi->rssical_cache.rssical_phyregs_2G[1]);
17954		write_phy_reg(pi, 0x1b2,
17955			      pi->rssical_cache.rssical_phyregs_2G[2]);
17956		write_phy_reg(pi, 0x1b8,
17957			      pi->rssical_cache.rssical_phyregs_2G[3]);
17958		write_phy_reg(pi, 0x1a4,
17959			      pi->rssical_cache.rssical_phyregs_2G[4]);
17960		write_phy_reg(pi, 0x1aa,
17961			      pi->rssical_cache.rssical_phyregs_2G[5]);
17962		write_phy_reg(pi, 0x1b0,
17963			      pi->rssical_cache.rssical_phyregs_2G[6]);
17964		write_phy_reg(pi, 0x1b6,
17965			      pi->rssical_cache.rssical_phyregs_2G[7]);
17966		write_phy_reg(pi, 0x1a5,
17967			      pi->rssical_cache.rssical_phyregs_2G[8]);
17968		write_phy_reg(pi, 0x1ab,
17969			      pi->rssical_cache.rssical_phyregs_2G[9]);
17970		write_phy_reg(pi, 0x1b1,
17971			      pi->rssical_cache.rssical_phyregs_2G[10]);
17972		write_phy_reg(pi, 0x1b7,
17973			      pi->rssical_cache.rssical_phyregs_2G[11]);
17974
17975	} else {
17976		if (pi->nphy_rssical_chanspec_5G == 0)
17977			return;
17978
17979		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17980			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17981				      RADIO_2057_VCM_MASK,
17982				      pi->rssical_cache.
17983				      rssical_radio_regs_5G[0]);
17984			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17985				      RADIO_2057_VCM_MASK,
17986				      pi->rssical_cache.
17987				      rssical_radio_regs_5G[1]);
17988		} else {
17989			mod_radio_reg(pi,
17990				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17991				      RADIO_2056_VCM_MASK,
17992				      pi->rssical_cache.
17993				      rssical_radio_regs_5G[0]);
17994			mod_radio_reg(pi,
17995				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17996				      RADIO_2056_VCM_MASK,
17997				      pi->rssical_cache.
17998				      rssical_radio_regs_5G[1]);
17999		}
18000
18001		write_phy_reg(pi, 0x1a6,
18002			      pi->rssical_cache.rssical_phyregs_5G[0]);
18003		write_phy_reg(pi, 0x1ac,
18004			      pi->rssical_cache.rssical_phyregs_5G[1]);
18005		write_phy_reg(pi, 0x1b2,
18006			      pi->rssical_cache.rssical_phyregs_5G[2]);
18007		write_phy_reg(pi, 0x1b8,
18008			      pi->rssical_cache.rssical_phyregs_5G[3]);
18009		write_phy_reg(pi, 0x1a4,
18010			      pi->rssical_cache.rssical_phyregs_5G[4]);
18011		write_phy_reg(pi, 0x1aa,
18012			      pi->rssical_cache.rssical_phyregs_5G[5]);
18013		write_phy_reg(pi, 0x1b0,
18014			      pi->rssical_cache.rssical_phyregs_5G[6]);
18015		write_phy_reg(pi, 0x1b6,
18016			      pi->rssical_cache.rssical_phyregs_5G[7]);
18017		write_phy_reg(pi, 0x1a5,
18018			      pi->rssical_cache.rssical_phyregs_5G[8]);
18019		write_phy_reg(pi, 0x1ab,
18020			      pi->rssical_cache.rssical_phyregs_5G[9]);
18021		write_phy_reg(pi, 0x1b1,
18022			      pi->rssical_cache.rssical_phyregs_5G[10]);
18023		write_phy_reg(pi, 0x1b7,
18024			      pi->rssical_cache.rssical_phyregs_5G[11]);
18025	}
18026}
18027
18028static void wlc_phy_internal_cal_txgain_nphy(struct brcms_phy *pi)
18029{
18030	u16 txcal_gain[2];
18031
18032	pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
18033	pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
18034	wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18035	wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18036
18037	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18038				txcal_gain);
18039
18040	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18041		txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
18042		txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
18043	} else {
18044		txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
18045		txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
18046	}
18047
18048	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18049				 txcal_gain);
18050}
18051
18052static void wlc_phy_precal_txgain_nphy(struct brcms_phy *pi)
18053{
18054	bool save_bbmult = false;
18055	u8 txcal_index_2057_rev5n7 = 0;
18056	u8 txcal_index_2057_rev3n4n6 = 10;
18057
18058	if (pi->use_int_tx_iqlo_cal_nphy) {
18059		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18060			if ((pi->pubpi.radiorev == 3) ||
18061			    (pi->pubpi.radiorev == 4) ||
18062			    (pi->pubpi.radiorev == 6)) {
18063
18064				pi->nphy_txcal_pwr_idx[0] =
18065					txcal_index_2057_rev3n4n6;
18066				pi->nphy_txcal_pwr_idx[1] =
18067					txcal_index_2057_rev3n4n6;
18068				wlc_phy_txpwr_index_nphy(
18069					pi, 3,
18070					txcal_index_2057_rev3n4n6,
18071					false);
18072			} else {
18073
18074				pi->nphy_txcal_pwr_idx[0] =
18075					txcal_index_2057_rev5n7;
18076				pi->nphy_txcal_pwr_idx[1] =
18077					txcal_index_2057_rev5n7;
18078				wlc_phy_txpwr_index_nphy(
18079					pi, 3,
18080					txcal_index_2057_rev5n7,
18081					false);
18082			}
18083			save_bbmult = true;
18084
18085		} else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
18086			wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
18087			if (pi->sh->hw_phytxchain != 3) {
18088				pi->nphy_txcal_pwr_idx[1] =
18089					pi->nphy_txcal_pwr_idx[0];
18090				wlc_phy_txpwr_index_nphy(pi, 3,
18091							 pi->
18092							 nphy_txcal_pwr_idx[0],
18093							 true);
18094				save_bbmult = true;
18095			}
18096
18097		} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18098			if (PHY_IPA(pi)) {
18099				if (CHSPEC_IS2G(pi->radio_chanspec)) {
18100					wlc_phy_cal_txgainctrl_nphy(pi, 12,
18101								    false);
18102				} else {
18103					pi->nphy_txcal_pwr_idx[0] = 80;
18104					pi->nphy_txcal_pwr_idx[1] = 80;
18105					wlc_phy_txpwr_index_nphy(pi, 3, 80,
18106								 false);
18107					save_bbmult = true;
18108				}
18109			} else {
18110				wlc_phy_internal_cal_txgain_nphy(pi);
18111				save_bbmult = true;
18112			}
18113
18114		} else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18115			if (PHY_IPA(pi)) {
18116				if (CHSPEC_IS2G(pi->radio_chanspec))
18117					wlc_phy_cal_txgainctrl_nphy(pi, 12,
18118								    false);
18119				else
18120					wlc_phy_cal_txgainctrl_nphy(pi, 14,
18121								    false);
18122			} else {
18123				wlc_phy_internal_cal_txgain_nphy(pi);
18124				save_bbmult = true;
18125			}
18126		}
18127
18128	} else {
18129		wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
18130	}
18131
18132	if (save_bbmult)
18133		wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
18134					&pi->nphy_txcal_bbmult);
18135}
18136
18137static void
18138wlc_phy_rfctrlintc_override_nphy(struct brcms_phy *pi, u8 field, u16 value,
18139				 u8 core_code)
18140{
18141	u16 mask;
18142	u16 val;
18143	u8 core;
18144
18145	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18146		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18147			if (core_code == RADIO_MIMO_CORESEL_CORE1
18148			    && core == PHY_CORE_1)
18149				continue;
18150			else if (core_code == RADIO_MIMO_CORESEL_CORE2
18151				 && core == PHY_CORE_0)
18152				continue;
18153
18154			if (NREV_LT(pi->pubpi.phy_rev, 7)) {
18155
18156				mask = (0x1 << 10);
18157				val = 1 << 10;
18158				mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18159					    0x92, mask, val);
18160			}
18161
18162			if (field == NPHY_RfctrlIntc_override_OFF) {
18163
18164				write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18165					      0x92, 0);
18166
18167				wlc_phy_force_rfseq_nphy(pi,
18168							 NPHY_RFSEQ_RESET2RX);
18169			} else if (field == NPHY_RfctrlIntc_override_TRSW) {
18170
18171				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18172
18173					mask = (0x1 << 6) | (0x1 << 7);
18174
18175					val = value << 6;
18176					mod_phy_reg(pi,
18177						    (core ==
18178						     PHY_CORE_0) ? 0x91 : 0x92,
18179						    mask, val);
18180
18181					or_phy_reg(pi,
18182						   (core ==
18183						    PHY_CORE_0) ? 0x91 : 0x92,
18184						   (0x1 << 10));
18185
18186					and_phy_reg(pi, 0x2ff, (u16)
18187						    ~(0x3 << 14));
18188					or_phy_reg(pi, 0x2ff, (0x1 << 13));
18189					or_phy_reg(pi, 0x2ff, (0x1 << 0));
18190				} else {
18191
18192					mask = (0x1 << 6) |
18193					       (0x1 << 7) |
18194					       (0x1 << 8) | (0x1 << 9);
18195					val = value << 6;
18196					mod_phy_reg(pi,
18197						    (core ==
18198						     PHY_CORE_0) ? 0x91 : 0x92,
18199						    mask, val);
18200
18201					mask = (0x1 << 0);
18202					val = 1 << 0;
18203					mod_phy_reg(pi,
18204						    (core ==
18205						     PHY_CORE_0) ? 0xe7 : 0xec,
18206						    mask, val);
18207
18208					mask = (core == PHY_CORE_0) ?
18209					       (0x1 << 0) : (0x1 << 1);
18210					val = 1 << ((core == PHY_CORE_0) ?
18211						    0 : 1);
18212					mod_phy_reg(pi, 0x78, mask, val);
18213
18214					SPINWAIT(((read_phy_reg(pi, 0x78) & val)
18215						  != 0), 10000);
18216					if (WARN(read_phy_reg(pi, 0x78) & val,
18217						 "HW error: override failed"))
18218						return;
18219
18220					mask = (0x1 << 0);
18221					val = 0 << 0;
18222					mod_phy_reg(pi,
18223						    (core ==
18224						     PHY_CORE_0) ? 0xe7 : 0xec,
18225						    mask, val);
18226				}
18227			} else if (field == NPHY_RfctrlIntc_override_PA) {
18228				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18229
18230					mask = (0x1 << 4) | (0x1 << 5);
18231
18232					if (CHSPEC_IS5G(pi->radio_chanspec))
18233						val = value << 5;
18234					else
18235						val = value << 4;
18236
18237					mod_phy_reg(pi,
18238						    (core ==
18239						     PHY_CORE_0) ? 0x91 : 0x92,
18240						    mask, val);
18241
18242					or_phy_reg(pi,
18243						   (core ==
18244						    PHY_CORE_0) ? 0x91 : 0x92,
18245						   (0x1 << 12));
18246				} else {
18247
18248					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18249						mask = (0x1 << 5);
18250						val = value << 5;
18251					} else {
18252						mask = (0x1 << 4);
18253						val = value << 4;
18254					}
18255					mod_phy_reg(pi,
18256						    (core ==
18257						     PHY_CORE_0) ? 0x91 : 0x92,
18258						    mask, val);
18259				}
18260			} else if (field ==
18261				   NPHY_RfctrlIntc_override_EXT_LNA_PU) {
18262				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18263					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18264
18265						mask = (0x1 << 0);
18266						val = value << 0;
18267						mod_phy_reg(pi,
18268							    (core ==
18269							     PHY_CORE_0) ? 0x91
18270							    : 0x92, mask, val);
18271
18272						mask = (0x1 << 2);
18273						mod_phy_reg(pi,
18274							    (core ==
18275							     PHY_CORE_0) ? 0x91
18276							    : 0x92, mask, 0);
18277					} else {
18278
18279						mask = (0x1 << 2);
18280						val = value << 2;
18281						mod_phy_reg(pi,
18282							    (core ==
18283							     PHY_CORE_0) ? 0x91
18284							    : 0x92, mask, val);
18285
18286						mask = (0x1 << 0);
18287						mod_phy_reg(pi,
18288							    (core ==
18289							     PHY_CORE_0) ? 0x91
18290							    : 0x92, mask, 0);
18291					}
18292
18293					mask = (0x1 << 11);
18294					val = 1 << 11;
18295					mod_phy_reg(pi,
18296						    (core ==
18297						     PHY_CORE_0) ? 0x91 : 0x92,
18298						    mask, val);
18299				} else {
18300
18301					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18302						mask = (0x1 << 0);
18303						val = value << 0;
18304					} else {
18305						mask = (0x1 << 2);
18306						val = value << 2;
18307					}
18308					mod_phy_reg(pi,
18309						    (core ==
18310						     PHY_CORE_0) ? 0x91 : 0x92,
18311						    mask, val);
18312				}
18313			} else if (field ==
18314				   NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
18315				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18316					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18317
18318						mask = (0x1 << 1);
18319						val = value << 1;
18320						mod_phy_reg(pi,
18321							    (core ==
18322							     PHY_CORE_0) ? 0x91
18323							    : 0x92, mask, val);
18324
18325						mask = (0x1 << 3);
18326						mod_phy_reg(pi,
18327							    (core ==
18328							     PHY_CORE_0) ? 0x91
18329							    : 0x92, mask, 0);
18330					} else {
18331
18332						mask = (0x1 << 3);
18333						val = value << 3;
18334						mod_phy_reg(pi,
18335							    (core ==
18336							     PHY_CORE_0) ? 0x91
18337							    : 0x92, mask, val);
18338
18339						mask = (0x1 << 1);
18340						mod_phy_reg(pi,
18341							    (core ==
18342							     PHY_CORE_0) ? 0x91
18343							    : 0x92, mask, 0);
18344					}
18345
18346					mask = (0x1 << 11);
18347					val = 1 << 11;
18348					mod_phy_reg(pi,
18349						    (core ==
18350						     PHY_CORE_0) ? 0x91 : 0x92,
18351						    mask, val);
18352				} else {
18353
18354					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18355						mask = (0x1 << 1);
18356						val = value << 1;
18357					} else {
18358						mask = (0x1 << 3);
18359						val = value << 3;
18360					}
18361					mod_phy_reg(pi,
18362						    (core ==
18363						     PHY_CORE_0) ? 0x91 : 0x92,
18364						    mask, val);
18365				}
18366			}
18367		}
18368	}
18369}
18370
18371void
18372wlc_phy_cal_txgainctrl_nphy(struct brcms_phy *pi, s32 dBm_targetpower,
18373			    bool debug)
18374{
18375	int gainctrl_loopidx;
18376	uint core;
18377	u16 m0m1, curr_m0m1;
18378	s32 delta_power;
18379	s32 txpwrindex;
18380	s32 qdBm_power[2];
18381	u16 orig_BBConfig;
18382	u16 phy_saveregs[4];
18383	u32 freq_test;
18384	u16 ampl_test = 250;
18385	uint stepsize;
18386	bool phyhang_avoid_state = false;
18387
18388	if (NREV_GE(pi->pubpi.phy_rev, 7))
18389		stepsize = 2;
18390	else
18391		stepsize = 1;
18392
18393	if (CHSPEC_IS40(pi->radio_chanspec))
18394		freq_test = 5000;
18395	else
18396		freq_test = 2500;
18397
18398	wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18399	wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18400
18401	if (pi->phyhang_avoid)
18402		wlc_phy_stay_in_carriersearch_nphy(pi, true);
18403
18404	phyhang_avoid_state = pi->phyhang_avoid;
18405	pi->phyhang_avoid = false;
18406
18407	phy_saveregs[0] = read_phy_reg(pi, 0x91);
18408	phy_saveregs[1] = read_phy_reg(pi, 0x92);
18409	phy_saveregs[2] = read_phy_reg(pi, 0xe7);
18410	phy_saveregs[3] = read_phy_reg(pi, 0xec);
18411	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
18412					 RADIO_MIMO_CORESEL_CORE1 |
18413					 RADIO_MIMO_CORESEL_CORE2);
18414
18415	if (!debug) {
18416		wlc_phy_rfctrlintc_override_nphy(pi,
18417						 NPHY_RfctrlIntc_override_TRSW,
18418						 0x2, RADIO_MIMO_CORESEL_CORE1);
18419		wlc_phy_rfctrlintc_override_nphy(pi,
18420						 NPHY_RfctrlIntc_override_TRSW,
18421						 0x8, RADIO_MIMO_CORESEL_CORE2);
18422	} else {
18423		wlc_phy_rfctrlintc_override_nphy(pi,
18424						 NPHY_RfctrlIntc_override_TRSW,
18425						 0x1, RADIO_MIMO_CORESEL_CORE1);
18426		wlc_phy_rfctrlintc_override_nphy(pi,
18427						 NPHY_RfctrlIntc_override_TRSW,
18428						 0x7, RADIO_MIMO_CORESEL_CORE2);
18429	}
18430
18431	orig_BBConfig = read_phy_reg(pi, 0x01);
18432	mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
18433
18434	wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
18435
18436	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18437		txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
18438
18439		for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
18440		     gainctrl_loopidx++) {
18441			wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18442					     false);
18443
18444			if (core == PHY_CORE_0)
18445				curr_m0m1 = m0m1 & 0xff00;
18446			else
18447				curr_m0m1 = m0m1 & 0x00ff;
18448
18449			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
18450			wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
18451
18452			udelay(50);
18453
18454			wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18455						 NPHY_CAL_TSSISAMPS);
18456
18457			pi->nphy_bb_mult_save = 0;
18458			wlc_phy_stopplayback_nphy(pi);
18459
18460			delta_power = (dBm_targetpower * 4) - qdBm_power[core];
18461
18462			txpwrindex -= stepsize * delta_power;
18463			if (txpwrindex < 0)
18464				txpwrindex = 0;
18465			else if (txpwrindex > 127)
18466				txpwrindex = 127;
18467
18468			if (CHSPEC_IS5G(pi->radio_chanspec)) {
18469				if (NREV_IS(pi->pubpi.phy_rev, 4) &&
18470				    (pi->srom_fem5g.extpagain == 3)) {
18471					if (txpwrindex < 30)
18472						txpwrindex = 30;
18473				}
18474			} else {
18475				if (NREV_GE(pi->pubpi.phy_rev, 5) &&
18476				    (pi->srom_fem2g.extpagain == 3)) {
18477					if (txpwrindex < 50)
18478						txpwrindex = 50;
18479				}
18480			}
18481
18482			wlc_phy_txpwr_index_nphy(pi, (1 << core),
18483						 (u8) txpwrindex, true);
18484		}
18485
18486		pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
18487
18488		if (debug) {
18489			u16 radio_gain;
18490			u16 dbg_m0m1;
18491
18492			wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18493
18494			wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18495					     false);
18496
18497			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18498			wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
18499
18500			udelay(100);
18501
18502			wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18503						 NPHY_CAL_TSSISAMPS);
18504
18505			wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
18506						&radio_gain);
18507
18508			mdelay(4000);
18509			pi->nphy_bb_mult_save = 0;
18510			wlc_phy_stopplayback_nphy(pi);
18511		}
18512	}
18513
18514	wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
18515	wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
18516
18517	wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
18518
18519	write_phy_reg(pi, 0x01, orig_BBConfig);
18520
18521	write_phy_reg(pi, 0x91, phy_saveregs[0]);
18522	write_phy_reg(pi, 0x92, phy_saveregs[1]);
18523	write_phy_reg(pi, 0xe7, phy_saveregs[2]);
18524	write_phy_reg(pi, 0xec, phy_saveregs[3]);
18525
18526	pi->phyhang_avoid = phyhang_avoid_state;
18527
18528	if (pi->phyhang_avoid)
18529		wlc_phy_stay_in_carriersearch_nphy(pi, false);
18530}
18531
18532static void wlc_phy_savecal_nphy(struct brcms_phy *pi)
18533{
18534	void *tbl_ptr;
18535	int coreNum;
18536	u16 *txcal_radio_regs = NULL;
18537
18538	if (pi->phyhang_avoid)
18539		wlc_phy_stay_in_carriersearch_nphy(pi, true);
18540
18541	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18542
18543		wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18544					  &pi->calibration_cache.
18545					  rxcal_coeffs_2G);
18546
18547		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18548			txcal_radio_regs =
18549				pi->calibration_cache.txcal_radio_regs_2G;
18550		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18551
18552			pi->calibration_cache.txcal_radio_regs_2G[0] =
18553				read_radio_reg(pi,
18554					       RADIO_2056_TX_LOFT_FINE_I |
18555					       RADIO_2056_TX0);
18556			pi->calibration_cache.txcal_radio_regs_2G[1] =
18557				read_radio_reg(pi,
18558					       RADIO_2056_TX_LOFT_FINE_Q |
18559					       RADIO_2056_TX0);
18560			pi->calibration_cache.txcal_radio_regs_2G[2] =
18561				read_radio_reg(pi,
18562					       RADIO_2056_TX_LOFT_FINE_I |
18563					       RADIO_2056_TX1);
18564			pi->calibration_cache.txcal_radio_regs_2G[3] =
18565				read_radio_reg(pi,
18566					       RADIO_2056_TX_LOFT_FINE_Q |
18567					       RADIO_2056_TX1);
18568
18569			pi->calibration_cache.txcal_radio_regs_2G[4] =
18570				read_radio_reg(pi,
18571					       RADIO_2056_TX_LOFT_COARSE_I |
18572					       RADIO_2056_TX0);
18573			pi->calibration_cache.txcal_radio_regs_2G[5] =
18574				read_radio_reg(pi,
18575					       RADIO_2056_TX_LOFT_COARSE_Q |
18576					       RADIO_2056_TX0);
18577			pi->calibration_cache.txcal_radio_regs_2G[6] =
18578				read_radio_reg(pi,
18579					       RADIO_2056_TX_LOFT_COARSE_I |
18580					       RADIO_2056_TX1);
18581			pi->calibration_cache.txcal_radio_regs_2G[7] =
18582				read_radio_reg(pi,
18583					       RADIO_2056_TX_LOFT_COARSE_Q |
18584					       RADIO_2056_TX1);
18585		} else {
18586			pi->calibration_cache.txcal_radio_regs_2G[0] =
18587			       read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18588			pi->calibration_cache.txcal_radio_regs_2G[1] =
18589			       read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18590			pi->calibration_cache.txcal_radio_regs_2G[2] =
18591			       read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18592			pi->calibration_cache.txcal_radio_regs_2G[3] =
18593			       read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18594		}
18595
18596		pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
18597		tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18598	} else {
18599
18600		wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18601					  &pi->calibration_cache.
18602					  rxcal_coeffs_5G);
18603
18604		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18605			txcal_radio_regs =
18606				pi->calibration_cache.txcal_radio_regs_5G;
18607		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18608
18609			pi->calibration_cache.txcal_radio_regs_5G[0] =
18610				read_radio_reg(pi,
18611					       RADIO_2056_TX_LOFT_FINE_I |
18612					       RADIO_2056_TX0);
18613			pi->calibration_cache.txcal_radio_regs_5G[1] =
18614				read_radio_reg(pi,
18615					       RADIO_2056_TX_LOFT_FINE_Q |
18616					       RADIO_2056_TX0);
18617			pi->calibration_cache.txcal_radio_regs_5G[2] =
18618				read_radio_reg(pi,
18619					       RADIO_2056_TX_LOFT_FINE_I |
18620					       RADIO_2056_TX1);
18621			pi->calibration_cache.txcal_radio_regs_5G[3] =
18622				read_radio_reg(pi,
18623					       RADIO_2056_TX_LOFT_FINE_Q |
18624					       RADIO_2056_TX1);
18625
18626			pi->calibration_cache.txcal_radio_regs_5G[4] =
18627				read_radio_reg(pi,
18628					       RADIO_2056_TX_LOFT_COARSE_I |
18629					       RADIO_2056_TX0);
18630			pi->calibration_cache.txcal_radio_regs_5G[5] =
18631				read_radio_reg(pi,
18632					       RADIO_2056_TX_LOFT_COARSE_Q |
18633					       RADIO_2056_TX0);
18634			pi->calibration_cache.txcal_radio_regs_5G[6] =
18635				read_radio_reg(pi,
18636					       RADIO_2056_TX_LOFT_COARSE_I |
18637					       RADIO_2056_TX1);
18638			pi->calibration_cache.txcal_radio_regs_5G[7] =
18639				read_radio_reg(pi,
18640					       RADIO_2056_TX_LOFT_COARSE_Q |
18641					       RADIO_2056_TX1);
18642		} else {
18643			pi->calibration_cache.txcal_radio_regs_5G[0] =
18644			       read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18645			pi->calibration_cache.txcal_radio_regs_5G[1] =
18646			       read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18647			pi->calibration_cache.txcal_radio_regs_5G[2] =
18648			       read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18649			pi->calibration_cache.txcal_radio_regs_5G[3] =
18650			       read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18651		}
18652
18653		pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
18654		tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18655	}
18656	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18657		for (coreNum = 0; coreNum <= 1; coreNum++) {
18658
18659			txcal_radio_regs[2 * coreNum] =
18660				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18661						LOFT_FINE_I);
18662			txcal_radio_regs[2 * coreNum + 1] =
18663				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18664						LOFT_FINE_Q);
18665
18666			txcal_radio_regs[2 * coreNum + 4] =
18667				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18668						LOFT_COARSE_I);
18669			txcal_radio_regs[2 * coreNum + 5] =
18670				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18671						LOFT_COARSE_Q);
18672		}
18673	}
18674
18675	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
18676
18677	if (pi->phyhang_avoid)
18678		wlc_phy_stay_in_carriersearch_nphy(pi, false);
18679}
18680
18681static void wlc_phy_tx_iq_war_nphy(struct brcms_phy *pi)
18682{
18683	struct nphy_iq_comp tx_comp;
18684
18685	wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, &tx_comp);
18686
18687	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
18688	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
18689	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
18690	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
18691}
18692
18693static void wlc_phy_restorecal_nphy(struct brcms_phy *pi)
18694{
18695	u16 *loft_comp;
18696	u16 txcal_coeffs_bphy[4];
18697	u16 *tbl_ptr;
18698	int coreNum;
18699	u16 *txcal_radio_regs = NULL;
18700
18701	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18702		if (pi->nphy_iqcal_chanspec_2G == 0)
18703			return;
18704
18705		tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18706		loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
18707	} else {
18708		if (pi->nphy_iqcal_chanspec_5G == 0)
18709			return;
18710
18711		tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18712		loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
18713	}
18714
18715	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16, tbl_ptr);
18716
18717	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18718		txcal_coeffs_bphy[0] = tbl_ptr[0];
18719		txcal_coeffs_bphy[1] = tbl_ptr[1];
18720		txcal_coeffs_bphy[2] = tbl_ptr[2];
18721		txcal_coeffs_bphy[3] = tbl_ptr[3];
18722	} else {
18723		txcal_coeffs_bphy[0] = 0;
18724		txcal_coeffs_bphy[1] = 0;
18725		txcal_coeffs_bphy[2] = 0;
18726		txcal_coeffs_bphy[3] = 0;
18727	}
18728
18729	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
18730				 txcal_coeffs_bphy);
18731
18732	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
18733
18734	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
18735
18736	if (NREV_LT(pi->pubpi.phy_rev, 2))
18737		wlc_phy_tx_iq_war_nphy(pi);
18738
18739	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18740		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18741			txcal_radio_regs =
18742				pi->calibration_cache.txcal_radio_regs_2G;
18743		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18744
18745			write_radio_reg(pi,
18746					RADIO_2056_TX_LOFT_FINE_I |
18747					RADIO_2056_TX0,
18748					pi->calibration_cache.
18749					txcal_radio_regs_2G[0]);
18750			write_radio_reg(pi,
18751					RADIO_2056_TX_LOFT_FINE_Q |
18752					RADIO_2056_TX0,
18753					pi->calibration_cache.
18754					txcal_radio_regs_2G[1]);
18755			write_radio_reg(pi,
18756					RADIO_2056_TX_LOFT_FINE_I |
18757					RADIO_2056_TX1,
18758					pi->calibration_cache.
18759					txcal_radio_regs_2G[2]);
18760			write_radio_reg(pi,
18761					RADIO_2056_TX_LOFT_FINE_Q |
18762					RADIO_2056_TX1,
18763					pi->calibration_cache.
18764					txcal_radio_regs_2G[3]);
18765
18766			write_radio_reg(pi,
18767					RADIO_2056_TX_LOFT_COARSE_I |
18768					RADIO_2056_TX0,
18769					pi->calibration_cache.
18770					txcal_radio_regs_2G[4]);
18771			write_radio_reg(pi,
18772					RADIO_2056_TX_LOFT_COARSE_Q |
18773					RADIO_2056_TX0,
18774					pi->calibration_cache.
18775					txcal_radio_regs_2G[5]);
18776			write_radio_reg(pi,
18777					RADIO_2056_TX_LOFT_COARSE_I |
18778					RADIO_2056_TX1,
18779					pi->calibration_cache.
18780					txcal_radio_regs_2G[6]);
18781			write_radio_reg(pi,
18782					RADIO_2056_TX_LOFT_COARSE_Q |
18783					RADIO_2056_TX1,
18784					pi->calibration_cache.
18785					txcal_radio_regs_2G[7]);
18786		} else {
18787			write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18788					pi->calibration_cache.
18789					txcal_radio_regs_2G[0]);
18790			write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18791					pi->calibration_cache.
18792					txcal_radio_regs_2G[1]);
18793			write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18794					pi->calibration_cache.
18795					txcal_radio_regs_2G[2]);
18796			write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18797					pi->calibration_cache.
18798					txcal_radio_regs_2G[3]);
18799		}
18800
18801		wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18802					  &pi->calibration_cache.
18803					  rxcal_coeffs_2G);
18804	} else {
18805		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18806			txcal_radio_regs =
18807				pi->calibration_cache.txcal_radio_regs_5G;
18808		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18809
18810			write_radio_reg(pi,
18811					RADIO_2056_TX_LOFT_FINE_I |
18812					RADIO_2056_TX0,
18813					pi->calibration_cache.
18814					txcal_radio_regs_5G[0]);
18815			write_radio_reg(pi,
18816					RADIO_2056_TX_LOFT_FINE_Q |
18817					RADIO_2056_TX0,
18818					pi->calibration_cache.
18819					txcal_radio_regs_5G[1]);
18820			write_radio_reg(pi,
18821					RADIO_2056_TX_LOFT_FINE_I |
18822					RADIO_2056_TX1,
18823					pi->calibration_cache.
18824					txcal_radio_regs_5G[2]);
18825			write_radio_reg(pi,
18826					RADIO_2056_TX_LOFT_FINE_Q |
18827					RADIO_2056_TX1,
18828					pi->calibration_cache.
18829					txcal_radio_regs_5G[3]);
18830
18831			write_radio_reg(pi,
18832					RADIO_2056_TX_LOFT_COARSE_I |
18833					RADIO_2056_TX0,
18834					pi->calibration_cache.
18835					txcal_radio_regs_5G[4]);
18836			write_radio_reg(pi,
18837					RADIO_2056_TX_LOFT_COARSE_Q |
18838					RADIO_2056_TX0,
18839					pi->calibration_cache.
18840					txcal_radio_regs_5G[5]);
18841			write_radio_reg(pi,
18842					RADIO_2056_TX_LOFT_COARSE_I |
18843					RADIO_2056_TX1,
18844					pi->calibration_cache.
18845					txcal_radio_regs_5G[6]);
18846			write_radio_reg(pi,
18847					RADIO_2056_TX_LOFT_COARSE_Q |
18848					RADIO_2056_TX1,
18849					pi->calibration_cache.
18850					txcal_radio_regs_5G[7]);
18851		} else {
18852			write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18853					pi->calibration_cache.
18854					txcal_radio_regs_5G[0]);
18855			write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18856					pi->calibration_cache.
18857					txcal_radio_regs_5G[1]);
18858			write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18859					pi->calibration_cache.
18860					txcal_radio_regs_5G[2]);
18861			write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18862					pi->calibration_cache.
18863					txcal_radio_regs_5G[3]);
18864		}
18865
18866		wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18867					  &pi->calibration_cache.
18868					  rxcal_coeffs_5G);
18869	}
18870
18871	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18872		for (coreNum = 0; coreNum <= 1; coreNum++) {
18873
18874			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18875					 LOFT_FINE_I,
18876					 txcal_radio_regs[2 * coreNum]);
18877			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18878					 LOFT_FINE_Q,
18879					 txcal_radio_regs[2 * coreNum + 1]);
18880
18881			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18882					 LOFT_COARSE_I,
18883					 txcal_radio_regs[2 * coreNum + 4]);
18884			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18885					 LOFT_COARSE_Q,
18886					 txcal_radio_regs[2 * coreNum + 5]);
18887		}
18888	}
18889}
18890
18891static void wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy *pi)
18892{
18893	u32 idx;
18894	u16 iqloCalbuf[7];
18895	u32 iqcomp, locomp, curr_locomp;
18896	s8 locomp_i, locomp_q;
18897	s8 curr_locomp_i, curr_locomp_q;
18898	u32 tbl_id, tbl_len, tbl_offset;
18899	u32 regval[128];
18900
18901	if (pi->phyhang_avoid)
18902		wlc_phy_stay_in_carriersearch_nphy(pi, true);
18903
18904	wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
18905
18906	tbl_len = 128;
18907	tbl_offset = 320;
18908	for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18909	     tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18910		iqcomp =
18911			(tbl_id ==
18912			 26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
18913			(iqloCalbuf[1] & 0x3ff)
18914			: (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
18915			(iqloCalbuf[3] & 0x3ff);
18916
18917		for (idx = 0; idx < tbl_len; idx++)
18918			regval[idx] = iqcomp;
18919		wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18920					 regval);
18921	}
18922
18923	tbl_offset = 448;
18924	for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18925	     tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18926
18927		locomp =
18928			(u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
18929		locomp_i = (s8) ((locomp >> 8) & 0xff);
18930		locomp_q = (s8) ((locomp) & 0xff);
18931		for (idx = 0; idx < tbl_len; idx++) {
18932			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18933				curr_locomp_i = locomp_i;
18934				curr_locomp_q = locomp_q;
18935			} else {
18936				curr_locomp_i = (s8) ((locomp_i *
18937						       nphy_tpc_loscale[idx] +
18938						       128) >> 8);
18939				curr_locomp_q =
18940					(s8) ((locomp_q *
18941					       nphy_tpc_loscale[idx] +
18942					       128) >> 8);
18943			}
18944			curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
18945			curr_locomp |= (u32) (curr_locomp_q & 0xff);
18946			regval[idx] = curr_locomp;
18947		}
18948		wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18949					 regval);
18950	}
18951
18952	if (NREV_LT(pi->pubpi.phy_rev, 2)) {
18953
18954		wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
18955		wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
18956	}
18957
18958	if (pi->phyhang_avoid)
18959		wlc_phy_stay_in_carriersearch_nphy(pi, false);
18960}
18961
18962static void wlc_phy_txlpfbw_nphy(struct brcms_phy *pi)
18963{
18964	u8 tx_lpf_bw = 0;
18965
18966	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18967		if (CHSPEC_IS40(pi->radio_chanspec))
18968			tx_lpf_bw = 3;
18969		else
18970			tx_lpf_bw = 1;
18971
18972		if (PHY_IPA(pi)) {
18973			if (CHSPEC_IS40(pi->radio_chanspec))
18974				tx_lpf_bw = 5;
18975			else
18976				tx_lpf_bw = 4;
18977		}
18978
18979		write_phy_reg(pi, 0xe8,
18980			      (tx_lpf_bw << 0) |
18981			      (tx_lpf_bw << 3) |
18982			      (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18983
18984		if (PHY_IPA(pi)) {
18985
18986			if (CHSPEC_IS40(pi->radio_chanspec))
18987				tx_lpf_bw = 4;
18988			else
18989				tx_lpf_bw = 1;
18990
18991			write_phy_reg(pi, 0xe9,
18992				      (tx_lpf_bw << 0) |
18993				      (tx_lpf_bw << 3) |
18994				      (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18995		}
18996	}
18997}
18998
18999static void
19000wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy *pi, u16 reduction_factr)
19001{
19002	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
19003		if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19004		    CHSPEC_IS40(pi->radio_chanspec)) {
19005			if (!pi->nphy_anarxlpf_adjusted) {
19006				write_radio_reg(pi,
19007						(RADIO_2056_RX_RXLPF_RCCAL_LPC |
19008						 RADIO_2056_RX0),
19009						((pi->nphy_rccal_value +
19010						  reduction_factr) | 0x80));
19011
19012				pi->nphy_anarxlpf_adjusted = true;
19013			}
19014		} else {
19015			if (pi->nphy_anarxlpf_adjusted) {
19016				write_radio_reg(pi,
19017						(RADIO_2056_RX_RXLPF_RCCAL_LPC |
19018						 RADIO_2056_RX0),
19019						(pi->nphy_rccal_value | 0x80));
19020
19021				pi->nphy_anarxlpf_adjusted = false;
19022			}
19023		}
19024	}
19025}
19026
19027static void
19028wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy *pi, int ntones,
19029				 int *tone_id_buf, u32 *noise_var_buf)
19030{
19031	int i;
19032	u32 offset;
19033	int tone_id;
19034	int tbllen =
19035		CHSPEC_IS40(pi->radio_chanspec) ?
19036		NPHY_NOISEVAR_TBLLEN40 : NPHY_NOISEVAR_TBLLEN20;
19037
19038	if (pi->nphy_noisevars_adjusted) {
19039		for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
19040			tone_id = pi->nphy_saved_noisevars.tone_id[i];
19041			offset = (tone_id >= 0) ?
19042				 ((tone_id *
19043				   2) + 1) : (tbllen + (tone_id * 2) + 1);
19044			wlc_phy_table_write_nphy(
19045				pi, NPHY_TBL_ID_NOISEVAR, 1,
19046				offset, 32,
19047				&pi->nphy_saved_noisevars.min_noise_vars[i]);
19048		}
19049
19050		pi->nphy_saved_noisevars.bufcount = 0;
19051		pi->nphy_noisevars_adjusted = false;
19052	}
19053
19054	if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
19055		pi->nphy_saved_noisevars.bufcount = 0;
19056
19057		for (i = 0; i < ntones; i++) {
19058			tone_id = tone_id_buf[i];
19059			offset = (tone_id >= 0) ?
19060				 ((tone_id * 2) + 1) :
19061				 (tbllen + (tone_id * 2) + 1);
19062			pi->nphy_saved_noisevars.tone_id[i] = tone_id;
19063			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19064						offset, 32,
19065						&pi->nphy_saved_noisevars.
19066						min_noise_vars[i]);
19067			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19068						 offset, 32, &noise_var_buf[i]);
19069			pi->nphy_saved_noisevars.bufcount++;
19070		}
19071
19072		pi->nphy_noisevars_adjusted = true;
19073	}
19074}
19075
19076static void wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy *pi, u8 minpwr)
19077{
19078	u16 regval;
19079
19080	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19081		if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19082		    CHSPEC_IS40(pi->radio_chanspec)) {
19083			if (!pi->nphy_crsminpwr_adjusted) {
19084				regval = read_phy_reg(pi, 0x27d);
19085				pi->nphy_crsminpwr[0] = regval & 0xff;
19086				regval &= 0xff00;
19087				regval |= (u16) minpwr;
19088				write_phy_reg(pi, 0x27d, regval);
19089
19090				regval = read_phy_reg(pi, 0x280);
19091				pi->nphy_crsminpwr[1] = regval & 0xff;
19092				regval &= 0xff00;
19093				regval |= (u16) minpwr;
19094				write_phy_reg(pi, 0x280, regval);
19095
19096				regval = read_phy_reg(pi, 0x283);
19097				pi->nphy_crsminpwr[2] = regval & 0xff;
19098				regval &= 0xff00;
19099				regval |= (u16) minpwr;
19100				write_phy_reg(pi, 0x283, regval);
19101
19102				pi->nphy_crsminpwr_adjusted = true;
19103			}
19104		} else {
19105			if (pi->nphy_crsminpwr_adjusted) {
19106				regval = read_phy_reg(pi, 0x27d);
19107				regval &= 0xff00;
19108				regval |= pi->nphy_crsminpwr[0];
19109				write_phy_reg(pi, 0x27d, regval);
19110
19111				regval = read_phy_reg(pi, 0x280);
19112				regval &= 0xff00;
19113				regval |= pi->nphy_crsminpwr[1];
19114				write_phy_reg(pi, 0x280, regval);
19115
19116				regval = read_phy_reg(pi, 0x283);
19117				regval &= 0xff00;
19118				regval |= pi->nphy_crsminpwr[2];
19119				write_phy_reg(pi, 0x283, regval);
19120
19121				pi->nphy_crsminpwr_adjusted = false;
19122			}
19123		}
19124	}
19125}
19126
19127static void wlc_phy_spurwar_nphy(struct brcms_phy *pi)
19128{
19129	u16 cur_channel = 0;
19130	int nphy_adj_tone_id_buf[] = { 57, 58 };
19131	u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
19132	bool isAdjustNoiseVar = false;
19133	uint numTonesAdjust = 0;
19134	u32 tempval = 0;
19135
19136	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19137		if (pi->phyhang_avoid)
19138			wlc_phy_stay_in_carriersearch_nphy(pi, true);
19139
19140		cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19141
19142		if (pi->nphy_gband_spurwar_en) {
19143
19144			wlc_phy_adjust_rx_analpfbw_nphy(
19145				pi,
19146				NPHY_ANARXLPFBW_REDUCTIONFACT);
19147
19148			if (CHSPEC_IS2G(pi->radio_chanspec)) {
19149				if ((cur_channel == 11)
19150				    && CHSPEC_IS40(pi->radio_chanspec))
19151					wlc_phy_adjust_min_noisevar_nphy(
19152						pi, 2,
19153						nphy_adj_tone_id_buf,
19154						nphy_adj_noise_var_buf);
19155				else
19156					wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19157									 NULL,
19158									 NULL);
19159			}
19160
19161			wlc_phy_adjust_crsminpwr_nphy(pi,
19162						     NPHY_ADJUSTED_MINCRSPOWER);
19163		}
19164
19165		if ((pi->nphy_gband_spurwar2_en)
19166		    && CHSPEC_IS2G(pi->radio_chanspec)) {
19167
19168			if (CHSPEC_IS40(pi->radio_chanspec)) {
19169				switch (cur_channel) {
19170				case 3:
19171					nphy_adj_tone_id_buf[0] = 57;
19172					nphy_adj_tone_id_buf[1] = 58;
19173					nphy_adj_noise_var_buf[0] = 0x22f;
19174					nphy_adj_noise_var_buf[1] = 0x25f;
19175					isAdjustNoiseVar = true;
19176					break;
19177				case 4:
19178					nphy_adj_tone_id_buf[0] = 41;
19179					nphy_adj_tone_id_buf[1] = 42;
19180					nphy_adj_noise_var_buf[0] = 0x22f;
19181					nphy_adj_noise_var_buf[1] = 0x25f;
19182					isAdjustNoiseVar = true;
19183					break;
19184				case 5:
19185					nphy_adj_tone_id_buf[0] = 25;
19186					nphy_adj_tone_id_buf[1] = 26;
19187					nphy_adj_noise_var_buf[0] = 0x24f;
19188					nphy_adj_noise_var_buf[1] = 0x25f;
19189					isAdjustNoiseVar = true;
19190					break;
19191				case 6:
19192					nphy_adj_tone_id_buf[0] = 9;
19193					nphy_adj_tone_id_buf[1] = 10;
19194					nphy_adj_noise_var_buf[0] = 0x22f;
19195					nphy_adj_noise_var_buf[1] = 0x24f;
19196					isAdjustNoiseVar = true;
19197					break;
19198				case 7:
19199					nphy_adj_tone_id_buf[0] = 121;
19200					nphy_adj_tone_id_buf[1] = 122;
19201					nphy_adj_noise_var_buf[0] = 0x18f;
19202					nphy_adj_noise_var_buf[1] = 0x24f;
19203					isAdjustNoiseVar = true;
19204					break;
19205				case 8:
19206					nphy_adj_tone_id_buf[0] = 105;
19207					nphy_adj_tone_id_buf[1] = 106;
19208					nphy_adj_noise_var_buf[0] = 0x22f;
19209					nphy_adj_noise_var_buf[1] = 0x25f;
19210					isAdjustNoiseVar = true;
19211					break;
19212				case 9:
19213					nphy_adj_tone_id_buf[0] = 89;
19214					nphy_adj_tone_id_buf[1] = 90;
19215					nphy_adj_noise_var_buf[0] = 0x22f;
19216					nphy_adj_noise_var_buf[1] = 0x24f;
19217					isAdjustNoiseVar = true;
19218					break;
19219				case 10:
19220					nphy_adj_tone_id_buf[0] = 73;
19221					nphy_adj_tone_id_buf[1] = 74;
19222					nphy_adj_noise_var_buf[0] = 0x22f;
19223					nphy_adj_noise_var_buf[1] = 0x24f;
19224					isAdjustNoiseVar = true;
19225					break;
19226				default:
19227					isAdjustNoiseVar = false;
19228					break;
19229				}
19230			}
19231
19232			if (isAdjustNoiseVar) {
19233				numTonesAdjust = ARRAY_SIZE(nphy_adj_tone_id_buf);
19234
19235				wlc_phy_adjust_min_noisevar_nphy(
19236					pi,
19237					numTonesAdjust,
19238					nphy_adj_tone_id_buf,
19239					nphy_adj_noise_var_buf);
19240
19241				tempval = 0;
19242
19243			} else {
19244				wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19245								 NULL);
19246			}
19247		}
19248
19249		if ((pi->nphy_aband_spurwar_en) &&
19250		    (CHSPEC_IS5G(pi->radio_chanspec))) {
19251			switch (cur_channel) {
19252			case 54:
19253				nphy_adj_tone_id_buf[0] = 32;
19254				nphy_adj_noise_var_buf[0] = 0x25f;
19255				break;
19256			case 38:
19257			case 102:
19258			case 118:
19259				if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) &&
19260				    (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
19261					nphy_adj_tone_id_buf[0] = 32;
19262					nphy_adj_noise_var_buf[0] = 0x21f;
19263				} else {
19264					nphy_adj_tone_id_buf[0] = 0;
19265					nphy_adj_noise_var_buf[0] = 0x0;
19266				}
19267				break;
19268			case 134:
19269				nphy_adj_tone_id_buf[0] = 32;
19270				nphy_adj_noise_var_buf[0] = 0x21f;
19271				break;
19272			case 151:
19273				nphy_adj_tone_id_buf[0] = 16;
19274				nphy_adj_noise_var_buf[0] = 0x23f;
19275				break;
19276			case 153:
19277			case 161:
19278				nphy_adj_tone_id_buf[0] = 48;
19279				nphy_adj_noise_var_buf[0] = 0x23f;
19280				break;
19281			default:
19282				nphy_adj_tone_id_buf[0] = 0;
19283				nphy_adj_noise_var_buf[0] = 0x0;
19284				break;
19285			}
19286
19287			if (nphy_adj_tone_id_buf[0]
19288			    && nphy_adj_noise_var_buf[0])
19289				wlc_phy_adjust_min_noisevar_nphy(
19290					pi, 1,
19291					nphy_adj_tone_id_buf,
19292					nphy_adj_noise_var_buf);
19293			else
19294				wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19295								 NULL);
19296		}
19297
19298		if (pi->phyhang_avoid)
19299			wlc_phy_stay_in_carriersearch_nphy(pi, false);
19300	}
19301}
19302
19303void wlc_phy_init_nphy(struct brcms_phy *pi)
19304{
19305	u16 val;
19306	u16 clip1_ths[2];
19307	struct nphy_txgains target_gain;
19308	u8 tx_pwr_ctrl_state;
19309	bool do_nphy_cal = false;
19310	uint core;
19311	u32 d11_clk_ctl_st;
19312	bool do_rssi_cal = false;
19313
19314	core = 0;
19315
19316	if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19317		pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19318
19319	if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
19320	    ((pi->sh->chippkg == BCMA_PKG_ID_BCM4717) ||
19321	     (pi->sh->chippkg == BCMA_PKG_ID_BCM4718))) {
19322		if ((pi->sh->boardflags & BFL_EXTLNA) &&
19323		    (CHSPEC_IS2G(pi->radio_chanspec)))
19324			bcma_cc_set32(&pi->d11core->bus->drv_cc,
19325				      BCMA_CC_CHIPCTL, 0x40);
19326	}
19327
19328	if ((!PHY_IPA(pi)) && (pi->sh->chip == BCMA_CHIP_ID_BCM5357))
19329		bcma_chipco_chipctl_maskset(&pi->d11core->bus->drv_cc, 1,
19330					    ~CCTRL5357_EXTPA, CCTRL5357_EXTPA);
19331
19332	if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19333	    CHSPEC_IS40(pi->radio_chanspec)) {
19334
19335		d11_clk_ctl_st = bcma_read32(pi->d11core,
19336					     D11REGOFFS(clk_ctl_st));
19337		bcma_mask32(pi->d11core, D11REGOFFS(clk_ctl_st),
19338			    ~(CCS_FORCEHT | CCS_HTAREQ));
19339
19340		bcma_write32(pi->d11core, D11REGOFFS(clk_ctl_st),
19341			     d11_clk_ctl_st);
19342	}
19343
19344	pi->use_int_tx_iqlo_cal_nphy =
19345		(PHY_IPA(pi) ||
19346		 (NREV_GE(pi->pubpi.phy_rev, 7) ||
19347		  (NREV_GE(pi->pubpi.phy_rev, 5)
19348		   && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19349
19350	pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19351
19352	pi->nphy_deaf_count = 0;
19353
19354	wlc_phy_tbl_init_nphy(pi);
19355
19356	pi->nphy_crsminpwr_adjusted = false;
19357	pi->nphy_noisevars_adjusted = false;
19358
19359	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19360		write_phy_reg(pi, 0xe7, 0);
19361		write_phy_reg(pi, 0xec, 0);
19362		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19363			write_phy_reg(pi, 0x342, 0);
19364			write_phy_reg(pi, 0x343, 0);
19365			write_phy_reg(pi, 0x346, 0);
19366			write_phy_reg(pi, 0x347, 0);
19367		}
19368		write_phy_reg(pi, 0xe5, 0);
19369		write_phy_reg(pi, 0xe6, 0);
19370	} else {
19371		write_phy_reg(pi, 0xec, 0);
19372	}
19373
19374	write_phy_reg(pi, 0x91, 0);
19375	write_phy_reg(pi, 0x92, 0);
19376	if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19377		write_phy_reg(pi, 0x93, 0);
19378		write_phy_reg(pi, 0x94, 0);
19379	}
19380
19381	and_phy_reg(pi, 0xa1, ~3);
19382
19383	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19384		write_phy_reg(pi, 0x8f, 0);
19385		write_phy_reg(pi, 0xa5, 0);
19386	} else {
19387		write_phy_reg(pi, 0xa5, 0);
19388	}
19389
19390	if (NREV_IS(pi->pubpi.phy_rev, 2))
19391		mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19392	else if (NREV_LT(pi->pubpi.phy_rev, 2))
19393		mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19394
19395	write_phy_reg(pi, 0x203, 32);
19396	write_phy_reg(pi, 0x201, 32);
19397
19398	if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19399		write_phy_reg(pi, 0x20d, 160);
19400	else
19401		write_phy_reg(pi, 0x20d, 184);
19402
19403	write_phy_reg(pi, 0x13a, 200);
19404
19405	write_phy_reg(pi, 0x70, 80);
19406
19407	write_phy_reg(pi, 0x1ff, 48);
19408
19409	if (NREV_LT(pi->pubpi.phy_rev, 8))
19410		wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19411
19412	wlc_phy_stf_chain_upd_nphy(pi);
19413
19414	if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19415		write_phy_reg(pi, 0x180, 0xaa8);
19416		write_phy_reg(pi, 0x181, 0x9a4);
19417	}
19418
19419	if (PHY_IPA(pi)) {
19420		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19421
19422			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19423				    0x29b, (0x1 << 0), (1) << 0);
19424
19425			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19426				    0x29c, (0x1ff << 7),
19427				    (pi->nphy_papd_epsilon_offset[core]) << 7);
19428
19429		}
19430
19431		wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19432	} else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19433		wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19434	}
19435
19436	wlc_phy_workarounds_nphy(pi);
19437
19438	wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19439
19440	val = read_phy_reg(pi, 0x01);
19441	write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19442	write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19443	wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19444
19445	wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19446
19447	wlc_phy_pa_override_nphy(pi, OFF);
19448	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19449	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19450	wlc_phy_pa_override_nphy(pi, ON);
19451
19452	wlc_phy_classifier_nphy(pi, 0, 0);
19453	wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19454
19455	if (CHSPEC_IS2G(pi->radio_chanspec))
19456		wlc_phy_bphy_init_nphy(pi);
19457
19458	tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19459	wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19460
19461	wlc_phy_txpwr_fixpower_nphy(pi);
19462
19463	wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19464
19465	wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19466
19467	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19468		u32 *tx_pwrctrl_tbl = NULL;
19469		u16 idx;
19470		s16 pga_gn = 0;
19471		s16 pad_gn = 0;
19472		s32 rfpwr_offset;
19473
19474		if (PHY_IPA(pi)) {
19475			tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19476		} else {
19477			if (CHSPEC_IS5G(pi->radio_chanspec)) {
19478				if (NREV_IS(pi->pubpi.phy_rev, 3))
19479					tx_pwrctrl_tbl =
19480						nphy_tpc_5GHz_txgain_rev3;
19481				else if (NREV_IS(pi->pubpi.phy_rev, 4))
19482					tx_pwrctrl_tbl =
19483						(pi->srom_fem5g.extpagain ==
19484						 3) ?
19485						nphy_tpc_5GHz_txgain_HiPwrEPA :
19486						nphy_tpc_5GHz_txgain_rev4;
19487				else
19488					tx_pwrctrl_tbl =
19489						nphy_tpc_5GHz_txgain_rev5;
19490			} else {
19491				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19492					if (pi->pubpi.radiorev == 5)
19493						tx_pwrctrl_tbl =
19494						   nphy_tpc_txgain_epa_2057rev5;
19495					else if (pi->pubpi.radiorev == 3)
19496						tx_pwrctrl_tbl =
19497						   nphy_tpc_txgain_epa_2057rev3;
19498				} else {
19499					if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19500					    (pi->srom_fem2g.extpagain == 3))
19501						tx_pwrctrl_tbl =
19502						       nphy_tpc_txgain_HiPwrEPA;
19503					else
19504						tx_pwrctrl_tbl =
19505							nphy_tpc_txgain_rev3;
19506				}
19507			}
19508		}
19509
19510		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19511					 192, 32, tx_pwrctrl_tbl);
19512		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19513					 192, 32, tx_pwrctrl_tbl);
19514
19515		pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19516
19517		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19518
19519			for (idx = 0; idx < 128; idx++) {
19520				pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19521				pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19522				rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19523								 pad_gn);
19524				wlc_phy_table_write_nphy(
19525					pi,
19526					NPHY_TBL_ID_CORE1TXPWRCTL,
19527					1, 576 + idx, 32,
19528					&rfpwr_offset);
19529				wlc_phy_table_write_nphy(
19530					pi,
19531					NPHY_TBL_ID_CORE2TXPWRCTL,
19532					1, 576 + idx, 32,
19533					&rfpwr_offset);
19534			}
19535		} else {
19536
19537			for (idx = 0; idx < 128; idx++) {
19538				pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19539				if (CHSPEC_IS2G(pi->radio_chanspec))
19540					rfpwr_offset = (s16)
19541						 nphy_papd_pga_gain_delta_ipa_2g
19542								       [pga_gn];
19543				else
19544					rfpwr_offset = (s16)
19545						 nphy_papd_pga_gain_delta_ipa_5g
19546								       [pga_gn];
19547
19548				wlc_phy_table_write_nphy(
19549					pi,
19550					NPHY_TBL_ID_CORE1TXPWRCTL,
19551					1, 576 + idx, 32,
19552					&rfpwr_offset);
19553				wlc_phy_table_write_nphy(
19554					pi,
19555					NPHY_TBL_ID_CORE2TXPWRCTL,
19556					1, 576 + idx, 32,
19557					&rfpwr_offset);
19558			}
19559
19560		}
19561	} else {
19562
19563		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19564					 192, 32, nphy_tpc_txgain);
19565		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19566					 192, 32, nphy_tpc_txgain);
19567	}
19568
19569	if (pi->sh->phyrxchain != 0x3)
19570		wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19571					     pi->sh->phyrxchain);
19572
19573	if (PHY_PERICAL_MPHASE_PENDING(pi))
19574		wlc_phy_cal_perical_mphase_restart(pi);
19575
19576	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19577		do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19578			      (pi->nphy_rssical_chanspec_2G == 0) :
19579			      (pi->nphy_rssical_chanspec_5G == 0);
19580
19581		if (do_rssi_cal)
19582			wlc_phy_rssi_cal_nphy(pi);
19583		else
19584			wlc_phy_restore_rssical_nphy(pi);
19585	} else {
19586		wlc_phy_rssi_cal_nphy(pi);
19587	}
19588
19589	if (!SCAN_RM_IN_PROGRESS(pi))
19590		do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19591			      (pi->nphy_iqcal_chanspec_2G == 0) :
19592			      (pi->nphy_iqcal_chanspec_5G == 0);
19593
19594	if (!pi->do_initcal)
19595		do_nphy_cal = false;
19596
19597	if (do_nphy_cal) {
19598
19599		target_gain = wlc_phy_get_tx_gain_nphy(pi);
19600
19601		if (pi->antsel_type == ANTSEL_2x3)
19602			wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19603					    true);
19604
19605		if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19606			wlc_phy_rssi_cal_nphy(pi);
19607
19608			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19609				pi->nphy_cal_orig_pwr_idx[0] =
19610					pi->nphy_txpwrindex[PHY_CORE_0]
19611					.
19612					index_internal;
19613				pi->nphy_cal_orig_pwr_idx[1] =
19614					pi->nphy_txpwrindex[PHY_CORE_1]
19615					.
19616					index_internal;
19617
19618				wlc_phy_precal_txgain_nphy(pi);
19619				target_gain =
19620					wlc_phy_get_tx_gain_nphy(pi);
19621			}
19622
19623			if (wlc_phy_cal_txiqlo_nphy
19624				    (pi, target_gain, true,
19625				    false) == 0) {
19626				if (wlc_phy_cal_rxiq_nphy
19627					    (pi, target_gain, 2,
19628					    false) == 0)
19629					wlc_phy_savecal_nphy(pi);
19630
19631			}
19632		} else if (pi->mphase_cal_phase_id ==
19633			   MPHASE_CAL_STATE_IDLE) {
19634			wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19635					    PHY_PERICAL_PHYINIT);
19636		}
19637	} else {
19638		wlc_phy_restorecal_nphy(pi);
19639	}
19640
19641	wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19642
19643	wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19644
19645	wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19646
19647	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19648
19649		write_phy_reg(pi, 0x70, 50);
19650
19651	wlc_phy_txlpfbw_nphy(pi);
19652
19653	wlc_phy_spurwar_nphy(pi);
19654
19655}
19656
19657static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19658{
19659	u16 val;
19660
19661	wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19662
19663	val = read_phy_reg(pi, 0x01);
19664	write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19665	udelay(1);
19666	write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19667
19668	wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19669
19670	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19671}
19672
19673void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19674{
19675	u16 rfctrlintc_override_val;
19676
19677	if (!en) {
19678
19679		pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19680		pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19681
19682		if (NREV_GE(pi->pubpi.phy_rev, 7))
19683			rfctrlintc_override_val = 0x1480;
19684		else if (NREV_GE(pi->pubpi.phy_rev, 3))
19685			rfctrlintc_override_val =
19686				CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19687		else
19688			rfctrlintc_override_val =
19689				CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19690
19691		write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19692		write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19693	} else {
19694		write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19695		write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19696	}
19697
19698}
19699
19700void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19701{
19702
19703	u16 txrx_chain =
19704		(NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19705	bool CoreActv_override = false;
19706
19707	if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19708		txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19709		CoreActv_override = true;
19710
19711		if (NREV_LE(pi->pubpi.phy_rev, 2))
19712			and_phy_reg(pi, 0xa0, ~0x20);
19713	} else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19714		txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19715		CoreActv_override = true;
19716
19717		if (NREV_LE(pi->pubpi.phy_rev, 2))
19718			or_phy_reg(pi, 0xa0, 0x20);
19719	}
19720
19721	mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19722
19723	if (CoreActv_override) {
19724		pi->nphy_perical = PHY_PERICAL_DISABLE;
19725		or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19726	} else {
19727		pi->nphy_perical = PHY_PERICAL_MPHASE;
19728		and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19729	}
19730}
19731
19732void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19733{
19734	u16 regval;
19735	u16 tbl_buf[16];
19736	uint i;
19737	struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19738	u16 tbl_opcode;
19739	bool suspend;
19740
19741	pi->sh->phyrxchain = rxcore_bitmask;
19742
19743	if (!pi->sh->clk)
19744		return;
19745
19746	suspend = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
19747			 MCTL_EN_MAC));
19748	if (!suspend)
19749		wlapi_suspend_mac_and_wait(pi->sh->physhim);
19750
19751	if (pi->phyhang_avoid)
19752		wlc_phy_stay_in_carriersearch_nphy(pi, true);
19753
19754	regval = read_phy_reg(pi, 0xa2);
19755	regval &= ~(0xf << 4);
19756	regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19757	write_phy_reg(pi, 0xa2, regval);
19758
19759	if ((rxcore_bitmask & 0x3) != 0x3) {
19760
19761		write_phy_reg(pi, 0x20e, 1);
19762
19763		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19764			if (pi->rx2tx_biasentry == -1) {
19765				wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19766							ARRAY_SIZE(tbl_buf), 80,
19767							16, tbl_buf);
19768
19769				for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19770					if (tbl_buf[i] ==
19771					    NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19772						pi->rx2tx_biasentry = (u8) i;
19773						tbl_opcode =
19774							NPHY_REV3_RFSEQ_CMD_NOP;
19775						wlc_phy_table_write_nphy(
19776							pi,
19777							NPHY_TBL_ID_RFSEQ,
19778							1, i,
19779							16,
19780							&tbl_opcode);
19781						break;
19782					} else if (tbl_buf[i] ==
19783						   NPHY_REV3_RFSEQ_CMD_END)
19784						break;
19785				}
19786			}
19787		}
19788	} else {
19789
19790		write_phy_reg(pi, 0x20e, 30);
19791
19792		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19793			if (pi->rx2tx_biasentry != -1) {
19794				tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19795				wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19796							 1, pi->rx2tx_biasentry,
19797							 16, &tbl_opcode);
19798				pi->rx2tx_biasentry = -1;
19799			}
19800		}
19801	}
19802
19803	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19804
19805	if (pi->phyhang_avoid)
19806		wlc_phy_stay_in_carriersearch_nphy(pi, false);
19807
19808	if (!suspend)
19809		wlapi_enable_mac(pi->sh->physhim);
19810}
19811
19812u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19813{
19814	u16 regval, rxen_bits;
19815	struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19816
19817	regval = read_phy_reg(pi, 0xa2);
19818	rxen_bits = (regval >> 4) & 0xf;
19819
19820	return (u8) rxen_bits;
19821}
19822
19823bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19824{
19825	return PHY_IPA(pi);
19826}
19827
19828void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19829{
19830}
19831
19832static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19833{
19834
19835	and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
19836	and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
19837
19838	or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
19839	or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
19840
19841}
19842
19843static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
19844{
19845	struct radio_20xx_regs *regs_2057_ptr = NULL;
19846
19847	if (NREV_IS(pi->pubpi.phy_rev, 7)) {
19848		regs_2057_ptr = regs_2057_rev4;
19849	} else if (NREV_IS(pi->pubpi.phy_rev, 8)
19850		   || NREV_IS(pi->pubpi.phy_rev, 9)) {
19851		switch (pi->pubpi.radiorev) {
19852		case 5:
19853
19854			if (NREV_IS(pi->pubpi.phy_rev, 8))
19855				regs_2057_ptr = regs_2057_rev5;
19856			else if (NREV_IS(pi->pubpi.phy_rev, 9))
19857				regs_2057_ptr = regs_2057_rev5v1;
19858			break;
19859
19860		case 7:
19861
19862			regs_2057_ptr = regs_2057_rev7;
19863			break;
19864
19865		case 8:
19866
19867			regs_2057_ptr = regs_2057_rev8;
19868			break;
19869
19870		default:
19871			break;
19872		}
19873	}
19874
19875	wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
19876}
19877
19878static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
19879{
19880	u16 rcal_reg = 0;
19881	int i;
19882
19883	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19884
19885		if (pi->pubpi.radiorev == 5) {
19886
19887			and_phy_reg(pi, 0x342, ~(0x1 << 1));
19888
19889			udelay(10);
19890
19891			mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
19892			mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19893				      0x1);
19894		}
19895		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
19896
19897		udelay(10);
19898
19899		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
19900
19901		for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19902			rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
19903			if (rcal_reg & 0x1)
19904				break;
19905
19906			udelay(100);
19907		}
19908
19909		if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19910			 "HW error: radio calib2"))
19911			return 0;
19912
19913		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
19914
19915		rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
19916
19917		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
19918		if (pi->pubpi.radiorev == 5) {
19919
19920			mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
19921			mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19922				      0x0);
19923		}
19924
19925		if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
19926
19927			mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
19928				      rcal_reg);
19929			mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
19930				      rcal_reg << 2);
19931		}
19932
19933	} else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19934		u16 savereg;
19935
19936		savereg =
19937			read_radio_reg(
19938				pi,
19939				RADIO_2056_SYN_PLL_MAST2 |
19940				RADIO_2056_SYN);
19941		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19942				savereg | 0x7);
19943		udelay(10);
19944
19945		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19946				0x1);
19947		udelay(10);
19948
19949		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19950				0x9);
19951
19952		for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19953			rcal_reg = read_radio_reg(
19954				pi,
19955				RADIO_2056_SYN_RCAL_CODE_OUT |
19956				RADIO_2056_SYN);
19957			if (rcal_reg & 0x80)
19958				break;
19959
19960			udelay(100);
19961		}
19962
19963		if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19964			 "HW error: radio calib3"))
19965			return 0;
19966
19967		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19968				0x1);
19969
19970		rcal_reg =
19971			read_radio_reg(pi,
19972				       RADIO_2056_SYN_RCAL_CODE_OUT |
19973				       RADIO_2056_SYN);
19974
19975		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19976				0x0);
19977
19978		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19979				savereg);
19980
19981		return rcal_reg & 0x1f;
19982	}
19983	return rcal_reg & 0x3e;
19984}
19985
19986static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
19987{
19988	u16 rccal_valid;
19989	int i;
19990	bool chip43226_6362A0;
19991
19992	chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
19993			    || (pi->pubpi.radiorev == 4)
19994			    || (pi->pubpi.radiorev == 6));
19995
19996	rccal_valid = 0;
19997	if (chip43226_6362A0) {
19998		write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
19999		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
20000	} else {
20001		write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
20002
20003		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
20004	}
20005	write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20006	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20007
20008	for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20009		rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20010		if (rccal_valid & 0x2)
20011			break;
20012
20013		udelay(500);
20014	}
20015
20016	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20017
20018	rccal_valid = 0;
20019	if (chip43226_6362A0) {
20020		write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
20021		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20022	} else {
20023		write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
20024
20025		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
20026	}
20027	write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20028	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20029
20030	for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20031		rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20032		if (rccal_valid & 0x2)
20033			break;
20034
20035		udelay(500);
20036	}
20037
20038	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20039
20040	rccal_valid = 0;
20041	if (chip43226_6362A0) {
20042		write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
20043
20044		write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
20045		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20046	} else {
20047		write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
20048		write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20049		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
20050	}
20051	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20052
20053	for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20054		rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20055		if (rccal_valid & 0x2)
20056			break;
20057
20058		udelay(500);
20059	}
20060
20061	if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
20062		return 0;
20063
20064	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20065
20066	return rccal_valid;
20067}
20068
20069static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
20070{
20071
20072	mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
20073
20074	mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
20075	mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
20076	mdelay(2);
20077	mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
20078	mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
20079
20080	if (pi->phy_init_por) {
20081		wlc_phy_radio205x_rcal(pi);
20082		wlc_phy_radio2057_rccal(pi);
20083	}
20084
20085	mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
20086}
20087
20088static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
20089{
20090	const struct radio_regs *regs_SYN_2056_ptr = NULL;
20091	const struct radio_regs *regs_TX_2056_ptr = NULL;
20092	const struct radio_regs *regs_RX_2056_ptr = NULL;
20093
20094	if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20095		regs_SYN_2056_ptr = regs_SYN_2056;
20096		regs_TX_2056_ptr = regs_TX_2056;
20097		regs_RX_2056_ptr = regs_RX_2056;
20098	} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20099		regs_SYN_2056_ptr = regs_SYN_2056_A1;
20100		regs_TX_2056_ptr = regs_TX_2056_A1;
20101		regs_RX_2056_ptr = regs_RX_2056_A1;
20102	} else {
20103		switch (pi->pubpi.radiorev) {
20104		case 5:
20105			regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20106			regs_TX_2056_ptr = regs_TX_2056_rev5;
20107			regs_RX_2056_ptr = regs_RX_2056_rev5;
20108			break;
20109
20110		case 6:
20111			regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20112			regs_TX_2056_ptr = regs_TX_2056_rev6;
20113			regs_RX_2056_ptr = regs_RX_2056_rev6;
20114			break;
20115
20116		case 7:
20117		case 9:
20118			regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20119			regs_TX_2056_ptr = regs_TX_2056_rev7;
20120			regs_RX_2056_ptr = regs_RX_2056_rev7;
20121			break;
20122
20123		case 8:
20124			regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20125			regs_TX_2056_ptr = regs_TX_2056_rev8;
20126			regs_RX_2056_ptr = regs_RX_2056_rev8;
20127			break;
20128
20129		case 11:
20130			regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20131			regs_TX_2056_ptr = regs_TX_2056_rev11;
20132			regs_RX_2056_ptr = regs_RX_2056_rev11;
20133			break;
20134
20135		default:
20136			break;
20137		}
20138	}
20139
20140	wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20141
20142	wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20143
20144	wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20145
20146	wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20147
20148	wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20149}
20150
20151static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20152{
20153	mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20154
20155	mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20156	mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20157	udelay(1000);
20158	mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20159
20160	if ((pi->sh->boardflags2 & BFL2_LEGACY)
20161	    || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20162		mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20163	else
20164		mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20165
20166	mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20167
20168	if (pi->phy_init_por)
20169		wlc_phy_radio205x_rcal(pi);
20170}
20171
20172static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20173{
20174
20175	and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20176	or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20177
20178	or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20179}
20180
20181static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20182{
20183	wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20184}
20185
20186static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20187{
20188
20189	and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20190		      ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20191
20192	if (((pi->sh->sromrev >= 4)
20193	     && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20194	    || ((pi->sh->sromrev < 4))) {
20195		and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20196		and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20197	}
20198
20199	mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20200	write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20201
20202	and_radio_reg(pi, RADIO_2055_CAL_MISC,
20203		      ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20204
20205	or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20206
20207	or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20208
20209	udelay(1000);
20210
20211	or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20212
20213	SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20214		   RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20215
20216	if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20217		  RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20218		 "HW error: radio calibration1\n"))
20219		return;
20220
20221	and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20222		      ~(RADIO_2055_CAL_LPO_ENABLE));
20223
20224	wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20225
20226	write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20227	write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20228
20229	write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20230	write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20231
20232	mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20233		      RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20234	mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20235		      RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20236	if (pi->nphy_gain_boost) {
20237		and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20238			      ~(RADIO_2055_GAINBST_DISABLE));
20239		and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20240			      ~(RADIO_2055_GAINBST_DISABLE));
20241	} else {
20242		or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20243			     RADIO_2055_GAINBST_DISABLE);
20244		or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20245			     RADIO_2055_GAINBST_DISABLE);
20246	}
20247
20248	udelay(2);
20249}
20250
20251void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20252{
20253	if (on) {
20254		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20255			if (!pi->radio_is_on) {
20256				wlc_phy_radio_preinit_205x(pi);
20257				wlc_phy_radio_init_2057(pi);
20258				wlc_phy_radio_postinit_2057(pi);
20259			}
20260
20261			wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20262					     pi->radio_chanspec);
20263		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20264			wlc_phy_radio_preinit_205x(pi);
20265			wlc_phy_radio_init_2056(pi);
20266			wlc_phy_radio_postinit_2056(pi);
20267
20268			wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20269					     pi->radio_chanspec);
20270		} else {
20271			wlc_phy_radio_preinit_2055(pi);
20272			wlc_phy_radio_init_2055(pi);
20273			wlc_phy_radio_postinit_2055(pi);
20274		}
20275
20276		pi->radio_is_on = true;
20277
20278	} else {
20279
20280		if (NREV_GE(pi->pubpi.phy_rev, 3)
20281		    && NREV_LT(pi->pubpi.phy_rev, 7)) {
20282			and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20283			mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20284
20285			write_radio_reg(pi,
20286					RADIO_2056_TX_PADA_BOOST_TUNE |
20287					RADIO_2056_TX0, 0);
20288			write_radio_reg(pi,
20289					RADIO_2056_TX_PADG_BOOST_TUNE |
20290					RADIO_2056_TX0, 0);
20291			write_radio_reg(pi,
20292					RADIO_2056_TX_PGAA_BOOST_TUNE |
20293					RADIO_2056_TX0, 0);
20294			write_radio_reg(pi,
20295					RADIO_2056_TX_PGAG_BOOST_TUNE |
20296					RADIO_2056_TX0, 0);
20297			mod_radio_reg(pi,
20298				      RADIO_2056_TX_MIXA_BOOST_TUNE |
20299				      RADIO_2056_TX0, 0xf0, 0);
20300			write_radio_reg(pi,
20301					RADIO_2056_TX_MIXG_BOOST_TUNE |
20302					RADIO_2056_TX0, 0);
20303
20304			write_radio_reg(pi,
20305					RADIO_2056_TX_PADA_BOOST_TUNE |
20306					RADIO_2056_TX1, 0);
20307			write_radio_reg(pi,
20308					RADIO_2056_TX_PADG_BOOST_TUNE |
20309					RADIO_2056_TX1, 0);
20310			write_radio_reg(pi,
20311					RADIO_2056_TX_PGAA_BOOST_TUNE |
20312					RADIO_2056_TX1, 0);
20313			write_radio_reg(pi,
20314					RADIO_2056_TX_PGAG_BOOST_TUNE |
20315					RADIO_2056_TX1, 0);
20316			mod_radio_reg(pi,
20317				      RADIO_2056_TX_MIXA_BOOST_TUNE |
20318				      RADIO_2056_TX1, 0xf0, 0);
20319			write_radio_reg(pi,
20320					RADIO_2056_TX_MIXG_BOOST_TUNE |
20321					RADIO_2056_TX1, 0);
20322
20323			pi->radio_is_on = false;
20324		}
20325
20326		if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20327			and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20328			pi->radio_is_on = false;
20329		}
20330
20331	}
20332}
20333
20334static bool
20335wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20336		       const struct chan_info_nphy_radio2057 **t0,
20337		       const struct chan_info_nphy_radio205x **t1,
20338		       const struct chan_info_nphy_radio2057_rev5 **t2,
20339		       const struct chan_info_nphy_2055 **t3)
20340{
20341	uint i;
20342	const struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20343	const struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20344	const struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20345	u32 tbl_len = 0;
20346
20347	int freq = 0;
20348
20349	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20350
20351		if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20352
20353			chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20354			tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20355
20356		} else if (NREV_IS(pi->pubpi.phy_rev, 8)
20357			   || NREV_IS(pi->pubpi.phy_rev, 9)) {
20358			switch (pi->pubpi.radiorev) {
20359
20360			case 5:
20361
20362				if (pi->pubpi.radiover == 0x0) {
20363
20364					chan_info_tbl_p_2 =
20365						chan_info_nphyrev8_2057_rev5;
20366					tbl_len = ARRAY_SIZE(
20367						  chan_info_nphyrev8_2057_rev5);
20368
20369				} else if (pi->pubpi.radiover == 0x1) {
20370
20371					chan_info_tbl_p_2 =
20372						chan_info_nphyrev9_2057_rev5v1;
20373					tbl_len = ARRAY_SIZE(
20374						chan_info_nphyrev9_2057_rev5v1);
20375
20376				}
20377				break;
20378
20379			case 7:
20380				chan_info_tbl_p_0 =
20381					chan_info_nphyrev8_2057_rev7;
20382				tbl_len = ARRAY_SIZE(
20383						  chan_info_nphyrev8_2057_rev7);
20384				break;
20385
20386			case 8:
20387				chan_info_tbl_p_0 =
20388					chan_info_nphyrev8_2057_rev8;
20389				tbl_len = ARRAY_SIZE(
20390						  chan_info_nphyrev8_2057_rev8);
20391				break;
20392
20393			default:
20394				break;
20395			}
20396		} else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20397
20398			chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20399			tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20400		} else {
20401			goto fail;
20402		}
20403
20404		for (i = 0; i < tbl_len; i++) {
20405			if (pi->pubpi.radiorev == 5) {
20406
20407				if (chan_info_tbl_p_2[i].chan == channel)
20408					break;
20409			} else {
20410
20411				if (chan_info_tbl_p_0[i].chan == channel)
20412					break;
20413			}
20414		}
20415
20416		if (i >= tbl_len)
20417			goto fail;
20418
20419		if (pi->pubpi.radiorev == 5) {
20420			*t2 = &chan_info_tbl_p_2[i];
20421			freq = chan_info_tbl_p_2[i].freq;
20422		} else {
20423			*t0 = &chan_info_tbl_p_0[i];
20424			freq = chan_info_tbl_p_0[i].freq;
20425		}
20426
20427	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20428		if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20429			chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20430			tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20431		} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20432			chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20433			tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20434		} else if (NREV_IS(pi->pubpi.phy_rev, 5)
20435			   || NREV_IS(pi->pubpi.phy_rev, 6)) {
20436			switch (pi->pubpi.radiorev) {
20437			case 5:
20438				chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20439				tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20440				break;
20441			case 6:
20442				chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20443				tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20444				break;
20445			case 7:
20446			case 9:
20447				chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20448				tbl_len =
20449					ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20450				break;
20451			case 8:
20452				chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20453				tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20454				break;
20455			case 11:
20456				chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20457				tbl_len = ARRAY_SIZE(
20458						    chan_info_nphyrev6_2056v11);
20459				break;
20460			default:
20461				break;
20462			}
20463		}
20464
20465		for (i = 0; i < tbl_len; i++) {
20466			if (chan_info_tbl_p_1[i].chan == channel)
20467				break;
20468		}
20469
20470		if (i >= tbl_len)
20471			goto fail;
20472
20473		*t1 = &chan_info_tbl_p_1[i];
20474		freq = chan_info_tbl_p_1[i].freq;
20475
20476	} else {
20477		for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20478			if (chan_info_nphy_2055[i].chan == channel)
20479				break;
20480
20481		if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20482			goto fail;
20483
20484		*t3 = &chan_info_nphy_2055[i];
20485		freq = chan_info_nphy_2055[i].freq;
20486	}
20487
20488	*f = freq;
20489	return true;
20490
20491fail:
20492	*f = WL_CHAN_FREQ_RANGE_2G;
20493	return false;
20494}
20495
20496u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20497{
20498	int freq;
20499	const struct chan_info_nphy_radio2057 *t0 = NULL;
20500	const struct chan_info_nphy_radio205x *t1 = NULL;
20501	const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20502	const struct chan_info_nphy_2055 *t3 = NULL;
20503
20504	if (channel == 0)
20505		channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20506
20507	wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20508
20509	if (CHSPEC_IS2G(pi->radio_chanspec))
20510		return WL_CHAN_FREQ_RANGE_2G;
20511
20512	if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20513		return WL_CHAN_FREQ_RANGE_5GL;
20514	else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20515		return WL_CHAN_FREQ_RANGE_5GM;
20516	else
20517		return WL_CHAN_FREQ_RANGE_5GH;
20518}
20519
20520static void
20521wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20522				 const struct chan_info_nphy_2055 *ci)
20523{
20524
20525	write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20526	write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20527	write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20528	write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20529
20530	BRCMS_PHY_WAR_PR51571(pi);
20531
20532	write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20533	write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20534	write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20535	write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20536
20537	BRCMS_PHY_WAR_PR51571(pi);
20538
20539	write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20540	write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20541	write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20542	write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20543
20544	BRCMS_PHY_WAR_PR51571(pi);
20545
20546	write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20547			ci->RF_core1_lgbuf_a_tune);
20548	write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20549			ci->RF_core1_lgbuf_g_tune);
20550	write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20551	write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20552			ci->RF_core1_tx_pga_pad_tn);
20553
20554	BRCMS_PHY_WAR_PR51571(pi);
20555
20556	write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20557			ci->RF_core1_tx_mx_bgtrim);
20558	write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20559			ci->RF_core2_lgbuf_a_tune);
20560	write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20561			ci->RF_core2_lgbuf_g_tune);
20562	write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20563
20564	BRCMS_PHY_WAR_PR51571(pi);
20565
20566	write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20567			ci->RF_core2_tx_pga_pad_tn);
20568	write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20569			ci->RF_core2_tx_mx_bgtrim);
20570
20571	udelay(50);
20572
20573	write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20574	write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20575
20576	BRCMS_PHY_WAR_PR51571(pi);
20577
20578	write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20579
20580	udelay(300);
20581}
20582
20583static void
20584wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20585				 const struct chan_info_nphy_radio205x *ci)
20586{
20587	const struct radio_regs *regs_SYN_2056_ptr = NULL;
20588
20589	write_radio_reg(pi,
20590			RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20591			ci->RF_SYN_pll_vcocal1);
20592	write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20593			ci->RF_SYN_pll_vcocal2);
20594	write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20595			ci->RF_SYN_pll_refdiv);
20596	write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20597			ci->RF_SYN_pll_mmd2);
20598	write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20599			ci->RF_SYN_pll_mmd1);
20600	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20601			ci->RF_SYN_pll_loopfilter1);
20602	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20603			ci->RF_SYN_pll_loopfilter2);
20604	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20605			ci->RF_SYN_pll_loopfilter3);
20606	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20607			ci->RF_SYN_pll_loopfilter4);
20608	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20609			ci->RF_SYN_pll_loopfilter5);
20610	write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20611			ci->RF_SYN_reserved_addr27);
20612	write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20613			ci->RF_SYN_reserved_addr28);
20614	write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20615			ci->RF_SYN_reserved_addr29);
20616	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20617			ci->RF_SYN_logen_VCOBUF1);
20618	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20619			ci->RF_SYN_logen_MIXER2);
20620	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20621			ci->RF_SYN_logen_BUF3);
20622	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20623			ci->RF_SYN_logen_BUF4);
20624
20625	write_radio_reg(pi,
20626			RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20627			ci->RF_RX0_lnaa_tune);
20628	write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20629			ci->RF_RX0_lnag_tune);
20630	write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20631			ci->RF_TX0_intpaa_boost_tune);
20632	write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20633			ci->RF_TX0_intpag_boost_tune);
20634	write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20635			ci->RF_TX0_pada_boost_tune);
20636	write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20637			ci->RF_TX0_padg_boost_tune);
20638	write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20639			ci->RF_TX0_pgaa_boost_tune);
20640	write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20641			ci->RF_TX0_pgag_boost_tune);
20642	write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20643			ci->RF_TX0_mixa_boost_tune);
20644	write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20645			ci->RF_TX0_mixg_boost_tune);
20646
20647	write_radio_reg(pi,
20648			RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20649			ci->RF_RX1_lnaa_tune);
20650	write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20651			ci->RF_RX1_lnag_tune);
20652	write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20653			ci->RF_TX1_intpaa_boost_tune);
20654	write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20655			ci->RF_TX1_intpag_boost_tune);
20656	write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20657			ci->RF_TX1_pada_boost_tune);
20658	write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20659			ci->RF_TX1_padg_boost_tune);
20660	write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20661			ci->RF_TX1_pgaa_boost_tune);
20662	write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20663			ci->RF_TX1_pgag_boost_tune);
20664	write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20665			ci->RF_TX1_mixa_boost_tune);
20666	write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20667			ci->RF_TX1_mixg_boost_tune);
20668
20669	if (NREV_IS(pi->pubpi.phy_rev, 3))
20670		regs_SYN_2056_ptr = regs_SYN_2056;
20671	else if (NREV_IS(pi->pubpi.phy_rev, 4))
20672		regs_SYN_2056_ptr = regs_SYN_2056_A1;
20673	else {
20674		switch (pi->pubpi.radiorev) {
20675		case 5:
20676			regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20677			break;
20678		case 6:
20679			regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20680			break;
20681		case 7:
20682		case 9:
20683			regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20684			break;
20685		case 8:
20686			regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20687			break;
20688		case 11:
20689			regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20690			break;
20691		}
20692	}
20693	if (CHSPEC_IS2G(pi->radio_chanspec))
20694		write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20695				RADIO_2056_SYN,
20696				(u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20697	else
20698		write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20699				RADIO_2056_SYN,
20700				(u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20701
20702	if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20703		if (CHSPEC_IS2G(pi->radio_chanspec)) {
20704			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20705					RADIO_2056_SYN, 0x1f);
20706			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20707					RADIO_2056_SYN, 0x1f);
20708
20709			if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20710			    (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20711				write_radio_reg(pi,
20712						RADIO_2056_SYN_PLL_LOOPFILTER4 |
20713						RADIO_2056_SYN, 0x14);
20714				write_radio_reg(pi,
20715						RADIO_2056_SYN_PLL_CP2 |
20716						RADIO_2056_SYN, 0x00);
20717			} else {
20718				write_radio_reg(pi,
20719						RADIO_2056_SYN_PLL_LOOPFILTER4 |
20720						RADIO_2056_SYN, 0xb);
20721				write_radio_reg(pi,
20722						RADIO_2056_SYN_PLL_CP2 |
20723						RADIO_2056_SYN, 0x14);
20724			}
20725		}
20726	}
20727
20728	if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20729	    (CHSPEC_IS2G(pi->radio_chanspec))) {
20730		write_radio_reg(pi,
20731				RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20732				0x1f);
20733		write_radio_reg(pi,
20734				RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20735				0x1f);
20736		write_radio_reg(pi,
20737				RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20738				0xb);
20739		write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20740				0x20);
20741	}
20742
20743	if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20744		if (CHSPEC_IS5G(pi->radio_chanspec)) {
20745			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20746					RADIO_2056_SYN, 0x1f);
20747			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20748					RADIO_2056_SYN, 0x1f);
20749			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20750					RADIO_2056_SYN, 0x5);
20751			write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20752					RADIO_2056_SYN, 0xc);
20753		}
20754	}
20755
20756	if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20757		u16 pag_boost_tune;
20758		u16 padg_boost_tune;
20759		u16 pgag_boost_tune;
20760		u16 mixg_boost_tune;
20761		u16 bias, cascbias;
20762		uint core;
20763
20764		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20765
20766			if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20767
20768				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20769						 PADG_IDAC, 0xcc);
20770
20771				if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20772				    (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20773					bias = 0x40;
20774					cascbias = 0x45;
20775					pag_boost_tune = 0x5;
20776					pgag_boost_tune = 0x33;
20777					padg_boost_tune = 0x77;
20778					mixg_boost_tune = 0x55;
20779				} else {
20780					bias = 0x25;
20781					cascbias = 0x20;
20782
20783					if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20784					     pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20785					    pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC) {
20786						bias = 0x2a;
20787						cascbias = 0x38;
20788					}
20789
20790					pag_boost_tune = 0x4;
20791					pgag_boost_tune = 0x03;
20792					padg_boost_tune = 0x77;
20793					mixg_boost_tune = 0x65;
20794				}
20795
20796				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20797						 INTPAG_IMAIN_STAT, bias);
20798				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20799						 INTPAG_IAUX_STAT, bias);
20800				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20801						 INTPAG_CASCBIAS, cascbias);
20802
20803				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20804						 INTPAG_BOOST_TUNE,
20805						 pag_boost_tune);
20806				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20807						 PGAG_BOOST_TUNE,
20808						 pgag_boost_tune);
20809				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20810						 PADG_BOOST_TUNE,
20811						 padg_boost_tune);
20812				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20813						 MIXG_BOOST_TUNE,
20814						 mixg_boost_tune);
20815			} else {
20816
20817				bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20818				       0x40 : 0x20;
20819
20820				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20821						 INTPAG_IMAIN_STAT, bias);
20822				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20823						 INTPAG_IAUX_STAT, bias);
20824				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20825						 INTPAG_CASCBIAS, 0x30);
20826			}
20827			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20828					 0xee);
20829		}
20830	}
20831
20832	if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20833	    && CHSPEC_IS5G(pi->radio_chanspec)) {
20834		u16 paa_boost_tune;
20835		u16 pada_boost_tune;
20836		u16 pgaa_boost_tune;
20837		u16 mixa_boost_tune;
20838		u16 freq, pabias, cascbias;
20839		uint core;
20840
20841		freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20842
20843		if (freq < 5150) {
20844
20845			paa_boost_tune = 0xa;
20846			pada_boost_tune = 0x77;
20847			pgaa_boost_tune = 0xf;
20848			mixa_boost_tune = 0xf;
20849		} else if (freq < 5340) {
20850
20851			paa_boost_tune = 0x8;
20852			pada_boost_tune = 0x77;
20853			pgaa_boost_tune = 0xfb;
20854			mixa_boost_tune = 0xf;
20855		} else if (freq < 5650) {
20856
20857			paa_boost_tune = 0x0;
20858			pada_boost_tune = 0x77;
20859			pgaa_boost_tune = 0xb;
20860			mixa_boost_tune = 0xf;
20861		} else {
20862
20863			paa_boost_tune = 0x0;
20864			pada_boost_tune = 0x77;
20865			if (freq != 5825)
20866				pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
20867			else
20868				pgaa_boost_tune = 6;
20869
20870			mixa_boost_tune = 0xf;
20871		}
20872
20873		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20874			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20875					 INTPAA_BOOST_TUNE, paa_boost_tune);
20876			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20877					 PADA_BOOST_TUNE, pada_boost_tune);
20878			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20879					 PGAA_BOOST_TUNE, pgaa_boost_tune);
20880			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20881					 MIXA_BOOST_TUNE, mixa_boost_tune);
20882
20883			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20884					 TXSPARE1, 0x30);
20885			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20886					 PA_SPARE2, 0xee);
20887
20888			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20889					 PADA_CASCBIAS, 0x3);
20890
20891			cascbias = 0x30;
20892
20893			if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20894			     pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20895			    pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC)
20896				cascbias = 0x35;
20897
20898			pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
20899
20900			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20901					 INTPAA_IAUX_STAT, pabias);
20902			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20903					 INTPAA_IMAIN_STAT, pabias);
20904			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20905					 INTPAA_CASCBIAS, cascbias);
20906		}
20907	}
20908
20909	udelay(50);
20910
20911	wlc_phy_radio205x_vcocal_nphy(pi);
20912}
20913
20914void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
20915{
20916	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20917		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
20918		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
20919		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
20920			      (1 << 2));
20921		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
20922	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20923		write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
20924		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20925		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
20926		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20927		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
20928	}
20929
20930	udelay(300);
20931}
20932
20933static void
20934wlc_phy_chanspec_radio2057_setup(
20935	struct brcms_phy *pi,
20936	const struct chan_info_nphy_radio2057 *ci,
20937	const struct chan_info_nphy_radio2057_rev5 *
20938	ci2)
20939{
20940	int coreNum;
20941	u16 txmix2g_tune_boost_pu = 0;
20942	u16 pad2g_tune_pus = 0;
20943
20944	if (pi->pubpi.radiorev == 5) {
20945
20946		write_radio_reg(pi,
20947				RADIO_2057_VCOCAL_COUNTVAL0,
20948				ci2->RF_vcocal_countval0);
20949		write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20950				ci2->RF_vcocal_countval1);
20951		write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20952				ci2->RF_rfpll_refmaster_sparextalsize);
20953		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20954				ci2->RF_rfpll_loopfilter_r1);
20955		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20956				ci2->RF_rfpll_loopfilter_c2);
20957		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20958				ci2->RF_rfpll_loopfilter_c1);
20959		write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
20960				ci2->RF_cp_kpd_idac);
20961		write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
20962		write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
20963		write_radio_reg(pi,
20964				RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
20965		write_radio_reg(pi,
20966				RADIO_2057_LOGEN_MX2G_TUNE,
20967				ci2->RF_logen_mx2g_tune);
20968		write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20969				ci2->RF_logen_indbuf2g_tune);
20970
20971		write_radio_reg(pi,
20972				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20973				ci2->RF_txmix2g_tune_boost_pu_core0);
20974		write_radio_reg(pi,
20975				RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20976				ci2->RF_pad2g_tune_pus_core0);
20977		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20978				ci2->RF_lna2g_tune_core0);
20979
20980		write_radio_reg(pi,
20981				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20982				ci2->RF_txmix2g_tune_boost_pu_core1);
20983		write_radio_reg(pi,
20984				RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20985				ci2->RF_pad2g_tune_pus_core1);
20986		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20987				ci2->RF_lna2g_tune_core1);
20988
20989	} else {
20990
20991		write_radio_reg(pi,
20992				RADIO_2057_VCOCAL_COUNTVAL0,
20993				ci->RF_vcocal_countval0);
20994		write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20995				ci->RF_vcocal_countval1);
20996		write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20997				ci->RF_rfpll_refmaster_sparextalsize);
20998		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20999				ci->RF_rfpll_loopfilter_r1);
21000		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21001				ci->RF_rfpll_loopfilter_c2);
21002		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21003				ci->RF_rfpll_loopfilter_c1);
21004		write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
21005		write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
21006		write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
21007		write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
21008		write_radio_reg(pi,
21009				RADIO_2057_LOGEN_MX2G_TUNE,
21010				ci->RF_logen_mx2g_tune);
21011		write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
21012				ci->RF_logen_mx5g_tune);
21013		write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
21014				ci->RF_logen_indbuf2g_tune);
21015		write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
21016				ci->RF_logen_indbuf5g_tune);
21017
21018		write_radio_reg(pi,
21019				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
21020				ci->RF_txmix2g_tune_boost_pu_core0);
21021		write_radio_reg(pi,
21022				RADIO_2057_PAD2G_TUNE_PUS_CORE0,
21023				ci->RF_pad2g_tune_pus_core0);
21024		write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
21025				ci->RF_pga_boost_tune_core0);
21026		write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
21027				ci->RF_txmix5g_boost_tune_core0);
21028		write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
21029				ci->RF_pad5g_tune_misc_pus_core0);
21030		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
21031				ci->RF_lna2g_tune_core0);
21032		write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
21033				ci->RF_lna5g_tune_core0);
21034
21035		write_radio_reg(pi,
21036				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
21037				ci->RF_txmix2g_tune_boost_pu_core1);
21038		write_radio_reg(pi,
21039				RADIO_2057_PAD2G_TUNE_PUS_CORE1,
21040				ci->RF_pad2g_tune_pus_core1);
21041		write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
21042				ci->RF_pga_boost_tune_core1);
21043		write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
21044				ci->RF_txmix5g_boost_tune_core1);
21045		write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
21046				ci->RF_pad5g_tune_misc_pus_core1);
21047		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
21048				ci->RF_lna2g_tune_core1);
21049		write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
21050				ci->RF_lna5g_tune_core1);
21051	}
21052
21053	if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
21054
21055		if (CHSPEC_IS2G(pi->radio_chanspec)) {
21056			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21057					0x3f);
21058			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21059			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21060					0x8);
21061			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21062					0x8);
21063		} else {
21064			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21065					0x1f);
21066			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21067			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21068					0x8);
21069			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21070					0x8);
21071		}
21072	} else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
21073		   (pi->pubpi.radiorev == 8)) {
21074
21075		if (CHSPEC_IS2G(pi->radio_chanspec)) {
21076			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21077					0x1b);
21078			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
21079			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21080					0xa);
21081			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21082					0xa);
21083		} else {
21084			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21085					0x1f);
21086			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21087			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21088					0x8);
21089			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21090					0x8);
21091		}
21092
21093	}
21094
21095	if (CHSPEC_IS2G(pi->radio_chanspec)) {
21096		if (PHY_IPA(pi)) {
21097			if (pi->pubpi.radiorev == 3)
21098				txmix2g_tune_boost_pu = 0x6b;
21099
21100			if (pi->pubpi.radiorev == 5)
21101				pad2g_tune_pus = 0x73;
21102
21103		} else {
21104			if (pi->pubpi.radiorev != 5) {
21105				pad2g_tune_pus = 0x3;
21106
21107				txmix2g_tune_boost_pu = 0x61;
21108			}
21109		}
21110
21111		for (coreNum = 0; coreNum <= 1; coreNum++) {
21112
21113			if (txmix2g_tune_boost_pu != 0)
21114				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21115						 TXMIX2G_TUNE_BOOST_PU,
21116						 txmix2g_tune_boost_pu);
21117
21118			if (pad2g_tune_pus != 0)
21119				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21120						 PAD2G_TUNE_PUS,
21121						 pad2g_tune_pus);
21122		}
21123	}
21124
21125	udelay(50);
21126
21127	wlc_phy_radio205x_vcocal_nphy(pi);
21128}
21129
21130static void
21131wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21132			    const struct nphy_sfo_cfg *ci)
21133{
21134	u16 val;
21135
21136	val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21137	if (CHSPEC_IS5G(chanspec) && !val) {
21138
21139		val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21140		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21141		      (val | MAC_PHY_FORCE_CLK));
21142
21143		or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21144			   (BBCFG_RESETCCA | BBCFG_RESETRX));
21145
21146		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21147
21148		or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21149	} else if (!CHSPEC_IS5G(chanspec) && val) {
21150
21151		and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21152
21153		val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21154		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21155		      (val | MAC_PHY_FORCE_CLK));
21156
21157		and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21158			    (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
21159
21160		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21161	}
21162
21163	write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21164	write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21165	write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21166
21167	write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21168	write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21169	write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21170
21171	if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21172		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21173
21174		or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21175	} else {
21176		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21177					NPHY_ClassifierCtrl_ofdm_en);
21178
21179		if (CHSPEC_IS2G(chanspec))
21180			and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21181	}
21182
21183	if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21184		wlc_phy_txpwr_fixpower_nphy(pi);
21185
21186	if (NREV_LT(pi->pubpi.phy_rev, 3))
21187		wlc_phy_adjust_lnagaintbl_nphy(pi);
21188
21189	wlc_phy_txlpfbw_nphy(pi);
21190
21191	if (NREV_GE(pi->pubpi.phy_rev, 3)
21192	    && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21193		u8 spuravoid = 0;
21194
21195		val = CHSPEC_CHANNEL(chanspec);
21196		if (!CHSPEC_IS40(pi->radio_chanspec)) {
21197			if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21198				if ((val == 13) || (val == 14) || (val == 153))
21199					spuravoid = 1;
21200			} else if (((val >= 5) && (val <= 8)) || (val == 13)
21201				   || (val == 14)) {
21202				spuravoid = 1;
21203			}
21204		} else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21205			if (val == 54)
21206				spuravoid = 1;
21207		} else if (pi->nphy_aband_spurwar_en &&
21208		    ((val == 38) || (val == 102) || (val == 118))) {
21209			if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716)
21210			    && (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
21211				spuravoid = 0;
21212			} else {
21213				spuravoid = 1;
21214			}
21215		}
21216
21217		if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21218			spuravoid = 1;
21219
21220		if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21221		    (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21222			bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21223						     spuravoid);
21224		} else {
21225			wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
21226			bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21227						     spuravoid);
21228			wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21229		}
21230
21231		if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224) ||
21232		    (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21233			if (spuravoid == 1) {
21234				bcma_write16(pi->d11core,
21235					     D11REGOFFS(tsf_clk_frac_l),
21236					     0x5341);
21237				bcma_write16(pi->d11core,
21238					     D11REGOFFS(tsf_clk_frac_h), 0x8);
21239			} else {
21240				bcma_write16(pi->d11core,
21241					     D11REGOFFS(tsf_clk_frac_l),
21242					     0x8889);
21243				bcma_write16(pi->d11core,
21244					     D11REGOFFS(tsf_clk_frac_h), 0x8);
21245			}
21246		}
21247
21248		if (!((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21249		      (pi->sh->chip == BCMA_CHIP_ID_BCM47162)))
21250			wlapi_bmac_core_phypll_reset(pi->sh->physhim);
21251
21252		mod_phy_reg(pi, 0x01, (0x1 << 15),
21253			    ((spuravoid > 0) ? (0x1 << 15) : 0));
21254
21255		wlc_phy_resetcca_nphy(pi);
21256
21257		pi->phy_isspuravoid = (spuravoid > 0);
21258	}
21259
21260	if (NREV_LT(pi->pubpi.phy_rev, 7))
21261		write_phy_reg(pi, 0x17e, 0x3830);
21262
21263	wlc_phy_spurwar_nphy(pi);
21264}
21265
21266void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21267{
21268	int freq;
21269	const struct chan_info_nphy_radio2057 *t0 = NULL;
21270	const struct chan_info_nphy_radio205x *t1 = NULL;
21271	const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21272	const struct chan_info_nphy_2055 *t3 = NULL;
21273
21274	if (!wlc_phy_chan2freq_nphy
21275		    (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21276		return;
21277
21278	wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21279
21280	if (CHSPEC_BW(chanspec) != pi->bw)
21281		wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21282
21283	if (CHSPEC_IS40(chanspec)) {
21284		if (CHSPEC_SB_UPPER(chanspec)) {
21285			or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21286			if (NREV_GE(pi->pubpi.phy_rev, 7))
21287				or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21288		} else {
21289			and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21290			if (NREV_GE(pi->pubpi.phy_rev, 7))
21291				and_phy_reg(pi, 0x310,
21292					    (~PRIM_SEL_UP20 & 0xffff));
21293		}
21294	}
21295
21296	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21297		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21298
21299			if ((pi->pubpi.radiorev <= 4)
21300			    || (pi->pubpi.radiorev == 6)) {
21301				mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21302					      0x2,
21303					      (CHSPEC_IS5G(chanspec) ? (1 << 1)
21304					       : 0));
21305				mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21306					      0x2,
21307					      (CHSPEC_IS5G(chanspec) ? (1 << 1)
21308					       : 0));
21309			}
21310
21311			wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21312			wlc_phy_chanspec_nphy_setup(pi, chanspec,
21313				(pi->pubpi.radiorev == 5) ?
21314				(const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21315				(const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21316
21317		} else {
21318
21319			mod_radio_reg(pi,
21320				      RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21321				      0x4,
21322				      (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21323			wlc_phy_chanspec_radio2056_setup(pi, t1);
21324
21325			wlc_phy_chanspec_nphy_setup(pi, chanspec,
21326				(const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21327		}
21328
21329	} else {
21330
21331		mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21332			      (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21333			       : (0x05 << 4)));
21334
21335		wlc_phy_chanspec_radio2055_setup(pi, t3);
21336		wlc_phy_chanspec_nphy_setup(pi, chanspec,
21337					    (const struct nphy_sfo_cfg *)
21338					     &(t3->PHY_BW1a));
21339	}
21340
21341}
21342
21343void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21344{
21345	struct brcms_phy *pi = container_of(ppi, struct brcms_phy, pubpi_ro);
21346	u16 mask = 0xfc00;
21347	u32 mc = 0;
21348
21349	if (NREV_GE(pi->pubpi.phy_rev, 7))
21350		return;
21351
21352	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21353		u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21354
21355		if (!lut_init)
21356			return;
21357
21358		if (pi->srom_fem2g.antswctrllut == 0) {
21359			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21360						 1, 0x02, 16, &v0);
21361			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21362						 1, 0x03, 16, &v1);
21363			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21364						 1, 0x08, 16, &v2);
21365			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21366						 1, 0x0C, 16, &v3);
21367		}
21368
21369		if (pi->srom_fem5g.antswctrllut == 0) {
21370			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21371						 1, 0x12, 16, &v0);
21372			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21373						 1, 0x13, 16, &v1);
21374			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21375						 1, 0x18, 16, &v2);
21376			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21377						 1, 0x1C, 16, &v3);
21378		}
21379	} else {
21380
21381		write_phy_reg(pi, 0xc8, 0x0);
21382		write_phy_reg(pi, 0xc9, 0x0);
21383
21384		bcma_chipco_gpio_control(&pi->d11core->bus->drv_cc, mask, mask);
21385
21386		mc = bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
21387		mc &= ~MCTL_GPOUT_SEL_MASK;
21388		bcma_write32(pi->d11core, D11REGOFFS(maccontrol), mc);
21389
21390		bcma_set16(pi->d11core, D11REGOFFS(psm_gpio_oe), mask);
21391
21392		bcma_mask16(pi->d11core, D11REGOFFS(psm_gpio_out), ~mask);
21393
21394		if (lut_init) {
21395			write_phy_reg(pi, 0xf8, 0x02d8);
21396			write_phy_reg(pi, 0xf9, 0x0301);
21397			write_phy_reg(pi, 0xfa, 0x02d8);
21398			write_phy_reg(pi, 0xfb, 0x0301);
21399		}
21400	}
21401}
21402
21403u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21404{
21405	u16 curr_ctl, new_ctl;
21406	bool suspended = false;
21407
21408	if (D11REV_IS(pi->sh->corerev, 16)) {
21409		suspended = (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
21410			     MCTL_EN_MAC) ? false : true;
21411		if (!suspended)
21412			wlapi_suspend_mac_and_wait(pi->sh->physhim);
21413	}
21414
21415	curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21416
21417	new_ctl = (curr_ctl & (~mask)) | (val & mask);
21418
21419	mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21420
21421	if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21422		wlapi_enable_mac(pi->sh->physhim);
21423
21424	return new_ctl;
21425}
21426
21427void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21428{
21429	u16 trigger_mask, status_mask;
21430	u16 orig_RfseqCoreActv;
21431
21432	switch (cmd) {
21433	case NPHY_RFSEQ_RX2TX:
21434		trigger_mask = NPHY_RfseqTrigger_rx2tx;
21435		status_mask = NPHY_RfseqStatus_rx2tx;
21436		break;
21437	case NPHY_RFSEQ_TX2RX:
21438		trigger_mask = NPHY_RfseqTrigger_tx2rx;
21439		status_mask = NPHY_RfseqStatus_tx2rx;
21440		break;
21441	case NPHY_RFSEQ_RESET2RX:
21442		trigger_mask = NPHY_RfseqTrigger_reset2rx;
21443		status_mask = NPHY_RfseqStatus_reset2rx;
21444		break;
21445	case NPHY_RFSEQ_UPDATEGAINH:
21446		trigger_mask = NPHY_RfseqTrigger_updategainh;
21447		status_mask = NPHY_RfseqStatus_updategainh;
21448		break;
21449	case NPHY_RFSEQ_UPDATEGAINL:
21450		trigger_mask = NPHY_RfseqTrigger_updategainl;
21451		status_mask = NPHY_RfseqStatus_updategainl;
21452		break;
21453	case NPHY_RFSEQ_UPDATEGAINU:
21454		trigger_mask = NPHY_RfseqTrigger_updategainu;
21455		status_mask = NPHY_RfseqStatus_updategainu;
21456		break;
21457	default:
21458		return;
21459	}
21460
21461	orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21462	or_phy_reg(pi, 0xa1,
21463		   (NPHY_RfseqMode_CoreActv_override |
21464		    NPHY_RfseqMode_Trigger_override));
21465	or_phy_reg(pi, 0xa3, trigger_mask);
21466	SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21467	write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21468	WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21469}
21470
21471static void
21472wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21473				     u8 core_mask, u8 off)
21474{
21475	u16 rfmxgain = 0, lpfgain = 0;
21476	u16 tgain = 0;
21477
21478	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21479
21480		switch (cmd) {
21481		case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21482			wlc_phy_rfctrl_override_nphy_rev7(
21483				pi, (0x1 << 5),
21484				value, core_mask, off,
21485				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21486			wlc_phy_rfctrl_override_nphy_rev7(
21487				pi, (0x1 << 4), value,
21488				core_mask, off,
21489				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21490			wlc_phy_rfctrl_override_nphy_rev7(
21491				pi, (0x1 << 3), value,
21492				core_mask, off,
21493				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21494			break;
21495		case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21496			wlc_phy_rfctrl_override_nphy_rev7(
21497				pi, (0x1 << 2),
21498				value, core_mask, off,
21499				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21500			wlc_phy_rfctrl_override_nphy_rev7(
21501				pi, (0x1 << 1), value,
21502				core_mask, off,
21503				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21504			wlc_phy_rfctrl_override_nphy_rev7(
21505				pi, (0x1 << 0), value,
21506				core_mask, off,
21507				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21508			wlc_phy_rfctrl_override_nphy_rev7(
21509				pi, (0x1 << 1), value,
21510				core_mask, off,
21511				NPHY_REV7_RFCTRLOVERRIDE_ID2);
21512			wlc_phy_rfctrl_override_nphy_rev7(
21513				pi, (0x1 << 11), 0,
21514				core_mask, off,
21515				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21516			break;
21517		case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21518			wlc_phy_rfctrl_override_nphy_rev7(
21519				pi, (0x1 << 2),
21520				value, core_mask, off,
21521				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21522			wlc_phy_rfctrl_override_nphy_rev7(
21523				pi, (0x1 << 1), value,
21524				core_mask, off,
21525				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21526			wlc_phy_rfctrl_override_nphy_rev7(
21527				pi, (0x1 << 0), value,
21528				core_mask, off,
21529				NPHY_REV7_RFCTRLOVERRIDE_ID2);
21530			wlc_phy_rfctrl_override_nphy_rev7(
21531				pi, (0x1 << 2), value,
21532				core_mask, off,
21533				NPHY_REV7_RFCTRLOVERRIDE_ID2);
21534			wlc_phy_rfctrl_override_nphy_rev7(
21535				pi, (0x1 << 11), 1,
21536				core_mask, off,
21537				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21538			break;
21539		case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21540			rfmxgain = value & 0x000ff;
21541			lpfgain = value & 0x0ff00;
21542			lpfgain = lpfgain >> 8;
21543
21544			wlc_phy_rfctrl_override_nphy_rev7(
21545				pi, (0x1 << 11),
21546				rfmxgain, core_mask,
21547				off,
21548				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21549			wlc_phy_rfctrl_override_nphy_rev7(
21550				pi, (0x3 << 13),
21551				lpfgain, core_mask,
21552				off,
21553				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21554			break;
21555		case NPHY_REV7_RfctrlOverride_cmd_txgain:
21556			tgain = value & 0x7fff;
21557			lpfgain = value & 0x8000;
21558			lpfgain = lpfgain >> 14;
21559
21560			wlc_phy_rfctrl_override_nphy_rev7(
21561				pi, (0x1 << 12),
21562				tgain, core_mask, off,
21563				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21564			wlc_phy_rfctrl_override_nphy_rev7(
21565				pi, (0x1 << 13),
21566				lpfgain, core_mask,
21567				off,
21568				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21569			break;
21570		}
21571	}
21572}
21573
21574static void
21575wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21576			       u8 coresel, u8 rail, u8 rssi_type)
21577{
21578	u16 valuetostuff;
21579
21580	offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21581		 NPHY_RSSICAL_MAXREAD : offset;
21582	offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21583		 -NPHY_RSSICAL_MAXREAD - 1 : offset;
21584
21585	valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21586
21587	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21588	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21589	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21590		write_phy_reg(pi, 0x1a6, valuetostuff);
21591
21592	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21593	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21594	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21595		write_phy_reg(pi, 0x1ac, valuetostuff);
21596
21597	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21598	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21599	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21600		write_phy_reg(pi, 0x1b2, valuetostuff);
21601
21602	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21603	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21604	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21605		write_phy_reg(pi, 0x1b8, valuetostuff);
21606
21607	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21608	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21609	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21610		write_phy_reg(pi, 0x1a4, valuetostuff);
21611
21612	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21613	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21614	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21615		write_phy_reg(pi, 0x1aa, valuetostuff);
21616
21617	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21618	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21619	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21620		write_phy_reg(pi, 0x1b0, valuetostuff);
21621
21622	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21623	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21624	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21625		write_phy_reg(pi, 0x1b6, valuetostuff);
21626
21627	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21628	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21629	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21630		write_phy_reg(pi, 0x1a5, valuetostuff);
21631	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21632	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21633	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21634		write_phy_reg(pi, 0x1ab, valuetostuff);
21635
21636	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21637	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21638	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21639		write_phy_reg(pi, 0x1b1, valuetostuff);
21640
21641	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21642	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21643	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21644		write_phy_reg(pi, 0x1b7, valuetostuff);
21645
21646	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21647	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21648	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21649		write_phy_reg(pi, 0x1a7, valuetostuff);
21650	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21651	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21652	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21653		write_phy_reg(pi, 0x1ad, valuetostuff);
21654	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21655	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21656	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21657		write_phy_reg(pi, 0x1b3, valuetostuff);
21658	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21659	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21660	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21661		write_phy_reg(pi, 0x1b9, valuetostuff);
21662
21663	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21664	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21665	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21666		write_phy_reg(pi, 0x1a8, valuetostuff);
21667
21668	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21669	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21670	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21671		write_phy_reg(pi, 0x1ae, valuetostuff);
21672
21673	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21674	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21675	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21676		write_phy_reg(pi, 0x1b4, valuetostuff);
21677
21678	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21679	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21680	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21681		write_phy_reg(pi, 0x1ba, valuetostuff);
21682
21683	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21684	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21685	    (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21686		write_phy_reg(pi, 0x1a9, valuetostuff);
21687	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21688	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21689	    (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21690		write_phy_reg(pi, 0x1b5, valuetostuff);
21691
21692	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21693	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21694	    (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21695		write_phy_reg(pi, 0x1af, valuetostuff);
21696
21697	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21698	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21699	    (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21700		write_phy_reg(pi, 0x1bb, valuetostuff);
21701}
21702
21703static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21704{
21705	if (PHY_IPA(pi)) {
21706		if (NREV_GE(pi->pubpi.phy_rev, 7))
21707			write_radio_reg(pi,
21708					((core == PHY_CORE_0) ?
21709					 RADIO_2057_TX0_TX_SSI_MUX :
21710					 RADIO_2057_TX1_TX_SSI_MUX),
21711					(CHSPEC_IS5G(pi->radio_chanspec) ?
21712					0xc : 0xe));
21713		else
21714			write_radio_reg(pi,
21715					RADIO_2056_TX_TX_SSI_MUX |
21716					((core == PHY_CORE_0) ?
21717					 RADIO_2056_TX0 : RADIO_2056_TX1),
21718					(CHSPEC_IS5G(pi->radio_chanspec) ?
21719					0xc : 0xe));
21720	} else {
21721		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21722			write_radio_reg(pi,
21723					((core == PHY_CORE_0) ?
21724					 RADIO_2057_TX0_TX_SSI_MUX :
21725					 RADIO_2057_TX1_TX_SSI_MUX),
21726					0x11);
21727
21728			if (pi->pubpi.radioid == BCM2057_ID)
21729				write_radio_reg(pi,
21730						RADIO_2057_IQTEST_SEL_PU, 0x1);
21731
21732		} else {
21733			write_radio_reg(pi,
21734					RADIO_2056_TX_TX_SSI_MUX |
21735					((core == PHY_CORE_0) ?
21736					 RADIO_2056_TX0 : RADIO_2056_TX1),
21737					0x11);
21738		}
21739	}
21740}
21741
21742void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21743{
21744	u16 mask, val;
21745	u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21746	    startseq;
21747	u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21748	    rfctrlovr_trigger_val;
21749	u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21750	u16 rfctrlcmd_val, rfctrlovr_val;
21751	u8 core;
21752
21753	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21754		if (core_code == RADIO_MIMO_CORESEL_OFF) {
21755			mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21756			mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21757
21758			mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21759			mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21760
21761			mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21762			mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21763
21764			mask = (0x1 << 2) |
21765			       (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21766			mod_phy_reg(pi, 0xf9, mask, 0);
21767			mod_phy_reg(pi, 0xfb, mask, 0);
21768
21769		} else {
21770			for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21771				if (core_code == RADIO_MIMO_CORESEL_CORE1
21772				    && core == PHY_CORE_1)
21773					continue;
21774				else if (core_code == RADIO_MIMO_CORESEL_CORE2
21775					 && core == PHY_CORE_0)
21776					continue;
21777
21778				mod_phy_reg(pi, (core == PHY_CORE_0) ?
21779					    0x8f : 0xa5, (0x1 << 9), 1 << 9);
21780
21781				if (rssi_type == NPHY_RSSI_SEL_W1 ||
21782				    rssi_type == NPHY_RSSI_SEL_W2 ||
21783				    rssi_type == NPHY_RSSI_SEL_NB) {
21784					mod_phy_reg(pi,
21785						    (core ==
21786						     PHY_CORE_0) ? 0xa6 : 0xa7,
21787						    (0x3 << 8), 0);
21788
21789					mask = (0x1 << 2) |
21790					       (0x1 << 3) |
21791					       (0x1 << 4) | (0x1 << 5);
21792					mod_phy_reg(pi,
21793						    (core ==
21794						     PHY_CORE_0) ? 0xf9 : 0xfb,
21795						    mask, 0);
21796
21797					if (rssi_type == NPHY_RSSI_SEL_W1) {
21798						if (CHSPEC_IS5G(
21799							  pi->radio_chanspec)) {
21800							mask = (0x1 << 2);
21801							val = 1 << 2;
21802						} else {
21803							mask = (0x1 << 3);
21804							val = 1 << 3;
21805						}
21806					} else if (rssi_type ==
21807						   NPHY_RSSI_SEL_W2) {
21808						mask = (0x1 << 4);
21809						val = 1 << 4;
21810					} else {
21811						mask = (0x1 << 5);
21812						val = 1 << 5;
21813					}
21814					mod_phy_reg(pi,
21815						    (core ==
21816						     PHY_CORE_0) ? 0xf9 : 0xfb,
21817						    mask, val);
21818
21819					mask = (0x1 << 5);
21820					val = 1 << 5;
21821					mod_phy_reg(pi, (core == PHY_CORE_0) ?
21822						    0xe5 : 0xe6, mask, val);
21823				} else {
21824					if (rssi_type == NPHY_RSSI_SEL_TBD) {
21825						mask = (0x3 << 8);
21826						val = 1 << 8;
21827						mod_phy_reg(pi,
21828							    (core ==
21829							     PHY_CORE_0) ? 0xa6
21830							    : 0xa7, mask, val);
21831						mask = (0x3 << 10);
21832						val = 1 << 10;
21833						mod_phy_reg(pi,
21834							    (core ==
21835							     PHY_CORE_0) ? 0xa6
21836							    : 0xa7, mask, val);
21837					} else if (rssi_type ==
21838						   NPHY_RSSI_SEL_IQ) {
21839						mask = (0x3 << 8);
21840						val = 2 << 8;
21841						mod_phy_reg(pi,
21842							    (core ==
21843							     PHY_CORE_0) ? 0xa6
21844							    : 0xa7, mask, val);
21845						mask = (0x3 << 10);
21846						val = 2 << 10;
21847						mod_phy_reg(pi,
21848							    (core ==
21849							     PHY_CORE_0) ? 0xa6
21850							    : 0xa7, mask, val);
21851					} else {
21852						mask = (0x3 << 8);
21853						val = 3 << 8;
21854						mod_phy_reg(pi,
21855							    (core ==
21856							     PHY_CORE_0) ? 0xa6
21857							    : 0xa7, mask, val);
21858						mask = (0x3 << 10);
21859						val = 3 << 10;
21860						mod_phy_reg(pi,
21861							    (core ==
21862							     PHY_CORE_0) ? 0xa6
21863							    : 0xa7, mask, val);
21864						brcms_phy_wr_tx_mux(pi, core);
21865						afectrlovr_rssi_val = 1 << 9;
21866						mod_phy_reg(pi,
21867							   (core ==
21868							    PHY_CORE_0) ? 0x8f
21869							   : 0xa5, (0x1 << 9),
21870							   afectrlovr_rssi_val);
21871					}
21872				}
21873			}
21874		}
21875	} else {
21876
21877		if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21878		    (rssi_type == NPHY_RSSI_SEL_W2) ||
21879		    (rssi_type == NPHY_RSSI_SEL_NB))
21880			val = 0x0;
21881		else if (rssi_type == NPHY_RSSI_SEL_TBD)
21882			val = 0x1;
21883		else if (rssi_type == NPHY_RSSI_SEL_IQ)
21884			val = 0x2;
21885		else
21886			val = 0x3;
21887
21888		mask = ((0x3 << 12) | (0x3 << 14));
21889		val = (val << 12) | (val << 14);
21890		mod_phy_reg(pi, 0xa6, mask, val);
21891		mod_phy_reg(pi, 0xa7, mask, val);
21892
21893		if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21894		    (rssi_type == NPHY_RSSI_SEL_W2) ||
21895		    (rssi_type == NPHY_RSSI_SEL_NB)) {
21896			if (rssi_type == NPHY_RSSI_SEL_W1)
21897				val = 0x1;
21898			if (rssi_type == NPHY_RSSI_SEL_W2)
21899				val = 0x2;
21900			if (rssi_type == NPHY_RSSI_SEL_NB)
21901				val = 0x3;
21902
21903			mask = (0x3 << 4);
21904			val = (val << 4);
21905			mod_phy_reg(pi, 0x7a, mask, val);
21906			mod_phy_reg(pi, 0x7d, mask, val);
21907		}
21908
21909		if (core_code == RADIO_MIMO_CORESEL_OFF) {
21910			afectrlovr_rssi_val = 0;
21911			rfctrlcmd_rxen_val = 0;
21912			rfctrlcmd_coresel_val = 0;
21913			rfctrlovr_rssi_val = 0;
21914			rfctrlovr_rxen_val = 0;
21915			rfctrlovr_coresel_val = 0;
21916			rfctrlovr_trigger_val = 0;
21917			startseq = 0;
21918		} else {
21919			afectrlovr_rssi_val = 1;
21920			rfctrlcmd_rxen_val = 1;
21921			rfctrlcmd_coresel_val = core_code;
21922			rfctrlovr_rssi_val = 1;
21923			rfctrlovr_rxen_val = 1;
21924			rfctrlovr_coresel_val = 1;
21925			rfctrlovr_trigger_val = 1;
21926			startseq = 1;
21927		}
21928
21929		afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
21930		afectrlovr_rssi_val = (afectrlovr_rssi_val <<
21931				       12) | (afectrlovr_rssi_val << 13);
21932		mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
21933			    afectrlovr_rssi_val);
21934
21935		if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21936		    (rssi_type == NPHY_RSSI_SEL_W2) ||
21937		    (rssi_type == NPHY_RSSI_SEL_NB)) {
21938			rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
21939			rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
21940					(rfctrlcmd_coresel_val << 3);
21941
21942			rfctrlovr_mask = ((0x1 << 5) |
21943					  (0x1 << 12) |
21944					  (0x1 << 1) | (0x1 << 0));
21945			rfctrlovr_val = (rfctrlovr_rssi_val <<
21946					 5) |
21947					(rfctrlovr_rxen_val << 12) |
21948					(rfctrlovr_coresel_val << 1) |
21949					(rfctrlovr_trigger_val << 0);
21950
21951			mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
21952			mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
21953
21954			mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
21955			udelay(20);
21956
21957			mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
21958		}
21959	}
21960}
21961
21962int
21963wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
21964		       u8 nsamps)
21965{
21966	s16 rssi0, rssi1;
21967	u16 afectrlCore1_save = 0;
21968	u16 afectrlCore2_save = 0;
21969	u16 afectrlOverride1_save = 0;
21970	u16 afectrlOverride2_save = 0;
21971	u16 rfctrlOverrideAux0_save = 0;
21972	u16 rfctrlOverrideAux1_save = 0;
21973	u16 rfctrlMiscReg1_save = 0;
21974	u16 rfctrlMiscReg2_save = 0;
21975	u16 rfctrlcmd_save = 0;
21976	u16 rfctrloverride_save = 0;
21977	u16 rfctrlrssiothers1_save = 0;
21978	u16 rfctrlrssiothers2_save = 0;
21979	s8 tmp_buf[4];
21980	u8 ctr = 0, samp = 0;
21981	s32 rssi_out_val;
21982	u16 gpiosel_orig;
21983
21984	afectrlCore1_save = read_phy_reg(pi, 0xa6);
21985	afectrlCore2_save = read_phy_reg(pi, 0xa7);
21986	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21987		rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
21988		rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
21989		afectrlOverride1_save = read_phy_reg(pi, 0x8f);
21990		afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21991		rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
21992		rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
21993	} else {
21994		afectrlOverride1_save = read_phy_reg(pi, 0xa5);
21995		rfctrlcmd_save = read_phy_reg(pi, 0x78);
21996		rfctrloverride_save = read_phy_reg(pi, 0xec);
21997		rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
21998		rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
21999	}
22000
22001	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22002
22003	gpiosel_orig = read_phy_reg(pi, 0xca);
22004	if (NREV_LT(pi->pubpi.phy_rev, 2))
22005		write_phy_reg(pi, 0xca, 5);
22006
22007	for (ctr = 0; ctr < 4; ctr++)
22008		rssi_buf[ctr] = 0;
22009
22010	for (samp = 0; samp < nsamps; samp++) {
22011		if (NREV_LT(pi->pubpi.phy_rev, 2)) {
22012			rssi0 = read_phy_reg(pi, 0x1c9);
22013			rssi1 = read_phy_reg(pi, 0x1ca);
22014		} else {
22015			rssi0 = read_phy_reg(pi, 0x219);
22016			rssi1 = read_phy_reg(pi, 0x21a);
22017		}
22018
22019		ctr = 0;
22020		tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
22021		tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
22022		tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
22023		tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
22024
22025		for (ctr = 0; ctr < 4; ctr++)
22026			rssi_buf[ctr] += tmp_buf[ctr];
22027
22028	}
22029
22030	rssi_out_val = rssi_buf[3] & 0xff;
22031	rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
22032	rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
22033	rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
22034
22035	if (NREV_LT(pi->pubpi.phy_rev, 2))
22036		write_phy_reg(pi, 0xca, gpiosel_orig);
22037
22038	write_phy_reg(pi, 0xa6, afectrlCore1_save);
22039	write_phy_reg(pi, 0xa7, afectrlCore2_save);
22040	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22041		write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
22042		write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
22043		write_phy_reg(pi, 0x8f, afectrlOverride1_save);
22044		write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22045		write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
22046		write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
22047	} else {
22048		write_phy_reg(pi, 0xa5, afectrlOverride1_save);
22049		write_phy_reg(pi, 0x78, rfctrlcmd_save);
22050		write_phy_reg(pi, 0xec, rfctrloverride_save);
22051		write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
22052		write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
22053	}
22054
22055	return rssi_out_val;
22056}
22057
22058s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
22059{
22060	u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
22061	u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
22062	u16 pwrdet_rxtx_core1_save;
22063	u16 pwrdet_rxtx_core2_save;
22064	u16 afectrlCore1_save;
22065	u16 afectrlCore2_save;
22066	u16 afectrlOverride_save;
22067	u16 afectrlOverride2_save;
22068	u16 pd_pll_ts_save;
22069	u16 gpioSel_save;
22070	s32 radio_temp[4];
22071	s32 radio_temp2[4];
22072	u16 syn_tempprocsense_save;
22073	s16 offset = 0;
22074
22075	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22076		u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
22077		u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
22078		u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
22079		s32 auxADC_Vl;
22080		u16 RfctrlOverride5_save, RfctrlOverride6_save;
22081		u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
22082		u16 RSSIMultCoef0QPowerDet_save;
22083		u16 tempsense_Rcal;
22084
22085		syn_tempprocsense_save =
22086			read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
22087
22088		afectrlCore1_save = read_phy_reg(pi, 0xa6);
22089		afectrlCore2_save = read_phy_reg(pi, 0xa7);
22090		afectrlOverride_save = read_phy_reg(pi, 0x8f);
22091		afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22092		RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
22093		RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22094		RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22095		RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22096		RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22097
22098		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22099					&auxADC_Vmid_save);
22100		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22101					&auxADC_Av_save);
22102		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22103					&auxADC_rssi_ctrlL_save);
22104		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22105					&auxADC_rssi_ctrlH_save);
22106
22107		write_phy_reg(pi, 0x1ae, 0x0);
22108
22109		auxADC_rssi_ctrlL = 0x0;
22110		auxADC_rssi_ctrlH = 0x20;
22111		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22112					 &auxADC_rssi_ctrlL);
22113		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22114					 &auxADC_rssi_ctrlH);
22115
22116		tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22117
22118		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22119				tempsense_Rcal | 0x01);
22120
22121		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22122						  1, 0, 0,
22123						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
22124		mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22125		mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22126		mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22127		mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22128
22129		mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22130		mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22131		mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22132		mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22133		udelay(5);
22134		mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22135		mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22136		mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22137		mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22138		mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22139		mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22140		mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22141		mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22142		mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22143		mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22144
22145		auxADC_Vmid = 0xA3;
22146		auxADC_Av = 0x0;
22147		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22148					 &auxADC_Vmid);
22149		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22150					 &auxADC_Av);
22151
22152		udelay(3);
22153
22154		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22155		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22156				tempsense_Rcal | 0x03);
22157
22158		udelay(5);
22159		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22160
22161		auxADC_Av = 0x7;
22162		if (radio_temp[1] + radio_temp2[1] < -30) {
22163			auxADC_Vmid = 0x45;
22164			auxADC_Vl = 263;
22165		} else if (radio_temp[1] + radio_temp2[1] < -9) {
22166			auxADC_Vmid = 0x200;
22167			auxADC_Vl = 467;
22168		} else if (radio_temp[1] + radio_temp2[1] < 11) {
22169			auxADC_Vmid = 0x266;
22170			auxADC_Vl = 634;
22171		} else {
22172			auxADC_Vmid = 0x2D5;
22173			auxADC_Vl = 816;
22174		}
22175
22176		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22177					 &auxADC_Vmid);
22178		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22179					 &auxADC_Av);
22180
22181		udelay(3);
22182
22183		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22184		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22185				tempsense_Rcal | 0x01);
22186
22187		udelay(5);
22188		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22189
22190		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22191				syn_tempprocsense_save);
22192
22193		write_phy_reg(pi, 0xa6, afectrlCore1_save);
22194		write_phy_reg(pi, 0xa7, afectrlCore2_save);
22195		write_phy_reg(pi, 0x8f, afectrlOverride_save);
22196		write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22197		write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22198		write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22199		write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22200		write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22201		write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22202
22203		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22204					 &auxADC_Vmid_save);
22205		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22206					 &auxADC_Av_save);
22207		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22208					 &auxADC_rssi_ctrlL_save);
22209		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22210					 &auxADC_rssi_ctrlH_save);
22211
22212		if (pi->sh->chip == BCMA_CHIP_ID_BCM5357) {
22213			radio_temp[0] = (193 * (radio_temp[1] + radio_temp2[1])
22214					 + 88 * (auxADC_Vl) - 27111 +
22215					 128) / 256;
22216		} else {
22217			radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22218					 + 82 * (auxADC_Vl) - 28861 +
22219					 128) / 256;
22220		}
22221
22222		offset = (s16) pi->phy_tempsense_offset;
22223
22224	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22225		syn_tempprocsense_save =
22226			read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22227
22228		afectrlCore1_save = read_phy_reg(pi, 0xa6);
22229		afectrlCore2_save = read_phy_reg(pi, 0xa7);
22230		afectrlOverride_save = read_phy_reg(pi, 0x8f);
22231		afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22232		gpioSel_save = read_phy_reg(pi, 0xca);
22233
22234		write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22235
22236		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22237		if (NREV_LT(pi->pubpi.phy_rev, 7))
22238			write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22239
22240		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22241		if (NREV_GE(pi->pubpi.phy_rev, 7))
22242			write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22243		else
22244			write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22245
22246		radio_temp[0] =
22247			(126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22248
22249		write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22250				syn_tempprocsense_save);
22251
22252		write_phy_reg(pi, 0xca, gpioSel_save);
22253		write_phy_reg(pi, 0xa6, afectrlCore1_save);
22254		write_phy_reg(pi, 0xa7, afectrlCore2_save);
22255		write_phy_reg(pi, 0x8f, afectrlOverride_save);
22256		write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22257
22258		offset = (s16) pi->phy_tempsense_offset;
22259	} else {
22260
22261		pwrdet_rxtx_core1_save =
22262			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22263		pwrdet_rxtx_core2_save =
22264			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22265		core1_txrf_iqcal1_save =
22266			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22267		core1_txrf_iqcal2_save =
22268			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22269		core2_txrf_iqcal1_save =
22270			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22271		core2_txrf_iqcal2_save =
22272			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22273		pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22274
22275		afectrlCore1_save = read_phy_reg(pi, 0xa6);
22276		afectrlCore2_save = read_phy_reg(pi, 0xa7);
22277		afectrlOverride_save = read_phy_reg(pi, 0xa5);
22278		gpioSel_save = read_phy_reg(pi, 0xca);
22279
22280		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22281		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22282		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22283		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22284		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22285		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22286		write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22287
22288		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22289		xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22290
22291		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22292		xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22293
22294		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22295		xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22296
22297		radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22298		radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22299		radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22300		radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22301
22302		radio_temp[0] =
22303			(radio_temp[0] + radio_temp[1] + radio_temp[2] +
22304			 radio_temp[3]);
22305
22306		radio_temp[0] =
22307			(radio_temp[0] +
22308			 (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22309
22310		radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22311
22312		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22313				pwrdet_rxtx_core1_save);
22314		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22315				pwrdet_rxtx_core2_save);
22316		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22317				core1_txrf_iqcal1_save);
22318		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22319				core2_txrf_iqcal1_save);
22320		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22321				core1_txrf_iqcal2_save);
22322		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22323				core2_txrf_iqcal2_save);
22324		write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22325
22326		write_phy_reg(pi, 0xca, gpioSel_save);
22327		write_phy_reg(pi, 0xa6, afectrlCore1_save);
22328		write_phy_reg(pi, 0xa7, afectrlCore2_save);
22329		write_phy_reg(pi, 0xa5, afectrlOverride_save);
22330	}
22331
22332	return (s16) radio_temp[0] + offset;
22333}
22334
22335static void
22336wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22337{
22338	u8 core;
22339
22340	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22341		if (rssi_type == NPHY_RSSI_SEL_NB) {
22342			if (core == PHY_CORE_0) {
22343				mod_radio_reg(pi,
22344					      RADIO_2055_CORE1_B0_NBRSSI_VCM,
22345					      RADIO_2055_NBRSSI_VCM_I_MASK,
22346					      vcm_buf[2 *
22347						      core] <<
22348					      RADIO_2055_NBRSSI_VCM_I_SHIFT);
22349				mod_radio_reg(pi,
22350					      RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22351					      RADIO_2055_NBRSSI_VCM_Q_MASK,
22352					      vcm_buf[2 * core +
22353						      1] <<
22354					      RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22355			} else {
22356				mod_radio_reg(pi,
22357					      RADIO_2055_CORE2_B0_NBRSSI_VCM,
22358					      RADIO_2055_NBRSSI_VCM_I_MASK,
22359					      vcm_buf[2 *
22360						      core] <<
22361					      RADIO_2055_NBRSSI_VCM_I_SHIFT);
22362				mod_radio_reg(pi,
22363					      RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22364					      RADIO_2055_NBRSSI_VCM_Q_MASK,
22365					      vcm_buf[2 * core +
22366						      1] <<
22367					      RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22368			}
22369		} else {
22370			if (core == PHY_CORE_0)
22371				mod_radio_reg(pi,
22372					      RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22373					      RADIO_2055_WBRSSI_VCM_IQ_MASK,
22374					      vcm_buf[2 *
22375						      core] <<
22376					      RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22377			else
22378				mod_radio_reg(pi,
22379					      RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22380					      RADIO_2055_WBRSSI_VCM_IQ_MASK,
22381					      vcm_buf[2 *
22382						      core] <<
22383					      RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22384		}
22385	}
22386}
22387
22388static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22389{
22390	u16 classif_state;
22391	u16 clip_state[2];
22392	u16 clip_off[] = { 0xffff, 0xffff };
22393	s32 target_code;
22394	u8 vcm, min_vcm;
22395	u8 vcm_final = 0;
22396	u8 result_idx;
22397	s32 poll_results[8][4] = {
22398		{0, 0, 0, 0},
22399		{0, 0, 0, 0},
22400		{0, 0, 0, 0},
22401		{0, 0, 0, 0},
22402		{0, 0, 0, 0},
22403		{0, 0, 0, 0},
22404		{0, 0, 0, 0},
22405		{0, 0, 0, 0}
22406	};
22407	s32 poll_result_core[4] = { 0, 0, 0, 0 };
22408	s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22409	s32 fine_digital_offset[4];
22410	s32 poll_results_min[4] = { 0, 0, 0, 0 };
22411	s32 min_poll;
22412	u8 vcm_level_max;
22413	u8 core;
22414	u8 wb_cnt;
22415	u8 rssi_type;
22416	u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22417	u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22418	u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22419	u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22420	u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22421	u16 NPHY_RfctrlCmd_save;
22422	u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22423	u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22424	u8 rxcore_state;
22425	u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22426	u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22427	u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22428	u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22429
22430	NPHY_REV7_RfctrlOverride3_save =
22431		NPHY_REV7_RfctrlOverride4_save =
22432		NPHY_REV7_RfctrlOverride5_save =
22433		NPHY_REV7_RfctrlOverride6_save =
22434		NPHY_REV7_RfctrlMiscReg3_save =
22435		NPHY_REV7_RfctrlMiscReg4_save =
22436		NPHY_REV7_RfctrlMiscReg5_save =
22437		NPHY_REV7_RfctrlMiscReg6_save = 0;
22438
22439	classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22440	wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22441	wlc_phy_clip_det_nphy(pi, 0, clip_state);
22442	wlc_phy_clip_det_nphy(pi, 1, clip_off);
22443
22444	NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22445	NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22446	NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22447	NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22448	NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22449	NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22450	NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22451	NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22452	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22453		NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22454		NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22455		NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22456		NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22457	}
22458	NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22459	NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22460	NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22461	NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22462	NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22463	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22464		NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22465		NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22466		NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22467		NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22468	}
22469	NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22470	NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22471
22472	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22473					 RADIO_MIMO_CORESEL_ALLRXTX);
22474	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22475					 RADIO_MIMO_CORESEL_ALLRXTX);
22476
22477	if (NREV_GE(pi->pubpi.phy_rev, 7))
22478		wlc_phy_rfctrl_override_1tomany_nphy(
22479			pi,
22480			NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22481			0, 0, 0);
22482	else
22483		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22484
22485	if (NREV_GE(pi->pubpi.phy_rev, 7))
22486		wlc_phy_rfctrl_override_1tomany_nphy(
22487			pi,
22488			NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22489			1, 0, 0);
22490	else
22491		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22492
22493	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22494		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22495						  1, 0, 0,
22496						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
22497		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22498						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
22499	} else {
22500		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22501		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22502	}
22503
22504	if (CHSPEC_IS5G(pi->radio_chanspec)) {
22505		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22506			wlc_phy_rfctrl_override_nphy_rev7(
22507				pi, (0x1 << 5),
22508				0, 0, 0,
22509				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22510			wlc_phy_rfctrl_override_nphy_rev7(
22511				pi, (0x1 << 4), 1, 0,
22512				0,
22513				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22514		} else {
22515			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22516			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22517		}
22518
22519	} else {
22520		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22521			wlc_phy_rfctrl_override_nphy_rev7(
22522				pi, (0x1 << 4),
22523				0, 0, 0,
22524				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22525			wlc_phy_rfctrl_override_nphy_rev7(
22526				pi, (0x1 << 5), 1, 0,
22527				0,
22528				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22529		} else {
22530			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22531			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22532		}
22533	}
22534
22535	rxcore_state = wlc_phy_rxcore_getstate_nphy(
22536		(struct brcms_phy_pub *) pi);
22537
22538	vcm_level_max = 8;
22539
22540	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22541
22542		if ((rxcore_state & (1 << core)) == 0)
22543			continue;
22544
22545		wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22546					       core ==
22547					       PHY_CORE_0 ?
22548					       RADIO_MIMO_CORESEL_CORE1 :
22549					       RADIO_MIMO_CORESEL_CORE2,
22550					       NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22551		wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22552					       core ==
22553					       PHY_CORE_0 ?
22554					       RADIO_MIMO_CORESEL_CORE1 :
22555					       RADIO_MIMO_CORESEL_CORE2,
22556					       NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22557
22558		for (vcm = 0; vcm < vcm_level_max; vcm++) {
22559			if (NREV_GE(pi->pubpi.phy_rev, 7))
22560				mod_radio_reg(pi, (core == PHY_CORE_0) ?
22561					      RADIO_2057_NB_MASTER_CORE0 :
22562					      RADIO_2057_NB_MASTER_CORE1,
22563					      RADIO_2057_VCM_MASK, vcm);
22564			else
22565				mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22566					      ((core ==
22567						PHY_CORE_0) ? RADIO_2056_RX0 :
22568					       RADIO_2056_RX1),
22569					      RADIO_2056_VCM_MASK,
22570					      vcm << RADIO_2056_RSSI_VCM_SHIFT);
22571
22572			wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22573					       &poll_results[vcm][0],
22574					       NPHY_RSSICAL_NPOLL);
22575		}
22576
22577		for (result_idx = 0; result_idx < 4; result_idx++) {
22578			if ((core == result_idx / 2) &&
22579			    (result_idx % 2 == 0)) {
22580
22581				min_d = NPHY_RSSICAL_MAXD;
22582				min_vcm = 0;
22583				min_poll =
22584					NPHY_RSSICAL_MAXREAD *
22585					NPHY_RSSICAL_NPOLL + 1;
22586				for (vcm = 0; vcm < vcm_level_max; vcm++) {
22587					curr_d =
22588						poll_results[vcm][result_idx] *
22589						poll_results[vcm][result_idx] +
22590						poll_results[vcm][result_idx +
22591								  1] *
22592						poll_results[vcm][result_idx +
22593								  1];
22594					if (curr_d < min_d) {
22595						min_d = curr_d;
22596						min_vcm = vcm;
22597					}
22598					if (poll_results[vcm][result_idx] <
22599					    min_poll)
22600						min_poll =
22601							poll_results[vcm]
22602							[result_idx];
22603				}
22604				vcm_final = min_vcm;
22605				poll_results_min[result_idx] = min_poll;
22606			}
22607		}
22608
22609		if (NREV_GE(pi->pubpi.phy_rev, 7))
22610			mod_radio_reg(pi, (core == PHY_CORE_0) ?
22611				      RADIO_2057_NB_MASTER_CORE0 :
22612				      RADIO_2057_NB_MASTER_CORE1,
22613				      RADIO_2057_VCM_MASK, vcm_final);
22614		else
22615			mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22616				      ((core ==
22617					PHY_CORE_0) ? RADIO_2056_RX0 :
22618				       RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22619				      vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22620
22621		for (result_idx = 0; result_idx < 4; result_idx++) {
22622			if (core == result_idx / 2) {
22623				fine_digital_offset[result_idx] =
22624					(NPHY_RSSICAL_NB_TARGET *
22625					 NPHY_RSSICAL_NPOLL) -
22626					poll_results[vcm_final][result_idx];
22627				if (fine_digital_offset[result_idx] < 0) {
22628					fine_digital_offset[result_idx] =
22629						abs(fine_digital_offset
22630						    [result_idx]);
22631					fine_digital_offset[result_idx] +=
22632						(NPHY_RSSICAL_NPOLL / 2);
22633					fine_digital_offset[result_idx] /=
22634						NPHY_RSSICAL_NPOLL;
22635					fine_digital_offset[result_idx] =
22636						-fine_digital_offset[
22637								    result_idx];
22638				} else {
22639					fine_digital_offset[result_idx] +=
22640						(NPHY_RSSICAL_NPOLL / 2);
22641					fine_digital_offset[result_idx] /=
22642						NPHY_RSSICAL_NPOLL;
22643				}
22644
22645				if (poll_results_min[result_idx] ==
22646				    NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22647					fine_digital_offset[result_idx] =
22648						(NPHY_RSSICAL_NB_TARGET -
22649						 NPHY_RSSICAL_MAXREAD - 1);
22650
22651				wlc_phy_scale_offset_rssi_nphy(
22652					pi, 0x0,
22653					(s8)
22654					fine_digital_offset
22655					[result_idx],
22656					(result_idx / 2 == 0) ?
22657					RADIO_MIMO_CORESEL_CORE1 :
22658					RADIO_MIMO_CORESEL_CORE2,
22659					(result_idx % 2 == 0) ?
22660					NPHY_RAIL_I : NPHY_RAIL_Q,
22661					NPHY_RSSI_SEL_NB);
22662			}
22663		}
22664
22665	}
22666
22667	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22668
22669		if ((rxcore_state & (1 << core)) == 0)
22670			continue;
22671
22672		for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22673			if (wb_cnt == 0) {
22674				rssi_type = NPHY_RSSI_SEL_W1;
22675				target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22676			} else {
22677				rssi_type = NPHY_RSSI_SEL_W2;
22678				target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22679			}
22680
22681			wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22682						       core ==
22683						       PHY_CORE_0 ?
22684						       RADIO_MIMO_CORESEL_CORE1
22685						       :
22686						       RADIO_MIMO_CORESEL_CORE2,
22687						       NPHY_RAIL_I, rssi_type);
22688			wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22689						       core ==
22690						       PHY_CORE_0 ?
22691						       RADIO_MIMO_CORESEL_CORE1
22692						       :
22693						       RADIO_MIMO_CORESEL_CORE2,
22694						       NPHY_RAIL_Q, rssi_type);
22695
22696			wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22697					       NPHY_RSSICAL_NPOLL);
22698
22699			for (result_idx = 0; result_idx < 4; result_idx++) {
22700				if (core == result_idx / 2) {
22701					fine_digital_offset[result_idx] =
22702						(target_code *
22703						 NPHY_RSSICAL_NPOLL) -
22704						poll_result_core[result_idx];
22705					if (fine_digital_offset[result_idx] <
22706					    0) {
22707						fine_digital_offset[result_idx]
22708							= abs(
22709							    fine_digital_offset
22710							    [result_idx]);
22711						fine_digital_offset[result_idx]
22712							+= (NPHY_RSSICAL_NPOLL
22713							    / 2);
22714						fine_digital_offset[result_idx]
22715							/= NPHY_RSSICAL_NPOLL;
22716						fine_digital_offset[result_idx]
22717							= -fine_digital_offset
22718								[result_idx];
22719					} else {
22720						fine_digital_offset[result_idx]
22721							+= (NPHY_RSSICAL_NPOLL
22722							    / 2);
22723						fine_digital_offset[result_idx]
22724							/= NPHY_RSSICAL_NPOLL;
22725					}
22726
22727					wlc_phy_scale_offset_rssi_nphy(
22728						pi, 0x0,
22729						(s8)
22730						fine_digital_offset
22731						[core *
22732						 2],
22733						(core == PHY_CORE_0) ?
22734						RADIO_MIMO_CORESEL_CORE1 :
22735						RADIO_MIMO_CORESEL_CORE2,
22736						(result_idx % 2 == 0) ?
22737						NPHY_RAIL_I :
22738						NPHY_RAIL_Q,
22739						rssi_type);
22740				}
22741			}
22742
22743		}
22744	}
22745
22746	write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22747	write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22748
22749	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22750
22751	mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22752	mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22753	mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22754
22755	mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22756	mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22757	mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22758
22759	write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22760	write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22761	write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22762	write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22763	write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22764	write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22765	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22766		write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22767		write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22768		write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22769		write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22770	}
22771	write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22772	write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22773	write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22774	write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22775	write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22776	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22777		write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22778		write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22779		write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22780		write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22781	}
22782	write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22783	write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22784
22785	if (CHSPEC_IS2G(pi->radio_chanspec)) {
22786		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22787			pi->rssical_cache.rssical_radio_regs_2G[0] =
22788				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22789			pi->rssical_cache.rssical_radio_regs_2G[1] =
22790				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22791		} else {
22792			pi->rssical_cache.rssical_radio_regs_2G[0] =
22793				read_radio_reg(pi,
22794					       RADIO_2056_RX_RSSI_MISC |
22795					       RADIO_2056_RX0);
22796			pi->rssical_cache.rssical_radio_regs_2G[1] =
22797				read_radio_reg(pi,
22798					       RADIO_2056_RX_RSSI_MISC |
22799					       RADIO_2056_RX1);
22800		}
22801
22802		pi->rssical_cache.rssical_phyregs_2G[0] =
22803			read_phy_reg(pi, 0x1a6);
22804		pi->rssical_cache.rssical_phyregs_2G[1] =
22805			read_phy_reg(pi, 0x1ac);
22806		pi->rssical_cache.rssical_phyregs_2G[2] =
22807			read_phy_reg(pi, 0x1b2);
22808		pi->rssical_cache.rssical_phyregs_2G[3] =
22809			read_phy_reg(pi, 0x1b8);
22810		pi->rssical_cache.rssical_phyregs_2G[4] =
22811			read_phy_reg(pi, 0x1a4);
22812		pi->rssical_cache.rssical_phyregs_2G[5] =
22813			read_phy_reg(pi, 0x1aa);
22814		pi->rssical_cache.rssical_phyregs_2G[6] =
22815			read_phy_reg(pi, 0x1b0);
22816		pi->rssical_cache.rssical_phyregs_2G[7] =
22817			read_phy_reg(pi, 0x1b6);
22818		pi->rssical_cache.rssical_phyregs_2G[8] =
22819			read_phy_reg(pi, 0x1a5);
22820		pi->rssical_cache.rssical_phyregs_2G[9] =
22821			read_phy_reg(pi, 0x1ab);
22822		pi->rssical_cache.rssical_phyregs_2G[10] =
22823			read_phy_reg(pi, 0x1b1);
22824		pi->rssical_cache.rssical_phyregs_2G[11] =
22825			read_phy_reg(pi, 0x1b7);
22826
22827		pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22828	} else {
22829		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22830			pi->rssical_cache.rssical_radio_regs_5G[0] =
22831				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22832			pi->rssical_cache.rssical_radio_regs_5G[1] =
22833				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22834		} else {
22835			pi->rssical_cache.rssical_radio_regs_5G[0] =
22836				read_radio_reg(pi,
22837					       RADIO_2056_RX_RSSI_MISC |
22838					       RADIO_2056_RX0);
22839			pi->rssical_cache.rssical_radio_regs_5G[1] =
22840				read_radio_reg(pi,
22841					       RADIO_2056_RX_RSSI_MISC |
22842					       RADIO_2056_RX1);
22843		}
22844
22845		pi->rssical_cache.rssical_phyregs_5G[0] =
22846			read_phy_reg(pi, 0x1a6);
22847		pi->rssical_cache.rssical_phyregs_5G[1] =
22848			read_phy_reg(pi, 0x1ac);
22849		pi->rssical_cache.rssical_phyregs_5G[2] =
22850			read_phy_reg(pi, 0x1b2);
22851		pi->rssical_cache.rssical_phyregs_5G[3] =
22852			read_phy_reg(pi, 0x1b8);
22853		pi->rssical_cache.rssical_phyregs_5G[4] =
22854			read_phy_reg(pi, 0x1a4);
22855		pi->rssical_cache.rssical_phyregs_5G[5] =
22856			read_phy_reg(pi, 0x1aa);
22857		pi->rssical_cache.rssical_phyregs_5G[6] =
22858			read_phy_reg(pi, 0x1b0);
22859		pi->rssical_cache.rssical_phyregs_5G[7] =
22860			read_phy_reg(pi, 0x1b6);
22861		pi->rssical_cache.rssical_phyregs_5G[8] =
22862			read_phy_reg(pi, 0x1a5);
22863		pi->rssical_cache.rssical_phyregs_5G[9] =
22864			read_phy_reg(pi, 0x1ab);
22865		pi->rssical_cache.rssical_phyregs_5G[10] =
22866			read_phy_reg(pi, 0x1b1);
22867		pi->rssical_cache.rssical_phyregs_5G[11] =
22868			read_phy_reg(pi, 0x1b7);
22869
22870		pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22871	}
22872
22873	wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22874	wlc_phy_clip_det_nphy(pi, 1, clip_state);
22875}
22876
22877static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
22878{
22879	s32 target_code;
22880	u16 classif_state;
22881	u16 clip_state[2];
22882	u16 rssi_ctrl_state[2], pd_state[2];
22883	u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
22884	u16 rfctrlintc_override_val;
22885	u16 clip_off[] = { 0xffff, 0xffff };
22886	u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
22887	u8 vcm, min_vcm, vcm_tmp[4];
22888	u8 vcm_final[4] = { 0, 0, 0, 0 };
22889	u8 result_idx, ctr;
22890	s32 poll_results[4][4] = {
22891		{0, 0, 0, 0},
22892		{0, 0, 0, 0},
22893		{0, 0, 0, 0},
22894		{0, 0, 0, 0}
22895	};
22896	s32 poll_miniq[4][2] = {
22897		{0, 0},
22898		{0, 0},
22899		{0, 0},
22900		{0, 0}
22901	};
22902	s32 min_d, curr_d;
22903	s32 fine_digital_offset[4];
22904	s32 poll_results_min[4] = { 0, 0, 0, 0 };
22905	s32 min_poll;
22906
22907	switch (rssi_type) {
22908	case NPHY_RSSI_SEL_NB:
22909		target_code = NPHY_RSSICAL_NB_TARGET;
22910		break;
22911	case NPHY_RSSI_SEL_W1:
22912		target_code = NPHY_RSSICAL_W1_TARGET;
22913		break;
22914	case NPHY_RSSI_SEL_W2:
22915		target_code = NPHY_RSSICAL_W2_TARGET;
22916		break;
22917	default:
22918		return;
22919	}
22920
22921	classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22922	wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22923	wlc_phy_clip_det_nphy(pi, 0, clip_state);
22924	wlc_phy_clip_det_nphy(pi, 1, clip_off);
22925
22926	rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
22927	rfctrlintc_override_val =
22928		CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
22929
22930	rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
22931	rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
22932	write_phy_reg(pi, 0x91, rfctrlintc_override_val);
22933	write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
22934
22935	rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
22936	rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
22937	write_phy_reg(pi, 0x92, rfctrlintc_override_val);
22938	write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
22939
22940	pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
22941		  RADIO_2055_WBRSSI_G2_PD;
22942	pd_state[0] =
22943		read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
22944	pd_state[1] =
22945		read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
22946	mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
22947	mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
22948	rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
22949			 RADIO_2055_WBRSSI_G2_SEL;
22950	rssi_ctrl_state[0] =
22951		read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
22952	rssi_ctrl_state[1] =
22953		read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
22954	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22955
22956	wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22957				       NPHY_RAIL_I, rssi_type);
22958	wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22959				       NPHY_RAIL_Q, rssi_type);
22960
22961	for (vcm = 0; vcm < 4; vcm++) {
22962
22963		vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
22964		if (rssi_type != NPHY_RSSI_SEL_W2)
22965			wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
22966
22967		wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
22968				       NPHY_RSSICAL_NPOLL);
22969
22970		if ((rssi_type == NPHY_RSSI_SEL_W1)
22971		    || (rssi_type == NPHY_RSSI_SEL_W2)) {
22972			for (ctr = 0; ctr < 2; ctr++)
22973				poll_miniq[vcm][ctr] =
22974					min(poll_results[vcm][ctr * 2 + 0],
22975					    poll_results[vcm][ctr * 2 + 1]);
22976		}
22977	}
22978
22979	for (result_idx = 0; result_idx < 4; result_idx++) {
22980		min_d = NPHY_RSSICAL_MAXD;
22981		min_vcm = 0;
22982		min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
22983		for (vcm = 0; vcm < 4; vcm++) {
22984			curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
22985				      poll_results[vcm][result_idx] :
22986				      poll_miniq[vcm][result_idx / 2]) -
22987				     (target_code * NPHY_RSSICAL_NPOLL));
22988			if (curr_d < min_d) {
22989				min_d = curr_d;
22990				min_vcm = vcm;
22991			}
22992			if (poll_results[vcm][result_idx] < min_poll)
22993				min_poll = poll_results[vcm][result_idx];
22994		}
22995		vcm_final[result_idx] = min_vcm;
22996		poll_results_min[result_idx] = min_poll;
22997	}
22998
22999	if (rssi_type != NPHY_RSSI_SEL_W2)
23000		wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
23001
23002	for (result_idx = 0; result_idx < 4; result_idx++) {
23003		fine_digital_offset[result_idx] =
23004			(target_code * NPHY_RSSICAL_NPOLL) -
23005			poll_results[vcm_final[result_idx]][result_idx];
23006		if (fine_digital_offset[result_idx] < 0) {
23007			fine_digital_offset[result_idx] =
23008				abs(fine_digital_offset[result_idx]);
23009			fine_digital_offset[result_idx] +=
23010				(NPHY_RSSICAL_NPOLL / 2);
23011			fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23012			fine_digital_offset[result_idx] =
23013				-fine_digital_offset[result_idx];
23014		} else {
23015			fine_digital_offset[result_idx] +=
23016				(NPHY_RSSICAL_NPOLL / 2);
23017			fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23018		}
23019
23020		if (poll_results_min[result_idx] ==
23021		    NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
23022			fine_digital_offset[result_idx] =
23023				(target_code - NPHY_RSSICAL_MAXREAD - 1);
23024
23025		wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
23026					       (s8)
23027					       fine_digital_offset[result_idx],
23028					       (result_idx / 2 ==
23029						0) ? RADIO_MIMO_CORESEL_CORE1 :
23030					       RADIO_MIMO_CORESEL_CORE2,
23031					       (result_idx % 2 ==
23032						0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
23033					       rssi_type);
23034	}
23035
23036	mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
23037	mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
23038	if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
23039		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23040				     NPHY_RSSI_SEL_NB);
23041	else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
23042		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23043				     NPHY_RSSI_SEL_W1);
23044	else /* RADIO_2055_WBRSSI_G2_SEL */
23045		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23046				     NPHY_RSSI_SEL_W2);
23047	if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
23048		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23049				     NPHY_RSSI_SEL_NB);
23050	else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
23051		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23052				     NPHY_RSSI_SEL_W1);
23053	else /* RADIO_2055_WBRSSI_G1_SEL */
23054		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23055				     NPHY_RSSI_SEL_W2);
23056	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
23057
23058	write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
23059	write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
23060	write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
23061	write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
23062
23063	wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
23064	wlc_phy_clip_det_nphy(pi, 1, clip_state);
23065
23066	wlc_phy_resetcca_nphy(pi);
23067}
23068
23069void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
23070{
23071	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23072		wlc_phy_rssi_cal_nphy_rev3(pi);
23073	} else {
23074		wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
23075		wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
23076		wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
23077	}
23078}
23079
23080int
23081wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
23082{
23083	s16 rxpwr, rxpwr0, rxpwr1;
23084	s16 phyRx0_l, phyRx2_l;
23085
23086	rxpwr = 0;
23087	rxpwr0 = rxh->PhyRxStatus_1 & PRXS1_nphy_PWR0_MASK;
23088	rxpwr1 = (rxh->PhyRxStatus_1 & PRXS1_nphy_PWR1_MASK) >> 8;
23089
23090	if (rxpwr0 > 127)
23091		rxpwr0 -= 256;
23092	if (rxpwr1 > 127)
23093		rxpwr1 -= 256;
23094
23095	phyRx0_l = rxh->PhyRxStatus_0 & 0x00ff;
23096	phyRx2_l = rxh->PhyRxStatus_2 & 0x00ff;
23097	if (phyRx2_l > 127)
23098		phyRx2_l -= 256;
23099
23100	if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
23101		rxpwr0 = rxpwr1;
23102		rxpwr1 = phyRx2_l;
23103	}
23104
23105	if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
23106		rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23107	else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23108		rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23109	else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23110		rxpwr = (rxpwr0 + rxpwr1) >> 1;
23111
23112	return rxpwr;
23113}
23114
23115static void
23116wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23117			     u16 num_samps)
23118{
23119	u16 t;
23120	u32 *data_buf = NULL;
23121
23122	data_buf = kmalloc(sizeof(u32) * num_samps, GFP_ATOMIC);
23123	if (data_buf == NULL)
23124		return;
23125
23126	if (pi->phyhang_avoid)
23127		wlc_phy_stay_in_carriersearch_nphy(pi, true);
23128
23129	for (t = 0; t < num_samps; t++)
23130		data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23131			      (((unsigned int)tone_buf[t].q) & 0x3ff);
23132	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23133				 data_buf);
23134
23135	kfree(data_buf);
23136
23137	if (pi->phyhang_avoid)
23138		wlc_phy_stay_in_carriersearch_nphy(pi, false);
23139}
23140
23141static u16
23142wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23143			      u8 dac_test_mode)
23144{
23145	u8 phy_bw, is_phybw40;
23146	u16 num_samps, t, spur;
23147	s32 theta = 0, rot = 0;
23148	u32 tbl_len;
23149	struct cordic_iq *tone_buf = NULL;
23150
23151	is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23152	phy_bw = (is_phybw40 == 1) ? 40 : 20;
23153	tbl_len = (phy_bw << 3);
23154
23155	if (dac_test_mode == 1) {
23156		spur = read_phy_reg(pi, 0x01);
23157		spur = (spur >> 15) & 1;
23158		phy_bw = (spur == 1) ? 82 : 80;
23159		phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23160
23161		tbl_len = (phy_bw << 1);
23162	}
23163
23164	tone_buf = kmalloc(sizeof(struct cordic_iq) * tbl_len, GFP_ATOMIC);
23165	if (tone_buf == NULL)
23166		return 0;
23167
23168	num_samps = (u16) tbl_len;
23169	rot = ((f_kHz * 36) / phy_bw) / 100;
23170	theta = 0;
23171
23172	for (t = 0; t < num_samps; t++) {
23173
23174		tone_buf[t] = cordic_calc_iq(theta);
23175
23176		theta += rot;
23177
23178		tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
23179		tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
23180	}
23181
23182	wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23183
23184	kfree(tone_buf);
23185
23186	return num_samps;
23187}
23188
23189static void
23190wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23191			u16 wait, u8 iqmode, u8 dac_test_mode,
23192			bool modify_bbmult)
23193{
23194	u16 bb_mult;
23195	u8 phy_bw, sample_cmd;
23196	u16 orig_RfseqCoreActv;
23197	u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
23198	    lpf_bw_ctl_miscreg4;
23199
23200	if (pi->phyhang_avoid)
23201		wlc_phy_stay_in_carriersearch_nphy(pi, true);
23202
23203	phy_bw = 20;
23204	if (CHSPEC_IS40(pi->radio_chanspec))
23205		phy_bw = 40;
23206
23207	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23208
23209		lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23210		lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23211		if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
23212			lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23213					      (0x7 << 8);
23214			lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23215					      (0x7 << 8);
23216		} else {
23217			wlc_phy_rfctrl_override_nphy_rev7(
23218				pi,
23219				(0x1 << 7),
23220				wlc_phy_read_lpf_bw_ctl_nphy
23221					(pi,
23222					0), 0, 0,
23223				NPHY_REV7_RFCTRLOVERRIDE_ID1);
23224
23225			pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23226
23227			lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23228					      (0x7 << 8);
23229			lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23230					      (0x7 << 8);
23231		}
23232	}
23233
23234	if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23235
23236		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23237					&bb_mult);
23238		pi->nphy_bb_mult_save =
23239			BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23240	}
23241
23242	if (modify_bbmult) {
23243		bb_mult = (phy_bw == 20) ? 100 : 71;
23244		bb_mult = (bb_mult << 8) + bb_mult;
23245		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23246					 &bb_mult);
23247	}
23248
23249	if (pi->phyhang_avoid)
23250		wlc_phy_stay_in_carriersearch_nphy(pi, false);
23251
23252	write_phy_reg(pi, 0xc6, num_samps - 1);
23253
23254	if (loops != 0xffff)
23255		write_phy_reg(pi, 0xc4, loops - 1);
23256	else
23257		write_phy_reg(pi, 0xc4, loops);
23258
23259	write_phy_reg(pi, 0xc5, wait);
23260
23261	orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23262	or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23263	if (iqmode) {
23264
23265		and_phy_reg(pi, 0xc2, 0x7FFF);
23266
23267		or_phy_reg(pi, 0xc2, 0x8000);
23268	} else {
23269
23270		sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23271		write_phy_reg(pi, 0xc3, sample_cmd);
23272	}
23273
23274	SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23275
23276	write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23277}
23278
23279int
23280wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23281		     u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23282{
23283	u16 num_samps;
23284	u16 loops = 0xffff;
23285	u16 wait = 0;
23286
23287	num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23288						  dac_test_mode);
23289	if (num_samps == 0)
23290		return -EBADE;
23291
23292	wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23293				dac_test_mode, modify_bbmult);
23294
23295	return 0;
23296}
23297
23298void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23299{
23300	u16 playback_status;
23301	u16 bb_mult;
23302
23303	if (pi->phyhang_avoid)
23304		wlc_phy_stay_in_carriersearch_nphy(pi, true);
23305
23306	playback_status = read_phy_reg(pi, 0xc7);
23307	if (playback_status & 0x1)
23308		or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23309	else if (playback_status & 0x2)
23310		and_phy_reg(pi, 0xc2,
23311			    (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23312
23313	and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23314
23315	if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23316
23317		bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23318		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23319					 &bb_mult);
23320
23321		pi->nphy_bb_mult_save = 0;
23322	}
23323
23324	if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23325		if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23326			wlc_phy_rfctrl_override_nphy_rev7(
23327				pi,
23328				(0x1 << 7),
23329				0, 0, 1,
23330				NPHY_REV7_RFCTRLOVERRIDE_ID1);
23331			pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23332		}
23333	}
23334
23335	if (pi->phyhang_avoid)
23336		wlc_phy_stay_in_carriersearch_nphy(pi, false);
23337}
23338
23339static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23340{
23341	u32 *tx_pwrctrl_tbl = NULL;
23342	uint phyrev = pi->pubpi.phy_rev;
23343
23344	if (PHY_IPA(pi)) {
23345		tx_pwrctrl_tbl =
23346			wlc_phy_get_ipa_gaintbl_nphy(pi);
23347	} else {
23348		if (CHSPEC_IS5G(pi->radio_chanspec)) {
23349			if (NREV_IS(phyrev, 3))
23350				tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23351			else if (NREV_IS(phyrev, 4))
23352				tx_pwrctrl_tbl =
23353					(pi->srom_fem5g.extpagain == 3) ?
23354					nphy_tpc_5GHz_txgain_HiPwrEPA :
23355					nphy_tpc_5GHz_txgain_rev4;
23356			else
23357				tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23358		} else {
23359			if (NREV_GE(phyrev, 7)) {
23360				if (pi->pubpi.radiorev == 3)
23361					tx_pwrctrl_tbl =
23362						nphy_tpc_txgain_epa_2057rev3;
23363				else if (pi->pubpi.radiorev == 5)
23364					tx_pwrctrl_tbl =
23365						nphy_tpc_txgain_epa_2057rev5;
23366			} else {
23367				if (NREV_GE(phyrev, 5) &&
23368				   (pi->srom_fem2g.extpagain ==	3))
23369					tx_pwrctrl_tbl =
23370						nphy_tpc_txgain_HiPwrEPA;
23371				else
23372					tx_pwrctrl_tbl =
23373						nphy_tpc_txgain_rev3;
23374			}
23375		}
23376	}
23377	return tx_pwrctrl_tbl;
23378}
23379
23380struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23381{
23382	u16 base_idx[2], curr_gain[2];
23383	u8 core_no;
23384	struct nphy_txgains target_gain;
23385	u32 *tx_pwrctrl_tbl = NULL;
23386
23387	if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23388		if (pi->phyhang_avoid)
23389			wlc_phy_stay_in_carriersearch_nphy(pi, true);
23390
23391		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23392					curr_gain);
23393
23394		if (pi->phyhang_avoid)
23395			wlc_phy_stay_in_carriersearch_nphy(pi, false);
23396
23397		for (core_no = 0; core_no < 2; core_no++) {
23398			if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23399				target_gain.ipa[core_no] =
23400					curr_gain[core_no] & 0x0007;
23401				target_gain.pad[core_no] =
23402					((curr_gain[core_no] & 0x00F8) >> 3);
23403				target_gain.pga[core_no] =
23404					((curr_gain[core_no] & 0x0F00) >> 8);
23405				target_gain.txgm[core_no] =
23406					((curr_gain[core_no] & 0x7000) >> 12);
23407				target_gain.txlpf[core_no] =
23408					((curr_gain[core_no] & 0x8000) >> 15);
23409			} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23410				target_gain.ipa[core_no] =
23411					curr_gain[core_no] & 0x000F;
23412				target_gain.pad[core_no] =
23413					((curr_gain[core_no] & 0x00F0) >> 4);
23414				target_gain.pga[core_no] =
23415					((curr_gain[core_no] & 0x0F00) >> 8);
23416				target_gain.txgm[core_no] =
23417					((curr_gain[core_no] & 0x7000) >> 12);
23418			} else {
23419				target_gain.ipa[core_no] =
23420					curr_gain[core_no] & 0x0003;
23421				target_gain.pad[core_no] =
23422					((curr_gain[core_no] & 0x000C) >> 2);
23423				target_gain.pga[core_no] =
23424					((curr_gain[core_no] & 0x0070) >> 4);
23425				target_gain.txgm[core_no] =
23426					((curr_gain[core_no] & 0x0380) >> 7);
23427			}
23428		}
23429	} else {
23430		uint phyrev = pi->pubpi.phy_rev;
23431
23432		base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23433		base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23434		for (core_no = 0; core_no < 2; core_no++) {
23435			if (NREV_GE(phyrev, 3)) {
23436				tx_pwrctrl_tbl =
23437					brcms_phy_get_tx_pwrctrl_tbl(pi);
23438				if (NREV_GE(phyrev, 7)) {
23439					target_gain.ipa[core_no] =
23440						(tx_pwrctrl_tbl
23441						 [base_idx[core_no]]
23442						 >> 16) & 0x7;
23443					target_gain.pad[core_no] =
23444						(tx_pwrctrl_tbl
23445						 [base_idx[core_no]]
23446						 >> 19) & 0x1f;
23447					target_gain.pga[core_no] =
23448						(tx_pwrctrl_tbl
23449						 [base_idx[core_no]]
23450						 >> 24) & 0xf;
23451					target_gain.txgm[core_no] =
23452						(tx_pwrctrl_tbl
23453						 [base_idx[core_no]]
23454						 >> 28) & 0x7;
23455					target_gain.txlpf[core_no] =
23456						(tx_pwrctrl_tbl
23457						 [base_idx[core_no]]
23458						 >> 31) & 0x1;
23459				} else {
23460					target_gain.ipa[core_no] =
23461						(tx_pwrctrl_tbl
23462						 [base_idx[core_no]]
23463						 >> 16) & 0xf;
23464					target_gain.pad[core_no] =
23465						(tx_pwrctrl_tbl
23466						 [base_idx[core_no]]
23467						 >> 20) & 0xf;
23468					target_gain.pga[core_no] =
23469						(tx_pwrctrl_tbl
23470						 [base_idx[core_no]]
23471						 >> 24) & 0xf;
23472					target_gain.txgm[core_no] =
23473						(tx_pwrctrl_tbl
23474						[base_idx[core_no]]
23475						 >> 28) & 0x7;
23476				}
23477			} else {
23478				target_gain.ipa[core_no] =
23479					(nphy_tpc_txgain[base_idx[core_no]] >>
23480					 16) & 0x3;
23481				target_gain.pad[core_no] =
23482					(nphy_tpc_txgain[base_idx[core_no]] >>
23483					 18) & 0x3;
23484				target_gain.pga[core_no] =
23485					(nphy_tpc_txgain[base_idx[core_no]] >>
23486					 20) & 0x7;
23487				target_gain.txgm[core_no] =
23488					(nphy_tpc_txgain[base_idx[core_no]] >>
23489					 23) & 0x7;
23490			}
23491		}
23492	}
23493
23494	return target_gain;
23495}
23496
23497static void
23498wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23499			      struct nphy_txgains target_gain,
23500			      struct nphy_iqcal_params *params)
23501{
23502	u8 k;
23503	int idx;
23504	u16 gain_index;
23505	u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23506
23507	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23508		if (NREV_GE(pi->pubpi.phy_rev, 7))
23509			params->txlpf = target_gain.txlpf[core_no];
23510
23511		params->txgm = target_gain.txgm[core_no];
23512		params->pga = target_gain.pga[core_no];
23513		params->pad = target_gain.pad[core_no];
23514		params->ipa = target_gain.ipa[core_no];
23515		if (NREV_GE(pi->pubpi.phy_rev, 7))
23516			params->cal_gain =
23517				((params->txlpf << 15) | (params->txgm << 12) |
23518				 (params->pga << 8) |
23519				 (params->pad << 3) | (params->ipa));
23520		else
23521			params->cal_gain =
23522				((params->txgm << 12) | (params->pga << 8) |
23523				 (params->pad << 4) | (params->ipa));
23524
23525		params->ncorr[0] = 0x79;
23526		params->ncorr[1] = 0x79;
23527		params->ncorr[2] = 0x79;
23528		params->ncorr[3] = 0x79;
23529		params->ncorr[4] = 0x79;
23530	} else {
23531
23532		gain_index = ((target_gain.pad[core_no] << 0) |
23533			      (target_gain.pga[core_no] << 4) |
23534			      (target_gain.txgm[core_no] << 8));
23535
23536		idx = -1;
23537		for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23538			if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23539			    gain_index) {
23540				idx = k;
23541				break;
23542			}
23543		}
23544
23545		params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23546		params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23547		params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23548		params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23549				    (params->pad << 2));
23550		params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23551		params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23552		params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23553		params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23554	}
23555}
23556
23557static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23558{
23559	u16 jtag_core, core;
23560
23561	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23562
23563		for (core = 0; core <= 1; core++) {
23564
23565			pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23566				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23567						TX_SSI_MASTER);
23568
23569			pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23570				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23571						IQCAL_VCM_HG);
23572
23573			pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23574				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23575						IQCAL_IDAC);
23576
23577			pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23578				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23579						TSSI_VCM);
23580
23581			pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23582
23583			pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23584				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23585						TX_SSI_MUX);
23586
23587			if (pi->pubpi.radiorev != 5)
23588				pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23589					READ_RADIO_REG3(pi, RADIO_2057, TX,
23590							core,
23591							TSSIA);
23592
23593			pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23594			       READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23595
23596			pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23597				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23598						TSSI_MISC1);
23599
23600			if (CHSPEC_IS5G(pi->radio_chanspec)) {
23601				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23602						 TX_SSI_MASTER, 0x0a);
23603				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23604						 IQCAL_VCM_HG, 0x43);
23605				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23606						 IQCAL_IDAC, 0x55);
23607				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23608						 TSSI_VCM, 0x00);
23609				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23610						 TSSIG, 0x00);
23611				if (pi->use_int_tx_iqlo_cal_nphy) {
23612					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23613							 core, TX_SSI_MUX, 0x4);
23614					if (!(pi->
23615					internal_tx_iqlo_cal_tapoff_intpa_nphy))
23616						WRITE_RADIO_REG3(pi, RADIO_2057,
23617								 TX, core,
23618								 TSSIA, 0x31);
23619					else
23620						WRITE_RADIO_REG3(pi, RADIO_2057,
23621								 TX, core,
23622								 TSSIA, 0x21);
23623				}
23624				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23625						 TSSI_MISC1, 0x00);
23626			} else {
23627				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23628						 TX_SSI_MASTER, 0x06);
23629				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23630						 IQCAL_VCM_HG, 0x43);
23631				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23632						 IQCAL_IDAC, 0x55);
23633				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23634						 TSSI_VCM, 0x00);
23635
23636				if (pi->pubpi.radiorev != 5)
23637					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23638							 core, TSSIA, 0x00);
23639				if (pi->use_int_tx_iqlo_cal_nphy) {
23640					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23641							 core, TX_SSI_MUX,
23642							 0x06);
23643					if (!(pi->
23644					internal_tx_iqlo_cal_tapoff_intpa_nphy))
23645						WRITE_RADIO_REG3(pi, RADIO_2057,
23646								 TX, core,
23647								 TSSIG, 0x31);
23648					else
23649						WRITE_RADIO_REG3(pi, RADIO_2057,
23650								 TX, core,
23651								 TSSIG, 0x21);
23652				}
23653				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23654						 TSSI_MISC1, 0x00);
23655			}
23656		}
23657	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23658
23659		for (core = 0; core <= 1; core++) {
23660			jtag_core =
23661				(core ==
23662				 PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23663
23664			pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23665				read_radio_reg(pi,
23666					       RADIO_2056_TX_TX_SSI_MASTER |
23667					       jtag_core);
23668
23669			pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23670				read_radio_reg(pi,
23671					       RADIO_2056_TX_IQCAL_VCM_HG |
23672					       jtag_core);
23673
23674			pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23675				read_radio_reg(pi,
23676					       RADIO_2056_TX_IQCAL_IDAC |
23677					       jtag_core);
23678
23679			pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23680				read_radio_reg(
23681					pi,
23682					RADIO_2056_TX_TSSI_VCM |
23683					jtag_core);
23684
23685			pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23686				read_radio_reg(pi,
23687					       RADIO_2056_TX_TX_AMP_DET |
23688					       jtag_core);
23689
23690			pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23691				read_radio_reg(pi,
23692					       RADIO_2056_TX_TX_SSI_MUX |
23693					       jtag_core);
23694
23695			pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23696				read_radio_reg(pi,
23697					       RADIO_2056_TX_TSSIA | jtag_core);
23698
23699			pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23700				read_radio_reg(pi,
23701					       RADIO_2056_TX_TSSIG | jtag_core);
23702
23703			pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23704				read_radio_reg(pi,
23705					       RADIO_2056_TX_TSSI_MISC1 |
23706					       jtag_core);
23707
23708			pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23709				read_radio_reg(pi,
23710					       RADIO_2056_TX_TSSI_MISC2 |
23711					       jtag_core);
23712
23713			pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23714				read_radio_reg(pi,
23715					       RADIO_2056_TX_TSSI_MISC3 |
23716					       jtag_core);
23717
23718			if (CHSPEC_IS5G(pi->radio_chanspec)) {
23719				write_radio_reg(pi,
23720						RADIO_2056_TX_TX_SSI_MASTER |
23721						jtag_core, 0x0a);
23722				write_radio_reg(pi,
23723						RADIO_2056_TX_IQCAL_VCM_HG |
23724						jtag_core, 0x40);
23725				write_radio_reg(pi,
23726						RADIO_2056_TX_IQCAL_IDAC |
23727						jtag_core, 0x55);
23728				write_radio_reg(pi,
23729						RADIO_2056_TX_TSSI_VCM |
23730						jtag_core, 0x00);
23731				write_radio_reg(pi,
23732						RADIO_2056_TX_TX_AMP_DET |
23733						jtag_core, 0x00);
23734
23735				if (PHY_IPA(pi)) {
23736					write_radio_reg(
23737						pi,
23738						RADIO_2056_TX_TX_SSI_MUX
23739						| jtag_core, 0x4);
23740					write_radio_reg(pi,
23741							RADIO_2056_TX_TSSIA |
23742							jtag_core, 0x1);
23743				} else {
23744					write_radio_reg(
23745						pi,
23746						RADIO_2056_TX_TX_SSI_MUX
23747						| jtag_core, 0x00);
23748					write_radio_reg(pi,
23749							RADIO_2056_TX_TSSIA |
23750							jtag_core, 0x2f);
23751				}
23752				write_radio_reg(pi,
23753						RADIO_2056_TX_TSSIG | jtag_core,
23754						0x00);
23755				write_radio_reg(pi,
23756						RADIO_2056_TX_TSSI_MISC1 |
23757						jtag_core, 0x00);
23758
23759				write_radio_reg(pi,
23760						RADIO_2056_TX_TSSI_MISC2 |
23761						jtag_core, 0x00);
23762				write_radio_reg(pi,
23763						RADIO_2056_TX_TSSI_MISC3 |
23764						jtag_core, 0x00);
23765			} else {
23766				write_radio_reg(pi,
23767						RADIO_2056_TX_TX_SSI_MASTER |
23768						jtag_core, 0x06);
23769				write_radio_reg(pi,
23770						RADIO_2056_TX_IQCAL_VCM_HG |
23771						jtag_core, 0x40);
23772				write_radio_reg(pi,
23773						RADIO_2056_TX_IQCAL_IDAC |
23774						jtag_core, 0x55);
23775				write_radio_reg(pi,
23776						RADIO_2056_TX_TSSI_VCM |
23777						jtag_core, 0x00);
23778				write_radio_reg(pi,
23779						RADIO_2056_TX_TX_AMP_DET |
23780						jtag_core, 0x00);
23781				write_radio_reg(pi,
23782						RADIO_2056_TX_TSSIA | jtag_core,
23783						0x00);
23784
23785				if (PHY_IPA(pi)) {
23786
23787					write_radio_reg(
23788						pi,
23789						RADIO_2056_TX_TX_SSI_MUX
23790						| jtag_core, 0x06);
23791					if (NREV_LT(pi->pubpi.phy_rev, 5))
23792						write_radio_reg(
23793							pi,
23794							RADIO_2056_TX_TSSIG
23795							| jtag_core,
23796							0x11);
23797					else
23798						write_radio_reg(
23799							pi,
23800							RADIO_2056_TX_TSSIG
23801							| jtag_core,
23802							0x1);
23803				} else {
23804					write_radio_reg(
23805						pi,
23806						RADIO_2056_TX_TX_SSI_MUX
23807						| jtag_core, 0x00);
23808					write_radio_reg(pi,
23809							RADIO_2056_TX_TSSIG |
23810							jtag_core, 0x20);
23811				}
23812
23813				write_radio_reg(pi,
23814						RADIO_2056_TX_TSSI_MISC1 |
23815						jtag_core, 0x00);
23816				write_radio_reg(pi,
23817						RADIO_2056_TX_TSSI_MISC2 |
23818						jtag_core, 0x00);
23819				write_radio_reg(pi,
23820						RADIO_2056_TX_TSSI_MISC3 |
23821						jtag_core, 0x00);
23822			}
23823		}
23824	} else {
23825
23826		pi->tx_rx_cal_radio_saveregs[0] =
23827			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23828		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23829		pi->tx_rx_cal_radio_saveregs[1] =
23830			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23831		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23832
23833		pi->tx_rx_cal_radio_saveregs[2] =
23834			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23835		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23836		pi->tx_rx_cal_radio_saveregs[3] =
23837			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23838		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23839
23840		pi->tx_rx_cal_radio_saveregs[4] =
23841			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23842		pi->tx_rx_cal_radio_saveregs[5] =
23843			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23844
23845		if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23846		    0) {
23847
23848			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23849			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23850		} else {
23851
23852			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23853			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23854		}
23855
23856		if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23857
23858			or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23859			or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23860		} else {
23861
23862			and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23863			and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23864		}
23865	}
23866}
23867
23868static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
23869{
23870	u16 jtag_core, core;
23871
23872	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23873		for (core = 0; core <= 1; core++) {
23874
23875			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23876					 TX_SSI_MASTER,
23877					 pi->
23878					 tx_rx_cal_radio_saveregs[(core * 11) +
23879								  0]);
23880
23881			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23882					 pi->
23883					 tx_rx_cal_radio_saveregs[(core * 11) +
23884								  1]);
23885
23886			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23887					 pi->
23888					 tx_rx_cal_radio_saveregs[(core * 11) +
23889								  2]);
23890
23891			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23892					 pi->
23893					 tx_rx_cal_radio_saveregs[(core * 11) +
23894								  3]);
23895
23896			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23897					 pi->
23898					 tx_rx_cal_radio_saveregs[(core * 11) +
23899								  5]);
23900
23901			if (pi->pubpi.radiorev != 5)
23902				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23903						 TSSIA,
23904						 pi->tx_rx_cal_radio_saveregs
23905							     [(core * 11) + 6]);
23906
23907			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23908					 pi->
23909					 tx_rx_cal_radio_saveregs[(core * 11) +
23910								  7]);
23911
23912			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23913					 pi->
23914					 tx_rx_cal_radio_saveregs[(core * 11) +
23915								  8]);
23916		}
23917	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23918		for (core = 0; core <= 1; core++) {
23919			jtag_core = (core == PHY_CORE_0) ?
23920				     RADIO_2056_TX0 : RADIO_2056_TX1;
23921
23922			write_radio_reg(pi,
23923					RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23924					pi->
23925					tx_rx_cal_radio_saveregs[(core * 11) +
23926								 0]);
23927
23928			write_radio_reg(pi,
23929					RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23930					pi->
23931					tx_rx_cal_radio_saveregs[(core * 11) +
23932								 1]);
23933
23934			write_radio_reg(pi,
23935					RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23936					pi->
23937					tx_rx_cal_radio_saveregs[(core * 11) +
23938								 2]);
23939
23940			write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23941					pi->
23942					tx_rx_cal_radio_saveregs[(core * 11) +
23943								 3]);
23944
23945			write_radio_reg(pi,
23946					RADIO_2056_TX_TX_AMP_DET | jtag_core,
23947					pi->
23948					tx_rx_cal_radio_saveregs[(core * 11) +
23949								 4]);
23950
23951			write_radio_reg(pi,
23952					RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23953					pi->
23954					tx_rx_cal_radio_saveregs[(core * 11) +
23955								 5]);
23956
23957			write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23958					pi->
23959					tx_rx_cal_radio_saveregs[(core * 11) +
23960								 6]);
23961
23962			write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23963					pi->
23964					tx_rx_cal_radio_saveregs[(core * 11) +
23965								 7]);
23966
23967			write_radio_reg(pi,
23968					RADIO_2056_TX_TSSI_MISC1 | jtag_core,
23969					pi->
23970					tx_rx_cal_radio_saveregs[(core * 11) +
23971								 8]);
23972
23973			write_radio_reg(pi,
23974					RADIO_2056_TX_TSSI_MISC2 | jtag_core,
23975					pi->
23976					tx_rx_cal_radio_saveregs[(core * 11) +
23977								 9]);
23978
23979			write_radio_reg(pi,
23980					RADIO_2056_TX_TSSI_MISC3 | jtag_core,
23981					pi->
23982					tx_rx_cal_radio_saveregs[(core * 11) +
23983								 10]);
23984		}
23985	} else {
23986
23987		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
23988				pi->tx_rx_cal_radio_saveregs[0]);
23989		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
23990				pi->tx_rx_cal_radio_saveregs[1]);
23991		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
23992				pi->tx_rx_cal_radio_saveregs[2]);
23993		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
23994				pi->tx_rx_cal_radio_saveregs[3]);
23995		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
23996				pi->tx_rx_cal_radio_saveregs[4]);
23997		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
23998				pi->tx_rx_cal_radio_saveregs[5]);
23999	}
24000}
24001
24002static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
24003{
24004	u16 val, mask;
24005
24006	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24007		pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24008		pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24009
24010		mask = ((0x3 << 8) | (0x3 << 10));
24011		val = (0x2 << 8);
24012		val |= (0x2 << 10);
24013		mod_phy_reg(pi, 0xa6, mask, val);
24014		mod_phy_reg(pi, 0xa7, mask, val);
24015
24016		val = read_phy_reg(pi, 0x8f);
24017		pi->tx_rx_cal_phy_saveregs[2] = val;
24018		val |= ((0x1 << 9) | (0x1 << 10));
24019		write_phy_reg(pi, 0x8f, val);
24020
24021		val = read_phy_reg(pi, 0xa5);
24022		pi->tx_rx_cal_phy_saveregs[3] = val;
24023		val |= ((0x1 << 9) | (0x1 << 10));
24024		write_phy_reg(pi, 0xa5, val);
24025
24026		pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
24027		mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
24028
24029		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24030					&val);
24031		pi->tx_rx_cal_phy_saveregs[5] = val;
24032		val = 0;
24033		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24034					 &val);
24035
24036		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24037					&val);
24038		pi->tx_rx_cal_phy_saveregs[6] = val;
24039		val = 0;
24040		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24041					 &val);
24042
24043		pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
24044		pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
24045
24046		if (!(pi->use_int_tx_iqlo_cal_nphy))
24047			wlc_phy_rfctrlintc_override_nphy(
24048				pi,
24049				NPHY_RfctrlIntc_override_PA,
24050				1,
24051				RADIO_MIMO_CORESEL_CORE1
24052				|
24053				RADIO_MIMO_CORESEL_CORE2);
24054		else
24055			wlc_phy_rfctrlintc_override_nphy(
24056				pi,
24057				NPHY_RfctrlIntc_override_PA,
24058				0,
24059				RADIO_MIMO_CORESEL_CORE1
24060				|
24061				RADIO_MIMO_CORESEL_CORE2);
24062
24063		wlc_phy_rfctrlintc_override_nphy(pi,
24064						 NPHY_RfctrlIntc_override_TRSW,
24065						 0x2, RADIO_MIMO_CORESEL_CORE1);
24066		wlc_phy_rfctrlintc_override_nphy(pi,
24067						 NPHY_RfctrlIntc_override_TRSW,
24068						 0x8, RADIO_MIMO_CORESEL_CORE2);
24069
24070		pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
24071		pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
24072		mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
24073			    0x29b, (0x1 << 0), (0) << 0);
24074
24075		mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
24076			    0x29b, (0x1 << 0), (0) << 0);
24077
24078		if (NREV_IS(pi->pubpi.phy_rev, 7)
24079		    || NREV_GE(pi->pubpi.phy_rev, 8))
24080			wlc_phy_rfctrl_override_nphy_rev7(
24081				pi, (0x1 << 7),
24082				wlc_phy_read_lpf_bw_ctl_nphy
24083					(pi,
24084					0), 0, 0,
24085				NPHY_REV7_RFCTRLOVERRIDE_ID1);
24086
24087		if (pi->use_int_tx_iqlo_cal_nphy
24088		    && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24089
24090			if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24091
24092				mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24093					      1 << 4);
24094
24095				if (CHSPEC_IS2G(pi->radio_chanspec)) {
24096					mod_radio_reg(
24097						pi,
24098						RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24099						1, 0);
24100					mod_radio_reg(
24101						pi,
24102						RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24103						1, 0);
24104				} else {
24105					mod_radio_reg(
24106					     pi,
24107					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24108					     1, 0);
24109					mod_radio_reg(
24110					     pi,
24111					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24112					     1, 0);
24113				}
24114			} else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24115				wlc_phy_rfctrl_override_nphy_rev7(
24116					pi,
24117					(0x1 << 3), 0,
24118					0x3, 0,
24119					NPHY_REV7_RFCTRLOVERRIDE_ID0);
24120			}
24121		}
24122	} else {
24123		pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24124		pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24125
24126		mask = ((0x3 << 12) | (0x3 << 14));
24127		val = (0x2 << 12);
24128		val |= (0x2 << 14);
24129		mod_phy_reg(pi, 0xa6, mask, val);
24130		mod_phy_reg(pi, 0xa7, mask, val);
24131
24132		val = read_phy_reg(pi, 0xa5);
24133		pi->tx_rx_cal_phy_saveregs[2] = val;
24134		val |= ((0x1 << 12) | (0x1 << 13));
24135		write_phy_reg(pi, 0xa5, val);
24136
24137		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24138					&val);
24139		pi->tx_rx_cal_phy_saveregs[3] = val;
24140		val |= 0x2000;
24141		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24142					 &val);
24143
24144		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24145					&val);
24146		pi->tx_rx_cal_phy_saveregs[4] = val;
24147		val |= 0x2000;
24148		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24149					 &val);
24150
24151		pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24152		pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24153		val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24154		write_phy_reg(pi, 0x91, val);
24155		write_phy_reg(pi, 0x92, val);
24156	}
24157}
24158
24159static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24160{
24161	u16 mask;
24162
24163	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24164		write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24165		write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24166		write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24167		write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24168		write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24169
24170		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24171					 &pi->tx_rx_cal_phy_saveregs[5]);
24172		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24173					 &pi->tx_rx_cal_phy_saveregs[6]);
24174
24175		write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24176		write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24177
24178		write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24179		write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24180
24181		if (NREV_IS(pi->pubpi.phy_rev, 7)
24182		    || NREV_GE(pi->pubpi.phy_rev, 8))
24183			wlc_phy_rfctrl_override_nphy_rev7(
24184				pi, (0x1 << 7), 0, 0,
24185				1,
24186				NPHY_REV7_RFCTRLOVERRIDE_ID1);
24187
24188		wlc_phy_resetcca_nphy(pi);
24189
24190		if (pi->use_int_tx_iqlo_cal_nphy
24191		    && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24192
24193			if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24194				if (CHSPEC_IS2G(pi->radio_chanspec)) {
24195					mod_radio_reg(
24196						pi,
24197						RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24198						1, 1);
24199					mod_radio_reg(
24200						pi,
24201						RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24202						1, 1);
24203				} else {
24204					mod_radio_reg(
24205					     pi,
24206					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24207					     1, 1);
24208					mod_radio_reg(
24209					     pi,
24210					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24211					     1, 1);
24212				}
24213
24214				mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24215					      0);
24216			} else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24217				wlc_phy_rfctrl_override_nphy_rev7(
24218					pi,
24219					(0x1 << 3), 0,
24220					0x3, 1,
24221					NPHY_REV7_RFCTRLOVERRIDE_ID0);
24222			}
24223		}
24224	} else {
24225		mask = ((0x3 << 12) | (0x3 << 14));
24226		mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24227		mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24228		write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24229
24230		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24231					 &pi->tx_rx_cal_phy_saveregs[3]);
24232
24233		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24234					 &pi->tx_rx_cal_phy_saveregs[4]);
24235
24236		write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24237		write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24238	}
24239}
24240
24241void
24242wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24243{
24244	u16 tssi_reg;
24245	s32 temp, pwrindex[2];
24246	s32 idle_tssi[2];
24247	s32 rssi_buf[4];
24248	s32 tssival[2];
24249	u8 tssi_type;
24250
24251	tssi_reg = read_phy_reg(pi, 0x1e9);
24252
24253	temp = (s32) (tssi_reg & 0x3f);
24254	idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24255
24256	temp = (s32) ((tssi_reg >> 8) & 0x3f);
24257	idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24258
24259	tssi_type =
24260		CHSPEC_IS5G(pi->radio_chanspec) ?
24261		(u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24262
24263	wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24264
24265	tssival[0] = rssi_buf[0] / ((s32) num_samps);
24266	tssival[1] = rssi_buf[2] / ((s32) num_samps);
24267
24268	pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24269	pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24270
24271	if (pwrindex[0] < 0)
24272		pwrindex[0] = 0;
24273	else if (pwrindex[0] > 63)
24274		pwrindex[0] = 63;
24275
24276	if (pwrindex[1] < 0)
24277		pwrindex[1] = 0;
24278	else if (pwrindex[1] > 63)
24279		pwrindex[1] = 63;
24280
24281	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24282				(u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24283	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24284				(u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24285}
24286
24287static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24288{
24289	int index;
24290	u32 bbmult_scale;
24291	u16 bbmult;
24292	u16 tblentry;
24293
24294	struct nphy_txiqcal_ladder ladder_lo[] = {
24295		{3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24296		{25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24297		{25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24298	};
24299
24300	struct nphy_txiqcal_ladder ladder_iq[] = {
24301		{3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24302		{25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24303		{100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24304	};
24305
24306	bbmult = (core == PHY_CORE_0) ?
24307		 ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24308		 (pi->nphy_txcal_bbmult & 0xff);
24309
24310	for (index = 0; index < 18; index++) {
24311		bbmult_scale = ladder_lo[index].percent * bbmult;
24312		bbmult_scale /= 100;
24313
24314		tblentry =
24315			((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24316		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24317					 &tblentry);
24318
24319		bbmult_scale = ladder_iq[index].percent * bbmult;
24320		bbmult_scale /= 100;
24321
24322		tblentry =
24323			((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24324		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24325					 16, &tblentry);
24326	}
24327}
24328
24329static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24330{
24331	u16 tmp;
24332	tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24333
24334	tmp = (tmp & (0x7f << 8)) >> 8;
24335	return (u8) tmp;
24336}
24337
24338static void
24339wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24340{
24341	mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24342
24343	if (NREV_GT(pi->pubpi.phy_rev, 1))
24344		mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24345}
24346
24347static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24348{
24349	u16 m0m1;
24350
24351	wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24352
24353	return m0m1;
24354}
24355
24356static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24357{
24358	u16 m0m1 = (u16) ((m0 << 8) | m1);
24359
24360	wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24361	wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24362}
24363
24364static void
24365wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24366			    struct nphy_papd_restore_state *state, u8 core)
24367{
24368	s32 tone_freq;
24369	u8 off_core;
24370	u16 mixgain = 0;
24371
24372	off_core = core ^ 0x1;
24373	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24374
24375		if (NREV_IS(pi->pubpi.phy_rev, 7)
24376		    || NREV_GE(pi->pubpi.phy_rev, 8))
24377			wlc_phy_rfctrl_override_nphy_rev7(
24378				pi, (0x1 << 7),
24379				wlc_phy_read_lpf_bw_ctl_nphy
24380					(pi,
24381					0), 0, 0,
24382				NPHY_REV7_RFCTRLOVERRIDE_ID1);
24383
24384		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24385			if (pi->pubpi.radiorev == 5)
24386				mixgain = (core == 0) ? 0x20 : 0x00;
24387			else if ((pi->pubpi.radiorev == 7)
24388				 || (pi->pubpi.radiorev == 8))
24389				mixgain = 0x00;
24390			else if ((pi->pubpi.radiorev <= 4)
24391				 || (pi->pubpi.radiorev == 6))
24392				mixgain = 0x00;
24393		} else {
24394			if ((pi->pubpi.radiorev == 4) ||
24395			    (pi->pubpi.radiorev == 6))
24396				mixgain = 0x50;
24397			else if ((pi->pubpi.radiorev == 3)
24398				 || (pi->pubpi.radiorev == 7)
24399				 || (pi->pubpi.radiorev == 8))
24400				mixgain = 0x0;
24401		}
24402
24403		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24404						  mixgain, (1 << core), 0,
24405						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24406
24407		wlc_phy_rfctrl_override_1tomany_nphy(
24408			pi,
24409			NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24410			1, (1 << core), 0);
24411		wlc_phy_rfctrl_override_1tomany_nphy(
24412			pi,
24413			NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24414			0, (1 << off_core), 0);
24415
24416		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24417						  0, 0x3, 0,
24418						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24419		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24420						  (1 << core), 0,
24421						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24422		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24423						  (1 << core), 0,
24424						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24425		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24426						  (1 << core), 0,
24427						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24428		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24429						  (1 << core), 0,
24430						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24431		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24432						  (1 << core), 0,
24433						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24434		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24435						  (1 << core), 0,
24436						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24437		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24438						  (1 << core), 0,
24439						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24440
24441		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24442						  0, (1 << core), 0,
24443						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24444		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24445						  (1 << core), 0,
24446						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24447
24448		state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24449						    0xa6 : 0xa7);
24450		state->afeoverride[core] =
24451			read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24452		state->afectrl[off_core] =
24453			read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24454		state->afeoverride[off_core] =
24455			read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24456
24457		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24458			    (0x1 << 2), 0);
24459		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24460				 0xa5), (0x1 << 2), (0x1 << 2));
24461
24462		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24463			    (0x1 << 2), (0x1 << 2));
24464		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24465				 0x8f), (0x1 << 2), (0x1 << 2));
24466
24467		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24468			state->pwrup[core] =
24469				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24470						TXRXCOUPLE_2G_PWRUP);
24471			state->atten[core] =
24472				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24473						TXRXCOUPLE_2G_ATTEN);
24474			state->pwrup[off_core] =
24475				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24476						TXRXCOUPLE_2G_PWRUP);
24477			state->atten[off_core] =
24478				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24479						TXRXCOUPLE_2G_ATTEN);
24480
24481			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24482					 TXRXCOUPLE_2G_PWRUP, 0xc);
24483
24484			if ((pi->pubpi.radiorev == 3) ||
24485			    (pi->pubpi.radiorev == 4) ||
24486			    (pi->pubpi.radiorev == 6))
24487				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24488						 TXRXCOUPLE_2G_ATTEN, 0xf0);
24489			else if (pi->pubpi.radiorev == 5)
24490				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24491						 TXRXCOUPLE_2G_ATTEN,
24492						 (core == 0) ? 0xf7 : 0xf2);
24493			else if ((pi->pubpi.radiorev == 7)
24494				 || (pi->pubpi.radiorev == 8))
24495				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24496						 TXRXCOUPLE_2G_ATTEN, 0xf0);
24497
24498			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24499					 TXRXCOUPLE_2G_PWRUP, 0x0);
24500			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24501					 TXRXCOUPLE_2G_ATTEN, 0xff);
24502		} else {
24503			state->pwrup[core] =
24504				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24505						TXRXCOUPLE_5G_PWRUP);
24506			state->atten[core] =
24507				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24508						TXRXCOUPLE_5G_ATTEN);
24509			state->pwrup[off_core] =
24510				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24511						TXRXCOUPLE_5G_PWRUP);
24512			state->atten[off_core] =
24513				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24514						TXRXCOUPLE_5G_ATTEN);
24515
24516			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24517					 TXRXCOUPLE_5G_PWRUP, 0xc);
24518
24519			if ((pi->pubpi.radiorev == 7)
24520			    || (pi->pubpi.radiorev == 8))
24521				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24522						 TXRXCOUPLE_5G_ATTEN, 0xf4);
24523
24524			else
24525				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24526						 TXRXCOUPLE_5G_ATTEN, 0xf0);
24527
24528			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24529					 TXRXCOUPLE_5G_PWRUP, 0x0);
24530			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24531					 TXRXCOUPLE_5G_ATTEN, 0xff);
24532		}
24533
24534		tone_freq = 4000;
24535
24536		wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24537
24538		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24539			    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24540
24541		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24542			    0x2a4, (0x1 << 13), (1) << 13);
24543
24544		mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24545			    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24546
24547		mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24548			    0x2a4, (0x1 << 13), (0) << 13);
24549
24550	} else {
24551
24552		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24553
24554		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24555
24556		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24557
24558		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24559		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24560
24561		state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24562						    0xa6 : 0xa7);
24563		state->afeoverride[core] =
24564			read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24565
24566		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24567			    (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24568		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24569				 0xa5),
24570			    (0x1 << 0) |
24571			    (0x1 << 1) |
24572			    (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24573
24574		state->vga_master[core] =
24575			READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24576		WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24577		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24578			state->fbmix[core] =
24579				READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24580						TXFBMIX_G);
24581			state->intpa_master[core] =
24582				READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24583						INTPAG_MASTER);
24584
24585			WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24586					 0x03);
24587			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24588					 INTPAG_MASTER, 0x04);
24589		} else {
24590			state->fbmix[core] =
24591				READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24592						TXFBMIX_A);
24593			state->intpa_master[core] =
24594				READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24595						INTPAA_MASTER);
24596
24597			WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24598					 0x03);
24599			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24600					 INTPAA_MASTER, 0x04);
24601
24602		}
24603
24604		tone_freq = 4000;
24605
24606		wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24607
24608		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24609			    0x29b, (0x1 << 0), (1) << 0);
24610
24611		mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24612			    0x29b, (0x1 << 0), (0) << 0);
24613
24614		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24615	}
24616}
24617
24618static void
24619wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24620			      struct nphy_papd_restore_state *state)
24621{
24622	u8 core;
24623
24624	wlc_phy_stopplayback_nphy(pi);
24625
24626	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24627
24628		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24629
24630			if (CHSPEC_IS2G(pi->radio_chanspec)) {
24631				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24632						 TXRXCOUPLE_2G_PWRUP, 0);
24633				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24634						 TXRXCOUPLE_2G_ATTEN,
24635						 state->atten[core]);
24636			} else {
24637				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24638						 TXRXCOUPLE_5G_PWRUP, 0);
24639				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24640						 TXRXCOUPLE_5G_ATTEN,
24641						 state->atten[core]);
24642			}
24643		}
24644
24645		if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24646			wlc_phy_rfctrl_override_nphy_rev7(
24647				pi, (0x1 << 2),
24648				1, 0x3, 0,
24649				NPHY_REV7_RFCTRLOVERRIDE_ID0);
24650		else
24651			wlc_phy_rfctrl_override_nphy_rev7(
24652				pi, (0x1 << 2),
24653				0, 0x3, 1,
24654				NPHY_REV7_RFCTRLOVERRIDE_ID0);
24655
24656		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24657						  0, 0x3, 1,
24658						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24659		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24660						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24661		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24662						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24663		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24664						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24665		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24666						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24667		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24668						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24669		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24670						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24671		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24672						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24673		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24674						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24675		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24676						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24677		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24678						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24679		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24680						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24681		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24682						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24683		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24684						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24685		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24686						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24687		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24688						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24689
24690		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24691
24692			write_phy_reg(pi, (core == PHY_CORE_0) ?
24693				      0xa6 : 0xa7, state->afectrl[core]);
24694			write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24695				      0xa5, state->afeoverride[core]);
24696		}
24697
24698		wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24699					    (state->mm & 0xff));
24700
24701		if (NREV_IS(pi->pubpi.phy_rev, 7)
24702		    || NREV_GE(pi->pubpi.phy_rev, 8))
24703			wlc_phy_rfctrl_override_nphy_rev7(
24704				pi, (0x1 << 7), 0, 0,
24705				1,
24706				NPHY_REV7_RFCTRLOVERRIDE_ID1);
24707	} else {
24708		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24709		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24710		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24711
24712		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24713		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24714
24715		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24716
24717			WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24718					 state->vga_master[core]);
24719			if (CHSPEC_IS2G(pi->radio_chanspec)) {
24720				WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24721						 TXFBMIX_G, state->fbmix[core]);
24722				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24723						 INTPAG_MASTER,
24724						 state->intpa_master[core]);
24725			} else {
24726				WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24727						 TXFBMIX_A, state->fbmix[core]);
24728				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24729						 INTPAA_MASTER,
24730						 state->intpa_master[core]);
24731			}
24732
24733			write_phy_reg(pi, (core == PHY_CORE_0) ?
24734				      0xa6 : 0xa7, state->afectrl[core]);
24735			write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24736				      0xa5, state->afeoverride[core]);
24737		}
24738
24739		wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24740					    (state->mm & 0xff));
24741
24742		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24743	}
24744}
24745
24746static void
24747wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24748		u32 end)
24749{
24750	u32 *buf, *src, *dst, sz;
24751
24752	sz = end - start + 1;
24753
24754	buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24755	if (NULL == buf)
24756		return;
24757
24758	src = buf;
24759	dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24760
24761	wlc_phy_table_read_nphy(pi,
24762				(core ==
24763				 PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24764				 NPHY_TBL_ID_EPSILONTBL1),
24765				NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24766
24767	do {
24768		u32 phy_a1, phy_a2;
24769		s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24770
24771		phy_a1 = end - min(end, (winsz >> 1));
24772		phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24773			       end + (winsz >> 1));
24774		phy_a3 = phy_a2 - phy_a1 + 1;
24775		phy_a6 = 0;
24776		phy_a7 = 0;
24777
24778		do {
24779			wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24780						    &phy_a5);
24781			phy_a6 += phy_a4;
24782			phy_a7 += phy_a5;
24783		} while (phy_a2-- != phy_a1);
24784
24785		phy_a6 /= phy_a3;
24786		phy_a7 /= phy_a3;
24787		dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24788	} while (end-- != start);
24789
24790	wlc_phy_table_write_nphy(pi,
24791				 (core ==
24792				  PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24793				 NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24794
24795	kfree(buf);
24796}
24797
24798static void
24799wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24800		enum phy_cal_mode cal_mode, u8 core)
24801{
24802	u16 phy_a1, phy_a2, phy_a3;
24803	u16 phy_a4, phy_a5;
24804	bool phy_a6;
24805	u8 phy_a7, m[2];
24806	u32 phy_a8 = 0;
24807	struct nphy_txgains phy_a9;
24808
24809	if (NREV_LT(pi->pubpi.phy_rev, 3))
24810		return;
24811
24812	phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24813
24814	phy_a6 = ((cal_mode == CAL_GCTRL)
24815		  || (cal_mode == CAL_SOFT)) ? true : false;
24816
24817	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24818
24819		phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24820
24821		if (CHSPEC_IS2G(pi->radio_chanspec))
24822			phy_a5 = ((phy_a9.txlpf[core] << 15) |
24823				  (phy_a9.txgm[core] << 12) |
24824				  (phy_a9.pga[core] << 8) |
24825				  (txgains->gains.pad[core] << 3) |
24826				  (phy_a9.ipa[core]));
24827		else
24828			phy_a5 = ((phy_a9.txlpf[core] << 15) |
24829				  (phy_a9.txgm[core] << 12) |
24830				  (txgains->gains.pga[core] << 8) |
24831				  (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24832
24833		wlc_phy_rfctrl_override_1tomany_nphy(
24834			pi,
24835			NPHY_REV7_RfctrlOverride_cmd_txgain,
24836			phy_a5, (1 << core), 0);
24837
24838		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24839			if ((pi->pubpi.radiorev <= 4)
24840			    || (pi->pubpi.radiorev == 6))
24841				m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24842					  60 : 79;
24843			else
24844				m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24845					  45 : 64;
24846		} else {
24847			m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24848		}
24849
24850		m[phy_a7] = 0;
24851		wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24852
24853		phy_a2 = 63;
24854
24855		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24856			if ((pi->pubpi.radiorev == 4)
24857			    || (pi->pubpi.radiorev == 6)) {
24858				phy_a1 = 30;
24859				phy_a3 = 30;
24860			} else {
24861				phy_a1 = 25;
24862				phy_a3 = 25;
24863			}
24864		} else {
24865			if ((pi->pubpi.radiorev == 5)
24866			    || (pi->pubpi.radiorev == 7)
24867			    || (pi->pubpi.radiorev == 8)) {
24868				phy_a1 = 25;
24869				phy_a3 = 25;
24870			} else {
24871				phy_a1 = 35;
24872				phy_a3 = 35;
24873			}
24874		}
24875
24876		if (cal_mode == CAL_GCTRL) {
24877			if ((pi->pubpi.radiorev == 5)
24878			    && (CHSPEC_IS2G(pi->radio_chanspec)))
24879				phy_a1 = 55;
24880			else if (((pi->pubpi.radiorev == 7) &&
24881				  (CHSPEC_IS2G(pi->radio_chanspec))) ||
24882				 ((pi->pubpi.radiorev == 8) &&
24883				  (CHSPEC_IS2G(pi->radio_chanspec))))
24884				phy_a1 = 60;
24885			else
24886				phy_a1 = 63;
24887
24888		} else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
24889
24890			phy_a1 = 35;
24891			phy_a3 = 35;
24892		}
24893
24894		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24895			    0x29b, (0x1 << 0), (1) << 0);
24896
24897		mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24898			    0x29b, (0x1 << 0), (0) << 0);
24899
24900		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24901			    0x2a4, (0x1 << 13), (1) << 13);
24902
24903		mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24904			    0x2a4, (0x1 << 13), (0) << 13);
24905
24906		write_phy_reg(pi, 0x2a1, 0x80);
24907		write_phy_reg(pi, 0x2a2, 0x100);
24908
24909		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24910			    0x2a4, (0x7 << 4), (11) << 4);
24911
24912		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24913			    0x2a4, (0x7 << 8), (11) << 8);
24914
24915		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24916			    0x2a4, (0x7 << 0), (0x3) << 0);
24917
24918		write_phy_reg(pi, 0x2e5, 0x20);
24919
24920		mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24921
24922		mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24923
24924		mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24925
24926		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24927						  1, ((core == 0) ? 1 : 2), 0,
24928						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24929		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24930						  0, ((core == 0) ? 2 : 1), 0,
24931						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24932
24933		write_phy_reg(pi, 0x2be, 1);
24934		SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24935
24936		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24937						  0, 0x3, 0,
24938						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24939
24940		wlc_phy_table_write_nphy(pi,
24941					 (core ==
24942					  PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24943					 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24944					 32, &phy_a8);
24945
24946		if (cal_mode != CAL_GCTRL) {
24947			if (CHSPEC_IS5G(pi->radio_chanspec))
24948				wlc_phy_a1_nphy(pi, core, 5, 0, 35);
24949		}
24950
24951		wlc_phy_rfctrl_override_1tomany_nphy(
24952			pi,
24953			NPHY_REV7_RfctrlOverride_cmd_txgain,
24954			phy_a5, (1 << core), 1);
24955
24956	} else {
24957
24958		if (txgains) {
24959			if (txgains->useindex) {
24960				phy_a4 = 15 - ((txgains->index) >> 3);
24961				if (CHSPEC_IS2G(pi->radio_chanspec)) {
24962					if (NREV_GE(pi->pubpi.phy_rev, 6) &&
24963					    pi->sh->chip == BCMA_CHIP_ID_BCM47162) {
24964						phy_a5 = 0x10f7 | (phy_a4 << 8);
24965					} else if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24966						phy_a5 = 0x00f7 | (phy_a4 << 8);
24967					} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
24968						phy_a5 = 0x10f7 | (phy_a4 << 8);
24969					} else {
24970						phy_a5 = 0x50f7 | (phy_a4 << 8);
24971					}
24972				} else {
24973					phy_a5 = 0x70f7 | (phy_a4 << 8);
24974				}
24975				wlc_phy_rfctrl_override_nphy(pi,
24976							     (0x1 << 13),
24977							     phy_a5,
24978							     (1 << core), 0);
24979			} else {
24980				wlc_phy_rfctrl_override_nphy(pi,
24981							     (0x1 << 13),
24982							     0x5bf7,
24983							     (1 << core), 0);
24984			}
24985		}
24986
24987		if (CHSPEC_IS2G(pi->radio_chanspec))
24988			m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
24989		else
24990			m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24991
24992		m[phy_a7] = 0;
24993		wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24994
24995		phy_a2 = 63;
24996
24997		if (cal_mode == CAL_FULL) {
24998			phy_a1 = 25;
24999			phy_a3 = 25;
25000		} else if (cal_mode == CAL_SOFT) {
25001			phy_a1 = 25;
25002			phy_a3 = 25;
25003		} else if (cal_mode == CAL_GCTRL) {
25004			phy_a1 = 63;
25005			phy_a3 = 25;
25006		} else {
25007
25008			phy_a1 = 25;
25009			phy_a3 = 25;
25010		}
25011
25012		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
25013			    0x29b, (0x1 << 0), (1) << 0);
25014
25015		mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
25016			    0x29b, (0x1 << 0), (0) << 0);
25017
25018		if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25019			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25020				    0x2a4, (0x1 << 13), (1) << 13);
25021
25022			mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25023				    0x2a4, (0x1 << 13), (0) << 13);
25024
25025			write_phy_reg(pi, 0x2a1, 0x20);
25026			write_phy_reg(pi, 0x2a2, 0x60);
25027
25028			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25029				    0x2a4, (0xf << 4), (9) << 4);
25030
25031			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25032				    0x2a4, (0xf << 8), (9) << 8);
25033
25034			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25035				    0x2a4, (0xf << 0), (0x2) << 0);
25036
25037			write_phy_reg(pi, 0x2e5, 0x20);
25038		} else {
25039			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25040				    0x2a4, (0x1 << 11), (1) << 11);
25041
25042			mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25043				    0x2a4, (0x1 << 11), (0) << 11);
25044
25045			write_phy_reg(pi, 0x2a1, 0x80);
25046			write_phy_reg(pi, 0x2a2, 0x600);
25047
25048			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25049				    0x2a4, (0x7 << 4), (0) << 4);
25050
25051			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25052				    0x2a4, (0x7 << 8), (0) << 8);
25053
25054			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25055				    0x2a4, (0x7 << 0), (0x3) << 0);
25056
25057			mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
25058
25059		}
25060
25061		mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
25062
25063		mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
25064
25065		mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
25066
25067		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
25068
25069		write_phy_reg(pi, 0x2be, 1);
25070		SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
25071
25072		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
25073
25074		wlc_phy_table_write_nphy(pi,
25075					 (core ==
25076					  PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
25077					 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
25078					 32, &phy_a8);
25079
25080		if (cal_mode != CAL_GCTRL)
25081			wlc_phy_a1_nphy(pi, core, 5, 0, 40);
25082	}
25083}
25084
25085static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
25086{
25087	int phy_a1;
25088	int phy_a2;
25089	bool phy_a3;
25090	struct nphy_ipa_txcalgains phy_a4;
25091	bool phy_a5 = false;
25092	bool phy_a6 = true;
25093	s32 phy_a7, phy_a8;
25094	u32 phy_a9;
25095	int phy_a10;
25096	bool phy_a11 = false;
25097	int phy_a12;
25098	u8 phy_a13 = 0;
25099	u8 phy_a14;
25100	u8 *phy_a15 = NULL;
25101
25102	phy_a4.useindex = true;
25103	phy_a12 = start_gain;
25104
25105	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25106
25107		phy_a2 = 20;
25108		phy_a1 = 1;
25109
25110		if (CHSPEC_IS2G(pi->radio_chanspec)) {
25111			if (pi->pubpi.radiorev == 5) {
25112
25113				phy_a15 = pad_gain_codes_used_2057rev5;
25114				phy_a13 =
25115					ARRAY_SIZE(pad_gain_codes_used_2057rev5) - 1;
25116
25117			} else if ((pi->pubpi.radiorev == 7)
25118				   || (pi->pubpi.radiorev == 8)) {
25119
25120				phy_a15 = pad_gain_codes_used_2057rev7;
25121				phy_a13 =
25122					ARRAY_SIZE(pad_gain_codes_used_2057rev7) - 1;
25123
25124			} else {
25125
25126				phy_a15 = pad_all_gain_codes_2057;
25127				phy_a13 = ARRAY_SIZE(pad_all_gain_codes_2057) -
25128					  1;
25129			}
25130
25131		} else {
25132
25133			phy_a15 = pga_all_gain_codes_2057;
25134			phy_a13 = ARRAY_SIZE(pga_all_gain_codes_2057) - 1;
25135		}
25136
25137		phy_a14 = 0;
25138
25139		for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25140			if (CHSPEC_IS2G(pi->radio_chanspec))
25141				phy_a4.gains.pad[core] =
25142					(u16) phy_a15[phy_a12];
25143			else
25144				phy_a4.gains.pga[core] =
25145					(u16) phy_a15[phy_a12];
25146
25147			wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25148
25149			wlc_phy_table_read_nphy(pi,
25150						(core ==
25151						 PHY_CORE_0 ?
25152						 NPHY_TBL_ID_EPSILONTBL0 :
25153						 NPHY_TBL_ID_EPSILONTBL1), 1,
25154						63, 32, &phy_a9);
25155
25156			wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25157
25158			phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25159				  (phy_a8 == 4095) || (phy_a8 == -4096));
25160
25161			if (!phy_a6 && (phy_a3 != phy_a5)) {
25162				if (!phy_a3)
25163					phy_a12 -= (u8) phy_a1;
25164
25165				phy_a11 = true;
25166				break;
25167			}
25168
25169			if (phy_a3)
25170				phy_a12 += (u8) phy_a1;
25171			else
25172				phy_a12 -= (u8) phy_a1;
25173
25174			if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25175				if (phy_a12 < phy_a14)
25176					phy_a12 = phy_a14;
25177				else
25178					phy_a12 = phy_a13;
25179
25180				phy_a11 = true;
25181				break;
25182			}
25183
25184			phy_a6 = false;
25185			phy_a5 = phy_a3;
25186		}
25187
25188	} else {
25189		phy_a2 = 10;
25190		phy_a1 = 8;
25191		for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25192			phy_a4.index = (u8) phy_a12;
25193			wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25194
25195			wlc_phy_table_read_nphy(pi,
25196						(core ==
25197						 PHY_CORE_0 ?
25198						 NPHY_TBL_ID_EPSILONTBL0 :
25199						 NPHY_TBL_ID_EPSILONTBL1), 1,
25200						63, 32, &phy_a9);
25201
25202			wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25203
25204			phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25205				  (phy_a8 == 4095) || (phy_a8 == -4096));
25206
25207			if (!phy_a6 && (phy_a3 != phy_a5)) {
25208				if (!phy_a3)
25209					phy_a12 -= (u8) phy_a1;
25210
25211				phy_a11 = true;
25212				break;
25213			}
25214
25215			if (phy_a3)
25216				phy_a12 += (u8) phy_a1;
25217			else
25218				phy_a12 -= (u8) phy_a1;
25219
25220			if ((phy_a12 < 0) || (phy_a12 > 127)) {
25221				if (phy_a12 < 0)
25222					phy_a12 = 0;
25223				else
25224					phy_a12 = 127;
25225
25226				phy_a11 = true;
25227				break;
25228			}
25229
25230			phy_a6 = false;
25231			phy_a5 = phy_a3;
25232		}
25233
25234	}
25235
25236	if (NREV_GE(pi->pubpi.phy_rev, 7))
25237		return (u8) phy_a15[phy_a12];
25238	else
25239		return (u8) phy_a12;
25240
25241}
25242
25243static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25244{
25245	struct nphy_ipa_txcalgains phy_b1[2];
25246	struct nphy_papd_restore_state phy_b2;
25247	bool phy_b3;
25248	u8 phy_b4;
25249	u8 phy_b5;
25250	s16 phy_b6, phy_b7, phy_b8;
25251	u16 phy_b9;
25252	s16 phy_b10, phy_b11, phy_b12;
25253
25254	phy_b11 = 0;
25255	phy_b12 = 0;
25256	phy_b7 = 0;
25257	phy_b8 = 0;
25258	phy_b6 = 0;
25259
25260	if (pi->nphy_papd_skip == 1)
25261		return;
25262
25263	phy_b3 = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
25264			MCTL_EN_MAC));
25265	if (!phy_b3)
25266		wlapi_suspend_mac_and_wait(pi->sh->physhim);
25267
25268	wlc_phy_stay_in_carriersearch_nphy(pi, true);
25269
25270	pi->nphy_force_papd_cal = false;
25271
25272	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25273		pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25274			wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25275
25276	pi->nphy_papd_last_cal = pi->sh->now;
25277	pi->nphy_papd_recal_counter++;
25278
25279	phy_b4 = pi->nphy_txpwrctrl;
25280	wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25281
25282	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25283				 nphy_papd_scaltbl);
25284	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25285				 nphy_papd_scaltbl);
25286
25287	phy_b9 = read_phy_reg(pi, 0x01);
25288	mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25289
25290	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25291		s32 i, val = 0;
25292		for (i = 0; i < 64; i++)
25293			wlc_phy_table_write_nphy(pi,
25294						 ((phy_b5 ==
25295						   PHY_CORE_0) ?
25296						  NPHY_TBL_ID_EPSILONTBL0 :
25297						  NPHY_TBL_ID_EPSILONTBL1), 1,
25298						 i, 32, &val);
25299	}
25300
25301	wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25302
25303	phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25304	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25305		wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25306
25307		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25308			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25309				if ((pi->pubpi.radiorev == 3)
25310				    || (pi->pubpi.radiorev == 4)
25311				    || (pi->pubpi.radiorev == 6)) {
25312					pi->nphy_papd_cal_gain_index[phy_b5] =
25313						23;
25314				} else if (pi->pubpi.radiorev == 5) {
25315					pi->nphy_papd_cal_gain_index[phy_b5] =
25316						0;
25317					pi->nphy_papd_cal_gain_index[phy_b5] =
25318						wlc_phy_a3_nphy(
25319							pi,
25320							pi->
25321							nphy_papd_cal_gain_index
25322							[phy_b5],
25323							phy_b5);
25324
25325				} else if ((pi->pubpi.radiorev == 7)
25326					   || (pi->pubpi.radiorev == 8)) {
25327
25328					pi->nphy_papd_cal_gain_index[phy_b5] =
25329						0;
25330					pi->nphy_papd_cal_gain_index[phy_b5] =
25331						wlc_phy_a3_nphy(
25332							pi,
25333							pi->
25334							nphy_papd_cal_gain_index
25335							[phy_b5],
25336							phy_b5);
25337
25338				}
25339
25340				phy_b1[phy_b5].gains.pad[phy_b5] =
25341					pi->nphy_papd_cal_gain_index[phy_b5];
25342
25343			} else {
25344				pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25345				pi->nphy_papd_cal_gain_index[phy_b5] =
25346					wlc_phy_a3_nphy(
25347						pi,
25348						pi->
25349						nphy_papd_cal_gain_index
25350						[phy_b5], phy_b5);
25351				phy_b1[phy_b5].gains.pga[phy_b5] =
25352					pi->nphy_papd_cal_gain_index[phy_b5];
25353			}
25354		} else {
25355			phy_b1[phy_b5].useindex = true;
25356			phy_b1[phy_b5].index = 16;
25357			phy_b1[phy_b5].index =
25358				wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25359						phy_b5);
25360
25361			pi->nphy_papd_cal_gain_index[phy_b5] =
25362				15 - ((phy_b1[phy_b5].index) >> 3);
25363		}
25364
25365		switch (pi->nphy_papd_cal_type) {
25366		case 0:
25367			wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25368			break;
25369		case 1:
25370			wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25371			break;
25372		}
25373
25374		if (NREV_GE(pi->pubpi.phy_rev, 7))
25375			wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25376	}
25377
25378	if (NREV_LT(pi->pubpi.phy_rev, 7))
25379		wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25380
25381	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25382		int eps_offset = 0;
25383
25384		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25385			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25386				if (pi->pubpi.radiorev == 3)
25387					eps_offset = -2;
25388				else if (pi->pubpi.radiorev == 5)
25389					eps_offset = 3;
25390				else
25391					eps_offset = -1;
25392			} else {
25393				eps_offset = 2;
25394			}
25395
25396			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25397				phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25398				phy_b10 = 0;
25399				if ((pi->pubpi.radiorev == 3) ||
25400				    (pi->pubpi.radiorev == 4) ||
25401				    (pi->pubpi.radiorev == 6)) {
25402					phy_b12 = -(
25403					    nphy_papd_padgain_dlt_2g_2057rev3n4
25404							     [phy_b8] + 1) / 2;
25405					phy_b10 = -1;
25406				} else if (pi->pubpi.radiorev == 5) {
25407					phy_b12 = -(
25408					    nphy_papd_padgain_dlt_2g_2057rev5
25409							     [phy_b8] + 1) / 2;
25410				} else if ((pi->pubpi.radiorev == 7) ||
25411					   (pi->pubpi.radiorev == 8)) {
25412					phy_b12 = -(
25413					    nphy_papd_padgain_dlt_2g_2057rev7
25414							     [phy_b8] + 1) / 2;
25415				}
25416			} else {
25417				phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25418				if ((pi->pubpi.radiorev == 3) ||
25419				    (pi->pubpi.radiorev == 4) ||
25420				    (pi->pubpi.radiorev == 6))
25421					phy_b11 =
25422						-(nphy_papd_pgagain_dlt_5g_2057
25423						  [phy_b7]
25424						  + 1) / 2;
25425				else if ((pi->pubpi.radiorev == 7)
25426					 || (pi->pubpi.radiorev == 8))
25427					phy_b11 = -(
25428					      nphy_papd_pgagain_dlt_5g_2057rev7
25429							     [phy_b7] + 1) / 2;
25430
25431				phy_b10 = -9;
25432			}
25433
25434			if (CHSPEC_IS2G(pi->radio_chanspec))
25435				phy_b6 =
25436					-60 + 27 + eps_offset + phy_b12 +
25437					phy_b10;
25438			else
25439				phy_b6 =
25440					-60 + 27 + eps_offset + phy_b11 +
25441					phy_b10;
25442
25443			mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25444				    0x29c, (0x1ff << 7), (phy_b6) << 7);
25445
25446			pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25447		} else {
25448			if (NREV_LT(pi->pubpi.phy_rev, 5))
25449				eps_offset = 4;
25450			else
25451				eps_offset = 2;
25452
25453			phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25454
25455			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25456				phy_b11 =
25457					-(nphy_papd_pga_gain_delta_ipa_2g[
25458						  phy_b7] +
25459					  1) / 2;
25460				phy_b10 = 0;
25461			} else {
25462				phy_b11 =
25463					-(nphy_papd_pga_gain_delta_ipa_5g[
25464						  phy_b7] +
25465					  1) / 2;
25466				phy_b10 = -9;
25467			}
25468
25469			phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25470
25471			mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25472				    0x29c, (0x1ff << 7), (phy_b6) << 7);
25473
25474			pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25475		}
25476	}
25477
25478	mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25479		    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25480
25481	mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25482		    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25483
25484	if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25485		mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25486			    0x2a4, (0x1 << 13), (0) << 13);
25487
25488		mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25489			    0x2a4, (0x1 << 13), (0) << 13);
25490
25491	} else {
25492		mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25493			    0x2a4, (0x1 << 11), (0) << 11);
25494
25495		mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25496			    0x2a4, (0x1 << 11), (0) << 11);
25497
25498	}
25499	pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25500
25501	write_phy_reg(pi, 0x01, phy_b9);
25502
25503	wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25504
25505	wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25506	if (phy_b4 == PHY_TPC_HW_OFF) {
25507		wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25508					 (s8) (pi->nphy_txpwrindex[0].
25509					       index_internal), false);
25510		wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25511					 (s8) (pi->nphy_txpwrindex[1].
25512					       index_internal), false);
25513	}
25514
25515	wlc_phy_stay_in_carriersearch_nphy(pi, false);
25516
25517	if (!phy_b3)
25518		wlapi_enable_mac(pi->sh->physhim);
25519}
25520
25521void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25522{
25523	struct nphy_txgains target_gain;
25524	u8 tx_pwr_ctrl_state;
25525	bool fullcal = true;
25526	bool restore_tx_gain = false;
25527	bool mphase;
25528
25529	if (PHY_MUTED(pi))
25530		return;
25531
25532	if (caltype == PHY_PERICAL_AUTO)
25533		fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25534	else if (caltype == PHY_PERICAL_PARTIAL)
25535		fullcal = false;
25536
25537	if (pi->cal_type_override != PHY_PERICAL_AUTO)
25538		fullcal =
25539			(pi->cal_type_override ==
25540			 PHY_PERICAL_FULL) ? true : false;
25541
25542	if ((pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT)) {
25543		if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25544			wlc_phy_cal_perical_mphase_restart(pi);
25545	}
25546
25547	if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL))
25548		wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25549
25550	wlapi_suspend_mac_and_wait(pi->sh->physhim);
25551
25552	wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25553
25554	if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25555	    (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25556		pi->nphy_cal_orig_pwr_idx[0] =
25557			(u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25558		pi->nphy_cal_orig_pwr_idx[1] =
25559			(u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25560
25561		if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25562			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25563						0x110, 16,
25564						pi->nphy_cal_orig_tx_gain);
25565		} else {
25566			pi->nphy_cal_orig_tx_gain[0] = 0;
25567			pi->nphy_cal_orig_tx_gain[1] = 0;
25568		}
25569	}
25570	target_gain = wlc_phy_get_tx_gain_nphy(pi);
25571	tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25572	wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25573
25574	if (pi->antsel_type == ANTSEL_2x3)
25575		wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25576
25577	mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25578	if (!mphase) {
25579
25580		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25581			wlc_phy_precal_txgain_nphy(pi);
25582			pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25583			restore_tx_gain = true;
25584
25585			target_gain = pi->nphy_cal_target_gain;
25586		}
25587		if (0 ==
25588		    wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25589					    mphase)) {
25590			if (PHY_IPA(pi))
25591				wlc_phy_a4(pi, true);
25592
25593			wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25594			wlapi_enable_mac(pi->sh->physhim);
25595			wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25596					     10000);
25597			wlapi_suspend_mac_and_wait(pi->sh->physhim);
25598			wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25599
25600			if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25601					(pi->first_cal_after_assoc ||
25602					(pi->cal_type_override ==
25603					 PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25604				wlc_phy_savecal_nphy(pi);
25605
25606				wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25607
25608				pi->nphy_perical_last = pi->sh->now;
25609			}
25610		}
25611		if (caltype != PHY_PERICAL_AUTO)
25612			wlc_phy_rssi_cal_nphy(pi);
25613
25614		if (pi->first_cal_after_assoc
25615		    || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25616			pi->first_cal_after_assoc = false;
25617			wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25618			wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25619		}
25620
25621		if (NREV_GE(pi->pubpi.phy_rev, 3))
25622			wlc_phy_radio205x_vcocal_nphy(pi);
25623	} else {
25624		switch (pi->mphase_cal_phase_id) {
25625		case MPHASE_CAL_STATE_INIT:
25626			pi->nphy_perical_last = pi->sh->now;
25627			pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25628
25629			if (NREV_GE(pi->pubpi.phy_rev, 3))
25630				wlc_phy_precal_txgain_nphy(pi);
25631
25632			pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25633			pi->mphase_cal_phase_id++;
25634			break;
25635
25636		case MPHASE_CAL_STATE_TXPHASE0:
25637		case MPHASE_CAL_STATE_TXPHASE1:
25638		case MPHASE_CAL_STATE_TXPHASE2:
25639		case MPHASE_CAL_STATE_TXPHASE3:
25640		case MPHASE_CAL_STATE_TXPHASE4:
25641		case MPHASE_CAL_STATE_TXPHASE5:
25642			if ((pi->radar_percal_mask & 0x10) != 0)
25643				pi->nphy_rxcal_active = true;
25644
25645			if (wlc_phy_cal_txiqlo_nphy
25646				    (pi, pi->nphy_cal_target_gain, fullcal,
25647				    true) != 0) {
25648
25649				wlc_phy_cal_perical_mphase_reset(pi);
25650				break;
25651			}
25652
25653			if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25654			    (pi->mphase_cal_phase_id ==
25655			     MPHASE_CAL_STATE_TXPHASE4))
25656				pi->mphase_cal_phase_id += 2;
25657			else
25658				pi->mphase_cal_phase_id++;
25659			break;
25660
25661		case MPHASE_CAL_STATE_PAPDCAL:
25662			if ((pi->radar_percal_mask & 0x2) != 0)
25663				pi->nphy_rxcal_active = true;
25664
25665			if (PHY_IPA(pi))
25666				wlc_phy_a4(pi, true);
25667
25668			pi->mphase_cal_phase_id++;
25669			break;
25670
25671		case MPHASE_CAL_STATE_RXCAL:
25672			if ((pi->radar_percal_mask & 0x1) != 0)
25673				pi->nphy_rxcal_active = true;
25674			if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25675						  (pi->first_cal_after_assoc ||
25676						   (pi->cal_type_override ==
25677						    PHY_PERICAL_FULL)) ? 2 : 0,
25678						  false) == 0)
25679				wlc_phy_savecal_nphy(pi);
25680
25681			pi->mphase_cal_phase_id++;
25682			break;
25683
25684		case MPHASE_CAL_STATE_RSSICAL:
25685			if ((pi->radar_percal_mask & 0x4) != 0)
25686				pi->nphy_rxcal_active = true;
25687			wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25688			wlc_phy_rssi_cal_nphy(pi);
25689
25690			if (NREV_GE(pi->pubpi.phy_rev, 3))
25691				wlc_phy_radio205x_vcocal_nphy(pi);
25692
25693			restore_tx_gain = true;
25694
25695			if (pi->first_cal_after_assoc)
25696				pi->mphase_cal_phase_id++;
25697			else
25698				wlc_phy_cal_perical_mphase_reset(pi);
25699
25700			break;
25701
25702		case MPHASE_CAL_STATE_IDLETSSI:
25703			if ((pi->radar_percal_mask & 0x8) != 0)
25704				pi->nphy_rxcal_active = true;
25705
25706			if (pi->first_cal_after_assoc) {
25707				pi->first_cal_after_assoc = false;
25708				wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25709				wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25710			}
25711
25712			wlc_phy_cal_perical_mphase_reset(pi);
25713			break;
25714
25715		default:
25716			wlc_phy_cal_perical_mphase_reset(pi);
25717			break;
25718		}
25719	}
25720
25721	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25722		if (restore_tx_gain) {
25723			if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25724
25725				wlc_phy_txpwr_index_nphy(pi, 1,
25726							 pi->
25727							 nphy_cal_orig_pwr_idx
25728							 [0], false);
25729				wlc_phy_txpwr_index_nphy(pi, 2,
25730							 pi->
25731							 nphy_cal_orig_pwr_idx
25732							 [1], false);
25733
25734				pi->nphy_txpwrindex[0].index = -1;
25735				pi->nphy_txpwrindex[1].index = -1;
25736			} else {
25737				wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25738							 (s8) (pi->
25739							       nphy_txpwrindex
25740							       [0].
25741							       index_internal),
25742							 false);
25743				wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25744							 (s8) (pi->
25745							       nphy_txpwrindex
25746							       [1].
25747							       index_internal),
25748							 false);
25749			}
25750		}
25751	}
25752
25753	wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25754	wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25755	wlapi_enable_mac(pi->sh->physhim);
25756}
25757
25758int
25759wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25760			bool fullcal, bool mphase)
25761{
25762	u16 val;
25763	u16 tbl_buf[11];
25764	u8 cal_cnt;
25765	u16 cal_cmd;
25766	u8 num_cals, max_cal_cmds;
25767	u16 core_no, cal_type;
25768	u16 diq_start = 0;
25769	u8 phy_bw;
25770	u16 max_val;
25771	u16 tone_freq;
25772	u16 gain_save[2];
25773	u16 cal_gain[2];
25774	struct nphy_iqcal_params cal_params[2];
25775	u32 tbl_len;
25776	void *tbl_ptr;
25777	bool ladder_updated[2];
25778	u8 mphase_cal_lastphase = 0;
25779	int bcmerror = 0;
25780	bool phyhang_avoid_state = false;
25781
25782	u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
25783		0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25784		0x1902,
25785		0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25786		0x6407
25787	};
25788
25789	u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
25790		0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25791		0x3200,
25792		0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25793		0x6407
25794	};
25795
25796	u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
25797		0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25798		0x1202,
25799		0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25800		0x4707
25801	};
25802
25803	u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
25804		0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25805		0x2300,
25806		0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25807		0x4707
25808	};
25809
25810	u16 tbl_tx_iqlo_cal_startcoefs[] = {
25811		0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25812		0x0000
25813	};
25814
25815	u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
25816		0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25817		0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25818	};
25819
25820	u16 tbl_tx_iqlo_cal_cmds_recal[] = {
25821		0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25822		0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25823	};
25824
25825	u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
25826		0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25827		0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25828		0x0000
25829	};
25830
25831	u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
25832		0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25833		0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25834	};
25835
25836	u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
25837		0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25838		0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25839	};
25840
25841	wlc_phy_stay_in_carriersearch_nphy(pi, true);
25842
25843	if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25844		phyhang_avoid_state = pi->phyhang_avoid;
25845		pi->phyhang_avoid = false;
25846	}
25847
25848	if (CHSPEC_IS40(pi->radio_chanspec))
25849		phy_bw = 40;
25850	else
25851		phy_bw = 20;
25852
25853	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25854
25855	for (core_no = 0; core_no <= 1; core_no++) {
25856		wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25857					      &cal_params[core_no]);
25858		cal_gain[core_no] = cal_params[core_no].cal_gain;
25859	}
25860
25861	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25862
25863	wlc_phy_txcal_radio_setup_nphy(pi);
25864
25865	wlc_phy_txcal_physetup_nphy(pi);
25866
25867	ladder_updated[0] = ladder_updated[1] = false;
25868	if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
25869	      (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
25870	       && (CHSPEC_IS2G(pi->radio_chanspec))))) {
25871
25872		if (phy_bw == 40) {
25873			tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
25874			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
25875		} else {
25876			tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
25877			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
25878		}
25879		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
25880					 16, tbl_ptr);
25881
25882		if (phy_bw == 40) {
25883			tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
25884			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
25885		} else {
25886			tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
25887			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
25888		}
25889		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
25890					 16, tbl_ptr);
25891	}
25892
25893	if (NREV_GE(pi->pubpi.phy_rev, 7))
25894		write_phy_reg(pi, 0xc2, 0x8ad9);
25895	else
25896		write_phy_reg(pi, 0xc2, 0x8aa9);
25897
25898	max_val = 250;
25899	tone_freq = (phy_bw == 20) ? 2500 : 5000;
25900
25901	if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25902		wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
25903		bcmerror = 0;
25904	} else {
25905		bcmerror =
25906			wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
25907					     false);
25908	}
25909
25910	if (bcmerror == 0) {
25911
25912		if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25913			tbl_ptr = pi->mphase_txcal_bestcoeffs;
25914			tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25915			if (NREV_LT(pi->pubpi.phy_rev, 3))
25916				tbl_len -= 2;
25917		} else {
25918			if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
25919
25920				tbl_ptr = pi->nphy_txiqlocal_bestc;
25921				tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25922				if (NREV_LT(pi->pubpi.phy_rev, 3))
25923					tbl_len -= 2;
25924			} else {
25925
25926				fullcal = true;
25927
25928				if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25929					tbl_ptr =
25930					    tbl_tx_iqlo_cal_startcoefs_nphyrev3;
25931					tbl_len = ARRAY_SIZE(
25932					   tbl_tx_iqlo_cal_startcoefs_nphyrev3);
25933				} else {
25934					tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
25935					tbl_len = ARRAY_SIZE(
25936						    tbl_tx_iqlo_cal_startcoefs);
25937				}
25938			}
25939		}
25940		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
25941					 16, tbl_ptr);
25942
25943		if (fullcal) {
25944			max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25945				       ARRAY_SIZE(
25946				tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
25947				       ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
25948		} else {
25949			max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25950				       ARRAY_SIZE(
25951				tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
25952				       ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
25953		}
25954
25955		if (mphase) {
25956			cal_cnt = pi->mphase_txcal_cmdidx;
25957			if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
25958				num_cals = cal_cnt + pi->mphase_txcal_numcmds;
25959			else
25960				num_cals = max_cal_cmds;
25961		} else {
25962			cal_cnt = 0;
25963			num_cals = max_cal_cmds;
25964		}
25965
25966		for (; cal_cnt < num_cals; cal_cnt++) {
25967
25968			if (fullcal) {
25969				cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25970					  tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
25971					  [cal_cnt] :
25972					  tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
25973			} else {
25974				cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25975					  tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
25976					cal_cnt]
25977					  : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
25978			}
25979
25980			core_no = ((cal_cmd & 0x3000) >> 12);
25981			cal_type = ((cal_cmd & 0x0F00) >> 8);
25982
25983			if (NREV_GE(pi->pubpi.phy_rev, 6) ||
25984			    (NREV_IS(pi->pubpi.phy_rev, 5) &&
25985			     PHY_IPA(pi)
25986			     && (CHSPEC_IS2G(pi->radio_chanspec)))) {
25987				if (!ladder_updated[core_no]) {
25988					wlc_phy_update_txcal_ladder_nphy(
25989						pi,
25990						core_no);
25991					ladder_updated[core_no] = true;
25992				}
25993			}
25994
25995			val =
25996				(cal_params[core_no].
25997				 ncorr[cal_type] << 8) | NPHY_N_GCTL;
25998			write_phy_reg(pi, 0xc1, val);
25999
26000			if ((cal_type == 1) || (cal_type == 3)
26001			    || (cal_type == 4)) {
26002
26003				wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26004							1, 69 + core_no, 16,
26005							tbl_buf);
26006
26007				diq_start = tbl_buf[0];
26008
26009				tbl_buf[0] = 0;
26010				wlc_phy_table_write_nphy(pi,
26011							 NPHY_TBL_ID_IQLOCAL, 1,
26012							 69 + core_no, 16,
26013							 tbl_buf);
26014			}
26015
26016			write_phy_reg(pi, 0xc0, cal_cmd);
26017
26018			SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
26019				 20000);
26020			if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
26021				 "HW error: txiq calib"))
26022				return -EIO;
26023
26024			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26025						tbl_len, 96, 16, tbl_buf);
26026			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26027						 tbl_len, 64, 16, tbl_buf);
26028
26029			if ((cal_type == 1) || (cal_type == 3)
26030			    || (cal_type == 4)) {
26031
26032				tbl_buf[0] = diq_start;
26033
26034			}
26035
26036		}
26037
26038		if (mphase) {
26039			pi->mphase_txcal_cmdidx = num_cals;
26040			if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
26041				pi->mphase_txcal_cmdidx = 0;
26042		}
26043
26044		mphase_cal_lastphase =
26045			(NREV_LE(pi->pubpi.phy_rev, 2)) ?
26046			MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
26047
26048		if (!mphase
26049		    || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
26050
26051			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
26052						16, tbl_buf);
26053			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26054						 16, tbl_buf);
26055
26056			if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26057
26058				tbl_buf[0] = 0;
26059				tbl_buf[1] = 0;
26060				tbl_buf[2] = 0;
26061				tbl_buf[3] = 0;
26062
26063			}
26064			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26065						 16, tbl_buf);
26066
26067			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
26068						16, tbl_buf);
26069			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26070						 16, tbl_buf);
26071
26072			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26073						 16, tbl_buf);
26074
26075			tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
26076			if (NREV_LT(pi->pubpi.phy_rev, 3))
26077				tbl_len -= 2;
26078
26079			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26080						tbl_len, 96, 16,
26081						pi->nphy_txiqlocal_bestc);
26082
26083			pi->nphy_txiqlocal_coeffsvalid = true;
26084			pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
26085		} else {
26086			tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
26087			if (NREV_LT(pi->pubpi.phy_rev, 3))
26088				tbl_len -= 2;
26089
26090			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26091						tbl_len, 96, 16,
26092						pi->mphase_txcal_bestcoeffs);
26093		}
26094
26095		wlc_phy_stopplayback_nphy(pi);
26096
26097		write_phy_reg(pi, 0xc2, 0x0000);
26098
26099	}
26100
26101	wlc_phy_txcal_phycleanup_nphy(pi);
26102
26103	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26104				 gain_save);
26105
26106	wlc_phy_txcal_radio_cleanup_nphy(pi);
26107
26108	if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26109		if (!mphase
26110		    || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
26111			wlc_phy_tx_iq_war_nphy(pi);
26112	}
26113
26114	if (NREV_GE(pi->pubpi.phy_rev, 4))
26115		pi->phyhang_avoid = phyhang_avoid_state;
26116
26117	wlc_phy_stay_in_carriersearch_nphy(pi, false);
26118
26119	return bcmerror;
26120}
26121
26122static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
26123{
26124	u16 tbl_buf[7];
26125
26126	if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
26127	    (pi->nphy_txiqlocal_coeffsvalid)) {
26128		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26129					ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
26130
26131		if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26132		    (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26133		    (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26134		    (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26135
26136			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26137						 16, pi->nphy_txiqlocal_bestc);
26138
26139			tbl_buf[0] = 0;
26140			tbl_buf[1] = 0;
26141			tbl_buf[2] = 0;
26142			tbl_buf[3] = 0;
26143			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26144						 16, tbl_buf);
26145
26146			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26147						 16,
26148						 &pi->nphy_txiqlocal_bestc[5]);
26149
26150			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26151						 16,
26152						 &pi->nphy_txiqlocal_bestc[5]);
26153		}
26154	}
26155}
26156
26157void
26158wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26159			  struct nphy_iq_comp *pcomp)
26160{
26161	if (write) {
26162		write_phy_reg(pi, 0x9a, pcomp->a0);
26163		write_phy_reg(pi, 0x9b, pcomp->b0);
26164		write_phy_reg(pi, 0x9c, pcomp->a1);
26165		write_phy_reg(pi, 0x9d, pcomp->b1);
26166	} else {
26167		pcomp->a0 = read_phy_reg(pi, 0x9a);
26168		pcomp->b0 = read_phy_reg(pi, 0x9b);
26169		pcomp->a1 = read_phy_reg(pi, 0x9c);
26170		pcomp->b1 = read_phy_reg(pi, 0x9d);
26171	}
26172}
26173
26174void
26175wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26176		       u16 num_samps, u8 wait_time, u8 wait_for_crs)
26177{
26178	u8 core;
26179
26180	write_phy_reg(pi, 0x12b, num_samps);
26181	mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26182	mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26183		    (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26184
26185	mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26186
26187	SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26188		 10000);
26189	if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26190		 "HW error: rxiq est"))
26191		return;
26192
26193	if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26194		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26195			est[core].i_pwr =
26196				(read_phy_reg(pi,
26197					      NPHY_IqestipwrAccHi(core)) << 16)
26198				| read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26199			est[core].q_pwr =
26200				(read_phy_reg(pi,
26201					      NPHY_IqestqpwrAccHi(core)) << 16)
26202				| read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26203			est[core].iq_prod =
26204				(read_phy_reg(pi,
26205					      NPHY_IqestIqAccHi(core)) << 16) |
26206				read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26207		}
26208	}
26209}
26210
26211#define CAL_RETRY_CNT 2
26212static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26213{
26214	u8 curr_core;
26215	struct phy_iq_est est[PHY_CORE_MAX];
26216	struct nphy_iq_comp old_comp, new_comp;
26217	s32 iq = 0;
26218	u32 ii = 0, qq = 0;
26219	s16 iq_nbits, qq_nbits, brsh, arsh;
26220	s32 a, b, temp;
26221	int bcmerror = 0;
26222	uint cal_retry = 0;
26223
26224	if (core_mask == 0x0)
26225		return;
26226
26227	wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26228	new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26229	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26230
26231cal_try:
26232	wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26233
26234	new_comp = old_comp;
26235
26236	for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26237
26238		if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26239			iq = est[curr_core].iq_prod;
26240			ii = est[curr_core].i_pwr;
26241			qq = est[curr_core].q_pwr;
26242		} else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26243			iq = est[curr_core].iq_prod;
26244			ii = est[curr_core].i_pwr;
26245			qq = est[curr_core].q_pwr;
26246		} else {
26247			continue;
26248		}
26249
26250		if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26251			bcmerror = -EBADE;
26252			break;
26253		}
26254
26255		iq_nbits = wlc_phy_nbits(iq);
26256		qq_nbits = wlc_phy_nbits(qq);
26257
26258		arsh = 10 - (30 - iq_nbits);
26259		if (arsh >= 0) {
26260			a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26261			temp = (s32) (ii >> arsh);
26262			if (temp == 0) {
26263				bcmerror = -EBADE;
26264				break;
26265			}
26266		} else {
26267			a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26268			temp = (s32) (ii << -arsh);
26269			if (temp == 0) {
26270				bcmerror = -EBADE;
26271				break;
26272			}
26273		}
26274
26275		a /= temp;
26276
26277		brsh = qq_nbits - 31 + 20;
26278		if (brsh >= 0) {
26279			b = (qq << (31 - qq_nbits));
26280			temp = (s32) (ii >> brsh);
26281			if (temp == 0) {
26282				bcmerror = -EBADE;
26283				break;
26284			}
26285		} else {
26286			b = (qq << (31 - qq_nbits));
26287			temp = (s32) (ii << -brsh);
26288			if (temp == 0) {
26289				bcmerror = -EBADE;
26290				break;
26291			}
26292		}
26293		b /= temp;
26294		b -= a * a;
26295		b = (s32) int_sqrt((unsigned long) b);
26296		b -= (1 << 10);
26297
26298		if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26299			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26300				new_comp.a0 = (s16) a & 0x3ff;
26301				new_comp.b0 = (s16) b & 0x3ff;
26302			} else {
26303
26304				new_comp.a0 = (s16) b & 0x3ff;
26305				new_comp.b0 = (s16) a & 0x3ff;
26306			}
26307		}
26308		if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26309			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26310				new_comp.a1 = (s16) a & 0x3ff;
26311				new_comp.b1 = (s16) b & 0x3ff;
26312			} else {
26313
26314				new_comp.a1 = (s16) b & 0x3ff;
26315				new_comp.b1 = (s16) a & 0x3ff;
26316			}
26317		}
26318	}
26319
26320	if (bcmerror != 0) {
26321		pr_debug("%s: Failed, cnt = %d\n", __func__, cal_retry);
26322
26323		if (cal_retry < CAL_RETRY_CNT) {
26324			cal_retry++;
26325			goto cal_try;
26326		}
26327
26328		new_comp = old_comp;
26329	}
26330
26331	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26332}
26333
26334static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26335{
26336	u16 offtune_val;
26337	u16 bias_g = 0;
26338	u16 bias_a = 0;
26339
26340	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26341		if (rx_core == PHY_CORE_0) {
26342			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26343				pi->tx_rx_cal_radio_saveregs[0] =
26344					read_radio_reg(pi,
26345					    RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26346				pi->tx_rx_cal_radio_saveregs[1] =
26347					read_radio_reg(pi,
26348					    RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26349
26350				write_radio_reg(pi,
26351					RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26352					0x3);
26353				write_radio_reg(pi,
26354					RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26355					0xaf);
26356
26357			} else {
26358				pi->tx_rx_cal_radio_saveregs[0] =
26359					read_radio_reg(pi,
26360					    RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26361				pi->tx_rx_cal_radio_saveregs[1] =
26362					read_radio_reg(pi,
26363					    RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26364
26365				write_radio_reg(
26366					pi,
26367					RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26368					0x3);
26369				write_radio_reg(
26370					pi,
26371					RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26372					0x7f);
26373			}
26374
26375		} else {
26376			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26377				pi->tx_rx_cal_radio_saveregs[0] =
26378					read_radio_reg(pi,
26379					    RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26380				pi->tx_rx_cal_radio_saveregs[1] =
26381					read_radio_reg(pi,
26382					    RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26383
26384				write_radio_reg(
26385					pi,
26386					RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26387					0x3);
26388				write_radio_reg(
26389					pi,
26390					RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26391					0xaf);
26392
26393			} else {
26394				pi->tx_rx_cal_radio_saveregs[0] =
26395					read_radio_reg(pi,
26396					    RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26397				pi->tx_rx_cal_radio_saveregs[1] =
26398					read_radio_reg(pi,
26399					    RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26400
26401				write_radio_reg(pi,
26402					RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26403					0x3);
26404				write_radio_reg(pi,
26405					RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26406					0x7f);
26407			}
26408		}
26409
26410	} else {
26411		if (rx_core == PHY_CORE_0) {
26412			pi->tx_rx_cal_radio_saveregs[0] =
26413				read_radio_reg(pi,
26414					       RADIO_2056_TX_RXIQCAL_TXMUX |
26415					       RADIO_2056_TX1);
26416			pi->tx_rx_cal_radio_saveregs[1] =
26417				read_radio_reg(pi,
26418					       RADIO_2056_RX_RXIQCAL_RXMUX |
26419					       RADIO_2056_RX0);
26420
26421			if (pi->pubpi.radiorev >= 5) {
26422				pi->tx_rx_cal_radio_saveregs[2] =
26423					read_radio_reg(pi,
26424						       RADIO_2056_RX_RXSPARE2 |
26425						       RADIO_2056_RX0);
26426				pi->tx_rx_cal_radio_saveregs[3] =
26427					read_radio_reg(pi,
26428						       RADIO_2056_TX_TXSPARE2 |
26429						       RADIO_2056_TX1);
26430			}
26431
26432			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26433
26434				if (pi->pubpi.radiorev >= 5) {
26435					pi->tx_rx_cal_radio_saveregs[4] =
26436						read_radio_reg(pi,
26437						      RADIO_2056_RX_LNAA_MASTER
26438						      | RADIO_2056_RX0);
26439
26440					write_radio_reg(
26441						pi,
26442						RADIO_2056_RX_LNAA_MASTER
26443						| RADIO_2056_RX0, 0x40);
26444
26445					write_radio_reg(pi,
26446						RADIO_2056_TX_TXSPARE2 |
26447						RADIO_2056_TX1, bias_a);
26448
26449					write_radio_reg(pi,
26450						RADIO_2056_RX_RXSPARE2 |
26451						RADIO_2056_RX0, bias_a);
26452				} else {
26453					pi->tx_rx_cal_radio_saveregs[4] =
26454						read_radio_reg(pi,
26455							RADIO_2056_RX_LNAA_TUNE
26456							| RADIO_2056_RX0);
26457
26458					offtune_val =
26459						(pi->tx_rx_cal_radio_saveregs
26460						 [2] & 0xF0) >> 8;
26461					offtune_val =
26462						(offtune_val <= 0x7) ? 0xF : 0;
26463
26464					mod_radio_reg(pi,
26465						      RADIO_2056_RX_LNAA_TUNE |
26466						      RADIO_2056_RX0, 0xF0,
26467						      (offtune_val << 8));
26468				}
26469
26470				write_radio_reg(pi,
26471						RADIO_2056_TX_RXIQCAL_TXMUX |
26472						RADIO_2056_TX1, 0x9);
26473				write_radio_reg(pi,
26474						RADIO_2056_RX_RXIQCAL_RXMUX |
26475						RADIO_2056_RX0, 0x9);
26476			} else {
26477				if (pi->pubpi.radiorev >= 5) {
26478					pi->tx_rx_cal_radio_saveregs[4] =
26479						read_radio_reg(
26480						      pi,
26481						      RADIO_2056_RX_LNAG_MASTER
26482						    | RADIO_2056_RX0);
26483
26484					write_radio_reg(
26485						pi,
26486						RADIO_2056_RX_LNAG_MASTER
26487						| RADIO_2056_RX0, 0x40);
26488
26489					write_radio_reg(
26490						pi,
26491						RADIO_2056_TX_TXSPARE2
26492						|
26493						RADIO_2056_TX1, bias_g);
26494
26495					write_radio_reg(
26496						pi,
26497						RADIO_2056_RX_RXSPARE2
26498						|
26499						RADIO_2056_RX0, bias_g);
26500
26501				} else {
26502					pi->tx_rx_cal_radio_saveregs[4] =
26503						read_radio_reg(
26504							pi,
26505							RADIO_2056_RX_LNAG_TUNE
26506							| RADIO_2056_RX0);
26507
26508					offtune_val =
26509						(pi->
26510						 tx_rx_cal_radio_saveregs[2] &
26511						 0xF0) >> 8;
26512					offtune_val =
26513						(offtune_val <= 0x7) ? 0xF : 0;
26514
26515					mod_radio_reg(pi,
26516						      RADIO_2056_RX_LNAG_TUNE |
26517						      RADIO_2056_RX0, 0xF0,
26518						      (offtune_val << 8));
26519				}
26520
26521				write_radio_reg(pi,
26522						RADIO_2056_TX_RXIQCAL_TXMUX |
26523						RADIO_2056_TX1, 0x6);
26524				write_radio_reg(pi,
26525						RADIO_2056_RX_RXIQCAL_RXMUX |
26526						RADIO_2056_RX0, 0x6);
26527			}
26528
26529		} else {
26530			pi->tx_rx_cal_radio_saveregs[0] =
26531				read_radio_reg(pi,
26532					       RADIO_2056_TX_RXIQCAL_TXMUX |
26533					       RADIO_2056_TX0);
26534			pi->tx_rx_cal_radio_saveregs[1] =
26535				read_radio_reg(pi,
26536					       RADIO_2056_RX_RXIQCAL_RXMUX |
26537					       RADIO_2056_RX1);
26538
26539			if (pi->pubpi.radiorev >= 5) {
26540				pi->tx_rx_cal_radio_saveregs[2] =
26541					read_radio_reg(pi,
26542						       RADIO_2056_RX_RXSPARE2 |
26543						       RADIO_2056_RX1);
26544				pi->tx_rx_cal_radio_saveregs[3] =
26545					read_radio_reg(pi,
26546						       RADIO_2056_TX_TXSPARE2 |
26547						       RADIO_2056_TX0);
26548			}
26549
26550			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26551
26552				if (pi->pubpi.radiorev >= 5) {
26553					pi->tx_rx_cal_radio_saveregs[4] =
26554						read_radio_reg(
26555						       pi,
26556						       RADIO_2056_RX_LNAA_MASTER
26557						       | RADIO_2056_RX1);
26558
26559					write_radio_reg(
26560						pi,
26561						RADIO_2056_RX_LNAA_MASTER |
26562						RADIO_2056_RX1, 0x40);
26563
26564					write_radio_reg(
26565						pi,
26566						RADIO_2056_TX_TXSPARE2
26567						|
26568						RADIO_2056_TX0, bias_a);
26569
26570					write_radio_reg(
26571						pi,
26572						RADIO_2056_RX_RXSPARE2
26573						|
26574						RADIO_2056_RX1, bias_a);
26575				} else {
26576					pi->tx_rx_cal_radio_saveregs[4] =
26577						read_radio_reg(
26578							pi,
26579							RADIO_2056_RX_LNAA_TUNE
26580							| RADIO_2056_RX1);
26581
26582					offtune_val =
26583						(pi->
26584						 tx_rx_cal_radio_saveregs[2] &
26585						 0xF0) >> 8;
26586					offtune_val =
26587						(offtune_val <= 0x7) ? 0xF : 0;
26588
26589					mod_radio_reg(pi,
26590						      RADIO_2056_RX_LNAA_TUNE |
26591						      RADIO_2056_RX1, 0xF0,
26592						      (offtune_val << 8));
26593				}
26594
26595				write_radio_reg(pi,
26596						RADIO_2056_TX_RXIQCAL_TXMUX |
26597						RADIO_2056_TX0, 0x9);
26598				write_radio_reg(pi,
26599						RADIO_2056_RX_RXIQCAL_RXMUX |
26600						RADIO_2056_RX1, 0x9);
26601			} else {
26602				if (pi->pubpi.radiorev >= 5) {
26603					pi->tx_rx_cal_radio_saveregs[4] =
26604						read_radio_reg(
26605						      pi,
26606						      RADIO_2056_RX_LNAG_MASTER
26607						    | RADIO_2056_RX1);
26608
26609					write_radio_reg(
26610						pi,
26611						RADIO_2056_RX_LNAG_MASTER
26612						| RADIO_2056_RX1, 0x40);
26613
26614					write_radio_reg(
26615						pi,
26616						RADIO_2056_TX_TXSPARE2
26617						|
26618						RADIO_2056_TX0, bias_g);
26619
26620					write_radio_reg(
26621						pi,
26622						RADIO_2056_RX_RXSPARE2
26623						|
26624						RADIO_2056_RX1, bias_g);
26625				} else {
26626					pi->tx_rx_cal_radio_saveregs[4] =
26627						read_radio_reg(
26628							pi,
26629							RADIO_2056_RX_LNAG_TUNE
26630							| RADIO_2056_RX1);
26631
26632					offtune_val =
26633						(pi->
26634						 tx_rx_cal_radio_saveregs[2] &
26635						 0xF0) >> 8;
26636					offtune_val =
26637						(offtune_val <= 0x7) ? 0xF : 0;
26638
26639					mod_radio_reg(pi,
26640						      RADIO_2056_RX_LNAG_TUNE |
26641						      RADIO_2056_RX1, 0xF0,
26642						      (offtune_val << 8));
26643				}
26644
26645				write_radio_reg(pi,
26646						RADIO_2056_TX_RXIQCAL_TXMUX |
26647						RADIO_2056_TX0, 0x6);
26648				write_radio_reg(pi,
26649						RADIO_2056_RX_RXIQCAL_RXMUX |
26650						RADIO_2056_RX1, 0x6);
26651			}
26652		}
26653	}
26654}
26655
26656static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26657{
26658	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26659		if (rx_core == PHY_CORE_0) {
26660			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26661				write_radio_reg(
26662					pi,
26663					RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26664					pi->
26665					tx_rx_cal_radio_saveregs[0]);
26666				write_radio_reg(
26667					pi,
26668					RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26669					pi->
26670					tx_rx_cal_radio_saveregs[1]);
26671
26672			} else {
26673				write_radio_reg(
26674					pi,
26675					RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26676					pi->
26677					tx_rx_cal_radio_saveregs[0]);
26678				write_radio_reg(
26679					pi,
26680					RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26681					pi->
26682					tx_rx_cal_radio_saveregs[1]);
26683			}
26684
26685		} else {
26686			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26687				write_radio_reg(
26688					pi,
26689					RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26690					pi->
26691					tx_rx_cal_radio_saveregs[0]);
26692				write_radio_reg(
26693					pi,
26694					RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26695					pi->
26696					tx_rx_cal_radio_saveregs[1]);
26697
26698			} else {
26699				write_radio_reg(
26700					pi,
26701					RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26702					pi->
26703					tx_rx_cal_radio_saveregs[0]);
26704				write_radio_reg(
26705					pi,
26706					RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26707					pi->
26708					tx_rx_cal_radio_saveregs[1]);
26709			}
26710		}
26711
26712	} else {
26713		if (rx_core == PHY_CORE_0) {
26714			write_radio_reg(pi,
26715					RADIO_2056_TX_RXIQCAL_TXMUX |
26716					RADIO_2056_TX1,
26717					pi->tx_rx_cal_radio_saveregs[0]);
26718
26719			write_radio_reg(pi,
26720					RADIO_2056_RX_RXIQCAL_RXMUX |
26721					RADIO_2056_RX0,
26722					pi->tx_rx_cal_radio_saveregs[1]);
26723
26724			if (pi->pubpi.radiorev >= 5) {
26725				write_radio_reg(pi,
26726						RADIO_2056_RX_RXSPARE2 |
26727						RADIO_2056_RX0,
26728						pi->
26729						tx_rx_cal_radio_saveregs[2]);
26730
26731				write_radio_reg(pi,
26732						RADIO_2056_TX_TXSPARE2 |
26733						RADIO_2056_TX1,
26734						pi->
26735						tx_rx_cal_radio_saveregs[3]);
26736			}
26737
26738			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26739				if (pi->pubpi.radiorev >= 5)
26740					write_radio_reg(
26741						pi,
26742						RADIO_2056_RX_LNAA_MASTER
26743						| RADIO_2056_RX0,
26744						pi->
26745						tx_rx_cal_radio_saveregs
26746						[4]);
26747				else
26748					write_radio_reg(
26749						pi,
26750						RADIO_2056_RX_LNAA_TUNE
26751						| RADIO_2056_RX0,
26752						pi->
26753						tx_rx_cal_radio_saveregs
26754						[4]);
26755			} else {
26756				if (pi->pubpi.radiorev >= 5)
26757					write_radio_reg(
26758						pi,
26759						RADIO_2056_RX_LNAG_MASTER
26760						| RADIO_2056_RX0,
26761						pi->
26762						tx_rx_cal_radio_saveregs
26763						[4]);
26764				else
26765					write_radio_reg(
26766						pi,
26767						RADIO_2056_RX_LNAG_TUNE
26768						| RADIO_2056_RX0,
26769						pi->
26770						tx_rx_cal_radio_saveregs
26771						[4]);
26772			}
26773
26774		} else {
26775			write_radio_reg(pi,
26776					RADIO_2056_TX_RXIQCAL_TXMUX |
26777					RADIO_2056_TX0,
26778					pi->tx_rx_cal_radio_saveregs[0]);
26779
26780			write_radio_reg(pi,
26781					RADIO_2056_RX_RXIQCAL_RXMUX |
26782					RADIO_2056_RX1,
26783					pi->tx_rx_cal_radio_saveregs[1]);
26784
26785			if (pi->pubpi.radiorev >= 5) {
26786				write_radio_reg(pi,
26787						RADIO_2056_RX_RXSPARE2 |
26788						RADIO_2056_RX1,
26789						pi->
26790						tx_rx_cal_radio_saveregs[2]);
26791
26792				write_radio_reg(pi,
26793						RADIO_2056_TX_TXSPARE2 |
26794						RADIO_2056_TX0,
26795						pi->
26796						tx_rx_cal_radio_saveregs[3]);
26797			}
26798
26799			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26800				if (pi->pubpi.radiorev >= 5)
26801					write_radio_reg(
26802						pi,
26803						RADIO_2056_RX_LNAA_MASTER
26804						| RADIO_2056_RX1,
26805						pi->
26806						tx_rx_cal_radio_saveregs
26807						[4]);
26808				else
26809					write_radio_reg(
26810						pi,
26811						RADIO_2056_RX_LNAA_TUNE
26812						| RADIO_2056_RX1,
26813						pi->
26814						tx_rx_cal_radio_saveregs
26815						[4]);
26816			} else {
26817				if (pi->pubpi.radiorev >= 5)
26818					write_radio_reg(
26819						pi,
26820						RADIO_2056_RX_LNAG_MASTER
26821						| RADIO_2056_RX1,
26822						pi->
26823						tx_rx_cal_radio_saveregs
26824						[4]);
26825				else
26826					write_radio_reg(
26827						pi,
26828						RADIO_2056_RX_LNAG_TUNE
26829						| RADIO_2056_RX1,
26830						pi->
26831						tx_rx_cal_radio_saveregs
26832						[4]);
26833			}
26834		}
26835	}
26836}
26837
26838static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26839{
26840	u8 tx_core;
26841	u16 rx_antval, tx_antval;
26842
26843	if (NREV_GE(pi->pubpi.phy_rev, 7))
26844		tx_core = rx_core;
26845	else
26846		tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26847
26848	pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26849	pi->tx_rx_cal_phy_saveregs[1] =
26850		read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26851	pi->tx_rx_cal_phy_saveregs[2] =
26852		read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
26853	pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
26854	pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
26855	pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
26856	pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
26857	pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
26858	pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
26859	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26860		pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
26861		pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
26862		pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
26863		pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
26864	}
26865
26866	pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
26867	pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
26868	mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
26869		    0x29b, (0x1 << 0), (0) << 0);
26870
26871	mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
26872		    0x29b, (0x1 << 0), (0) << 0);
26873
26874	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26875
26876		mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26877
26878		mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
26879
26880	} else {
26881
26882		mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
26883		mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26884		mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
26885		mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
26886	}
26887
26888	mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
26889	mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26890		    (0x1 << 2), (0x1 << 2));
26891	if (NREV_LT(pi->pubpi.phy_rev, 7)) {
26892		mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
26893			    (0x1 << 0) | (0x1 << 1), 0);
26894		mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
26895			    0x8f : 0xa5,
26896			    (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
26897	}
26898
26899	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
26900					 RADIO_MIMO_CORESEL_CORE1 |
26901					 RADIO_MIMO_CORESEL_CORE2);
26902
26903	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26904		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26905						  0, 0, 0,
26906						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
26907		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
26908						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
26909		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
26910						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
26911		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
26912						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
26913		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
26914						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
26915		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
26916						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
26917		if (CHSPEC_IS40(pi->radio_chanspec))
26918			wlc_phy_rfctrl_override_nphy_rev7(
26919				pi,
26920				(0x1 << 7),
26921				2, 0, 0,
26922				NPHY_REV7_RFCTRLOVERRIDE_ID1);
26923		else
26924			wlc_phy_rfctrl_override_nphy_rev7(
26925				pi,
26926				(0x1 << 7),
26927				0, 0, 0,
26928				NPHY_REV7_RFCTRLOVERRIDE_ID1);
26929
26930		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26931						  0, 0, 0,
26932						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
26933		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
26934						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
26935	} else {
26936		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
26937	}
26938
26939	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
26940
26941	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26942
26943		wlc_phy_rfctrlintc_override_nphy(pi,
26944						 NPHY_RfctrlIntc_override_TRSW,
26945						 0x1, rx_core + 1);
26946	} else {
26947
26948		if (rx_core == PHY_CORE_0) {
26949			rx_antval = 0x1;
26950			tx_antval = 0x8;
26951		} else {
26952			rx_antval = 0x4;
26953			tx_antval = 0x2;
26954		}
26955
26956		wlc_phy_rfctrlintc_override_nphy(pi,
26957						 NPHY_RfctrlIntc_override_TRSW,
26958						 rx_antval, rx_core + 1);
26959		wlc_phy_rfctrlintc_override_nphy(pi,
26960						 NPHY_RfctrlIntc_override_TRSW,
26961						 tx_antval, tx_core + 1);
26962	}
26963}
26964
26965static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26966{
26967
26968	write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
26969	write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
26970		      pi->tx_rx_cal_phy_saveregs[1]);
26971	write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26972		      pi->tx_rx_cal_phy_saveregs[2]);
26973	write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
26974	write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
26975
26976	write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
26977	write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
26978	write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
26979	write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
26980	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26981		write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
26982		write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
26983		write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
26984		write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
26985	}
26986
26987	write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
26988	write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
26989}
26990
26991static void
26992wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
26993				 u16 *rxgain, u8 cal_type)
26994{
26995
26996	u16 num_samps;
26997	struct phy_iq_est est[PHY_CORE_MAX];
26998	u8 tx_core;
26999	struct nphy_iq_comp save_comp, zero_comp;
27000	u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
27001	    thresh_pwr = 10000;
27002	s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
27003	bool gainctrl_done = false;
27004	u8 mix_tia_gain = 3;
27005	s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
27006	s8 curr_gaintbl_index = 3;
27007	u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
27008	const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
27009	u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
27010	int fine_gain_idx;
27011	s8 txpwrindex;
27012	u16 nphy_rxcal_txgain[2];
27013
27014	if (NREV_GE(pi->pubpi.phy_rev, 7))
27015		tx_core = rx_core;
27016	else
27017		tx_core = 1 - rx_core;
27018
27019	num_samps = 1024;
27020	desired_log2_pwr = (cal_type == 0) ? 13 : 13;
27021
27022	wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
27023	zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
27024	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
27025
27026	if (CHSPEC_IS5G(pi->radio_chanspec)) {
27027		if (NREV_GE(pi->pubpi.phy_rev, 7))
27028			mix_tia_gain = 3;
27029		else if (NREV_GE(pi->pubpi.phy_rev, 4))
27030			mix_tia_gain = 4;
27031		else
27032			mix_tia_gain = 6;
27033		if (NREV_GE(pi->pubpi.phy_rev, 7))
27034			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
27035		else
27036			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
27037	} else {
27038		if (NREV_GE(pi->pubpi.phy_rev, 7))
27039			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
27040		else
27041			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
27042	}
27043
27044	do {
27045
27046		hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
27047			0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
27048		lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
27049		lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
27050		lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
27051		lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
27052		txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
27053
27054		if (NREV_GE(pi->pubpi.phy_rev, 7))
27055			wlc_phy_rfctrl_override_1tomany_nphy(
27056				pi,
27057				NPHY_REV7_RfctrlOverride_cmd_rxgain,
27058				((lpf_biq1 << 12) |
27059				 (lpf_biq0 << 8) |
27060				 (mix_tia_gain << 4) | (lna2 << 2)
27061				 | lna1), 0x3, 0);
27062		else
27063			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27064						     ((hpvga << 12) |
27065						      (lpf_biq1 << 10) |
27066						      (lpf_biq0 << 8) |
27067						      (mix_tia_gain << 4) |
27068						      (lna2 << 2) | lna1), 0x3,
27069						     0);
27070
27071		pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
27072
27073		if (txpwrindex == -1) {
27074			nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
27075			nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
27076			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
27077						 2, 0x110, 16,
27078						 nphy_rxcal_txgain);
27079		} else {
27080			wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
27081						 false);
27082		}
27083
27084		wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
27085				     NPHY_RXCAL_TONEFREQ_40MHz :
27086				     NPHY_RXCAL_TONEFREQ_20MHz,
27087				     NPHY_RXCAL_TONEAMP, 0, cal_type, false);
27088
27089		wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27090		i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
27091		q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
27092		curr_pwr = i_pwr + q_pwr;
27093
27094		switch (gainctrl_dirn) {
27095		case NPHY_RXCAL_GAIN_INIT:
27096			if (curr_pwr > thresh_pwr) {
27097				gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
27098				prev_gaintbl_index = curr_gaintbl_index;
27099				curr_gaintbl_index--;
27100			} else {
27101				gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
27102				prev_gaintbl_index = curr_gaintbl_index;
27103				curr_gaintbl_index++;
27104			}
27105			break;
27106
27107		case NPHY_RXCAL_GAIN_UP:
27108			if (curr_pwr > thresh_pwr) {
27109				gainctrl_done = true;
27110				optim_pwr = prev_pwr;
27111				optim_gaintbl_index = prev_gaintbl_index;
27112			} else {
27113				prev_gaintbl_index = curr_gaintbl_index;
27114				curr_gaintbl_index++;
27115			}
27116			break;
27117
27118		case NPHY_RXCAL_GAIN_DOWN:
27119			if (curr_pwr > thresh_pwr) {
27120				prev_gaintbl_index = curr_gaintbl_index;
27121				curr_gaintbl_index--;
27122			} else {
27123				gainctrl_done = true;
27124				optim_pwr = curr_pwr;
27125				optim_gaintbl_index = curr_gaintbl_index;
27126			}
27127			break;
27128
27129		default:
27130			break;
27131		}
27132
27133		if ((curr_gaintbl_index < 0) ||
27134		    (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27135			gainctrl_done = true;
27136			optim_pwr = curr_pwr;
27137			optim_gaintbl_index = prev_gaintbl_index;
27138		} else {
27139			prev_pwr = curr_pwr;
27140		}
27141
27142		wlc_phy_stopplayback_nphy(pi);
27143	} while (!gainctrl_done);
27144
27145	hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27146	lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27147	lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27148	lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27149	lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27150	txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27151
27152	actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27153	delta_pwr = desired_log2_pwr - actual_log2_pwr;
27154
27155	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27156		fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27157
27158		if (fine_gain_idx + (int)lpf_biq0 > 10)
27159			lpf_biq1 = 10 - lpf_biq0;
27160		else
27161			lpf_biq1 = (u16) max(fine_gain_idx, 0);
27162
27163		wlc_phy_rfctrl_override_1tomany_nphy(
27164			pi,
27165			NPHY_REV7_RfctrlOverride_cmd_rxgain,
27166			((lpf_biq1 << 12) |
27167			 (lpf_biq0 << 8) |
27168			 (mix_tia_gain << 4) |
27169			 (lna2 << 2) | lna1), 0x3,
27170			0);
27171	} else {
27172		hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27173		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27174					     ((hpvga << 12) |
27175					      (lpf_biq1 << 10) |
27176					      (lpf_biq0 << 8) |
27177					      (mix_tia_gain << 4) |
27178					      (lna2 << 2) |
27179					      lna1), 0x3, 0);
27180	}
27181
27182	if (rxgain != NULL) {
27183		*rxgain++ = lna1;
27184		*rxgain++ = lna2;
27185		*rxgain++ = mix_tia_gain;
27186		*rxgain++ = lpf_biq0;
27187		*rxgain++ = lpf_biq1;
27188		*rxgain = hpvga;
27189	}
27190
27191	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27192}
27193
27194static void
27195wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27196			    u8 cal_type)
27197{
27198	wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27199}
27200
27201static u8
27202wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27203{
27204	u32 target_bws[2] = { 9500, 21000 };
27205	u32 ref_tones[2] = { 3000, 6000 };
27206	u32 target_bw, ref_tone;
27207
27208	u32 target_pwr_ratios[2] = { 28606, 18468 };
27209	u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27210
27211	u16 start_rccal_ovr_val = 128;
27212	u16 txlpf_rccal_lpc_ovr_val = 128;
27213	u16 rxlpf_rccal_hpc_ovr_val = 159;
27214
27215	u16 orig_txlpf_rccal_lpc_ovr_val;
27216	u16 orig_rxlpf_rccal_hpc_ovr_val;
27217	u16 radio_addr_offset_rx;
27218	u16 radio_addr_offset_tx;
27219	u16 orig_dcBypass;
27220	u16 orig_RxStrnFilt40Num[6];
27221	u16 orig_RxStrnFilt40Den[4];
27222	u16 orig_rfctrloverride[2];
27223	u16 orig_rfctrlauxreg[2];
27224	u16 orig_rfctrlrssiothers;
27225	u16 tx_lpf_bw = 4;
27226
27227	u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27228	u16 lpf_hpc = 7, hpvga_hpc = 7;
27229
27230	s8 rccal_stepsize;
27231	u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27232	u32 ref_iq_vals = 0, target_iq_vals = 0;
27233	u16 num_samps, log_num_samps = 10;
27234	struct phy_iq_est est[PHY_CORE_MAX];
27235
27236	if (NREV_GE(pi->pubpi.phy_rev, 7))
27237		return 0;
27238
27239	num_samps = (1 << log_num_samps);
27240
27241	if (CHSPEC_IS40(pi->radio_chanspec)) {
27242		target_bw = target_bws[1];
27243		target_pwr_ratio = target_pwr_ratios[1];
27244		ref_tone = ref_tones[1];
27245		rx_lpf_bw = rx_lpf_bws[1];
27246	} else {
27247		target_bw = target_bws[0];
27248		target_pwr_ratio = target_pwr_ratios[0];
27249		ref_tone = ref_tones[0];
27250		rx_lpf_bw = rx_lpf_bws[0];
27251	}
27252
27253	if (core_idx == 0) {
27254		radio_addr_offset_rx = RADIO_2056_RX0;
27255		radio_addr_offset_tx =
27256			(loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27257	} else {
27258		radio_addr_offset_rx = RADIO_2056_RX1;
27259		radio_addr_offset_tx =
27260			(loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27261	}
27262
27263	orig_txlpf_rccal_lpc_ovr_val =
27264		read_radio_reg(pi,
27265			       (RADIO_2056_TX_TXLPF_RCCAL |
27266				radio_addr_offset_tx));
27267	orig_rxlpf_rccal_hpc_ovr_val =
27268		read_radio_reg(pi,
27269			       (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27270				radio_addr_offset_rx));
27271
27272	orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27273
27274	orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27275	orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27276	orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27277	orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27278	orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27279	orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27280	orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27281	orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27282	orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27283	orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27284
27285	orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27286	orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27287	orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27288	orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27289	orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27290
27291	write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27292			txlpf_rccal_lpc_ovr_val);
27293
27294	write_radio_reg(pi,
27295			(RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27296			rxlpf_rccal_hpc_ovr_val);
27297
27298	mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27299
27300	write_phy_reg(pi, 0x267, 0x02d4);
27301	write_phy_reg(pi, 0x268, 0x0000);
27302	write_phy_reg(pi, 0x269, 0x0000);
27303	write_phy_reg(pi, 0x26a, 0x0000);
27304	write_phy_reg(pi, 0x26b, 0x0000);
27305	write_phy_reg(pi, 0x26c, 0x02d4);
27306	write_phy_reg(pi, 0x26d, 0x0000);
27307	write_phy_reg(pi, 0x26e, 0x0000);
27308	write_phy_reg(pi, 0x26f, 0x0000);
27309	write_phy_reg(pi, 0x270, 0x0000);
27310
27311	or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27312	or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27313	or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27314	or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27315
27316	mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27317		    (0x7 << 10), (tx_lpf_bw << 10));
27318	mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27319		    (0x7 << 0), (hpvga_hpc << 0));
27320	mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27321		    (0x7 << 4), (lpf_hpc << 4));
27322	mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27323		    (0x7 << 8), (rx_lpf_bw << 8));
27324
27325	rccal_stepsize = 16;
27326	rccal_val = start_rccal_ovr_val + rccal_stepsize;
27327
27328	while (rccal_stepsize >= 0) {
27329		write_radio_reg(pi,
27330				(RADIO_2056_RX_RXLPF_RCCAL_LPC |
27331				 radio_addr_offset_rx), rccal_val);
27332
27333		if (rccal_stepsize == 16) {
27334
27335			wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27336					     0, 1, false);
27337			udelay(2);
27338
27339			wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27340
27341			if (core_idx == 0)
27342				ref_iq_vals =
27343					max_t(u32, (est[0].i_pwr +
27344						    est[0].q_pwr) >>
27345					      (log_num_samps + 1),
27346					      1);
27347			else
27348				ref_iq_vals =
27349					max_t(u32, (est[1].i_pwr +
27350						    est[1].q_pwr) >>
27351					      (log_num_samps + 1),
27352					      1);
27353
27354			wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27355					     0, 1, false);
27356			udelay(2);
27357		}
27358
27359		wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27360
27361		if (core_idx == 0)
27362			target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27363					 (log_num_samps + 1);
27364		else
27365			target_iq_vals =
27366				(est[1].i_pwr +
27367				 est[1].q_pwr) >> (log_num_samps + 1);
27368
27369		pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27370
27371		if (rccal_stepsize == 0)
27372			rccal_stepsize--;
27373		else if (rccal_stepsize == 1) {
27374			last_rccal_val = rccal_val;
27375			rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27376			last_pwr_ratio = pwr_ratio;
27377			rccal_stepsize--;
27378		} else {
27379			rccal_stepsize = (rccal_stepsize >> 1);
27380			rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27381				      rccal_stepsize : (-rccal_stepsize));
27382		}
27383
27384		if (rccal_stepsize == -1) {
27385			best_rccal_val =
27386				(abs((int)last_pwr_ratio -
27387				     (int)target_pwr_ratio) <
27388				 abs((int)pwr_ratio -
27389				     (int)target_pwr_ratio)) ? last_rccal_val :
27390				rccal_val;
27391
27392			if (CHSPEC_IS40(pi->radio_chanspec)) {
27393				if ((best_rccal_val > 140)
27394				    || (best_rccal_val < 135))
27395					best_rccal_val = 138;
27396			} else {
27397				if ((best_rccal_val > 142)
27398				    || (best_rccal_val < 137))
27399					best_rccal_val = 140;
27400			}
27401
27402			write_radio_reg(pi,
27403					(RADIO_2056_RX_RXLPF_RCCAL_LPC |
27404					 radio_addr_offset_rx), best_rccal_val);
27405		}
27406	}
27407
27408	wlc_phy_stopplayback_nphy(pi);
27409
27410	write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27411			orig_txlpf_rccal_lpc_ovr_val);
27412	write_radio_reg(pi,
27413			(RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27414			orig_rxlpf_rccal_hpc_ovr_val);
27415
27416	mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27417
27418	write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27419	write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27420	write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27421	write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27422	write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27423	write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27424	write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27425	write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27426	write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27427	write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27428
27429	write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27430	write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27431	write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27432	write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27433	write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27434
27435	pi->nphy_anarxlpf_adjusted = false;
27436
27437	return best_rccal_val - 0x80;
27438}
27439
27440#define WAIT_FOR_SCOPE  4000
27441static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27442				      struct nphy_txgains target_gain,
27443				      u8 cal_type, bool debug)
27444{
27445	u16 orig_BBConfig;
27446	u8 core_no, rx_core;
27447	u8 best_rccal[2];
27448	u16 gain_save[2];
27449	u16 cal_gain[2];
27450	struct nphy_iqcal_params cal_params[2];
27451	u8 rxcore_state;
27452	s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27453	s8 txlpf_idac;
27454	bool phyhang_avoid_state = false;
27455	bool skip_rxiqcal = false;
27456
27457	orig_BBConfig = read_phy_reg(pi, 0x01);
27458	mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27459
27460	wlc_phy_stay_in_carriersearch_nphy(pi, true);
27461
27462	if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27463		phyhang_avoid_state = pi->phyhang_avoid;
27464		pi->phyhang_avoid = false;
27465	}
27466
27467	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27468
27469	for (core_no = 0; core_no <= 1; core_no++) {
27470		wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27471					      &cal_params[core_no]);
27472		cal_gain[core_no] = cal_params[core_no].cal_gain;
27473	}
27474
27475	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27476
27477	rxcore_state = wlc_phy_rxcore_getstate_nphy(
27478		(struct brcms_phy_pub *) pi);
27479
27480	for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27481
27482		skip_rxiqcal =
27483			((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27484
27485		wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27486
27487		wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27488
27489		if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27490
27491			wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27492
27493			wlc_phy_tx_tone_nphy(pi,
27494					     (CHSPEC_IS40(
27495						      pi->radio_chanspec)) ?
27496					     NPHY_RXCAL_TONEFREQ_40MHz :
27497					     NPHY_RXCAL_TONEFREQ_20MHz,
27498					     NPHY_RXCAL_TONEAMP, 0, cal_type,
27499					     false);
27500
27501			if (debug)
27502				mdelay(WAIT_FOR_SCOPE);
27503
27504			wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27505			wlc_phy_stopplayback_nphy(pi);
27506		}
27507
27508		if (((cal_type == 1) || (cal_type == 2))
27509		    && NREV_LT(pi->pubpi.phy_rev, 7)) {
27510
27511			if (rx_core == PHY_CORE_1) {
27512
27513				if (rxcore_state == 1)
27514					wlc_phy_rxcore_setstate_nphy(
27515						(struct brcms_phy_pub *) pi, 3);
27516
27517				wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27518							    1);
27519
27520				best_rccal[rx_core] =
27521					wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27522				pi->nphy_rccal_value = best_rccal[rx_core];
27523
27524				if (rxcore_state == 1)
27525					wlc_phy_rxcore_setstate_nphy(
27526						(struct brcms_phy_pub *) pi,
27527						rxcore_state);
27528			}
27529		}
27530
27531		wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27532
27533		wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27534		wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27535	}
27536
27537	if ((cal_type == 1) || (cal_type == 2)) {
27538
27539		best_rccal[0] = best_rccal[1];
27540		write_radio_reg(pi,
27541				(RADIO_2056_RX_RXLPF_RCCAL_LPC |
27542				 RADIO_2056_RX0), (best_rccal[0] | 0x80));
27543
27544		for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27545			rxlpf_rccal_hpc =
27546				(((int)best_rccal[rx_core] - 12) >> 1) + 10;
27547			txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27548
27549			if (PHY_IPA(pi)) {
27550				txlpf_rccal_lpc +=
27551					(pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27552				txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27553					     0x0e : 0x13;
27554				WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27555						 TXLPF_IDAC_4, txlpf_idac);
27556			}
27557
27558			rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27559					      0);
27560			txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27561					      0);
27562
27563			write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27564					     ((rx_core ==
27565					       PHY_CORE_0) ? RADIO_2056_RX0 :
27566					      RADIO_2056_RX1)),
27567					(rxlpf_rccal_hpc | 0x80));
27568
27569			write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27570					     ((rx_core ==
27571					       PHY_CORE_0) ? RADIO_2056_TX0 :
27572					      RADIO_2056_TX1)),
27573					(txlpf_rccal_lpc | 0x80));
27574		}
27575	}
27576
27577	write_phy_reg(pi, 0x01, orig_BBConfig);
27578
27579	wlc_phy_resetcca_nphy(pi);
27580
27581	if (NREV_GE(pi->pubpi.phy_rev, 7))
27582		wlc_phy_rfctrl_override_1tomany_nphy(
27583			pi,
27584			NPHY_REV7_RfctrlOverride_cmd_rxgain,
27585			0, 0x3, 1);
27586	else
27587		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27588
27589	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27590
27591	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27592				 gain_save);
27593
27594	if (NREV_GE(pi->pubpi.phy_rev, 4))
27595		pi->phyhang_avoid = phyhang_avoid_state;
27596
27597	wlc_phy_stay_in_carriersearch_nphy(pi, false);
27598
27599	return 0;
27600}
27601
27602static int
27603wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27604			   struct nphy_txgains target_gain, bool debug)
27605{
27606	struct phy_iq_est est[PHY_CORE_MAX];
27607	u8 core_num, rx_core, tx_core;
27608	u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27609	u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27610	u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27611	s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27612	s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27613	u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27614	u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27615	u16 num_samps;
27616	u32 i_pwr, q_pwr, tot_pwr[3];
27617	u8 gain_pass, use_hpf_num;
27618	u16 mask, val1, val2;
27619	u16 core_no;
27620	u16 gain_save[2];
27621	u16 cal_gain[2];
27622	struct nphy_iqcal_params cal_params[2];
27623	u8 phy_bw;
27624	int bcmerror = 0;
27625	bool first_playtone = true;
27626
27627	wlc_phy_stay_in_carriersearch_nphy(pi, true);
27628
27629	if (NREV_LT(pi->pubpi.phy_rev, 2))
27630		wlc_phy_reapply_txcal_coeffs_nphy(pi);
27631
27632	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27633
27634	for (core_no = 0; core_no <= 1; core_no++) {
27635		wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27636					      &cal_params[core_no]);
27637		cal_gain[core_no] = cal_params[core_no].cal_gain;
27638	}
27639
27640	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27641
27642	num_samps = 1024;
27643	desired_log2_pwr = 13;
27644
27645	for (core_num = 0; core_num < 2; core_num++) {
27646
27647		rx_core = core_num;
27648		tx_core = 1 - core_num;
27649
27650		orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27651		orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27652						0xa6 : 0xa7);
27653		orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27654		orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27655						 0x91 : 0x92);
27656		orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27657						 0x91 : 0x92);
27658
27659		mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27660		mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27661
27662		or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27663			   ((0x1 << 1) | (0x1 << 2)));
27664		or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27665
27666		if (((pi->nphy_rxcalparams) & 0xff000000))
27667			write_phy_reg(pi,
27668				      (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27669				      (CHSPEC_IS5G(pi->radio_chanspec) ?
27670					0x140 : 0x110));
27671		else
27672			write_phy_reg(pi,
27673				      (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27674				      (CHSPEC_IS5G(pi->radio_chanspec) ?
27675				       0x180 : 0x120));
27676
27677		write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27678			      (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27679			       0x114));
27680
27681		mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27682		if (rx_core == PHY_CORE_0) {
27683			val1 = RADIO_2055_COUPLE_RX_MASK;
27684			val2 = RADIO_2055_COUPLE_TX_MASK;
27685		} else {
27686			val1 = RADIO_2055_COUPLE_TX_MASK;
27687			val2 = RADIO_2055_COUPLE_RX_MASK;
27688		}
27689
27690		if ((pi->nphy_rxcalparams & 0x10000)) {
27691			mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27692				      val1);
27693			mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27694				      val2);
27695		}
27696
27697		for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27698
27699			if (debug)
27700				mdelay(WAIT_FOR_SCOPE);
27701
27702			if (gain_pass < 3) {
27703				curr_lna = lna_vals[gain_pass];
27704				curr_hpf1 = hpf1_vals[gain_pass];
27705				curr_hpf2 = hpf2_vals[gain_pass];
27706			} else {
27707
27708				if (tot_pwr[1] > 10000) {
27709					curr_lna = lna_vals[2];
27710					curr_hpf1 = hpf1_vals[2];
27711					curr_hpf2 = hpf2_vals[2];
27712					use_hpf_num = 1;
27713					curr_hpf = curr_hpf1;
27714					actual_log2_pwr =
27715						wlc_phy_nbits(tot_pwr[2]);
27716				} else {
27717					if (tot_pwr[0] > 10000) {
27718						curr_lna = lna_vals[1];
27719						curr_hpf1 = hpf1_vals[1];
27720						curr_hpf2 = hpf2_vals[1];
27721						use_hpf_num = 1;
27722						curr_hpf = curr_hpf1;
27723						actual_log2_pwr =
27724							wlc_phy_nbits(
27725								tot_pwr[1]);
27726					} else {
27727						curr_lna = lna_vals[0];
27728						curr_hpf1 = hpf1_vals[0];
27729						curr_hpf2 = hpf2_vals[0];
27730						use_hpf_num = 2;
27731						curr_hpf = curr_hpf2;
27732						actual_log2_pwr =
27733							wlc_phy_nbits(
27734								tot_pwr[0]);
27735					}
27736				}
27737
27738				hpf_change = desired_log2_pwr - actual_log2_pwr;
27739				curr_hpf += hpf_change;
27740				curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27741				if (use_hpf_num == 1)
27742					curr_hpf1 = curr_hpf;
27743				else
27744					curr_hpf2 = curr_hpf;
27745			}
27746
27747			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27748						     ((curr_hpf2 << 8) |
27749						      (curr_hpf1 << 4) |
27750						      (curr_lna << 2)), 0x3, 0);
27751			wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27752
27753			wlc_phy_stopplayback_nphy(pi);
27754
27755			if (first_playtone) {
27756				bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27757						(u16) (pi->nphy_rxcalparams &
27758						       0xffff), 0, 0, true);
27759				first_playtone = false;
27760			} else {
27761				phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27762					  40 : 20;
27763				wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27764							0, 0, 0, true);
27765			}
27766
27767			if (bcmerror == 0) {
27768				if (gain_pass < 3) {
27769
27770					wlc_phy_rx_iq_est_nphy(pi, est,
27771							       num_samps, 32,
27772							       0);
27773					i_pwr =	(est[rx_core].i_pwr +
27774						 num_samps / 2) / num_samps;
27775					q_pwr =	(est[rx_core].q_pwr +
27776						 num_samps / 2) / num_samps;
27777					tot_pwr[gain_pass] = i_pwr + q_pwr;
27778				} else {
27779
27780					wlc_phy_calc_rx_iq_comp_nphy(pi,
27781								     (1 <<
27782								      rx_core));
27783				}
27784
27785				wlc_phy_stopplayback_nphy(pi);
27786			}
27787
27788			if (bcmerror != 0)
27789				break;
27790		}
27791
27792		and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27793		and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27794
27795		write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27796			      0x92, orig_RfctrlIntcTx);
27797		write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27798			      0x92, orig_RfctrlIntcRx);
27799		write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27800		write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27801			      0xa7, orig_AfectrlCore);
27802		write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27803
27804		if (bcmerror != 0)
27805			break;
27806	}
27807
27808	wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27809	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27810
27811	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27812				 gain_save);
27813
27814	wlc_phy_stay_in_carriersearch_nphy(pi, false);
27815
27816	return bcmerror;
27817}
27818
27819int
27820wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27821		      u8 cal_type, bool debug)
27822{
27823	if (NREV_GE(pi->pubpi.phy_rev, 7))
27824		cal_type = 0;
27825
27826	if (NREV_GE(pi->pubpi.phy_rev, 3))
27827		return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27828						  debug);
27829	else
27830		return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27831}
27832
27833void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27834{
27835	uint core;
27836	u32 txgain;
27837	u16 rad_gain, dac_gain, bbmult, m1m2;
27838	u8 txpi[2], chan_freq_range;
27839	s32 rfpwr_offset;
27840
27841	if (pi->phyhang_avoid)
27842		wlc_phy_stay_in_carriersearch_nphy(pi, true);
27843
27844	if (pi->sh->sromrev < 4) {
27845		txpi[0] = txpi[1] = 72;
27846	} else {
27847
27848		chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27849		switch (chan_freq_range) {
27850		case WL_CHAN_FREQ_RANGE_2G:
27851		case WL_CHAN_FREQ_RANGE_5GL:
27852		case WL_CHAN_FREQ_RANGE_5GM:
27853		case WL_CHAN_FREQ_RANGE_5GH:
27854			txpi[0] = 0;
27855			txpi[1] = 0;
27856			break;
27857		default:
27858			txpi[0] = txpi[1] = 91;
27859			break;
27860		}
27861	}
27862
27863	if (NREV_GE(pi->pubpi.phy_rev, 7))
27864		txpi[0] = txpi[1] = 30;
27865	else if (NREV_GE(pi->pubpi.phy_rev, 3))
27866		txpi[0] = txpi[1] = 40;
27867
27868	if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27869
27870		if ((txpi[0] < 40) || (txpi[0] > 100) ||
27871		    (txpi[1] < 40) || (txpi[1] > 100))
27872			txpi[0] = txpi[1] = 91;
27873	}
27874
27875	pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27876	pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27877	pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27878	pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27879
27880	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27881		uint phyrev = pi->pubpi.phy_rev;
27882
27883		if (NREV_GE(phyrev, 3)) {
27884			if (PHY_IPA(pi)) {
27885				u32 *tx_gaintbl =
27886					wlc_phy_get_ipa_gaintbl_nphy(pi);
27887				txgain = tx_gaintbl[txpi[core]];
27888			} else {
27889				if (CHSPEC_IS5G(pi->radio_chanspec)) {
27890					if (NREV_IS(phyrev, 3)) {
27891						txgain =
27892						      nphy_tpc_5GHz_txgain_rev3
27893								   [txpi[core]];
27894					} else if (NREV_IS(phyrev, 4)) {
27895						txgain = (
27896						  pi->srom_fem5g.extpagain ==
27897						  3) ?
27898						  nphy_tpc_5GHz_txgain_HiPwrEPA
27899						 [txpi[core]] :
27900						 nphy_tpc_5GHz_txgain_rev4
27901						 [txpi[core]];
27902					} else {
27903						txgain =
27904						      nphy_tpc_5GHz_txgain_rev5
27905								   [txpi[core]];
27906					}
27907				} else {
27908					if (NREV_GE(phyrev, 5) &&
27909					    (pi->srom_fem2g.extpagain == 3)) {
27910						txgain =
27911							nphy_tpc_txgain_HiPwrEPA
27912							[txpi[core]];
27913					} else {
27914						txgain = nphy_tpc_txgain_rev3
27915							 [txpi[core]];
27916					}
27917				}
27918			}
27919		} else {
27920			txgain = nphy_tpc_txgain[txpi[core]];
27921		}
27922
27923		if (NREV_GE(phyrev, 3))
27924			rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27925		else
27926			rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27927
27928		if (NREV_GE(phyrev, 7))
27929			dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27930		else
27931			dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27932
27933		bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27934
27935		if (NREV_GE(phyrev, 3))
27936			mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27937					 0xa5), (0x1 << 8), (0x1 << 8));
27938		else
27939			mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27940
27941		write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27942
27943		wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27944					 &rad_gain);
27945
27946		wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27947		m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27948		m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27949		wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27950
27951		if (PHY_IPA(pi)) {
27952			wlc_phy_table_read_nphy(pi,
27953						(core ==
27954						 PHY_CORE_0 ?
27955						 NPHY_TBL_ID_CORE1TXPWRCTL :
27956						 NPHY_TBL_ID_CORE2TXPWRCTL), 1,
27957						576 + txpi[core], 32,
27958						&rfpwr_offset);
27959
27960			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27961				    0x29b, (0x1ff << 4),
27962				    ((s16) rfpwr_offset) << 4);
27963
27964			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27965				    0x29b, (0x1 << 2), (1) << 2);
27966
27967		}
27968	}
27969
27970	and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
27971
27972	if (pi->phyhang_avoid)
27973		wlc_phy_stay_in_carriersearch_nphy(pi, false);
27974}
27975
27976static void
27977wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
27978				u8 tmp_max_pwr, u8 rate_start,
27979				u8 rate_end)
27980{
27981	u8 rate;
27982	u8 word_num, nibble_num;
27983	u8 tmp_nibble;
27984
27985	for (rate = rate_start; rate <= rate_end; rate++) {
27986		word_num = (rate - rate_start) >> 2;
27987		nibble_num = (rate - rate_start) & 0x3;
27988		tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
27989
27990		srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
27991	}
27992}
27993
27994static void
27995wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
27996			    u8 rate_start, u8 rate_end)
27997{
27998	u8 rate;
27999
28000	for (rate = rate_start; rate <= rate_end; rate++)
28001		srom_max[rate] -= 2 * pwr_offset;
28002}
28003
28004void
28005wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
28006				u8 rate_mcs_end, u8 rate_ofdm_start)
28007{
28008	u8 rate1, rate2;
28009
28010	rate2 = rate_ofdm_start;
28011	for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
28012		power[rate1] = power[rate2];
28013		rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
28014	}
28015	power[rate_mcs_end] = power[rate_mcs_end - 1];
28016}
28017
28018void
28019wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
28020				u8 rate_ofdm_end, u8 rate_mcs_start)
28021{
28022	u8 rate1, rate2;
28023
28024	for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
28025	     rate1 <= rate_ofdm_end; rate1++, rate2++) {
28026		power[rate1] = power[rate2];
28027		if (rate1 == rate_ofdm_start)
28028			power[++rate1] = power[rate2];
28029	}
28030}
28031
28032void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
28033{
28034	uint rate1, rate2, band_num;
28035	u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
28036	u8 tmp_max_pwr = 0;
28037	u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
28038	u8 *tx_srom_max_rate = NULL;
28039
28040	for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
28041	     band_num++) {
28042		switch (band_num) {
28043		case 0:
28044
28045			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
28046					  pi->nphy_pwrctrl_info[1].max_pwr_2g);
28047
28048			pwr_offsets1[0] = pi->cck2gpo;
28049			wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
28050							pwr_offsets1,
28051							tmp_max_pwr,
28052							TXP_FIRST_CCK,
28053							TXP_LAST_CCK);
28054
28055			pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
28056			pwr_offsets1[1] =
28057				(u16) (pi->ofdm2gpo >> 16) & 0xffff;
28058
28059			pwr_offsets2 = pi->mcs2gpo;
28060
28061			tmp_cddpo = pi->cdd2gpo;
28062			tmp_stbcpo = pi->stbc2gpo;
28063			tmp_bw40po = pi->bw402gpo;
28064
28065			tx_srom_max_rate = pi->tx_srom_max_rate_2g;
28066			break;
28067		case 1:
28068
28069			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
28070					  pi->nphy_pwrctrl_info[1].max_pwr_5gm);
28071
28072			pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
28073			pwr_offsets1[1] =
28074				(u16) (pi->ofdm5gpo >> 16) & 0xffff;
28075
28076			pwr_offsets2 = pi->mcs5gpo;
28077
28078			tmp_cddpo = pi->cdd5gpo;
28079			tmp_stbcpo = pi->stbc5gpo;
28080			tmp_bw40po = pi->bw405gpo;
28081
28082			tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
28083			break;
28084		case 2:
28085
28086			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
28087					  pi->nphy_pwrctrl_info[1].max_pwr_5gl);
28088
28089			pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
28090			pwr_offsets1[1] =
28091				(u16) (pi->ofdm5glpo >> 16) & 0xffff;
28092
28093			pwr_offsets2 = pi->mcs5glpo;
28094
28095			tmp_cddpo = pi->cdd5glpo;
28096			tmp_stbcpo = pi->stbc5glpo;
28097			tmp_bw40po = pi->bw405glpo;
28098
28099			tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
28100			break;
28101		case 3:
28102
28103			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
28104					  pi->nphy_pwrctrl_info[1].max_pwr_5gh);
28105
28106			pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
28107			pwr_offsets1[1] =
28108				(u16) (pi->ofdm5ghpo >> 16) & 0xffff;
28109
28110			pwr_offsets2 = pi->mcs5ghpo;
28111
28112			tmp_cddpo = pi->cdd5ghpo;
28113			tmp_stbcpo = pi->stbc5ghpo;
28114			tmp_bw40po = pi->bw405ghpo;
28115
28116			tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
28117			break;
28118		}
28119
28120		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
28121						tmp_max_pwr, TXP_FIRST_OFDM,
28122						TXP_LAST_OFDM);
28123
28124		wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
28125						TXP_FIRST_MCS_20_SISO,
28126						TXP_LAST_MCS_20_SISO,
28127						TXP_FIRST_OFDM);
28128
28129		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28130						tmp_max_pwr,
28131						TXP_FIRST_MCS_20_CDD,
28132						TXP_LAST_MCS_20_CDD);
28133
28134		if (NREV_GE(pi->pubpi.phy_rev, 3))
28135			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28136						    TXP_FIRST_MCS_20_CDD,
28137						    TXP_LAST_MCS_20_CDD);
28138
28139		wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28140						TXP_FIRST_OFDM_20_CDD,
28141						TXP_LAST_OFDM_20_CDD,
28142						TXP_FIRST_MCS_20_CDD);
28143
28144		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28145						tmp_max_pwr,
28146						TXP_FIRST_MCS_20_STBC,
28147						TXP_LAST_MCS_20_STBC);
28148
28149		if (NREV_GE(pi->pubpi.phy_rev, 3))
28150			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28151						    tmp_stbcpo,
28152						    TXP_FIRST_MCS_20_STBC,
28153						    TXP_LAST_MCS_20_STBC);
28154
28155		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28156						&pwr_offsets2[2], tmp_max_pwr,
28157						TXP_FIRST_MCS_20_SDM,
28158						TXP_LAST_MCS_20_SDM);
28159
28160		if (NPHY_IS_SROM_REINTERPRET) {
28161
28162			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28163							&pwr_offsets2[4],
28164							tmp_max_pwr,
28165							TXP_FIRST_MCS_40_SISO,
28166							TXP_LAST_MCS_40_SISO);
28167
28168			wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28169							TXP_FIRST_OFDM_40_SISO,
28170							TXP_LAST_OFDM_40_SISO,
28171							TXP_FIRST_MCS_40_SISO);
28172
28173			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28174							&pwr_offsets2[4],
28175							tmp_max_pwr,
28176							TXP_FIRST_MCS_40_CDD,
28177							TXP_LAST_MCS_40_CDD);
28178
28179			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28180						    TXP_FIRST_MCS_40_CDD,
28181						    TXP_LAST_MCS_40_CDD);
28182
28183			wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28184							TXP_FIRST_OFDM_40_CDD,
28185							TXP_LAST_OFDM_40_CDD,
28186							TXP_FIRST_MCS_40_CDD);
28187
28188			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28189							&pwr_offsets2[4],
28190							tmp_max_pwr,
28191							TXP_FIRST_MCS_40_STBC,
28192							TXP_LAST_MCS_40_STBC);
28193
28194			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28195						    tmp_stbcpo,
28196						    TXP_FIRST_MCS_40_STBC,
28197						    TXP_LAST_MCS_40_STBC);
28198
28199			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28200							&pwr_offsets2[6],
28201							tmp_max_pwr,
28202							TXP_FIRST_MCS_40_SDM,
28203							TXP_LAST_MCS_40_SDM);
28204		} else {
28205
28206			for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28207				     TXP_FIRST_OFDM;
28208			     rate1 <= TXP_LAST_MCS_40_SDM;
28209			     rate1++, rate2++)
28210				tx_srom_max_rate[rate1] =
28211					tx_srom_max_rate[rate2];
28212		}
28213
28214		if (NREV_GE(pi->pubpi.phy_rev, 3))
28215			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28216						    tmp_bw40po,
28217						    TXP_FIRST_OFDM_40_SISO,
28218						    TXP_LAST_MCS_40_SDM);
28219
28220		tx_srom_max_rate[TXP_MCS_32] =
28221			tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28222	}
28223
28224	return;
28225}
28226
28227void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28228{
28229	u8 tx_pwr_ctrl_state;
28230	wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28231	wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28232
28233	tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28234
28235	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28236		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28237		(void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
28238		udelay(1);
28239	}
28240
28241	wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28242
28243	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28244		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28245}
28246
28247static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28248{
28249	return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28250					    (0x1 << 14) | (0x1 << 13));
28251}
28252
28253u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28254{
28255	u16 tmp;
28256	u16 pwr_idx[2];
28257
28258	if (wlc_phy_txpwr_ison_nphy(pi)) {
28259		pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28260		pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28261
28262		tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28263	} else {
28264		tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28265			<< 8) |
28266			(pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28267	}
28268
28269	return tmp;
28270}
28271
28272void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28273{
28274	if (PHY_IPA(pi)
28275	    && (pi->nphy_force_papd_cal
28276		|| (wlc_phy_txpwr_ison_nphy(pi)
28277		    &&
28278		    (((u32)
28279		      abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28280			  pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28281		     || ((u32)
28282			 abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28283			     pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28284		wlc_phy_a4(pi, true);
28285}
28286
28287void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28288{
28289	u16 mask = 0, val = 0, ishw = 0;
28290	u8 ctr;
28291	uint core;
28292	u32 tbl_offset;
28293	u32 tbl_len;
28294	u16 regval[84];
28295
28296	if (pi->phyhang_avoid)
28297		wlc_phy_stay_in_carriersearch_nphy(pi, true);
28298
28299	switch (ctrl_type) {
28300	case PHY_TPC_HW_OFF:
28301	case PHY_TPC_HW_ON:
28302		pi->nphy_txpwrctrl = ctrl_type;
28303		break;
28304	default:
28305		break;
28306	}
28307
28308	if (ctrl_type == PHY_TPC_HW_OFF) {
28309		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28310
28311			if (wlc_phy_txpwr_ison_nphy(pi)) {
28312				for (core = 0; core < pi->pubpi.phy_corenum;
28313				     core++)
28314					pi->nphy_txpwr_idx[core] =
28315						wlc_phy_txpwr_idx_cur_get_nphy(
28316							pi,
28317							(u8) core);
28318			}
28319
28320		}
28321
28322		tbl_len = 84;
28323		tbl_offset = 64;
28324		for (ctr = 0; ctr < tbl_len; ctr++)
28325			regval[ctr] = 0;
28326		wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28327					 regval);
28328		wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28329					 regval);
28330
28331		if (NREV_GE(pi->pubpi.phy_rev, 3))
28332			and_phy_reg(pi, 0x1e7,
28333				    (u16) (~((0x1 << 15) |
28334					     (0x1 << 14) | (0x1 << 13))));
28335		else
28336			and_phy_reg(pi, 0x1e7,
28337				    (u16) (~((0x1 << 14) | (0x1 << 13))));
28338
28339		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28340			or_phy_reg(pi, 0x8f, (0x1 << 8));
28341			or_phy_reg(pi, 0xa5, (0x1 << 8));
28342		} else {
28343			or_phy_reg(pi, 0xa5, (0x1 << 14));
28344		}
28345
28346		if (NREV_IS(pi->pubpi.phy_rev, 2))
28347			mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28348		else if (NREV_LT(pi->pubpi.phy_rev, 2))
28349			mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28350
28351		if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28352		    pi->bw == WL_CHANSPEC_BW_40)
28353			wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28354				       MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28355
28356	} else {
28357
28358		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28359					 8, pi->adj_pwr_tbl_nphy);
28360		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28361					 8, pi->adj_pwr_tbl_nphy);
28362
28363		ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28364		mask = (0x1 << 14) | (0x1 << 13);
28365		val = (ishw << 14) | (ishw << 13);
28366
28367		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28368			mask |= (0x1 << 15);
28369			val |= (ishw << 15);
28370		}
28371
28372		mod_phy_reg(pi, 0x1e7, mask, val);
28373
28374		if (CHSPEC_IS5G(pi->radio_chanspec)) {
28375			if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28376				mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28377				mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28378			} else {
28379				mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28380				if (NREV_GT(pi->pubpi.phy_rev, 1))
28381					mod_phy_reg(pi, 0x222,
28382						    (0xff << 0), 0x64);
28383			}
28384		}
28385
28386		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28387			if ((pi->nphy_txpwr_idx[0] != 128)
28388			    && (pi->nphy_txpwr_idx[1] != 128))
28389				wlc_phy_txpwr_idx_cur_set_nphy(pi,
28390							       pi->
28391							       nphy_txpwr_idx
28392							       [0],
28393							       pi->
28394							       nphy_txpwr_idx
28395							       [1]);
28396		}
28397
28398		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28399			and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28400			and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28401		} else {
28402			and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28403		}
28404
28405		if (NREV_IS(pi->pubpi.phy_rev, 2))
28406			mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28407		else if (NREV_LT(pi->pubpi.phy_rev, 2))
28408			mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28409
28410		if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28411		    pi->bw == WL_CHANSPEC_BW_40)
28412			wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28413				       0x0, BRCM_BAND_ALL);
28414
28415		if (PHY_IPA(pi)) {
28416			mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28417				    0x29b, (0x1 << 2), (0) << 2);
28418
28419			mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28420				    0x29b, (0x1 << 2), (0) << 2);
28421
28422		}
28423
28424	}
28425
28426	if (pi->phyhang_avoid)
28427		wlc_phy_stay_in_carriersearch_nphy(pi, false);
28428}
28429
28430void
28431wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28432			 bool restore_cals)
28433{
28434	u8 core, txpwrctl_tbl;
28435	u16 tx_ind0, iq_ind0, lo_ind0;
28436	u16 m1m2;
28437	u32 txgain;
28438	u16 rad_gain, dac_gain;
28439	u8 bbmult;
28440	u32 iqcomp;
28441	u16 iqcomp_a, iqcomp_b;
28442	u32 locomp;
28443	u16 tmpval;
28444	u8 tx_pwr_ctrl_state;
28445	s32 rfpwr_offset;
28446	u16 regval[2];
28447
28448	if (pi->phyhang_avoid)
28449		wlc_phy_stay_in_carriersearch_nphy(pi, true);
28450
28451	tx_ind0 = 192;
28452	iq_ind0 = 320;
28453	lo_ind0 = 448;
28454
28455	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28456
28457		if ((core_mask & (1 << core)) == 0)
28458			continue;
28459
28460		txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28461
28462		if (txpwrindex < 0) {
28463			if (pi->nphy_txpwrindex[core].index < 0)
28464				continue;
28465
28466			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28467				mod_phy_reg(pi, 0x8f,
28468					    (0x1 << 8),
28469					    pi->nphy_txpwrindex[core].
28470					    AfectrlOverride);
28471				mod_phy_reg(pi, 0xa5, (0x1 << 8),
28472					    pi->nphy_txpwrindex[core].
28473					    AfectrlOverride);
28474			} else {
28475				mod_phy_reg(pi, 0xa5,
28476					    (0x1 << 14),
28477					    pi->nphy_txpwrindex[core].
28478					    AfectrlOverride);
28479			}
28480
28481			write_phy_reg(pi, (core == PHY_CORE_0) ?
28482				      0xaa : 0xab,
28483				      pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28484
28485			wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28486						 &pi->nphy_txpwrindex[core].
28487						 rad_gain);
28488
28489			wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28490			m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28491			m1m2 |= ((core == PHY_CORE_0) ?
28492				 (pi->nphy_txpwrindex[core].bbmult << 8) :
28493				 (pi->nphy_txpwrindex[core].bbmult << 0));
28494			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28495
28496			if (restore_cals) {
28497				wlc_phy_table_write_nphy(
28498					pi, 15, 2, (80 + 2 * core), 16,
28499					&pi->nphy_txpwrindex[core].iqcomp_a);
28500				wlc_phy_table_write_nphy(
28501					pi, 15, 1, (85 + core), 16,
28502					&pi->nphy_txpwrindex[core].locomp);
28503				wlc_phy_table_write_nphy(
28504					pi, 15, 1, (93 + core), 16,
28505					&pi->nphy_txpwrindex[core].locomp);
28506			}
28507
28508			wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28509
28510			pi->nphy_txpwrindex[core].index_internal =
28511				pi->nphy_txpwrindex[core].index_internal_save;
28512		} else {
28513
28514			if (pi->nphy_txpwrindex[core].index < 0) {
28515
28516				if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28517					mod_phy_reg(pi, 0x8f,
28518						    (0x1 << 8),
28519						    pi->nphy_txpwrindex[core].
28520						    AfectrlOverride);
28521					mod_phy_reg(pi, 0xa5, (0x1 << 8),
28522						    pi->nphy_txpwrindex[core].
28523						    AfectrlOverride);
28524				} else {
28525					pi->nphy_txpwrindex[core].
28526					AfectrlOverride =
28527						read_phy_reg(pi, 0xa5);
28528				}
28529
28530				pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28531					read_phy_reg(pi, (core == PHY_CORE_0) ?
28532							 0xaa : 0xab);
28533
28534				wlc_phy_table_read_nphy(pi, 7, 1,
28535							(0x110 + core), 16,
28536							&pi->
28537							nphy_txpwrindex[core].
28538							rad_gain);
28539
28540				wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28541							&tmpval);
28542				tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28543				tmpval &= 0xff;
28544				pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28545
28546				wlc_phy_table_read_nphy(pi, 15, 2,
28547							(80 + 2 * core), 16,
28548							&pi->
28549							nphy_txpwrindex[core].
28550							iqcomp_a);
28551
28552				wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28553							16,
28554							&pi->
28555							nphy_txpwrindex[core].
28556							locomp);
28557
28558				pi->nphy_txpwrindex[core].index_internal_save =
28559					pi->nphy_txpwrindex[core].
28560					index_internal;
28561			}
28562
28563			tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28564			wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28565
28566			if (NREV_IS(pi->pubpi.phy_rev, 1))
28567				wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28568
28569			wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28570						(tx_ind0 + txpwrindex), 32,
28571						&txgain);
28572
28573			if (NREV_GE(pi->pubpi.phy_rev, 3))
28574				rad_gain = (txgain >> 16) &
28575					   ((1 << (32 - 16 + 1)) - 1);
28576			else
28577				rad_gain = (txgain >> 16) &
28578					   ((1 << (28 - 16 + 1)) - 1);
28579
28580			dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28581			bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28582
28583			if (NREV_GE(pi->pubpi.phy_rev, 3))
28584				mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28585						 0xa5), (0x1 << 8), (0x1 << 8));
28586			else
28587				mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28588
28589			write_phy_reg(pi, (core == PHY_CORE_0) ?
28590				      0xaa : 0xab, dac_gain);
28591
28592			wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28593						 &rad_gain);
28594
28595			wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28596			m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28597			m1m2 |= ((core == PHY_CORE_0) ?
28598				(bbmult << 8) : (bbmult << 0));
28599
28600			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28601
28602			wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28603						(iq_ind0 + txpwrindex), 32,
28604						&iqcomp);
28605			iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28606			iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28607
28608			if (restore_cals) {
28609				regval[0] = (u16) iqcomp_a;
28610				regval[1] = (u16) iqcomp_b;
28611				wlc_phy_table_write_nphy(pi, 15, 2,
28612							 (80 + 2 * core), 16,
28613							 regval);
28614			}
28615
28616			wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28617						(lo_ind0 + txpwrindex), 32,
28618						&locomp);
28619			if (restore_cals)
28620				wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28621							 16, &locomp);
28622
28623			if (NREV_IS(pi->pubpi.phy_rev, 1))
28624				wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28625
28626			if (PHY_IPA(pi)) {
28627				wlc_phy_table_read_nphy(pi,
28628						(core == PHY_CORE_0 ?
28629						 NPHY_TBL_ID_CORE1TXPWRCTL :
28630						 NPHY_TBL_ID_CORE2TXPWRCTL),
28631						1, 576 + txpwrindex, 32,
28632						&rfpwr_offset);
28633
28634				mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28635					    0x29b, (0x1ff << 4),
28636					    ((s16) rfpwr_offset) << 4);
28637
28638				mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28639					    0x29b, (0x1 << 2), (1) << 2);
28640
28641			}
28642
28643			wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28644		}
28645
28646		pi->nphy_txpwrindex[core].index = txpwrindex;
28647	}
28648
28649	if (pi->phyhang_avoid)
28650		wlc_phy_stay_in_carriersearch_nphy(pi, false);
28651}
28652
28653void
28654wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28655				   u8 txp_rate_idx)
28656{
28657	u8 chan_freq_range;
28658
28659	chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28660	switch (chan_freq_range) {
28661	case WL_CHAN_FREQ_RANGE_2G:
28662		*max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28663		break;
28664	case WL_CHAN_FREQ_RANGE_5GM:
28665		*max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28666		break;
28667	case WL_CHAN_FREQ_RANGE_5GL:
28668		*max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28669		break;
28670	case WL_CHAN_FREQ_RANGE_5GH:
28671		*max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28672		break;
28673	default:
28674		*max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28675		break;
28676	}
28677
28678	return;
28679}
28680
28681void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28682{
28683	u16 clip_off[] = { 0xffff, 0xffff };
28684
28685	if (enable) {
28686		if (pi->nphy_deaf_count == 0) {
28687			pi->classifier_state =
28688				wlc_phy_classifier_nphy(pi, 0, 0);
28689			wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28690			wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28691			wlc_phy_clip_det_nphy(pi, 1, clip_off);
28692		}
28693
28694		pi->nphy_deaf_count++;
28695
28696		wlc_phy_resetcca_nphy(pi);
28697
28698	} else {
28699		pi->nphy_deaf_count--;
28700
28701		if (pi->nphy_deaf_count == 0) {
28702			wlc_phy_classifier_nphy(pi, (0x7 << 0),
28703						pi->classifier_state);
28704			wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28705		}
28706	}
28707}
28708
28709void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28710{
28711	wlapi_suspend_mac_and_wait(pi->sh->physhim);
28712
28713	if (mode) {
28714		if (pi->nphy_deaf_count == 0)
28715			wlc_phy_stay_in_carriersearch_nphy(pi, true);
28716	} else if (pi->nphy_deaf_count > 0) {
28717		wlc_phy_stay_in_carriersearch_nphy(pi, false);
28718	}
28719
28720	wlapi_enable_mac(pi->sh->physhim);
28721}
28722