xref: /linux/drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c (revision 79790b6818e96c58fe2bffee1b418c16e64e7b80)
1 // SPDX-License-Identifier: ISC
2 /*
3  * Copyright (c) 2010 Broadcom Corporation
4  */
5 
6 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
7 
8 #include <linux/kernel.h>
9 #include <linux/delay.h>
10 #include <linux/cordic.h>
11 
12 #include <brcm_hw_ids.h>
13 #include <aiutils.h>
14 #include <chipcommon.h>
15 #include <pmu.h>
16 #include <d11.h>
17 #include <phy_shim.h>
18 #include "phy_int.h"
19 #include "phy_hal.h"
20 #include "phy_radio.h"
21 #include "phyreg_n.h"
22 #include "phytbl_n.h"
23 #include "soc.h"
24 
25 #define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name)	\
26 	read_radio_reg(pi, radio_type##_##jspace##_##reg_name |	\
27 		       ((core == PHY_CORE_0) ? \
28 			radio_type##_##jspace##0 : \
29 			radio_type##_##jspace##1))
30 
31 #define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value)	\
32 	write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
33 			((core ==  PHY_CORE_0) ? \
34 			 radio_type##_##jspace##0 : \
35 			 radio_type##_##jspace##1), value)
36 
37 #define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
38 	write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value)
39 
40 #define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name)	\
41 	read_radio_reg(pi, ((core == PHY_CORE_0) ? \
42 			    radio_type##_##jspace##0##_##reg_name : \
43 			    radio_type##_##jspace##1##_##reg_name))
44 
45 #define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value)	\
46 	write_radio_reg(pi, ((core ==  PHY_CORE_0) ? \
47 			     radio_type##_##jspace##0##_##reg_name : \
48 			     radio_type##_##jspace##1##_##reg_name), \
49 			value)
50 
51 #define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name)	\
52 	read_radio_reg(pi, ((core == PHY_CORE_0) ? \
53 			     radio_type##_##reg_name##_##jspace##0 : \
54 			     radio_type##_##reg_name##_##jspace##1))
55 
56 #define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value)	\
57 	write_radio_reg(pi, ((core == PHY_CORE_0) ? \
58 			radio_type##_##reg_name##_##jspace##0 : \
59 			radio_type##_##reg_name##_##jspace##1), \
60 			value)
61 
62 #define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
63 #define NPHY_ACI_CHANNEL_DELTA 5
64 #define NPHY_ACI_CHANNEL_SKIP 4
65 #define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
66 #define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
67 #define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
68 #define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
69 #define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
70 #define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
71 
72 #define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
73 
74 #define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
75 
76 #define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
77 
78 #define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
79 
80 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
81 
82 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
83 
84 #define NPHY_NOISE_NOASSOC_ENTER_TH  400
85 
86 #define NPHY_NOISE_ASSOC_ENTER_TH  400
87 
88 #define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH  400
89 
90 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
91 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
92 
93 #define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
94 
95 #define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
96 
97 #define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
98 
99 #define NPHY_RSSICAL_MAXREAD 31
100 
101 #define NPHY_RSSICAL_NPOLL 8
102 #define NPHY_RSSICAL_MAXD  (1<<20)
103 #define NPHY_MIN_RXIQ_PWR 2
104 
105 #define NPHY_RSSICAL_W1_TARGET 25
106 #define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
107 #define NPHY_RSSICAL_NB_TARGET 0
108 
109 #define NPHY_RSSICAL_W1_TARGET_REV3 29
110 #define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
111 
112 #define NPHY_CALSANITY_RSSI_NB_MAX_POS  9
113 #define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
114 #define NPHY_CALSANITY_RSSI_W1_MAX_POS  12
115 #define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - \
116 					NPHY_RSSICAL_MAXREAD)
117 #define NPHY_CALSANITY_RSSI_W2_MAX_POS  NPHY_CALSANITY_RSSI_W1_MAX_POS
118 #define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - \
119 					NPHY_RSSICAL_MAXREAD)
120 #define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
121 #define NPHY_RSSI_NB_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
122 			       ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
123 #define NPHY_RSSI_W1_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
124 			       ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
125 #define NPHY_RSSI_W2_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
126 			       ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
127 
128 #define NPHY_IQCAL_NUMGAINS 9
129 #define NPHY_N_GCTL 0x66
130 
131 #define NPHY_PAPD_EPS_TBL_SIZE 64
132 #define NPHY_PAPD_SCL_TBL_SIZE 64
133 #define NPHY_NUM_DIG_FILT_COEFFS 15
134 
135 #define NPHY_PAPD_COMP_OFF 0
136 #define NPHY_PAPD_COMP_ON  1
137 
138 #define NPHY_SROM_TEMPSHIFT             32
139 #define NPHY_SROM_MAXTEMPOFFSET         16
140 #define NPHY_SROM_MINTEMPOFFSET         -16
141 
142 #define NPHY_CAL_MAXTEMPDELTA           64
143 
144 #define NPHY_NOISEVAR_TBLLEN40 256
145 #define NPHY_NOISEVAR_TBLLEN20 128
146 
147 #define NPHY_ANARXLPFBW_REDUCTIONFACT 7
148 
149 #define NPHY_ADJUSTED_MINCRSPOWER 0x1e
150 
151 /* 5357 Chip specific ChipControl register bits */
152 #define CCTRL5357_EXTPA            (1<<14) /* extPA in ChipControl 1, bit 14 */
153 #define CCTRL5357_ANT_MUX_2o3      (1<<15) /* 2o3 in ChipControl 1, bit 15 */
154 
155 #define NPHY_CAL_TSSISAMPS      64
156 #define NPHY_TEST_TONE_FREQ_40MHz 4000
157 #define NPHY_TEST_TONE_FREQ_20MHz 2500
158 
159 #define MAX_205x_RCAL_WAITLOOPS 10000
160 
161 #define NPHY_RXCAL_TONEAMP 181
162 #define NPHY_RXCAL_TONEFREQ_40MHz 4000
163 #define NPHY_RXCAL_TONEFREQ_20MHz 2000
164 
165 #define TXFILT_SHAPING_OFDM20   0
166 #define TXFILT_SHAPING_OFDM40   1
167 #define TXFILT_SHAPING_CCK      2
168 #define TXFILT_DEFAULT_OFDM20   3
169 #define TXFILT_DEFAULT_OFDM40   4
170 
171 struct nphy_iqcal_params {
172 	u16 txlpf;
173 	u16 txgm;
174 	u16 pga;
175 	u16 pad;
176 	u16 ipa;
177 	u16 cal_gain;
178 	u16 ncorr[5];
179 };
180 
181 struct nphy_txiqcal_ladder {
182 	u8 percent;
183 	u8 g_env;
184 };
185 
186 struct nphy_ipa_txcalgains {
187 	struct nphy_txgains gains;
188 	bool useindex;
189 	u8 index;
190 };
191 
192 struct nphy_papd_restore_state {
193 	u16 fbmix[2];
194 	u16 vga_master[2];
195 	u16 intpa_master[2];
196 	u16 afectrl[2];
197 	u16 afeoverride[2];
198 	u16 pwrup[2];
199 	u16 atten[2];
200 	u16 mm;
201 };
202 
203 struct nphy_ipa_txrxgain {
204 	u16 hpvga;
205 	u16 lpf_biq1;
206 	u16 lpf_biq0;
207 	u16 lna2;
208 	u16 lna1;
209 	s8 txpwrindex;
210 };
211 
212 #define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
213 
214 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz[] = {
215 	{0, 0, 0, 0, 0, 100},
216 	{0, 0, 0, 0, 0, 50},
217 	{0, 0, 0, 0, 0, -1},
218 	{0, 0, 0, 3, 0, -1},
219 	{0, 0, 3, 3, 0, -1},
220 	{0, 2, 3, 3, 0, -1}
221 };
222 
223 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz[] = {
224 	{0, 0, 0, 0, 0, 128},
225 	{0, 0, 0, 0, 0, 70},
226 	{0, 0, 0, 0, 0, 20},
227 	{0, 0, 0, 3, 0, 20},
228 	{0, 0, 3, 3, 0, 20},
229 	{0, 2, 3, 3, 0, 20}
230 };
231 
232 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = {
233 	{0, 0, 0, 0, 0, 100},
234 	{0, 0, 0, 0, 0, 50},
235 	{0, 0, 0, 0, 0, -1},
236 	{0, 0, 0, 3, 0, -1},
237 	{0, 0, 3, 3, 0, -1},
238 	{0, 0, 5, 3, 0, -1}
239 };
240 
241 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = {
242 	{0, 0, 0, 0, 0, 10},
243 	{0, 0, 0, 1, 0, 10},
244 	{0, 0, 1, 2, 0, 10},
245 	{0, 0, 1, 3, 0, 10},
246 	{0, 0, 4, 3, 0, 10},
247 	{0, 0, 6, 3, 0, 10}
248 };
249 
250 enum {
251 	NPHY_RXCAL_GAIN_INIT = 0,
252 	NPHY_RXCAL_GAIN_UP,
253 	NPHY_RXCAL_GAIN_DOWN
254 };
255 
256 #define wlc_phy_get_papd_nphy(pi) \
257 	(read_phy_reg((pi), 0x1e7) & \
258 	 ((0x1 << 15) |	\
259 	  (0x1 << 14) |	\
260 	  (0x1 << 13)))
261 
262 static const u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
263 	{-377, 137, -407, 208, -1527, 956, 93, 186, 93,
264 	 230, -44, 230, 201, -191, 201},
265 	{-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
266 	 26, 34, -32, 34},
267 	{-360, 164, -376, 164, -1533, 576, 308, -314, 308,
268 	 121, -73, 121, 91, 124, 91},
269 	{-295, 200, -363, 142, -1391, 826, 151, 301, 151,
270 	 151, 301, 151, 602, -752, 602},
271 	{-92, 58, -96, 49, -104, 44, 17, 35, 17,
272 	 12, 25, 12, 13, 27, 13},
273 	{-375, 136, -399, 209, -1479, 949, 130, 260, 130,
274 	 230, -44, 230, 201, -191, 201},
275 	{0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
276 	 0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
277 };
278 
279 struct chan_info_nphy_2055 {
280 	u16 chan;
281 	u16 freq;
282 	uint unknown;
283 	u8 RF_pll_ref;
284 	u8 RF_rf_pll_mod1;
285 	u8 RF_rf_pll_mod0;
286 	u8 RF_vco_cap_tail;
287 	u8 RF_vco_cal1;
288 	u8 RF_vco_cal2;
289 	u8 RF_pll_lf_c1;
290 	u8 RF_pll_lf_r1;
291 	u8 RF_pll_lf_c2;
292 	u8 RF_lgbuf_cen_buf;
293 	u8 RF_lgen_tune1;
294 	u8 RF_lgen_tune2;
295 	u8 RF_core1_lgbuf_a_tune;
296 	u8 RF_core1_lgbuf_g_tune;
297 	u8 RF_core1_rxrf_reg1;
298 	u8 RF_core1_tx_pga_pad_tn;
299 	u8 RF_core1_tx_mx_bgtrim;
300 	u8 RF_core2_lgbuf_a_tune;
301 	u8 RF_core2_lgbuf_g_tune;
302 	u8 RF_core2_rxrf_reg1;
303 	u8 RF_core2_tx_pga_pad_tn;
304 	u8 RF_core2_tx_mx_bgtrim;
305 	u16 PHY_BW1a;
306 	u16 PHY_BW2;
307 	u16 PHY_BW3;
308 	u16 PHY_BW4;
309 	u16 PHY_BW5;
310 	u16 PHY_BW6;
311 };
312 
313 struct chan_info_nphy_radio205x {
314 	u16 chan;
315 	u16 freq;
316 	u8 RF_SYN_pll_vcocal1;
317 	u8 RF_SYN_pll_vcocal2;
318 	u8 RF_SYN_pll_refdiv;
319 	u8 RF_SYN_pll_mmd2;
320 	u8 RF_SYN_pll_mmd1;
321 	u8 RF_SYN_pll_loopfilter1;
322 	u8 RF_SYN_pll_loopfilter2;
323 	u8 RF_SYN_pll_loopfilter3;
324 	u8 RF_SYN_pll_loopfilter4;
325 	u8 RF_SYN_pll_loopfilter5;
326 	u8 RF_SYN_reserved_addr27;
327 	u8 RF_SYN_reserved_addr28;
328 	u8 RF_SYN_reserved_addr29;
329 	u8 RF_SYN_logen_VCOBUF1;
330 	u8 RF_SYN_logen_MIXER2;
331 	u8 RF_SYN_logen_BUF3;
332 	u8 RF_SYN_logen_BUF4;
333 	u8 RF_RX0_lnaa_tune;
334 	u8 RF_RX0_lnag_tune;
335 	u8 RF_TX0_intpaa_boost_tune;
336 	u8 RF_TX0_intpag_boost_tune;
337 	u8 RF_TX0_pada_boost_tune;
338 	u8 RF_TX0_padg_boost_tune;
339 	u8 RF_TX0_pgaa_boost_tune;
340 	u8 RF_TX0_pgag_boost_tune;
341 	u8 RF_TX0_mixa_boost_tune;
342 	u8 RF_TX0_mixg_boost_tune;
343 	u8 RF_RX1_lnaa_tune;
344 	u8 RF_RX1_lnag_tune;
345 	u8 RF_TX1_intpaa_boost_tune;
346 	u8 RF_TX1_intpag_boost_tune;
347 	u8 RF_TX1_pada_boost_tune;
348 	u8 RF_TX1_padg_boost_tune;
349 	u8 RF_TX1_pgaa_boost_tune;
350 	u8 RF_TX1_pgag_boost_tune;
351 	u8 RF_TX1_mixa_boost_tune;
352 	u8 RF_TX1_mixg_boost_tune;
353 	u16 PHY_BW1a;
354 	u16 PHY_BW2;
355 	u16 PHY_BW3;
356 	u16 PHY_BW4;
357 	u16 PHY_BW5;
358 	u16 PHY_BW6;
359 };
360 
361 struct chan_info_nphy_radio2057 {
362 	u16 chan;
363 	u16 freq;
364 	u8 RF_vcocal_countval0;
365 	u8 RF_vcocal_countval1;
366 	u8 RF_rfpll_refmaster_sparextalsize;
367 	u8 RF_rfpll_loopfilter_r1;
368 	u8 RF_rfpll_loopfilter_c2;
369 	u8 RF_rfpll_loopfilter_c1;
370 	u8 RF_cp_kpd_idac;
371 	u8 RF_rfpll_mmd0;
372 	u8 RF_rfpll_mmd1;
373 	u8 RF_vcobuf_tune;
374 	u8 RF_logen_mx2g_tune;
375 	u8 RF_logen_mx5g_tune;
376 	u8 RF_logen_indbuf2g_tune;
377 	u8 RF_logen_indbuf5g_tune;
378 	u8 RF_txmix2g_tune_boost_pu_core0;
379 	u8 RF_pad2g_tune_pus_core0;
380 	u8 RF_pga_boost_tune_core0;
381 	u8 RF_txmix5g_boost_tune_core0;
382 	u8 RF_pad5g_tune_misc_pus_core0;
383 	u8 RF_lna2g_tune_core0;
384 	u8 RF_lna5g_tune_core0;
385 	u8 RF_txmix2g_tune_boost_pu_core1;
386 	u8 RF_pad2g_tune_pus_core1;
387 	u8 RF_pga_boost_tune_core1;
388 	u8 RF_txmix5g_boost_tune_core1;
389 	u8 RF_pad5g_tune_misc_pus_core1;
390 	u8 RF_lna2g_tune_core1;
391 	u8 RF_lna5g_tune_core1;
392 	u16 PHY_BW1a;
393 	u16 PHY_BW2;
394 	u16 PHY_BW3;
395 	u16 PHY_BW4;
396 	u16 PHY_BW5;
397 	u16 PHY_BW6;
398 };
399 
400 struct chan_info_nphy_radio2057_rev5 {
401 	u16 chan;
402 	u16 freq;
403 	u8 RF_vcocal_countval0;
404 	u8 RF_vcocal_countval1;
405 	u8 RF_rfpll_refmaster_sparextalsize;
406 	u8 RF_rfpll_loopfilter_r1;
407 	u8 RF_rfpll_loopfilter_c2;
408 	u8 RF_rfpll_loopfilter_c1;
409 	u8 RF_cp_kpd_idac;
410 	u8 RF_rfpll_mmd0;
411 	u8 RF_rfpll_mmd1;
412 	u8 RF_vcobuf_tune;
413 	u8 RF_logen_mx2g_tune;
414 	u8 RF_logen_indbuf2g_tune;
415 	u8 RF_txmix2g_tune_boost_pu_core0;
416 	u8 RF_pad2g_tune_pus_core0;
417 	u8 RF_lna2g_tune_core0;
418 	u8 RF_txmix2g_tune_boost_pu_core1;
419 	u8 RF_pad2g_tune_pus_core1;
420 	u8 RF_lna2g_tune_core1;
421 	u16 PHY_BW1a;
422 	u16 PHY_BW2;
423 	u16 PHY_BW3;
424 	u16 PHY_BW4;
425 	u16 PHY_BW5;
426 	u16 PHY_BW6;
427 };
428 
429 struct nphy_sfo_cfg {
430 	u16 PHY_BW1a;
431 	u16 PHY_BW2;
432 	u16 PHY_BW3;
433 	u16 PHY_BW4;
434 	u16 PHY_BW5;
435 	u16 PHY_BW6;
436 };
437 
438 static const struct chan_info_nphy_2055 chan_info_nphy_2055[] = {
439 	{
440 	 184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
441 	 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
442 	 0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
443 	{
444 	 186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
445 	 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
446 	 0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
447 	{
448 	 188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
449 	 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
450 	 0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
451 	{
452 	 190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
453 	 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
454 	 0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
455 	{
456 	 192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
457 	 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
458 	 0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
459 	{
460 	 194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
461 	 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
462 	 0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
463 	{
464 	 196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
465 	 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
466 	 0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
467 	{
468 	 198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
469 	 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
470 	 0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
471 	{
472 	 200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
473 	 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
474 	 0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
475 	{
476 	 202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
477 	 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
478 	 0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
479 	{
480 	 204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
481 	 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
482 	 0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
483 	{
484 	 206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
485 	 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
486 	 0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
487 	{
488 	 208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
489 	 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
490 	 0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
491 	{
492 	 210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
493 	 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
494 	 0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
495 	{
496 	 212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
497 	 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
498 	 0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
499 	{
500 	 214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
501 	 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
502 	 0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
503 	{
504 	 216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
505 	 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
506 	 0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
507 	{
508 	 218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
509 	 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
510 	 0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
511 	{
512 	 220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
513 	 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
514 	 0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
515 	{
516 	 222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
517 	 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
518 	 0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
519 	{
520 	 224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
521 	 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
522 	 0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
523 	{
524 	 226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
525 	 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
526 	 0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
527 	{
528 	 228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
529 	 0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
530 	 0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
531 	{
532 	 32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
533 	 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
534 	 0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
535 	{
536 	 34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
537 	 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
538 	 0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
539 	{
540 	 36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
541 	 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
542 	 0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
543 	{
544 	 38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
545 	 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
546 	 0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
547 	{
548 	 40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
549 	 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
550 	 0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
551 	{
552 	 42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
553 	 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
554 	 0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
555 	{
556 	 44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
557 	 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
558 	 0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
559 	{
560 	 46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
561 	 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
562 	 0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
563 	{
564 	 48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
565 	 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
566 	 0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
567 	{
568 	 50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
569 	 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
570 	 0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
571 	{
572 	 52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
573 	 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
574 	 0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
575 	{
576 	 54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
577 	 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
578 	 0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
579 	{
580 	 56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
581 	 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
582 	 0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
583 	{
584 	 58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
585 	 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
586 	 0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
587 	{
588 	 60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
589 	 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
590 	 0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
591 	{
592 	 62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
593 	 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
594 	 0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
595 	{
596 	 64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
597 	 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
598 	 0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
599 	{
600 	 66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
601 	 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
602 	 0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
603 	{
604 	 68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
605 	 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
606 	 0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
607 	{
608 	 70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
609 	 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
610 	 0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
611 	{
612 	 72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
613 	 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
614 	 0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
615 	{
616 	 74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
617 	 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
618 	 0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
619 	{
620 	 76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
621 	 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
622 	 0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
623 	{
624 	 78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
625 	 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
626 	 0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
627 	{
628 	 80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
629 	 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
630 	 0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
631 	{
632 	 82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
633 	 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
634 	 0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
635 	{
636 	 84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
637 	 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
638 	 0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
639 	{
640 	 86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
641 	 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
642 	 0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
643 	{
644 	 88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
645 	 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
646 	 0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
647 	{
648 	 90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
649 	 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
650 	 0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
651 	{
652 	 92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
653 	 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
654 	 0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
655 	{
656 	 94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
657 	 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
658 	 0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
659 	{
660 	 96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
661 	 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
662 	 0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
663 	{
664 	 98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
665 	 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
666 	 0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
667 	{
668 	 100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
669 	 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
670 	 0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
671 	{
672 	 102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
673 	 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
674 	 0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
675 	{
676 	 104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
677 	 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
678 	 0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
679 	{
680 	 106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
681 	 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
682 	 0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
683 	{
684 	 108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
685 	 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
686 	 0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
687 	{
688 	 110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
689 	 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
690 	 0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
691 	{
692 	 112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
693 	 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
694 	 0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
695 	{
696 	 114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
697 	 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
698 	 0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
699 	{
700 	 116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
701 	 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
702 	 0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
703 	{
704 	 118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
705 	 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
706 	 0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
707 	{
708 	 120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
709 	 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
710 	 0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
711 	{
712 	 122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
713 	 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
714 	 0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
715 	{
716 	 124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
717 	 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
718 	 0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
719 	{
720 	 126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
721 	 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
722 	 0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
723 	{
724 	 128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
725 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
726 	 0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
727 	{
728 	 130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
729 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
730 	 0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
731 	{
732 	 132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
733 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
734 	 0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
735 	{
736 	 134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
737 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
738 	 0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
739 	{
740 	 136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
741 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
742 	 0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
743 	{
744 	 138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
745 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
746 	 0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
747 	{
748 	 140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
749 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
750 	 0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
751 	{
752 	 142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
753 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
754 	 0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
755 	{
756 	 144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
757 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
758 	 0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
759 	{
760 	 145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
761 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
762 	 0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
763 	{
764 	 146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
765 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
766 	 0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
767 	{
768 	 147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
769 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
770 	 0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
771 	{
772 	 148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
773 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
774 	 0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
775 	{
776 	 149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
777 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
778 	 0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
779 	{
780 	 150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
781 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
782 	 0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
783 	{
784 	 151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
785 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
786 	 0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
787 	{
788 	 152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
789 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
790 	 0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
791 	{
792 	 153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
793 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
794 	 0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
795 	{
796 	 154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
797 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
798 	 0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
799 	{
800 	 155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
801 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
802 	 0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
803 	{
804 	 156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
805 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
806 	 0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
807 	{
808 	 157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
809 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
810 	 0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
811 	{
812 	 158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
813 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
814 	 0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
815 	{
816 	 159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
817 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
818 	 0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
819 	{
820 	 160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
821 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
822 	 0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
823 	{
824 	 161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
825 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
826 	 0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
827 	{
828 	 162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
829 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
830 	 0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
831 	{
832 	 163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
833 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
834 	 0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
835 	{
836 	 164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
837 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
838 	 0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
839 	{
840 	 165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
841 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
842 	 0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
843 	{
844 	 166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
845 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
846 	 0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
847 	{
848 	 168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
849 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
850 	 0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
851 	{
852 	 170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
853 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
854 	 0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
855 	{
856 	 172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
857 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
858 	 0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
859 	{
860 	 174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
861 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
862 	 0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
863 	{
864 	 176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
865 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
866 	 0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
867 	{
868 	 178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
869 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
870 	 0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
871 	{
872 	 180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
873 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
874 	 0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
875 	{
876 	 182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
877 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
878 	 0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
879 	{
880 	 1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
881 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
882 	 0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
883 	{
884 	 2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
885 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
886 	 0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
887 	{
888 	 3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
889 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
890 	 0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
891 	{
892 	 4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
893 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
894 	 0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
895 	{
896 	 5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
897 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
898 	 0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
899 	{
900 	 6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
901 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
902 	 0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
903 	{
904 	 7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
905 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
906 	 0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
907 	{
908 	 8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
909 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
910 	 0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
911 	{
912 	 9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
913 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
914 	 0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
915 	{
916 	 10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
917 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
918 	 0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
919 	{
920 	 11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
921 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
922 	 0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
923 	{
924 	 12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
925 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
926 	 0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
927 	{
928 	 13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
929 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
930 	 0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
931 	{
932 	 14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
933 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
934 	 0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
935 };
936 
937 static const struct chan_info_nphy_radio205x chan_info_nphyrev3_2056[] = {
938 	{
939 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
940 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
941 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
942 	 0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
943 	{
944 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
945 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
946 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
947 	 0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
948 	{
949 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
950 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
951 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
952 	 0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
953 	{
954 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
955 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
956 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
957 	 0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
958 	{
959 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
960 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
961 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
962 	 0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
963 	{
964 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
965 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
966 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
967 	 0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
968 	{
969 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
970 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
971 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
972 	 0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
973 	{
974 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
975 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
976 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
977 	 0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
978 	{
979 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
980 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
981 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
982 	 0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
983 	{
984 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
985 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
986 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
987 	 0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
988 	{
989 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
990 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
991 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
992 	 0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
993 	{
994 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
995 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
996 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
997 	 0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
998 	{
999 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1000 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1001 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1002 	 0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1003 	{
1004 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1005 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1006 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1007 	 0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1008 	{
1009 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1010 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1011 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1012 	 0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1013 	{
1014 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1015 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1016 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1017 	 0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1018 	{
1019 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1020 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1021 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1022 	 0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1023 	{
1024 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1025 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1026 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1027 	 0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1028 	{
1029 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1030 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1031 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1032 	 0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1033 	{
1034 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1035 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1036 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1037 	 0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1038 	{
1039 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1040 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1041 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1042 	 0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1043 	{
1044 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1045 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1046 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1047 	 0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1048 	{
1049 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1050 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1051 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1052 	 0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1053 	{
1054 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1055 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1056 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1057 	 0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1058 	{
1059 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1060 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1061 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1062 	 0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1063 	{
1064 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1065 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1066 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1067 	 0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1068 	{
1069 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1070 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1071 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1072 	 0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1073 	{
1074 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1075 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1076 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1077 	 0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1078 	{
1079 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1080 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1081 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1082 	 0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1083 	{
1084 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1085 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1086 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1087 	 0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1088 	{
1089 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1090 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1091 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1092 	 0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1093 	{
1094 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1095 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1096 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1097 	 0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1098 	{
1099 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1100 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1101 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1102 	 0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1103 	{
1104 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1105 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1106 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1107 	 0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1108 	{
1109 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1110 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1111 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1112 	 0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1113 	{
1114 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1115 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1116 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1117 	 0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1118 	{
1119 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1120 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1121 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1122 	 0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1123 	{
1124 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1125 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1126 	 0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1127 	 0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1128 	{
1129 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1130 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1131 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1132 	 0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1133 	{
1134 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1135 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1136 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1137 	 0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1138 	{
1139 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1140 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1141 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1142 	 0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1143 	{
1144 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1145 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1146 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1147 	 0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1148 	{
1149 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1150 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1151 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1152 	 0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1153 	{
1154 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1155 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1156 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1157 	 0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1158 	{
1159 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1160 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1161 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1162 	 0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1163 	{
1164 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1165 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1166 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1167 	 0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1168 	{
1169 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1170 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1171 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1172 	 0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1173 	{
1174 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1175 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1176 	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1177 	 0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1178 	{
1179 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1180 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1181 	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1182 	 0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1183 	{
1184 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1185 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1186 	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1187 	 0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1188 	{
1189 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1190 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1191 	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1192 	 0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1193 	{
1194 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1195 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1196 	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1197 	 0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1198 	{
1199 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1200 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1201 	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1202 	 0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1203 	{
1204 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1205 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1206 	 0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1207 	 0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1208 	{
1209 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1210 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1211 	 0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1212 	 0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1213 	{
1214 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1215 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1216 	 0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1217 	 0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1218 	{
1219 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1220 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1221 	 0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1222 	 0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1223 	{
1224 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1225 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1226 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1227 	 0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1228 	{
1229 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1230 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1231 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1232 	 0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1233 	{
1234 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1235 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1236 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1237 	 0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1238 	{
1239 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1240 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1241 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1242 	 0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1243 	{
1244 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1245 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1246 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1247 	 0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1248 	{
1249 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1250 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1251 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1252 	 0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1253 	{
1254 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1255 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1256 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1257 	 0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1258 	{
1259 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1260 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1261 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1262 	 0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1263 	{
1264 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1265 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1266 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1267 	 0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1268 	{
1269 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1270 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1271 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1272 	 0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1273 	{
1274 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1275 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1276 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1277 	 0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1278 	{
1279 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1280 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1281 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1282 	 0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1283 	{
1284 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1285 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1286 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1287 	 0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1288 	{
1289 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1290 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1291 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1292 	 0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1293 	{
1294 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1295 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1296 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1297 	 0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1298 	{
1299 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1300 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1301 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1302 	 0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1303 	{
1304 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1305 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1306 	 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1307 	 0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1308 	{
1309 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1310 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1311 	 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1312 	 0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1313 	{
1314 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1315 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1316 	 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1317 	 0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1318 	{
1319 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1320 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1321 	 0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1322 	 0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1323 	{
1324 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1325 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1326 	 0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1327 	 0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1328 	{
1329 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1330 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1331 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1332 	 0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1333 	{
1334 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1335 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1336 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1337 	 0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1338 	{
1339 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1340 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1341 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1342 	 0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1343 	{
1344 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1345 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1346 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1347 	 0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1348 	{
1349 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1350 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1351 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1352 	 0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1353 	{
1354 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1355 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1356 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1357 	 0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1358 	{
1359 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1360 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1361 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1362 	 0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1363 	{
1364 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1365 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1366 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1367 	 0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1368 	{
1369 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1370 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1371 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1372 	 0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1373 	{
1374 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1375 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1376 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1377 	 0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1378 	{
1379 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1380 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1381 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1382 	 0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1383 	{
1384 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1385 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1386 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1387 	 0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1388 	{
1389 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1390 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1391 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1392 	 0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1393 	{
1394 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1395 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1396 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1397 	 0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1398 	{
1399 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1400 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1401 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1402 	 0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1403 	{
1404 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1405 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1406 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1407 	 0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1408 	{
1409 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1410 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1411 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1412 	 0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1413 	{
1414 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1415 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1416 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1417 	 0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1418 	{
1419 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1420 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1421 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1422 	 0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1423 	{
1424 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1425 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1426 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1427 	 0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1428 	{
1429 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1430 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1431 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1432 	 0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1433 	{
1434 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1435 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1436 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1437 	 0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1438 	{
1439 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1440 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1441 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1442 	 0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1443 	{
1444 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1445 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1446 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1447 	 0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1448 	{
1449 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1450 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1451 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1452 	 0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1453 	{
1454 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1455 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1456 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1457 	 0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1458 	{
1459 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1460 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1461 	 0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1462 	 0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1463 	{
1464 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1465 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1466 	 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1467 	 0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1468 	{
1469 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1470 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1471 	 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1472 	 0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1473 	{
1474 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1475 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1476 	 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1477 	 0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1478 	{
1479 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1480 	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1481 	 0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1482 	 0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1483 	{
1484 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1485 	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1486 	 0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1487 	 0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1488 	{
1489 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1490 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1491 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1492 	 0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1493 	{
1494 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1495 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1496 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1497 	 0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1498 	{
1499 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1500 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1501 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1502 	 0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1503 	{
1504 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1505 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1506 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1507 	 0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1508 	{
1509 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1510 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1511 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1512 	 0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1513 	{
1514 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1515 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1516 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1517 	 0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1518 	{
1519 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1520 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1521 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1522 	 0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1523 	{
1524 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1525 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1526 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1527 	 0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1528 	{
1529 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1530 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1531 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1532 	 0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1533 	{
1534 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1535 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1536 	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1537 	 0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1538 	{
1539 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1540 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1541 	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1542 	 0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1543 	{
1544 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1545 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1546 	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1547 	 0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1548 	{
1549 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1550 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1551 	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1552 	 0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1553 	{
1554 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1555 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1556 	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1557 	 0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1558 };
1559 
1560 static const struct chan_info_nphy_radio205x chan_info_nphyrev4_2056_A1[] = {
1561 	{
1562 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1563 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1564 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1565 	 0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1566 	{
1567 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1568 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1569 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1570 	 0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1571 	{
1572 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1573 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1574 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1575 	 0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1576 	{
1577 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1578 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1579 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1580 	 0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1581 	{
1582 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1583 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1584 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1585 	 0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1586 	{
1587 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1588 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1589 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1590 	 0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1591 	{
1592 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1593 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1594 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1595 	 0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1596 	{
1597 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1598 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1599 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1600 	 0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1601 	{
1602 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1603 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1604 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1605 	 0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1606 	{
1607 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1608 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1609 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1610 	 0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1611 	{
1612 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1613 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1614 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1615 	 0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1616 	{
1617 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1618 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1619 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1620 	 0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1621 	{
1622 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1623 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1624 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1625 	 0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1626 	{
1627 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1628 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1629 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1630 	 0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1631 	{
1632 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1633 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1634 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1635 	 0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1636 	{
1637 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1638 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1639 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1640 	 0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1641 	{
1642 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1643 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1644 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1645 	 0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1646 	{
1647 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1648 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1649 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1650 	 0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1651 	{
1652 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1653 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1654 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1655 	 0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1656 	{
1657 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1658 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1659 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1660 	 0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1661 	{
1662 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1663 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1664 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1665 	 0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1666 	{
1667 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1668 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1669 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1670 	 0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1671 	{
1672 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1673 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1674 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1675 	 0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1676 	{
1677 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1678 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1679 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1680 	 0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1681 	{
1682 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1683 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1684 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1685 	 0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1686 	{
1687 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1688 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1689 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1690 	 0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1691 	{
1692 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1693 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1694 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1695 	 0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1696 	{
1697 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1698 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1699 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1700 	 0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1701 	{
1702 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1703 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1704 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1705 	 0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1706 	{
1707 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1708 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1709 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1710 	 0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1711 	{
1712 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1713 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1714 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1715 	 0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1716 	{
1717 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1718 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1719 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1720 	 0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1721 	{
1722 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1723 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1724 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1725 	 0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1726 	{
1727 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1728 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1729 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1730 	 0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1731 	{
1732 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1733 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1734 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1735 	 0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1736 	{
1737 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1738 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1739 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1740 	 0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1741 	{
1742 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1743 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1744 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1745 	 0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1746 	{
1747 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1748 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1749 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1750 	 0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1751 	{
1752 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1753 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1754 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1755 	 0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1756 	{
1757 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1758 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1759 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1760 	 0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1761 	{
1762 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1763 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1764 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1765 	 0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1766 	{
1767 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1768 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1769 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1770 	 0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1771 	{
1772 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1773 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1774 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1775 	 0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1776 	{
1777 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1778 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1779 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1780 	 0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1781 	{
1782 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1783 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1784 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1785 	 0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1786 	{
1787 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1788 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1789 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1790 	 0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1791 	{
1792 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1793 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1794 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1795 	 0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1796 	{
1797 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1798 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1799 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1800 	 0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1801 	{
1802 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1803 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1804 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1805 	 0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1806 	{
1807 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1808 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1809 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1810 	 0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1811 	{
1812 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1813 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1814 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1815 	 0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1816 	{
1817 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1818 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1819 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1820 	 0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1821 	{
1822 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1823 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1824 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1825 	 0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1826 	{
1827 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1828 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1829 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1830 	 0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1831 	{
1832 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1833 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1834 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1835 	 0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1836 	{
1837 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1838 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1839 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1840 	 0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1841 	{
1842 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1843 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1844 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1845 	 0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1846 	{
1847 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1848 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1849 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1850 	 0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1851 	{
1852 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1853 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1854 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1855 	 0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1856 	{
1857 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1858 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1859 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1860 	 0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1861 	{
1862 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1863 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1864 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1865 	 0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1866 	{
1867 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1868 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1869 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1870 	 0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1871 	{
1872 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1873 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1874 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1875 	 0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1876 	{
1877 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1878 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1879 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1880 	 0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1881 	{
1882 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1883 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1884 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1885 	 0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1886 	{
1887 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1888 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1889 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1890 	 0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1891 	{
1892 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1893 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1894 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1895 	 0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1896 	{
1897 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1898 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1899 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1900 	 0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1901 	{
1902 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1903 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1904 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1905 	 0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1906 	{
1907 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1908 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1909 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1910 	 0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1911 	{
1912 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1913 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1914 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1915 	 0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1916 	{
1917 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1918 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1919 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1920 	 0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1921 	{
1922 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1923 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1924 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1925 	 0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1926 	{
1927 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1928 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1929 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1930 	 0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1931 	{
1932 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1933 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1934 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1935 	 0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1936 	{
1937 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1938 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1939 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1940 	 0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1941 	{
1942 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1943 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1944 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1945 	 0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1946 	{
1947 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1948 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1949 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1950 	 0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1951 	{
1952 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1953 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1954 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1955 	 0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1956 	{
1957 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1958 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1959 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1960 	 0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1961 	{
1962 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1963 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1964 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1965 	 0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1966 	{
1967 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1968 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1969 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1970 	 0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1971 	{
1972 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1973 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1974 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1975 	 0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1976 	{
1977 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1978 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1979 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1980 	 0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1981 	{
1982 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1983 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1984 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1985 	 0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1986 	{
1987 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1988 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1989 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1990 	 0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1991 	{
1992 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1993 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1994 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1995 	 0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1996 	{
1997 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1998 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1999 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2000 	 0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2001 	{
2002 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2003 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2004 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2005 	 0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2006 	{
2007 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2008 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2009 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2010 	 0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2011 	{
2012 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2013 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2014 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2015 	 0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2016 	{
2017 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2018 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2019 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2020 	 0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2021 	{
2022 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2023 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2024 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2025 	 0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2026 	{
2027 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2028 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2029 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2030 	 0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2031 	{
2032 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2033 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2034 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2035 	 0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2036 	{
2037 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2038 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2039 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2040 	 0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2041 	{
2042 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2043 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2044 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2045 	 0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2046 	{
2047 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2048 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2049 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2050 	 0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2051 	{
2052 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2053 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2054 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2055 	 0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2056 	{
2057 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2058 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2059 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2060 	 0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2061 	{
2062 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2063 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2064 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2065 	 0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2066 	{
2067 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2068 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2069 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2070 	 0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2071 	{
2072 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2073 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2074 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2075 	 0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2076 	{
2077 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2078 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2079 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2080 	 0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2081 	{
2082 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2083 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2084 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2085 	 0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2086 	{
2087 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2088 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2089 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2090 	 0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2091 	{
2092 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2093 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2094 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2095 	 0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2096 	{
2097 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2098 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2099 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2100 	 0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2101 	{
2102 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2103 	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2104 	 0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2105 	 0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2106 	{
2107 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2108 	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2109 	 0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2110 	 0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2111 	{
2112 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2113 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2114 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2115 	 0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2116 	{
2117 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2118 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2119 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2120 	 0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2121 	{
2122 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2123 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2124 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2125 	 0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2126 	{
2127 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2128 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2129 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2130 	 0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2131 	{
2132 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2133 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2134 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2135 	 0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2136 	{
2137 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2138 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2139 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2140 	 0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2141 	{
2142 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2143 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2144 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2145 	 0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2146 	{
2147 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2148 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2149 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2150 	 0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2151 	{
2152 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2153 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2154 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2155 	 0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2156 	{
2157 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2158 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2159 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2160 	 0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2161 	{
2162 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2163 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2164 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2165 	 0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2166 	{
2167 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2168 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2169 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2170 	 0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2171 	{
2172 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2173 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2174 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2175 	 0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2176 	{
2177 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2178 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2179 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2180 	 0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2181 };
2182 
2183 static const struct chan_info_nphy_radio205x chan_info_nphyrev5_2056v5[] = {
2184 	{
2185 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2186 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2187 	 0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2188 	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2189 	{
2190 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2191 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2192 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2193 	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2194 	{
2195 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2196 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2197 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2198 	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2199 	{
2200 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2201 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2202 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2203 	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2204 	{
2205 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2206 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2207 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2208 	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2209 	{
2210 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2211 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2212 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2213 	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2214 	{
2215 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2216 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2217 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2218 	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2219 	{
2220 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2221 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2222 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2223 	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2224 	{
2225 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2226 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2227 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2228 	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2229 	{
2230 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2231 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2232 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2233 	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2234 	{
2235 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2236 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2237 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2238 	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2239 	{
2240 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2241 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2242 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2243 	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2244 	{
2245 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2246 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2247 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2248 	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2249 	{
2250 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2251 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2252 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2253 	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2254 	{
2255 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2256 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2257 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2258 	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2259 	{
2260 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2261 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2262 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2263 	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2264 	{
2265 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2266 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2267 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2268 	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2269 	{
2270 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2271 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2272 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2273 	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2274 	{
2275 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2276 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2277 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2278 	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2279 	{
2280 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2281 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2282 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2283 	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2284 	{
2285 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2286 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2287 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2288 	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2289 	{
2290 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2291 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2292 	 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2293 	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2294 	{
2295 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2296 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2297 	 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2298 	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2299 	{
2300 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2301 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2302 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2303 	 0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2304 	{
2305 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2306 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2307 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2308 	 0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2309 	{
2310 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2311 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2312 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2313 	 0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2314 	{
2315 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2316 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2317 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2318 	 0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2319 	{
2320 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2321 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2322 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2323 	 0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2324 	{
2325 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2326 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2327 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2328 	 0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2329 	{
2330 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2331 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2332 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2333 	 0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2334 	{
2335 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2336 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2337 	 0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2338 	 0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2339 	{
2340 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2341 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2342 	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2343 	 0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2344 	{
2345 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2346 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2347 	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2348 	 0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2349 	{
2350 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2351 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2352 	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2353 	 0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2354 	{
2355 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2356 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2357 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2358 	 0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2359 	{
2360 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2361 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2362 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2363 	 0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2364 	{
2365 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2366 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2367 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2368 	 0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2369 	{
2370 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2371 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2372 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2373 	 0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2374 	{
2375 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2376 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2377 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2378 	 0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2379 	{
2380 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2381 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2382 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2383 	 0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2384 	{
2385 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2386 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2387 	 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2388 	 0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2389 	{
2390 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2391 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2392 	 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2393 	 0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2394 	{
2395 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2396 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2397 	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2398 	 0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2399 	{
2400 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2401 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2402 	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2403 	 0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2404 	{
2405 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2406 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2407 	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2408 	 0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2409 	{
2410 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2411 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2412 	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2413 	 0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2414 	{
2415 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2416 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2417 	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2418 	 0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2419 	{
2420 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2421 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2422 	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2423 	 0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2424 	{
2425 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2426 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2427 	 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2428 	 0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2429 	{
2430 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2431 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2432 	 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2433 	 0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2434 	{
2435 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2436 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2437 	 0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2438 	 0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2439 	{
2440 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2441 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2442 	 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2443 	 0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2444 	{
2445 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2446 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2447 	 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2448 	 0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2449 	{
2450 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2451 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2452 	 0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2453 	 0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2454 	{
2455 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2456 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2457 	 0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2458 	 0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2459 	{
2460 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2461 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2462 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2463 	 0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2464 	{
2465 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2466 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2467 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2468 	 0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2469 	{
2470 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2471 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2472 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2473 	 0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2474 	{
2475 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2476 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2477 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2478 	 0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2479 	{
2480 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2481 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2482 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2483 	 0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2484 	{
2485 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2486 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2487 	 0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2488 	 0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2489 	{
2490 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2491 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2492 	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2493 	 0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2494 	{
2495 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2496 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2497 	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2498 	 0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2499 	{
2500 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2501 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2502 	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2503 	 0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2504 	{
2505 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2506 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2507 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2508 	 0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2509 	{
2510 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2511 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2512 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2513 	 0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2514 	{
2515 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2516 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2517 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2518 	 0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2519 	{
2520 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2521 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2522 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2523 	 0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2524 	{
2525 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2526 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2527 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2528 	 0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2529 	{
2530 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2531 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2532 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2533 	 0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2534 	{
2535 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2536 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2537 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2538 	 0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2539 	{
2540 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2541 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2542 	 0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2543 	 0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2544 	{
2545 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2546 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2547 	 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2548 	 0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2549 	{
2550 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2551 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2552 	 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2553 	 0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2554 	{
2555 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2556 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2557 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2558 	 0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2559 	{
2560 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2561 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2562 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2563 	 0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2564 	{
2565 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2566 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2567 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2568 	 0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2569 	{
2570 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2571 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2572 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2573 	 0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2574 	{
2575 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2576 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2577 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2578 	 0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2579 	{
2580 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2581 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2582 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2583 	 0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2584 	{
2585 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2586 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2587 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2588 	 0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2589 	{
2590 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2591 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2592 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2593 	 0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2594 	{
2595 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2596 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2597 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2598 	 0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2599 	{
2600 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2601 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2602 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2603 	 0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2604 	{
2605 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2606 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2607 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2608 	 0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2609 	{
2610 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2611 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2612 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2613 	 0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2614 	{
2615 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2616 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2617 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2618 	 0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2619 	{
2620 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2621 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2622 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2623 	 0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2624 	{
2625 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2626 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2627 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2628 	 0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2629 	{
2630 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2631 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2632 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2633 	 0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2634 	{
2635 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2636 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2637 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2638 	 0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2639 	{
2640 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2641 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2642 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2643 	 0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2644 	{
2645 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2646 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2647 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2648 	 0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2649 	{
2650 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2651 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2652 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2653 	 0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2654 	{
2655 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2656 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2657 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2658 	 0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2659 	{
2660 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2661 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2662 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2663 	 0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2664 	{
2665 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2666 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2667 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2668 	 0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2669 	{
2670 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2671 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2672 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2673 	 0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2674 	{
2675 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2676 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2677 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2678 	 0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2679 	{
2680 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2681 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2682 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2683 	 0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2684 	{
2685 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2686 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2687 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2688 	 0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2689 	{
2690 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2691 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2692 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2693 	 0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2694 	{
2695 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2696 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2697 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2698 	 0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2699 	{
2700 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2701 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2702 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2703 	 0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2704 	{
2705 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2706 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2707 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2708 	 0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2709 	{
2710 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2711 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2712 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2713 	 0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2714 	{
2715 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2716 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2717 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2718 	 0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2719 	{
2720 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2721 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2722 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2723 	 0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2724 	{
2725 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2726 	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2727 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2728 	 0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2729 	{
2730 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2731 	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2732 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2733 	 0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2734 	{
2735 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2736 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2737 	 0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2738 	 0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2739 	{
2740 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2741 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2742 	 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2743 	 0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2744 	{
2745 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2746 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2747 	 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2748 	 0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2749 	{
2750 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2751 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2752 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2753 	 0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2754 	{
2755 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2756 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2757 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2758 	 0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2759 	{
2760 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2761 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2762 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2763 	 0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2764 	{
2765 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2766 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2767 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2768 	 0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2769 	{
2770 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2771 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2772 	 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2773 	 0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2774 	{
2775 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2776 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2777 	 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2778 	 0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2779 	{
2780 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2781 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2782 	 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2783 	 0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2784 	{
2785 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2786 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2787 	 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2788 	 0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2789 	{
2790 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2791 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2792 	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2793 	 0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2794 	{
2795 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2796 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2797 	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2798 	 0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2799 	{
2800 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2801 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2802 	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2803 	 0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2804 };
2805 
2806 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v6[] = {
2807 	{
2808 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2809 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2810 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2811 	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2812 	{
2813 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2814 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2815 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2816 	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2817 	{
2818 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2819 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2820 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2821 	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2822 	{
2823 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2824 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2825 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2826 	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2827 	{
2828 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2829 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2830 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2831 	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2832 	{
2833 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2834 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2835 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2836 	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2837 	{
2838 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2839 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2840 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2841 	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2842 	{
2843 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2844 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2845 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2846 	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2847 	{
2848 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2849 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2850 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2851 	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2852 	{
2853 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2854 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2855 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2856 	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2857 	{
2858 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2859 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2860 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2861 	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2862 	{
2863 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2864 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2865 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2866 	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2867 	{
2868 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2869 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2870 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2871 	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2872 	{
2873 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2874 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2875 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2876 	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2877 	{
2878 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2879 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2880 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2881 	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2882 	{
2883 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2884 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2885 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2886 	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2887 	{
2888 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2889 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2890 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2891 	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2892 	{
2893 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2894 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2895 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2896 	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2897 	{
2898 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2899 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2900 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2901 	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2902 	{
2903 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2904 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2905 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2906 	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2907 	{
2908 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2909 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2910 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2911 	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2912 	{
2913 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2914 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2915 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2916 	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2917 	{
2918 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2919 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2920 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2921 	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2922 	{
2923 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2924 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2925 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2926 	 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2927 	{
2928 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2929 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2930 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2931 	 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2932 	{
2933 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2934 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2935 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2936 	 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2937 	{
2938 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2939 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2940 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2941 	 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2942 	{
2943 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2944 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2945 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2946 	 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2947 	{
2948 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2949 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2950 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2951 	 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2952 	{
2953 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2954 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2955 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2956 	 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2957 	{
2958 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2959 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2960 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2961 	 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2962 	{
2963 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2964 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2965 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2966 	 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2967 	{
2968 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2969 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2970 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2971 	 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2972 	{
2973 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2974 	 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2975 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2976 	 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2977 	{
2978 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2979 	 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2980 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2981 	 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2982 	{
2983 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2984 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2985 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2986 	 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2987 	{
2988 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2989 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2990 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2991 	 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2992 	{
2993 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2994 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2995 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2996 	 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2997 	{
2998 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2999 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3000 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3001 	 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3002 	{
3003 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3004 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
3005 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3006 	 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3007 	{
3008 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3009 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
3010 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3011 	 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3012 	{
3013 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3014 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3015 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3016 	 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3017 	{
3018 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3019 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3020 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3021 	 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3022 	{
3023 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3024 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3025 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3026 	 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3027 	{
3028 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3029 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3030 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3031 	 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3032 	{
3033 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3034 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3035 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3036 	 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3037 	{
3038 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3039 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3040 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3041 	 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3042 	{
3043 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3044 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3045 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3046 	 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3047 	{
3048 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3049 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3050 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3051 	 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3052 	{
3053 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3054 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3055 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3056 	 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3057 	{
3058 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3059 	 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3060 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3061 	 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3062 	{
3063 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3064 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3065 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3066 	 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3067 	{
3068 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3069 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3070 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3071 	 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3072 	{
3073 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3074 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3075 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3076 	 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3077 	{
3078 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3079 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3080 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3081 	 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3082 	{
3083 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3084 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3085 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3086 	 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3087 	{
3088 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3089 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3090 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3091 	 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3092 	{
3093 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3094 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3095 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3096 	 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3097 	{
3098 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3099 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3100 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3101 	 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3102 	{
3103 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3104 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3105 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3106 	 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3107 	{
3108 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3109 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3110 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3111 	 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3112 	{
3113 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3114 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3115 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3116 	 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3117 	{
3118 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3119 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3120 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3121 	 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3122 	{
3123 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3124 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3125 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3126 	 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3127 	{
3128 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3129 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3130 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3131 	 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3132 	{
3133 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3134 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3135 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3136 	 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3137 	{
3138 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3139 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3140 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3141 	 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3142 	{
3143 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3144 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3145 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3146 	 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3147 	{
3148 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3149 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3150 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3151 	 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3152 	{
3153 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3154 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3155 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3156 	 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3157 	{
3158 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3159 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3160 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3161 	 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3162 	{
3163 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3164 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3165 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3166 	 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3167 	{
3168 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3169 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3170 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3171 	 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3172 	{
3173 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3174 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3175 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3176 	 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3177 	{
3178 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3179 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3180 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3181 	 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3182 	{
3183 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3184 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3185 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3186 	 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3187 	{
3188 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3189 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3190 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3191 	 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3192 	{
3193 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3194 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3195 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3196 	 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3197 	{
3198 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3199 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3200 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3201 	 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3202 	{
3203 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3204 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3205 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3206 	 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3207 	{
3208 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3209 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3210 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3211 	 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3212 	{
3213 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3214 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3215 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3216 	 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3217 	{
3218 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3219 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3220 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3221 	 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3222 	{
3223 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3224 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3225 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3226 	 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3227 	{
3228 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3229 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3230 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3231 	 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3232 	{
3233 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3234 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3235 	 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3236 	 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3237 	{
3238 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3239 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3240 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3241 	 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3242 	{
3243 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3244 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3245 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3246 	 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3247 	{
3248 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3249 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3250 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3251 	 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3252 	{
3253 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3254 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3255 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3256 	 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3257 	{
3258 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3259 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3260 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3261 	 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3262 	{
3263 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3264 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3265 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3266 	 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3267 	{
3268 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3269 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3270 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3271 	 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3272 	{
3273 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3274 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3275 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3276 	 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3277 	{
3278 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3279 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3280 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3281 	 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3282 	{
3283 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3284 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3285 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3286 	 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3287 	{
3288 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3289 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3290 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3291 	 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3292 	{
3293 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3294 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3295 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3296 	 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3297 	{
3298 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3299 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3300 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3301 	 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3302 	{
3303 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3304 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3305 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3306 	 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3307 	{
3308 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3309 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3310 	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3311 	 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3312 	{
3313 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3314 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3315 	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3316 	 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3317 	{
3318 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3319 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3320 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3321 	 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3322 	{
3323 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3324 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3325 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3326 	 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3327 	{
3328 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3329 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3330 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3331 	 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3332 	{
3333 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3334 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3335 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3336 	 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3337 	{
3338 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3339 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3340 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3341 	 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3342 	{
3343 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3344 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3345 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3346 	 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3347 	{
3348 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3349 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3350 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3351 	 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3352 	{
3353 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3354 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3355 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3356 	 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3357 	{
3358 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3359 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3360 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3361 	 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3362 	{
3363 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3364 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3365 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3366 	 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3367 	{
3368 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3369 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3370 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3371 	 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3372 	{
3373 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3374 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3375 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3376 	 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3377 	{
3378 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3379 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3380 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3381 	 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3382 	{
3383 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3384 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3385 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3386 	 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3387 	{
3388 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3389 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3390 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3391 	 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3392 	{
3393 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3394 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3395 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3396 	 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3397 	{
3398 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3399 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3400 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3401 	 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3402 	{
3403 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3404 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3405 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3406 	 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3407 	{
3408 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3409 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3410 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3411 	 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3412 	{
3413 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3414 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3415 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3416 	 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3417 	{
3418 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3419 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3420 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3421 	 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3422 	{
3423 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3424 	 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3425 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3426 	 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3427 };
3428 
3429 static const struct chan_info_nphy_radio205x chan_info_nphyrev5n6_2056v7[] = {
3430 	{
3431 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3432 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3433 	 0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3434 	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3435 	{
3436 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3437 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3438 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3439 	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3440 	{
3441 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3442 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3443 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3444 	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3445 	{
3446 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3447 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3448 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3449 	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3450 	{
3451 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3452 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3453 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3454 	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3455 	{
3456 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3457 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3458 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3459 	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3460 	{
3461 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3462 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3463 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3464 	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3465 	{
3466 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3467 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3468 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3469 	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3470 	{
3471 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3472 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3473 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3474 	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3475 	{
3476 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3477 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3478 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3479 	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3480 	{
3481 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3482 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3483 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3484 	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3485 	{
3486 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3487 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3488 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3489 	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3490 	{
3491 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3492 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3493 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3494 	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3495 	{
3496 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3497 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3498 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3499 	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3500 	{
3501 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3502 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3503 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3504 	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3505 	{
3506 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3507 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3508 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3509 	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3510 	{
3511 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3512 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3513 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3514 	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3515 	{
3516 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3517 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3518 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3519 	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3520 	{
3521 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3522 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3523 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3524 	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3525 	{
3526 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3527 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3528 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3529 	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3530 	{
3531 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3532 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3533 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3534 	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3535 	{
3536 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3537 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3538 	 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3539 	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3540 	{
3541 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3542 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3543 	 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3544 	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3545 	{
3546 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3547 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3548 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3549 	 0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3550 	{
3551 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3552 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3553 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3554 	 0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3555 	{
3556 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3557 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3558 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3559 	 0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3560 	{
3561 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3562 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3563 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3564 	 0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3565 	{
3566 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3567 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3568 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3569 	 0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3570 	{
3571 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3572 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3573 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3574 	 0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3575 	{
3576 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3577 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3578 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3579 	 0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3580 	{
3581 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3582 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3583 	 0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3584 	 0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3585 	{
3586 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3587 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3588 	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3589 	 0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3590 	{
3591 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3592 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3593 	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3594 	 0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3595 	{
3596 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3597 	 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3598 	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3599 	 0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3600 	{
3601 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3602 	 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3603 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3604 	 0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3605 	{
3606 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3607 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3608 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3609 	 0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3610 	{
3611 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3612 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3613 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3614 	 0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3615 	{
3616 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3617 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3618 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3619 	 0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3620 	{
3621 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3622 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3623 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3624 	 0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3625 	{
3626 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3627 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3628 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3629 	 0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3630 	{
3631 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3632 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3633 	 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3634 	 0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3635 	{
3636 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3637 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3638 	 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3639 	 0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3640 	{
3641 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3642 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3643 	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3644 	 0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3645 	{
3646 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3647 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3648 	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3649 	 0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3650 	{
3651 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3652 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3653 	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3654 	 0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3655 	{
3656 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3657 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3658 	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3659 	 0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3660 	{
3661 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3662 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3663 	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3664 	 0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3665 	{
3666 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3667 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3668 	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3669 	 0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3670 	{
3671 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3672 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3673 	 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3674 	 0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3675 	{
3676 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3677 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3678 	 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3679 	 0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3680 	{
3681 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3682 	 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3683 	 0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3684 	 0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3685 	{
3686 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3687 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3688 	 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3689 	 0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3690 	{
3691 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3692 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3693 	 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3694 	 0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3695 	{
3696 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3697 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3698 	 0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3699 	 0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3700 	{
3701 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3702 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3703 	 0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3704 	 0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3705 	{
3706 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3707 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3708 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3709 	 0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3710 	{
3711 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3712 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3713 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3714 	 0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3715 	{
3716 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3717 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3718 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3719 	 0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3720 	{
3721 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3722 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3723 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3724 	 0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3725 	{
3726 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3727 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3728 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3729 	 0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3730 	{
3731 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3732 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3733 	 0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3734 	 0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3735 	{
3736 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3737 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3738 	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3739 	 0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3740 	{
3741 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3742 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3743 	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3744 	 0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3745 	{
3746 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3747 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3748 	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3749 	 0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3750 	{
3751 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3752 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3753 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3754 	 0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3755 	{
3756 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3757 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3758 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3759 	 0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3760 	{
3761 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3762 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3763 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3764 	 0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3765 	{
3766 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3767 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3768 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3769 	 0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3770 	{
3771 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3772 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3773 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3774 	 0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3775 	{
3776 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3777 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3778 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3779 	 0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3780 	{
3781 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3782 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3783 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3784 	 0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3785 	{
3786 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3787 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3788 	 0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3789 	 0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3790 	{
3791 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3792 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3793 	 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3794 	 0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3795 	{
3796 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3797 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3798 	 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3799 	 0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3800 	{
3801 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3802 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3803 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3804 	 0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3805 	{
3806 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3807 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3808 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3809 	 0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3810 	{
3811 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3812 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3813 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3814 	 0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3815 	{
3816 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3817 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3818 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3819 	 0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3820 	{
3821 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3822 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3823 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3824 	 0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3825 	{
3826 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3827 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3828 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3829 	 0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3830 	{
3831 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3832 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3833 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3834 	 0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3835 	{
3836 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3837 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3838 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3839 	 0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3840 	{
3841 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3842 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3843 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3844 	 0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3845 	{
3846 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3847 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3848 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3849 	 0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3850 	{
3851 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3852 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3853 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3854 	 0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3855 	{
3856 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3857 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3858 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3859 	 0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3860 	{
3861 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3862 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3863 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3864 	 0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3865 	{
3866 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3867 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3868 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3869 	 0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3870 	{
3871 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3872 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3873 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3874 	 0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3875 	{
3876 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3877 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3878 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3879 	 0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3880 	{
3881 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3882 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3883 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3884 	 0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3885 	{
3886 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3887 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3888 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3889 	 0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3890 	{
3891 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3892 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3893 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3894 	 0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3895 	{
3896 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3897 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3898 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3899 	 0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3900 	{
3901 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3902 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3903 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3904 	 0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3905 	{
3906 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3907 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3908 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3909 	 0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3910 	{
3911 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3912 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3913 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3914 	 0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3915 	{
3916 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3917 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3918 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3919 	 0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3920 	{
3921 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3922 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3923 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3924 	 0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3925 	{
3926 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3927 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3928 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3929 	 0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3930 	{
3931 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3932 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3933 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3934 	 0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3935 	{
3936 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3937 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3938 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3939 	 0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3940 	{
3941 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3942 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3943 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3944 	 0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3945 	{
3946 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3947 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3948 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3949 	 0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3950 	{
3951 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3952 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3953 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3954 	 0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3955 	{
3956 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3957 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3958 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3959 	 0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3960 	{
3961 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3962 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3963 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3964 	 0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3965 	{
3966 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3967 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3968 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3969 	 0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3970 	{
3971 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3972 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3973 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3974 	 0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3975 	{
3976 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3977 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3978 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3979 	 0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3980 	{
3981 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3982 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3983 	 0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3984 	 0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3985 	{
3986 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3987 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3988 	 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3989 	 0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3990 	{
3991 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3992 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3993 	 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3994 	 0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3995 	{
3996 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3997 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3998 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3999 	 0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4000 	{
4001 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4002 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
4003 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4004 	 0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4005 	{
4006 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4007 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
4008 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4009 	 0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4010 	{
4011 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4012 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
4013 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
4014 	 0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4015 	{
4016 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4017 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
4018 	 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4019 	 0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4020 	{
4021 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4022 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4023 	 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4024 	 0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4025 	{
4026 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4027 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4028 	 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4029 	 0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4030 	{
4031 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4032 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4033 	 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4034 	 0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4035 	{
4036 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4037 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4038 	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4039 	 0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4040 	{
4041 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4042 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4043 	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4044 	 0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4045 	{
4046 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4047 	 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4048 	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4049 	 0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4050 };
4051 
4052 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v8[] = {
4053 	{
4054 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4055 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4056 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4057 	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4058 	{
4059 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4060 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4061 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4062 	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4063 	{
4064 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4065 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4066 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4067 	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4068 	{
4069 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4070 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4071 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4072 	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4073 	{
4074 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4075 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4076 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4077 	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4078 	{
4079 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4080 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4081 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4082 	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4083 	{
4084 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4085 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4086 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4087 	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4088 	{
4089 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4090 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4091 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4092 	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4093 	{
4094 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4095 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4096 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4097 	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4098 	{
4099 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4100 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4101 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4102 	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4103 	{
4104 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4105 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4106 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4107 	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4108 	{
4109 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4110 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4111 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4112 	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4113 	{
4114 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4115 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4116 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4117 	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4118 	{
4119 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4120 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4121 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4122 	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4123 	{
4124 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4125 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4126 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4127 	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4128 	{
4129 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4130 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4131 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4132 	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4133 	{
4134 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4135 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4136 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4137 	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4138 	{
4139 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4140 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4141 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4142 	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4143 	{
4144 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4145 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4146 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4147 	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4148 	{
4149 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4150 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4151 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4152 	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4153 	{
4154 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4155 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4156 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4157 	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4158 	{
4159 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4160 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4161 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4162 	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4163 	{
4164 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4165 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4166 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4167 	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4168 	{
4169 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4170 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4171 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4172 	 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4173 	{
4174 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4175 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4176 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4177 	 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4178 	{
4179 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4180 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4181 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4182 	 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4183 	{
4184 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4185 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4186 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4187 	 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4188 	{
4189 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4190 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4191 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4192 	 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4193 	{
4194 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4195 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4196 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4197 	 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4198 	{
4199 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4200 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4201 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4202 	 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4203 	{
4204 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4205 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4206 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4207 	 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4208 	{
4209 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4210 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4211 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4212 	 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4213 	{
4214 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4215 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4216 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4217 	 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4218 	{
4219 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4220 	 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4221 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4222 	 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4223 	{
4224 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4225 	 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4226 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4227 	 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4228 	{
4229 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4230 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4231 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4232 	 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4233 	{
4234 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4235 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4236 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4237 	 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4238 	{
4239 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4240 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4241 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4242 	 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4243 	{
4244 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4245 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4246 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4247 	 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4248 	{
4249 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4250 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4251 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4252 	 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4253 	{
4254 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4255 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4256 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4257 	 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4258 	{
4259 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4260 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4261 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4262 	 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4263 	{
4264 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4265 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4266 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4267 	 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4268 	{
4269 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4270 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4271 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4272 	 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4273 	{
4274 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4275 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4276 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4277 	 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4278 	{
4279 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4280 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4281 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4282 	 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4283 	{
4284 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4285 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4286 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4287 	 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4288 	{
4289 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4290 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4291 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4292 	 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4293 	{
4294 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4295 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4296 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4297 	 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4298 	{
4299 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4300 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4301 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4302 	 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4303 	{
4304 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4305 	 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4306 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4307 	 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4308 	{
4309 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4310 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4311 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4312 	 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4313 	{
4314 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4315 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4316 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4317 	 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4318 	{
4319 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4320 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4321 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4322 	 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4323 	{
4324 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4325 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4326 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4327 	 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4328 	{
4329 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4330 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4331 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4332 	 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4333 	{
4334 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4335 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4336 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4337 	 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4338 	{
4339 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4340 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4341 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4342 	 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4343 	{
4344 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4345 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4346 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4347 	 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4348 	{
4349 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4350 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4351 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4352 	 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4353 	{
4354 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4355 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4356 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4357 	 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4358 	{
4359 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4360 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4361 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4362 	 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4363 	{
4364 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4365 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4366 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4367 	 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4368 	{
4369 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4370 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4371 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4372 	 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4373 	{
4374 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4375 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4376 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4377 	 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4378 	{
4379 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4380 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4381 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4382 	 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4383 	{
4384 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4385 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4386 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4387 	 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4388 	{
4389 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4390 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4391 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4392 	 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4393 	{
4394 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4395 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4396 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4397 	 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4398 	{
4399 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4400 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4401 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4402 	 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4403 	{
4404 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4405 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4406 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4407 	 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4408 	{
4409 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4410 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4411 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4412 	 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4413 	{
4414 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4415 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4416 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4417 	 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4418 	{
4419 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4420 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4421 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4422 	 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4423 	{
4424 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4425 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4426 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4427 	 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4428 	{
4429 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4430 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4431 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4432 	 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4433 	{
4434 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4435 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4436 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4437 	 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4438 	{
4439 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4440 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4441 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4442 	 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4443 	{
4444 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4445 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4446 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4447 	 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4448 	{
4449 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4450 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4451 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4452 	 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4453 	{
4454 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4455 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4456 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4457 	 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4458 	{
4459 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4460 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4461 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4462 	 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4463 	{
4464 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4465 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4466 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4467 	 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4468 	{
4469 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4470 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4471 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4472 	 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4473 	{
4474 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4475 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4476 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4477 	 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4478 	{
4479 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4480 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4481 	 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4482 	 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4483 	{
4484 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4485 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4486 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4487 	 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4488 	{
4489 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4490 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4491 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4492 	 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4493 	{
4494 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4495 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4496 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4497 	 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4498 	{
4499 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4500 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4501 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4502 	 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4503 	{
4504 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4505 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4506 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4507 	 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4508 	{
4509 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4510 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4511 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4512 	 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4513 	{
4514 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4515 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4516 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4517 	 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4518 	{
4519 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4520 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4521 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4522 	 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4523 	{
4524 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4525 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4526 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4527 	 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4528 	{
4529 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4530 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4531 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4532 	 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4533 	{
4534 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4535 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4536 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4537 	 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4538 	{
4539 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4540 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4541 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4542 	 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4543 	{
4544 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4545 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4546 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4547 	 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4548 	{
4549 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4550 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4551 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4552 	 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4553 	{
4554 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4555 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4556 	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4557 	 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4558 	{
4559 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4560 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4561 	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4562 	 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4563 	{
4564 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4565 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4566 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4567 	 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4568 	{
4569 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4570 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4571 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4572 	 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4573 	{
4574 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4575 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4576 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4577 	 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4578 	{
4579 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4580 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4581 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4582 	 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4583 	{
4584 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4585 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4586 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4587 	 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4588 	{
4589 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4590 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4591 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4592 	 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4593 	{
4594 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4595 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4596 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4597 	 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4598 	{
4599 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4600 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4601 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4602 	 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4603 	{
4604 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4605 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4606 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4607 	 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4608 	{
4609 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4610 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4611 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4612 	 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4613 	{
4614 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4615 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4616 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4617 	 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4618 	{
4619 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4620 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4621 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4622 	 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4623 	{
4624 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4625 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4626 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4627 	 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4628 	{
4629 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4630 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4631 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4632 	 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4633 	{
4634 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4635 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4636 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4637 	 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4638 	{
4639 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4640 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4641 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4642 	 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4643 	{
4644 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4645 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4646 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4647 	 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4648 	{
4649 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4650 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4651 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4652 	 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4653 	{
4654 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4655 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4656 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4657 	 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4658 	{
4659 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4660 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4661 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4662 	 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4663 	{
4664 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4665 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4666 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4667 	 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4668 	{
4669 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4670 	 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4671 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4672 	 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4673 };
4674 
4675 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v11[] = {
4676 	{
4677 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4678 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4679 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4680 	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4681 	{
4682 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4683 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4684 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4685 	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4686 	{
4687 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4688 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4689 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4690 	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4691 	{
4692 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4693 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4694 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4695 	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4696 	{
4697 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4698 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4699 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4700 	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4701 	{
4702 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4703 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4704 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4705 	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4706 	{
4707 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4708 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4709 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4710 	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4711 	{
4712 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4713 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4714 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4715 	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4716 	{
4717 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4718 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4719 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4720 	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4721 	{
4722 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4723 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4724 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4725 	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4726 	{
4727 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4728 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4729 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4730 	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4731 	{
4732 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4733 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4734 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4735 	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4736 	{
4737 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4738 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4739 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4740 	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4741 	{
4742 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4743 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4744 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4745 	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4746 	{
4747 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4748 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4749 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4750 	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4751 	{
4752 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4753 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4754 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4755 	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4756 	{
4757 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4758 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4759 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4760 	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4761 	{
4762 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4763 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4764 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4765 	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4766 	{
4767 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4768 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4769 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4770 	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4771 	{
4772 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4773 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4774 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4775 	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4776 	{
4777 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4778 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4779 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4780 	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4781 	{
4782 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4783 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4784 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4785 	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4786 	{
4787 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4788 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4789 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4790 	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4791 	{
4792 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4793 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4794 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4795 	 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4796 	{
4797 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4798 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4799 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4800 	 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4801 	{
4802 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4803 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4804 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4805 	 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4806 	{
4807 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4808 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4809 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4810 	 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4811 	{
4812 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4813 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4814 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4815 	 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4816 	{
4817 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4818 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4819 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4820 	 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4821 	{
4822 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4823 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4824 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4825 	 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4826 	{
4827 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4828 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4829 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4830 	 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4831 	{
4832 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4833 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4834 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4835 	 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4836 	{
4837 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4838 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4839 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4840 	 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4841 	{
4842 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4843 	 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4844 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4845 	 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4846 	{
4847 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4848 	 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4849 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4850 	 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4851 	{
4852 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4853 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4854 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4855 	 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4856 	{
4857 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4858 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4859 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4860 	 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4861 	{
4862 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4863 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4864 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4865 	 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4866 	{
4867 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4868 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4869 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4870 	 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4871 	{
4872 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4873 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4874 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4875 	 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4876 	{
4877 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4878 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4879 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4880 	 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4881 	{
4882 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4883 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4884 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4885 	 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4886 	{
4887 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4888 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4889 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4890 	 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4891 	{
4892 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4893 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4894 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4895 	 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4896 	{
4897 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4898 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4899 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4900 	 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4901 	{
4902 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4903 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4904 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4905 	 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4906 	{
4907 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4908 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4909 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4910 	 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4911 	{
4912 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4913 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4914 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4915 	 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4916 	{
4917 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4918 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4919 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4920 	 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4921 	{
4922 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4923 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4924 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4925 	 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4926 	{
4927 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4928 	 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4929 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4930 	 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4931 	{
4932 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4933 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4934 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4935 	 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4936 	{
4937 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4938 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4939 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4940 	 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4941 	{
4942 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4943 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4944 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4945 	 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4946 	{
4947 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4948 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4949 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4950 	 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4951 	{
4952 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4953 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4954 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4955 	 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4956 	{
4957 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4958 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4959 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4960 	 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4961 	{
4962 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4963 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4964 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4965 	 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4966 	{
4967 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4968 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4969 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4970 	 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4971 	{
4972 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4973 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4974 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4975 	 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4976 	{
4977 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4978 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4979 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4980 	 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4981 	{
4982 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4983 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4984 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4985 	 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4986 	{
4987 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4988 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4989 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4990 	 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4991 	{
4992 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4993 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4994 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4995 	 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4996 	{
4997 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4998 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4999 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5000 	 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
5001 	{
5002 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5003 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
5004 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5005 	 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
5006 	{
5007 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5008 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
5009 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5010 	 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
5011 	{
5012 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
5013 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5014 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5015 	 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
5016 	{
5017 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
5018 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5019 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5020 	 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
5021 	{
5022 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5023 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5024 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5025 	 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5026 	{
5027 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5028 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5029 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5030 	 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5031 	{
5032 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5033 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5034 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5035 	 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5036 	{
5037 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5038 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5039 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5040 	 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5041 	{
5042 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5043 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5044 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5045 	 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5046 	{
5047 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5048 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5049 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5050 	 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5051 	{
5052 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5053 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5054 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5055 	 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5056 	{
5057 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5058 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5059 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5060 	 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5061 	{
5062 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5063 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5064 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5065 	 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5066 	{
5067 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5068 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5069 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5070 	 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5071 	{
5072 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5073 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5074 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5075 	 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5076 	{
5077 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5078 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5079 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5080 	 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5081 	{
5082 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5083 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5084 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5085 	 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5086 	{
5087 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5088 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5089 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5090 	 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5091 	{
5092 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5093 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5094 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5095 	 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5096 	{
5097 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5098 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5099 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5100 	 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5101 	{
5102 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5103 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5104 	 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5105 	 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5106 	{
5107 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5108 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5109 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5110 	 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5111 	{
5112 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5113 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5114 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5115 	 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5116 	{
5117 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5118 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5119 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5120 	 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5121 	{
5122 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5123 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5124 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5125 	 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5126 	{
5127 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5128 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5129 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5130 	 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5131 	{
5132 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5133 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5134 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5135 	 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5136 	{
5137 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5138 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5139 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5140 	 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5141 	{
5142 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5143 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5144 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5145 	 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5146 	{
5147 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5148 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5149 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5150 	 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5151 	{
5152 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5153 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5154 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5155 	 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5156 	{
5157 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5158 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5159 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5160 	 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5161 	{
5162 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5163 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5164 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5165 	 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5166 	{
5167 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5168 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5169 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5170 	 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5171 	{
5172 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5173 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5174 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5175 	 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5176 	{
5177 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5178 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5179 	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5180 	 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5181 	{
5182 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5183 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5184 	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5185 	 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5186 	{
5187 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5188 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5189 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5190 	 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5191 	{
5192 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5193 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5194 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5195 	 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5196 	{
5197 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5198 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5199 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5200 	 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5201 	{
5202 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5203 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5204 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5205 	 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5206 	{
5207 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5208 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5209 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5210 	 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5211 	{
5212 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5213 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5214 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5215 	 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5216 	{
5217 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5218 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5219 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5220 	 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5221 	{
5222 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5223 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5224 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5225 	 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5226 	{
5227 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5228 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5229 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5230 	 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5231 	{
5232 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5233 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5234 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5235 	 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5236 	{
5237 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5238 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5239 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5240 	 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5241 	{
5242 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5243 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5244 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5245 	 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5246 	{
5247 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5248 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5249 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5250 	 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5251 	{
5252 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5253 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5254 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5255 	 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5256 	{
5257 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5258 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5259 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5260 	 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5261 	{
5262 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5263 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5264 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5265 	 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5266 	{
5267 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5268 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5269 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5270 	 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5271 	{
5272 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5273 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5274 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5275 	 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5276 	{
5277 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5278 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5279 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5280 	 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5281 	{
5282 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5283 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5284 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5285 	 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5286 	{
5287 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5288 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5289 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5290 	 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5291 	{
5292 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5293 	 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5294 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5295 	 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5296 };
5297 
5298 static const struct chan_info_nphy_radio2057 chan_info_nphyrev7_2057_rev4[] = {
5299 	{
5300 	 184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5301 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5302 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5303 	 0x0215,
5304 	 0x0216,
5305 	 },
5306 	{
5307 	 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5308 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5309 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5310 	 0x0214,
5311 	 0x0215,
5312 	 },
5313 	{
5314 	 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5315 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5316 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5317 	 0x0213,
5318 	 0x0214,
5319 	 },
5320 	{
5321 	 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5322 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5323 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5324 	 0x0212,
5325 	 0x0213,
5326 	 },
5327 	{
5328 	 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5329 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5330 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5331 	 0x0211,
5332 	 0x0212,
5333 	 },
5334 	{
5335 	 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5336 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5337 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5338 	 0x020f,
5339 	 0x0211,
5340 	 },
5341 	{
5342 	 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5343 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5344 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5345 	 0x020e,
5346 	 0x020f,
5347 	 },
5348 	{
5349 	 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5350 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5351 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5352 	 0x020d,
5353 	 0x020e,
5354 	 },
5355 	{
5356 	 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5357 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5358 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5359 	 0x020c,
5360 	 0x020d,
5361 	 },
5362 	{
5363 	 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5364 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5365 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5366 	 0x020b,
5367 	 0x020c,
5368 	 },
5369 	{
5370 	 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5371 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5372 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5373 	 0x020a,
5374 	 0x020b,
5375 	 },
5376 	{
5377 	 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5378 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5379 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5380 	 0x0209,
5381 	 0x020a,
5382 	 },
5383 	{
5384 	 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5385 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5386 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5387 	 0x0208,
5388 	 0x0209,
5389 	 },
5390 	{
5391 	 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5392 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5393 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5394 	 0x0207,
5395 	 0x0208,
5396 	 },
5397 	{
5398 	 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5399 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5400 	 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5401 	 0x0206,
5402 	 0x0207,
5403 	 },
5404 	{
5405 	 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5406 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5407 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5408 	 0x0205,
5409 	 0x0206,
5410 	 },
5411 	{
5412 	 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5413 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5414 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5415 	 0x0204,
5416 	 0x0205,
5417 	 },
5418 	{
5419 	 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5420 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5421 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5422 	 0x0203,
5423 	 0x0204,
5424 	 },
5425 	{
5426 	 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5427 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5428 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5429 	 0x0202,
5430 	 0x0203,
5431 	 },
5432 	{
5433 	 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5434 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5435 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5436 	 0x0201,
5437 	 0x0202,
5438 	 },
5439 	{
5440 	 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5441 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5442 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5443 	 0x0200,
5444 	 0x0201,
5445 	 },
5446 	{
5447 	 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5448 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5449 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5450 	 0x01ff,
5451 	 0x0200,
5452 	 },
5453 	{
5454 	 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5455 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5456 	 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5457 	 0x01fe,
5458 	 0x01ff,
5459 	 },
5460 	{
5461 	 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5462 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5463 	 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5464 	 0x01fc,
5465 	 0x01fd,
5466 	 },
5467 	{
5468 	 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5469 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5470 	 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5471 	 0x01fb,
5472 	 0x01fc,
5473 	 },
5474 	{
5475 	 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5476 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5477 	 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5478 	 0x01fa,
5479 	 0x01fb,
5480 	 },
5481 	{
5482 	 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5483 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5484 	 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5485 	 0x01f9,
5486 	 0x01fa,
5487 	 },
5488 	{
5489 	 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5490 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5491 	 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5492 	 0x01f8,
5493 	 0x01f9,
5494 	 },
5495 	{
5496 	 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5497 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5498 	 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5499 	 0x01f7,
5500 	 0x01f8,
5501 	 },
5502 	{
5503 	 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5504 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5505 	 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5506 	 0x01f6,
5507 	 0x01f7,
5508 	 },
5509 	{
5510 	 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5511 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5512 	 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5513 	 0x01f5,
5514 	 0x01f6,
5515 	 },
5516 	{
5517 	 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5518 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5519 	 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5520 	 0x01f4,
5521 	 0x01f5,
5522 	 },
5523 	{
5524 	 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5525 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5526 	 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5527 	 0x01f3,
5528 	 0x01f4,
5529 	 },
5530 	{
5531 	 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5532 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5533 	 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5534 	 0x01f2,
5535 	 0x01f3,
5536 	 },
5537 	{
5538 	 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5539 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5540 	 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5541 	 0x01f1,
5542 	 0x01f2,
5543 	 },
5544 	{
5545 	 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5546 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5547 	 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5548 	 0x01f0,
5549 	 0x01f1,
5550 	 },
5551 	{
5552 	 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5553 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5554 	 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5555 	 0x01f0,
5556 	 0x01f0,
5557 	 },
5558 	{
5559 	 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5560 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5561 	 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5562 	 0x01ef,
5563 	 0x01f0,
5564 	 },
5565 	{
5566 	 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5567 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5568 	 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5569 	 0x01ee,
5570 	 0x01ef,
5571 	 },
5572 	{
5573 	 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5574 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5575 	 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5576 	 0x01ed,
5577 	 0x01ee,
5578 	 },
5579 	{
5580 	 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5581 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5582 	 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5583 	 0x01ec,
5584 	 0x01ed,
5585 	 },
5586 	{
5587 	 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5588 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5589 	 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5590 	 0x01eb,
5591 	 0x01ec,
5592 	 },
5593 	{
5594 	 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5595 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5596 	 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5597 	 0x01ea,
5598 	 0x01eb,
5599 	 },
5600 	{
5601 	 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5602 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5603 	 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5604 	 0x01e9,
5605 	 0x01ea,
5606 	 },
5607 	{
5608 	 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5609 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5610 	 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5611 	 0x01e8,
5612 	 0x01e9,
5613 	 },
5614 	{
5615 	 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5616 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5617 	 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5618 	 0x01e7,
5619 	 0x01e8,
5620 	 },
5621 	{
5622 	 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5623 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5624 	 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5625 	 0x01e6,
5626 	 0x01e7,
5627 	 },
5628 	{
5629 	 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5630 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5631 	 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5632 	 0x01e5,
5633 	 0x01e6,
5634 	 },
5635 	{
5636 	 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5637 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5638 	 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5639 	 0x01e5,
5640 	 0x01e5,
5641 	 },
5642 	{
5643 	 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5644 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5645 	 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5646 	 0x01e4,
5647 	 0x01e5,
5648 	 },
5649 	{
5650 	 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5651 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5652 	 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5653 	 0x01e3,
5654 	 0x01e4,
5655 	 },
5656 	{
5657 	 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5658 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5659 	 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5660 	 0x01e2,
5661 	 0x01e3,
5662 	 },
5663 	{
5664 	 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5665 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5666 	 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5667 	 0x01e1,
5668 	 0x01e2,
5669 	 },
5670 	{
5671 	 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5672 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5673 	 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5674 	 0x01e0,
5675 	 0x01e1,
5676 	 },
5677 	{
5678 	 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5679 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5680 	 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5681 	 0x01df,
5682 	 0x01e0,
5683 	 },
5684 	{
5685 	 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5686 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5687 	 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5688 	 0x01de,
5689 	 0x01df,
5690 	 },
5691 	{
5692 	 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5693 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5694 	 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5695 	 0x01dd,
5696 	 0x01de,
5697 	 },
5698 	{
5699 	 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5700 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5701 	 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5702 	 0x01dd,
5703 	 0x01dd,
5704 	 },
5705 	{
5706 	 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5707 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5708 	 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5709 	 0x01dc,
5710 	 0x01dd,
5711 	 },
5712 	{
5713 	 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5714 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5715 	 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5716 	 0x01db,
5717 	 0x01dc,
5718 	 },
5719 	{
5720 	 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5721 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5722 	 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5723 	 0x01da,
5724 	 0x01db,
5725 	 },
5726 	{
5727 	 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5728 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5729 	 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5730 	 0x01d9,
5731 	 0x01da,
5732 	 },
5733 	{
5734 	 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5735 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5736 	 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5737 	 0x01d8,
5738 	 0x01d9,
5739 	 },
5740 	{
5741 	 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5742 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5743 	 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5744 	 0x01d7,
5745 	 0x01d8,
5746 	 },
5747 	{
5748 	 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5749 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5750 	 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5751 	 0x01d7,
5752 	 0x01d7,
5753 	 },
5754 	{
5755 	 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5756 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5757 	 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5758 	 0x01d6,
5759 	 0x01d7,
5760 	 },
5761 	{
5762 	 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5763 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5764 	 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5765 	 0x01d5,
5766 	 0x01d6,
5767 	 },
5768 	{
5769 	 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5770 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5771 	 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5772 	 0x01d4,
5773 	 0x01d5,
5774 	 },
5775 	{
5776 	 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5777 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5778 	 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5779 	 0x01d3,
5780 	 0x01d4,
5781 	 },
5782 	{
5783 	 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5784 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5785 	 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5786 	 0x01d2,
5787 	 0x01d3,
5788 	 },
5789 	{
5790 	 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5791 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5792 	 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5793 	 0x01d2,
5794 	 0x01d2,
5795 	 },
5796 	{
5797 	 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5798 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5799 	 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5800 	 0x01d1,
5801 	 0x01d2,
5802 	 },
5803 	{
5804 	 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5805 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5806 	 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5807 	 0x01d0,
5808 	 0x01d1,
5809 	 },
5810 	{
5811 	 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5812 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5813 	 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5814 	 0x01cf,
5815 	 0x01d0,
5816 	 },
5817 	{
5818 	 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5819 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5820 	 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5821 	 0x01ce,
5822 	 0x01cf,
5823 	 },
5824 	{
5825 	 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5826 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5827 	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5828 	 0x01ce,
5829 	 0x01ce,
5830 	 },
5831 	{
5832 	 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5833 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5834 	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5835 	 0x01cd,
5836 	 0x01ce,
5837 	 },
5838 	{
5839 	 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5840 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5841 	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5842 	 0x01cc,
5843 	 0x01cd,
5844 	 },
5845 	{
5846 	 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5847 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5848 	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5849 	 0x01cb,
5850 	 0x01cc,
5851 	 },
5852 	{
5853 	 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5854 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5855 	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5856 	 0x01ca,
5857 	 0x01cb,
5858 	 },
5859 	{
5860 	 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5861 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5862 	 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5863 	 0x01ca,
5864 	 0x01cb,
5865 	 },
5866 	{
5867 	 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5868 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5869 	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5870 	 0x01c9,
5871 	 0x01ca,
5872 	 },
5873 	{
5874 	 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5875 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5876 	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5877 	 0x01c9,
5878 	 0x01ca,
5879 	 },
5880 	{
5881 	 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5882 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5883 	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5884 	 0x01c9,
5885 	 0x01c9,
5886 	 },
5887 	{
5888 	 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5889 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5890 	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5891 	 0x01c8,
5892 	 0x01c9,
5893 	 },
5894 	{
5895 	 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5896 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5897 	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5898 	 0x01c8,
5899 	 0x01c9,
5900 	 },
5901 	{
5902 	 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5903 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5904 	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5905 	 0x01c8,
5906 	 0x01c8,
5907 	 },
5908 	{
5909 	 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5910 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5911 	 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5912 	 0x01c7,
5913 	 0x01c8,
5914 	 },
5915 	{
5916 	 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5917 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5918 	 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5919 	 0x01c7,
5920 	 0x01c8,
5921 	 },
5922 	{
5923 	 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5924 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5925 	 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5926 	 0x01c6,
5927 	 0x01c7,
5928 	 },
5929 	{
5930 	 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5931 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5932 	 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5933 	 0x01c6,
5934 	 0x01c7,
5935 	 },
5936 	{
5937 	 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5938 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5939 	 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5940 	 0x01c6,
5941 	 0x01c6,
5942 	 },
5943 	{
5944 	 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5945 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5946 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5947 	 0x01c5,
5948 	 0x01c6,
5949 	 },
5950 	{
5951 	 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5952 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5953 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5954 	 0x01c5,
5955 	 0x01c6,
5956 	 },
5957 	{
5958 	 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5959 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5960 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5961 	 0x01c4,
5962 	 0x01c5,
5963 	 },
5964 	{
5965 	 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5966 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5967 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5968 	 0x01c4,
5969 	 0x01c5,
5970 	 },
5971 	{
5972 	 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5973 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5974 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5975 	 0x01c4,
5976 	 0x01c4,
5977 	 },
5978 	{
5979 	 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5980 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5981 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5982 	 0x01c3,
5983 	 0x01c4,
5984 	 },
5985 	{
5986 	 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5987 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5988 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
5989 	 0x01c3,
5990 	 0x01c4,
5991 	 },
5992 	{
5993 	 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
5994 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5995 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
5996 	 0x01c2,
5997 	 0x01c3,
5998 	 },
5999 	{
6000 	 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6001 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6002 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6003 	 0x01c2,
6004 	 0x01c3,
6005 	 },
6006 	{
6007 	 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6008 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6009 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6010 	 0x01c2,
6011 	 0x01c2,
6012 	 },
6013 	{
6014 	 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6015 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6016 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6017 	 0x01c1,
6018 	 0x01c2,
6019 	 },
6020 	{
6021 	 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6022 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6023 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6024 	 0x01c0,
6025 	 0x01c1,
6026 	 },
6027 	{
6028 	 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6029 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6030 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6031 	 0x01bf,
6032 	 0x01c0,
6033 	 },
6034 	{
6035 	 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6036 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6037 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6038 	 0x01bf,
6039 	 0x01bf,
6040 	 },
6041 	{
6042 	 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6043 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6044 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6045 	 0x01be,
6046 	 0x01bf,
6047 	 },
6048 	{
6049 	 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6050 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6051 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6052 	 0x01bd,
6053 	 0x01be,
6054 	 },
6055 	{
6056 	 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6057 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6058 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6059 	 0x01bc,
6060 	 0x01bd,
6061 	 },
6062 	{
6063 	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6064 	 0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6065 	 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6066 	 0x043f,
6067 	 0x0443,
6068 	 },
6069 	{
6070 	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6071 	 0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6072 	 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6073 	 0x043d,
6074 	 0x0441,
6075 	 },
6076 	{
6077 	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6078 	 0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6079 	 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6080 	 0x043a,
6081 	 0x043f,
6082 	 },
6083 	{
6084 	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6085 	 0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6086 	 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6087 	 0x0438,
6088 	 0x043d,
6089 	 },
6090 	{
6091 	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6092 	 0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6093 	 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6094 	 0x0436,
6095 	 0x043a,
6096 	 },
6097 	{
6098 	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6099 	 0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6100 	 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6101 	 0x0434,
6102 	 0x0438,
6103 	 },
6104 	{
6105 	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6106 	 0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6107 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6108 	 0x0431,
6109 	 0x0436,
6110 	 },
6111 	{
6112 	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6113 	 0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6114 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6115 	 0x042f,
6116 	 0x0434,
6117 	 },
6118 	{
6119 	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6120 	 0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6121 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6122 	 0x042d,
6123 	 0x0431,
6124 	 },
6125 	{
6126 	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6127 	 0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6128 	 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6129 	 0x042b,
6130 	 0x042f,
6131 	 },
6132 	{
6133 	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6134 	 0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6135 	 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6136 	 0x0429,
6137 	 0x042d,
6138 	 },
6139 	{
6140 	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6141 	 0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6142 	 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6143 	 0x0427,
6144 	 0x042b,
6145 	 },
6146 	{
6147 	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6148 	 0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6149 	 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6150 	 0x0424,
6151 	 0x0429,
6152 	 },
6153 	{
6154 	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6155 	 0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6156 	 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6157 	 0x041f,
6158 	 0x0424}
6159 };
6160 
6161 static const struct chan_info_nphy_radio2057_rev5
6162 chan_info_nphyrev8_2057_rev5[] = {
6163 	{
6164 	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6165 	 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6166 	 0x043a, 0x043f, 0x0443},
6167 	{
6168 	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6169 	 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6170 	 0x0438, 0x043d, 0x0441},
6171 	{
6172 	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6173 	 0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6174 	 0x0436, 0x043a, 0x043f},
6175 	{
6176 	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6177 	 0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6178 	 0x0434, 0x0438, 0x043d},
6179 	{
6180 	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6181 	 0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6182 	 0x0431, 0x0436, 0x043a},
6183 	{
6184 	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6185 	 0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6186 	 0x042f, 0x0434, 0x0438},
6187 	{
6188 	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6189 	 0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6190 	 0x042d, 0x0431, 0x0436},
6191 	{
6192 	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6193 	 0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6194 	 0x042b, 0x042f, 0x0434},
6195 	{
6196 	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6197 	 0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6198 	 0x0429, 0x042d, 0x0431},
6199 	{
6200 	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6201 	 0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6202 	 0x0427, 0x042b, 0x042f},
6203 	{
6204 	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6205 	 0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6206 	 0x0424, 0x0429, 0x042d},
6207 	{
6208 	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6209 	 0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6210 	 0x0422, 0x0427, 0x042b},
6211 	{
6212 	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6213 	 0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6214 	 0x0420, 0x0424, 0x0429},
6215 	{
6216 	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6217 	 0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6218 	 0x041b, 0x041f, 0x0424}
6219 };
6220 
6221 static const struct chan_info_nphy_radio2057_rev5
6222 chan_info_nphyrev9_2057_rev5v1[] = {
6223 	{
6224 	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6225 	 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6226 	 0x043a, 0x043f, 0x0443},
6227 	{
6228 	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6229 	 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6230 	 0x0438, 0x043d, 0x0441},
6231 	{
6232 	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6233 	 0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6234 	 0x0436, 0x043a, 0x043f},
6235 	{
6236 	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6237 	 0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6238 	 0x0434, 0x0438, 0x043d},
6239 	{
6240 	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6241 	 0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6242 	 0x0431, 0x0436, 0x043a},
6243 	{
6244 	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6245 	 0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6246 	 0x042f, 0x0434, 0x0438},
6247 	{
6248 	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6249 	 0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6250 	 0x042d, 0x0431, 0x0436},
6251 	{
6252 	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6253 	 0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6254 	 0x042b, 0x042f, 0x0434},
6255 	{
6256 	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6257 	 0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6258 	 0x0429, 0x042d, 0x0431},
6259 	{
6260 	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6261 	 0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6262 	 0x0427, 0x042b, 0x042f},
6263 	{
6264 	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6265 	 0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6266 	 0x0424, 0x0429, 0x042d},
6267 	{
6268 	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6269 	 0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6270 	 0x0422, 0x0427, 0x042b},
6271 	{
6272 	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6273 	 0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6274 	 0x0420, 0x0424, 0x0429},
6275 	{
6276 	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6277 	 0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6278 	 0x041b, 0x041f, 0x0424}
6279 };
6280 
6281 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev7[] = {
6282 	{
6283 	 184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6284 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6285 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6286 	 0x0215,
6287 	 0x0216},
6288 	{
6289 	 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6290 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6291 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6292 	 0x0214,
6293 	 0x0215},
6294 	{
6295 	 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6296 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6297 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6298 	 0x0213,
6299 	 0x0214},
6300 	{
6301 	 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6302 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6303 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6304 	 0x0212,
6305 	 0x0213},
6306 	{
6307 	 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6308 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6309 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6310 	 0x0211,
6311 	 0x0212},
6312 	{
6313 	 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6314 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6315 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6316 	 0x020f,
6317 	 0x0211},
6318 	{
6319 	 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6320 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6321 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6322 	 0x020e,
6323 	 0x020f},
6324 	{
6325 	 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6326 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6327 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6328 	 0x020d,
6329 	 0x020e},
6330 	{
6331 	 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6332 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6333 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6334 	 0x020c,
6335 	 0x020d},
6336 	{
6337 	 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6338 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6339 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6340 	 0x020b,
6341 	 0x020c},
6342 	{
6343 	 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6344 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6345 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6346 	 0x020a,
6347 	 0x020b},
6348 	{
6349 	 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6350 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6351 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6352 	 0x0209,
6353 	 0x020a},
6354 	{
6355 	 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6356 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6357 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6358 	 0x0208,
6359 	 0x0209},
6360 	{
6361 	 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6362 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6363 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6364 	 0x0207,
6365 	 0x0208},
6366 	{
6367 	 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6368 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6369 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6370 	 0x0206,
6371 	 0x0207},
6372 	{
6373 	 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6374 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6375 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6376 	 0x0205,
6377 	 0x0206},
6378 	{
6379 	 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6380 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6381 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6382 	 0x0204,
6383 	 0x0205},
6384 	{
6385 	 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6386 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6387 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6388 	 0x0203,
6389 	 0x0204},
6390 	{
6391 	 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6392 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6393 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6394 	 0x0202,
6395 	 0x0203},
6396 	{
6397 	 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6398 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6399 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6400 	 0x0201,
6401 	 0x0202},
6402 	{
6403 	 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6404 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6405 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6406 	 0x0200,
6407 	 0x0201},
6408 	{
6409 	 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6410 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6411 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6412 	 0x01ff,
6413 	 0x0200},
6414 	{
6415 	 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6416 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6417 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6418 	 0x01fe,
6419 	 0x01ff},
6420 	{
6421 	 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6422 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6423 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6424 	 0x01fc,
6425 	 0x01fd},
6426 	{
6427 	 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6428 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6429 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6430 	 0x01fb,
6431 	 0x01fc},
6432 	{
6433 	 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6434 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6435 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6436 	 0x01fa,
6437 	 0x01fb},
6438 	{
6439 	 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6440 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6441 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6442 	 0x01f9,
6443 	 0x01fa},
6444 	{
6445 	 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6446 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6447 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6448 	 0x01f8,
6449 	 0x01f9},
6450 	{
6451 	 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6452 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6453 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6454 	 0x01f7,
6455 	 0x01f8},
6456 	{
6457 	 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6458 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6459 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6460 	 0x01f6,
6461 	 0x01f7},
6462 	{
6463 	 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6464 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6465 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6466 	 0x01f5,
6467 	 0x01f6},
6468 	{
6469 	 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6470 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6471 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6472 	 0x01f4,
6473 	 0x01f5},
6474 	{
6475 	 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6476 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6477 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6478 	 0x01f3,
6479 	 0x01f4},
6480 	{
6481 	 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6482 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6483 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6484 	 0x01f2,
6485 	 0x01f3},
6486 	{
6487 	 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6488 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6489 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6490 	 0x01f1,
6491 	 0x01f2},
6492 	{
6493 	 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6494 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6495 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6496 	 0x01f0,
6497 	 0x01f1},
6498 	{
6499 	 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6500 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6501 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6502 	 0x01f0,
6503 	 0x01f0},
6504 	{
6505 	 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6506 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6507 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6508 	 0x01ef,
6509 	 0x01f0},
6510 	{
6511 	 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6512 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6513 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6514 	 0x01ee,
6515 	 0x01ef},
6516 	{
6517 	 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6518 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6519 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6520 	 0x01ed,
6521 	 0x01ee},
6522 	{
6523 	 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6524 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6525 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6526 	 0x01ec,
6527 	 0x01ed},
6528 	{
6529 	 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6530 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6531 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6532 	 0x01eb,
6533 	 0x01ec},
6534 	{
6535 	 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6536 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6537 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6538 	 0x01ea,
6539 	 0x01eb},
6540 	{
6541 	 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6542 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6543 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6544 	 0x01e9,
6545 	 0x01ea},
6546 	{
6547 	 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6548 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6549 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6550 	 0x01e8,
6551 	 0x01e9},
6552 	{
6553 	 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6554 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6555 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6556 	 0x01e7,
6557 	 0x01e8},
6558 	{
6559 	 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6560 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6561 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6562 	 0x01e6,
6563 	 0x01e7},
6564 	{
6565 	 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6566 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6567 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6568 	 0x01e5,
6569 	 0x01e6},
6570 	{
6571 	 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6572 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6573 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6574 	 0x01e5,
6575 	 0x01e5},
6576 	{
6577 	 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6578 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6579 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6580 	 0x01e4,
6581 	 0x01e5},
6582 	{
6583 	 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6584 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6585 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6586 	 0x01e3,
6587 	 0x01e4},
6588 	{
6589 	 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6590 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6591 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6592 	 0x01e2,
6593 	 0x01e3},
6594 	{
6595 	 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6596 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6597 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6598 	 0x01e1,
6599 	 0x01e2},
6600 	{
6601 	 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6602 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6603 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6604 	 0x01e0,
6605 	 0x01e1},
6606 	{
6607 	 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6608 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6609 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6610 	 0x01df,
6611 	 0x01e0},
6612 	{
6613 	 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6614 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6615 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6616 	 0x01de,
6617 	 0x01df},
6618 	{
6619 	 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6620 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6621 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6622 	 0x01dd,
6623 	 0x01de},
6624 	{
6625 	 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6626 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6627 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6628 	 0x01dd,
6629 	 0x01dd},
6630 	{
6631 	 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6632 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6633 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6634 	 0x01dc,
6635 	 0x01dd},
6636 	{
6637 	 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6638 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6639 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6640 	 0x01db,
6641 	 0x01dc},
6642 	{
6643 	 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6644 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6645 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6646 	 0x01da,
6647 	 0x01db},
6648 	{
6649 	 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6650 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6651 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6652 	 0x01d9,
6653 	 0x01da},
6654 	{
6655 	 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6656 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6657 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6658 	 0x01d8,
6659 	 0x01d9},
6660 	{
6661 	 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6662 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6663 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6664 	 0x01d7,
6665 	 0x01d8},
6666 	{
6667 	 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6668 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6669 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6670 	 0x01d7,
6671 	 0x01d7},
6672 	{
6673 	 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6674 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6675 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6676 	 0x01d6,
6677 	 0x01d7},
6678 	{
6679 	 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6680 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6681 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6682 	 0x01d5,
6683 	 0x01d6},
6684 	{
6685 	 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6686 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6687 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6688 	 0x01d4,
6689 	 0x01d5},
6690 	{
6691 	 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6692 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6693 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6694 	 0x01d3,
6695 	 0x01d4},
6696 	{
6697 	 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6698 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6699 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6700 	 0x01d2,
6701 	 0x01d3},
6702 	{
6703 	 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6704 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6705 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6706 	 0x01d2,
6707 	 0x01d2},
6708 	{
6709 	 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6710 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6711 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6712 	 0x01d1,
6713 	 0x01d2},
6714 	{
6715 	 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6716 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6717 	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6718 	 0x01d0,
6719 	 0x01d1},
6720 	{
6721 	 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6722 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6723 	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6724 	 0x01cf,
6725 	 0x01d0},
6726 	{
6727 	 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6728 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6729 	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6730 	 0x01ce,
6731 	 0x01cf},
6732 	{
6733 	 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6734 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6735 	 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6736 	 0x01ce,
6737 	 0x01ce},
6738 	{
6739 	 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6740 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6741 	 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6742 	 0x01cd,
6743 	 0x01ce},
6744 	{
6745 	 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6746 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6747 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6748 	 0x01cc,
6749 	 0x01cd},
6750 	{
6751 	 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6752 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6753 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6754 	 0x01cb,
6755 	 0x01cc},
6756 	{
6757 	 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6758 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6759 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6760 	 0x01ca,
6761 	 0x01cb},
6762 	{
6763 	 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6764 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6765 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6766 	 0x01ca,
6767 	 0x01cb},
6768 	{
6769 	 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6770 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6771 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6772 	 0x01c9,
6773 	 0x01ca},
6774 	{
6775 	 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6776 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6777 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6778 	 0x01c9,
6779 	 0x01ca},
6780 	{
6781 	 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6782 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6783 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6784 	 0x01c9,
6785 	 0x01c9},
6786 	{
6787 	 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6788 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6789 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6790 	 0x01c8,
6791 	 0x01c9},
6792 	{
6793 	 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6794 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6795 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6796 	 0x01c8,
6797 	 0x01c9},
6798 	{
6799 	 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6800 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6801 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6802 	 0x01c8,
6803 	 0x01c8},
6804 	{
6805 	 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6806 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6807 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6808 	 0x01c7,
6809 	 0x01c8},
6810 	{
6811 	 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6812 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6813 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6814 	 0x01c7,
6815 	 0x01c8},
6816 	{
6817 	 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6818 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6819 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6820 	 0x01c6,
6821 	 0x01c7},
6822 	{
6823 	 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6824 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6825 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6826 	 0x01c6,
6827 	 0x01c7},
6828 	{
6829 	 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6830 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6831 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6832 	 0x01c6,
6833 	 0x01c6},
6834 	{
6835 	 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6836 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6837 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6838 	 0x01c5,
6839 	 0x01c6},
6840 	{
6841 	 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6842 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6843 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6844 	 0x01c5,
6845 	 0x01c6},
6846 	{
6847 	 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6848 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6849 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6850 	 0x01c4,
6851 	 0x01c5},
6852 	{
6853 	 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6854 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6855 	 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6856 	 0x01c4,
6857 	 0x01c5},
6858 	{
6859 	 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6860 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6861 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6862 	 0x01c4,
6863 	 0x01c4},
6864 	{
6865 	 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6866 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6867 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6868 	 0x01c3,
6869 	 0x01c4},
6870 	{
6871 	 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6872 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6873 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6874 	 0x01c3,
6875 	 0x01c4},
6876 	{
6877 	 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6878 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6879 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6880 	 0x01c2,
6881 	 0x01c3},
6882 	{
6883 	 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6884 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6885 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6886 	 0x01c2,
6887 	 0x01c3},
6888 	{
6889 	 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6890 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6891 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6892 	 0x01c2,
6893 	 0x01c2},
6894 	{
6895 	 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6896 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6897 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6898 	 0x01c1,
6899 	 0x01c2},
6900 	{
6901 	 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6902 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6903 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6904 	 0x01c0,
6905 	 0x01c1},
6906 	{
6907 	 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6908 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6909 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6910 	 0x01bf,
6911 	 0x01c0},
6912 	{
6913 	 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6914 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6915 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6916 	 0x01bf,
6917 	 0x01bf},
6918 	{
6919 	 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6920 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6921 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6922 	 0x01be,
6923 	 0x01bf},
6924 	{
6925 	 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6926 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6927 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6928 	 0x01bd,
6929 	 0x01be},
6930 	{
6931 	 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6932 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6933 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6934 	 0x01bc,
6935 	 0x01bd},
6936 	{
6937 	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6938 	 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6939 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6940 	 0x043f,
6941 	 0x0443},
6942 	{
6943 	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6944 	 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6945 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6946 	 0x043d,
6947 	 0x0441},
6948 	{
6949 	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6950 	 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6951 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6952 	 0x043a,
6953 	 0x043f},
6954 	{
6955 	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6956 	 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6957 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6958 	 0x0438,
6959 	 0x043d},
6960 	{
6961 	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6962 	 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6963 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6964 	 0x0436,
6965 	 0x043a},
6966 	{
6967 	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6968 	 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6969 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6970 	 0x0434,
6971 	 0x0438},
6972 	{
6973 	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6974 	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6975 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6976 	 0x0431,
6977 	 0x0436},
6978 	{
6979 	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6980 	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6981 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6982 	 0x042f,
6983 	 0x0434},
6984 	{
6985 	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6986 	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6987 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6988 	 0x042d,
6989 	 0x0431},
6990 	{
6991 	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6992 	 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6993 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6994 	 0x042b,
6995 	 0x042f},
6996 	{
6997 	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6998 	 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6999 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7000 	 0x0429,
7001 	 0x042d},
7002 	{
7003 	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7004 	 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7005 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7006 	 0x0427,
7007 	 0x042b},
7008 	{
7009 	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7010 	 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7011 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7012 	 0x0424,
7013 	 0x0429},
7014 	{
7015 	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7016 	 0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7017 	 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7018 	 0x041f,
7019 	 0x0424}
7020 };
7021 
7022 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev8[] = {
7023 	{
7024 	 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7025 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7026 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7027 	 0x0214,
7028 	 0x0215},
7029 	{
7030 	 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7031 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7032 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7033 	 0x0213,
7034 	 0x0214},
7035 	{
7036 	 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7037 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7038 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7039 	 0x0212,
7040 	 0x0213},
7041 	{
7042 	 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7043 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7044 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7045 	 0x0211,
7046 	 0x0212},
7047 	{
7048 	 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7049 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7050 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7051 	 0x020f,
7052 	 0x0211},
7053 	{
7054 	 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7055 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7056 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7057 	 0x020e,
7058 	 0x020f},
7059 	{
7060 	 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7061 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7062 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7063 	 0x020d,
7064 	 0x020e},
7065 	{
7066 	 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7067 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7068 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7069 	 0x020c,
7070 	 0x020d},
7071 	{
7072 	 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7073 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7074 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7075 	 0x020b,
7076 	 0x020c},
7077 	{
7078 	 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7079 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7080 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7081 	 0x020a,
7082 	 0x020b},
7083 	{
7084 	 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7085 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7086 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7087 	 0x0209,
7088 	 0x020a},
7089 	{
7090 	 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7091 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7092 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7093 	 0x0208,
7094 	 0x0209},
7095 	{
7096 	 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7097 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7098 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7099 	 0x0207,
7100 	 0x0208},
7101 	{
7102 	 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7103 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7104 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7105 	 0x0206,
7106 	 0x0207},
7107 	{
7108 	 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7109 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7110 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7111 	 0x0205,
7112 	 0x0206},
7113 	{
7114 	 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7115 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7116 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7117 	 0x0204,
7118 	 0x0205},
7119 	{
7120 	 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7121 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7122 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7123 	 0x0203,
7124 	 0x0204},
7125 	{
7126 	 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7127 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7128 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7129 	 0x0202,
7130 	 0x0203},
7131 	{
7132 	 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7133 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7134 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7135 	 0x0201,
7136 	 0x0202},
7137 	{
7138 	 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7139 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7140 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7141 	 0x0200,
7142 	 0x0201},
7143 	{
7144 	 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7145 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7146 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7147 	 0x01ff,
7148 	 0x0200},
7149 	{
7150 	 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7151 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7152 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7153 	 0x01fe,
7154 	 0x01ff},
7155 	{
7156 	 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7157 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7158 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7159 	 0x01fc,
7160 	 0x01fd},
7161 	{
7162 	 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7163 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7164 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7165 	 0x01fb,
7166 	 0x01fc},
7167 	{
7168 	 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7169 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7170 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7171 	 0x01fa,
7172 	 0x01fb},
7173 	{
7174 	 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7175 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7176 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7177 	 0x01f9,
7178 	 0x01fa},
7179 	{
7180 	 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7181 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7182 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7183 	 0x01f8,
7184 	 0x01f9},
7185 	{
7186 	 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7187 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7188 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7189 	 0x01f7,
7190 	 0x01f8},
7191 	{
7192 	 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7193 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7194 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7195 	 0x01f6,
7196 	 0x01f7},
7197 	{
7198 	 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7199 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7200 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7201 	 0x01f5,
7202 	 0x01f6},
7203 	{
7204 	 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7205 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7206 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7207 	 0x01f4,
7208 	 0x01f5},
7209 	{
7210 	 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7211 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7212 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7213 	 0x01f3,
7214 	 0x01f4},
7215 	{
7216 	 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7217 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7218 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7219 	 0x01f2,
7220 	 0x01f3},
7221 	{
7222 	 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7223 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7224 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7225 	 0x01f1,
7226 	 0x01f2},
7227 	{
7228 	 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7229 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7230 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7231 	 0x01f0,
7232 	 0x01f1},
7233 	{
7234 	 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7235 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7236 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7237 	 0x01f0,
7238 	 0x01f0},
7239 	{
7240 	 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7241 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7242 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7243 	 0x01ef,
7244 	 0x01f0},
7245 	{
7246 	 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7247 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7248 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7249 	 0x01ee,
7250 	 0x01ef},
7251 	{
7252 	 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7253 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7254 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7255 	 0x01ed,
7256 	 0x01ee},
7257 	{
7258 	 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7259 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7260 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7261 	 0x01ec,
7262 	 0x01ed},
7263 	{
7264 	 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7265 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7266 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7267 	 0x01eb,
7268 	 0x01ec},
7269 	{
7270 	 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7271 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7272 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7273 	 0x01ea,
7274 	 0x01eb},
7275 	{
7276 	 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7277 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7278 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7279 	 0x01e9,
7280 	 0x01ea},
7281 	{
7282 	 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7283 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7284 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7285 	 0x01e8,
7286 	 0x01e9},
7287 	{
7288 	 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7289 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7290 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7291 	 0x01e7,
7292 	 0x01e8},
7293 	{
7294 	 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7295 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7296 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7297 	 0x01e6,
7298 	 0x01e7},
7299 	{
7300 	 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7301 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7302 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7303 	 0x01e5,
7304 	 0x01e6},
7305 	{
7306 	 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7307 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7308 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7309 	 0x01e5,
7310 	 0x01e5},
7311 	{
7312 	 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7313 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7314 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7315 	 0x01e4,
7316 	 0x01e5},
7317 	{
7318 	 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7319 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7320 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7321 	 0x01e3,
7322 	 0x01e4},
7323 	{
7324 	 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7325 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7326 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7327 	 0x01e2,
7328 	 0x01e3},
7329 	{
7330 	 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7331 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7332 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7333 	 0x01e1,
7334 	 0x01e2},
7335 	{
7336 	 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7337 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7338 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7339 	 0x01e0,
7340 	 0x01e1},
7341 	{
7342 	 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7343 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7344 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7345 	 0x01df,
7346 	 0x01e0},
7347 	{
7348 	 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7349 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7350 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7351 	 0x01de,
7352 	 0x01df},
7353 	{
7354 	 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7355 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7356 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7357 	 0x01dd,
7358 	 0x01de},
7359 	{
7360 	 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7361 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7362 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7363 	 0x01dd,
7364 	 0x01dd},
7365 	{
7366 	 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7367 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7368 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7369 	 0x01dc,
7370 	 0x01dd},
7371 	{
7372 	 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7373 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7374 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7375 	 0x01db,
7376 	 0x01dc},
7377 	{
7378 	 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7379 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7380 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7381 	 0x01da,
7382 	 0x01db},
7383 	{
7384 	 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7385 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7386 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7387 	 0x01d9,
7388 	 0x01da},
7389 	{
7390 	 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7391 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7392 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7393 	 0x01d8,
7394 	 0x01d9},
7395 	{
7396 	 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7397 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7398 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7399 	 0x01d7,
7400 	 0x01d8},
7401 	{
7402 	 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7403 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7404 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7405 	 0x01d7,
7406 	 0x01d7},
7407 	{
7408 	 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7409 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7410 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7411 	 0x01d6,
7412 	 0x01d7},
7413 	{
7414 	 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7415 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7416 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7417 	 0x01d5,
7418 	 0x01d6},
7419 	{
7420 	 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7421 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7422 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7423 	 0x01d4,
7424 	 0x01d5},
7425 	{
7426 	 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7427 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7428 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7429 	 0x01d3,
7430 	 0x01d4},
7431 	{
7432 	 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7433 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7434 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7435 	 0x01d2,
7436 	 0x01d3},
7437 	{
7438 	 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7439 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7440 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7441 	 0x01d2,
7442 	 0x01d2},
7443 	{
7444 	 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7445 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7446 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7447 	 0x01d1,
7448 	 0x01d2},
7449 	{
7450 	 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7451 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7452 	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7453 	 0x01d0,
7454 	 0x01d1},
7455 	{
7456 	 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7457 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7458 	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7459 	 0x01cf,
7460 	 0x01d0},
7461 	{
7462 	 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7463 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7464 	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7465 	 0x01ce,
7466 	 0x01cf},
7467 	{
7468 	 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7469 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7470 	 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7471 	 0x01ce,
7472 	 0x01ce},
7473 	{
7474 	 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7475 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7476 	 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7477 	 0x01cd,
7478 	 0x01ce},
7479 	{
7480 	 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7481 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7482 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7483 	 0x01cc,
7484 	 0x01cd},
7485 	{
7486 	 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7487 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7488 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7489 	 0x01cb,
7490 	 0x01cc},
7491 	{
7492 	 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7493 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7494 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7495 	 0x01ca,
7496 	 0x01cb},
7497 	{
7498 	 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7499 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7500 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7501 	 0x01ca,
7502 	 0x01cb},
7503 	{
7504 	 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7505 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7506 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7507 	 0x01c9,
7508 	 0x01ca},
7509 	{
7510 	 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7511 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7512 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7513 	 0x01c9,
7514 	 0x01ca},
7515 	{
7516 	 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7517 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7518 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7519 	 0x01c9,
7520 	 0x01c9},
7521 	{
7522 	 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7523 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7524 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7525 	 0x01c8,
7526 	 0x01c9},
7527 	{
7528 	 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7529 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7530 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7531 	 0x01c8,
7532 	 0x01c9},
7533 	{
7534 	 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7535 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7536 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7537 	 0x01c8,
7538 	 0x01c8},
7539 	{
7540 	 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7541 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7542 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7543 	 0x01c7,
7544 	 0x01c8},
7545 	{
7546 	 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7547 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7548 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7549 	 0x01c7,
7550 	 0x01c8},
7551 	{
7552 	 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7553 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7554 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7555 	 0x01c6,
7556 	 0x01c7},
7557 	{
7558 	 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7559 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7560 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7561 	 0x01c6,
7562 	 0x01c7},
7563 	{
7564 	 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7565 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7566 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7567 	 0x01c6,
7568 	 0x01c6},
7569 	{
7570 	 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7571 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7572 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7573 	 0x01c5,
7574 	 0x01c6},
7575 	{
7576 	 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7577 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7578 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7579 	 0x01c5,
7580 	 0x01c6},
7581 	{
7582 	 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7583 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7584 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7585 	 0x01c4,
7586 	 0x01c5},
7587 	{
7588 	 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7589 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7590 	 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7591 	 0x01c4,
7592 	 0x01c5},
7593 	{
7594 	 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7595 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7596 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7597 	 0x01c4,
7598 	 0x01c4},
7599 	{
7600 	 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7601 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7602 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7603 	 0x01c3,
7604 	 0x01c4},
7605 	{
7606 	 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7607 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7608 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7609 	 0x01c3,
7610 	 0x01c4},
7611 	{
7612 	 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7613 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7614 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7615 	 0x01c2,
7616 	 0x01c3},
7617 	{
7618 	 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7619 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7620 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7621 	 0x01c2,
7622 	 0x01c3},
7623 	{
7624 	 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7625 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7626 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7627 	 0x01c2,
7628 	 0x01c2},
7629 	{
7630 	 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7631 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7632 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7633 	 0x01c1,
7634 	 0x01c2},
7635 	{
7636 	 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7637 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7638 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7639 	 0x01c0,
7640 	 0x01c1},
7641 	{
7642 	 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7643 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7644 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7645 	 0x01bf,
7646 	 0x01c0},
7647 	{
7648 	 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7649 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7650 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7651 	 0x01bf,
7652 	 0x01bf},
7653 	{
7654 	 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7655 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7656 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7657 	 0x01be,
7658 	 0x01bf},
7659 	{
7660 	 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7661 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7662 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7663 	 0x01bd,
7664 	 0x01be},
7665 	{
7666 	 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7667 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7668 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7669 	 0x01bc,
7670 	 0x01bd},
7671 	{
7672 	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7673 	 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7674 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7675 	 0x043f,
7676 	 0x0443},
7677 	{
7678 	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7679 	 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7680 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7681 	 0x043d,
7682 	 0x0441},
7683 	{
7684 	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7685 	 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7686 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7687 	 0x043a,
7688 	 0x043f},
7689 	{
7690 	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7691 	 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7692 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7693 	 0x0438,
7694 	 0x043d},
7695 	{
7696 	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7697 	 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7698 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7699 	 0x0436,
7700 	 0x043a},
7701 	{
7702 	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7703 	 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7704 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7705 	 0x0434,
7706 	 0x0438},
7707 	{
7708 	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7709 	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7710 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7711 	 0x0431,
7712 	 0x0436},
7713 	{
7714 	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7715 	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7716 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7717 	 0x042f,
7718 	 0x0434},
7719 	{
7720 	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7721 	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7722 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7723 	 0x042d,
7724 	 0x0431},
7725 	{
7726 	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7727 	 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7728 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7729 	 0x042b,
7730 	 0x042f},
7731 	{
7732 	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7733 	 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7734 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7735 	 0x0429,
7736 	 0x042d},
7737 	{
7738 	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7739 	 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7740 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7741 	 0x0427,
7742 	 0x042b},
7743 	{
7744 	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7745 	 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7746 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7747 	 0x0424,
7748 	 0x0429},
7749 	{
7750 	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7751 	 0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7752 	 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7753 	 0x041f,
7754 	 0x0424}
7755 };
7756 
7757 static struct radio_regs regs_2055[] = {
7758 	{0x02, 0x80, 0x80, 0, 0},
7759 	{0x03, 0, 0, 0, 0},
7760 	{0x04, 0x27, 0x27, 0, 0},
7761 	{0x05, 0, 0, 0, 0},
7762 	{0x06, 0x27, 0x27, 0, 0},
7763 	{0x07, 0x7f, 0x7f, 1, 1},
7764 	{0x08, 0x7, 0x7, 1, 1},
7765 	{0x09, 0x7f, 0x7f, 1, 1},
7766 	{0x0A, 0x7, 0x7, 1, 1},
7767 	{0x0B, 0x15, 0x15, 0, 0},
7768 	{0x0C, 0x15, 0x15, 0, 0},
7769 	{0x0D, 0x4f, 0x4f, 1, 1},
7770 	{0x0E, 0x5, 0x5, 1, 1},
7771 	{0x0F, 0x4f, 0x4f, 1, 1},
7772 	{0x10, 0x5, 0x5, 1, 1},
7773 	{0x11, 0xd0, 0xd0, 0, 0},
7774 	{0x12, 0x2, 0x2, 0, 0},
7775 	{0x13, 0, 0, 0, 0},
7776 	{0x14, 0x40, 0x40, 0, 0},
7777 	{0x15, 0, 0, 0, 0},
7778 	{0x16, 0, 0, 0, 0},
7779 	{0x17, 0, 0, 0, 0},
7780 	{0x18, 0, 0, 0, 0},
7781 	{0x19, 0, 0, 0, 0},
7782 	{0x1A, 0, 0, 0, 0},
7783 	{0x1B, 0, 0, 0, 0},
7784 	{0x1C, 0, 0, 0, 0},
7785 	{0x1D, 0xc0, 0xc0, 0, 0},
7786 	{0x1E, 0xff, 0xff, 0, 0},
7787 	{0x1F, 0xc0, 0xc0, 0, 0},
7788 	{0x20, 0xff, 0xff, 0, 0},
7789 	{0x21, 0xc0, 0xc0, 0, 0},
7790 	{0x22, 0, 0, 0, 0},
7791 	{0x23, 0x2c, 0x2c, 0, 0},
7792 	{0x24, 0, 0, 0, 0},
7793 	{0x25, 0, 0, 0, 0},
7794 	{0x26, 0, 0, 0, 0},
7795 	{0x27, 0, 0, 0, 0},
7796 	{0x28, 0, 0, 0, 0},
7797 	{0x29, 0, 0, 0, 0},
7798 	{0x2A, 0, 0, 0, 0},
7799 	{0x2B, 0, 0, 0, 0},
7800 	{0x2C, 0, 0, 0, 0},
7801 	{0x2D, 0xa4, 0xa4, 0, 0},
7802 	{0x2E, 0x38, 0x38, 0, 0},
7803 	{0x2F, 0, 0, 0, 0},
7804 	{0x30, 0x4, 0x4, 1, 1},
7805 	{0x31, 0, 0, 0, 0},
7806 	{0x32, 0xa, 0xa, 0, 0},
7807 	{0x33, 0x87, 0x87, 0, 0},
7808 	{0x34, 0x9, 0x9, 0, 0},
7809 	{0x35, 0x70, 0x70, 0, 0},
7810 	{0x36, 0x11, 0x11, 0, 0},
7811 	{0x37, 0x18, 0x18, 1, 1},
7812 	{0x38, 0x6, 0x6, 0, 0},
7813 	{0x39, 0x4, 0x4, 1, 1},
7814 	{0x3A, 0x6, 0x6, 0, 0},
7815 	{0x3B, 0x9e, 0x9e, 0, 0},
7816 	{0x3C, 0x9, 0x9, 0, 0},
7817 	{0x3D, 0xc8, 0xc8, 1, 1},
7818 	{0x3E, 0x88, 0x88, 0, 0},
7819 	{0x3F, 0, 0, 0, 0},
7820 	{0x40, 0, 0, 0, 0},
7821 	{0x41, 0, 0, 0, 0},
7822 	{0x42, 0x1, 0x1, 0, 0},
7823 	{0x43, 0x2, 0x2, 0, 0},
7824 	{0x44, 0x96, 0x96, 0, 0},
7825 	{0x45, 0x3e, 0x3e, 0, 0},
7826 	{0x46, 0x3e, 0x3e, 0, 0},
7827 	{0x47, 0x13, 0x13, 0, 0},
7828 	{0x48, 0x2, 0x2, 0, 0},
7829 	{0x49, 0x15, 0x15, 0, 0},
7830 	{0x4A, 0x7, 0x7, 0, 0},
7831 	{0x4B, 0, 0, 0, 0},
7832 	{0x4C, 0, 0, 0, 0},
7833 	{0x4D, 0, 0, 0, 0},
7834 	{0x4E, 0, 0, 0, 0},
7835 	{0x4F, 0, 0, 0, 0},
7836 	{0x50, 0x8, 0x8, 0, 0},
7837 	{0x51, 0x8, 0x8, 0, 0},
7838 	{0x52, 0x6, 0x6, 0, 0},
7839 	{0x53, 0x84, 0x84, 1, 1},
7840 	{0x54, 0xc3, 0xc3, 0, 0},
7841 	{0x55, 0x8f, 0x8f, 0, 0},
7842 	{0x56, 0xff, 0xff, 0, 0},
7843 	{0x57, 0xff, 0xff, 0, 0},
7844 	{0x58, 0x88, 0x88, 0, 0},
7845 	{0x59, 0x88, 0x88, 0, 0},
7846 	{0x5A, 0, 0, 0, 0},
7847 	{0x5B, 0xcc, 0xcc, 0, 0},
7848 	{0x5C, 0x6, 0x6, 0, 0},
7849 	{0x5D, 0x80, 0x80, 0, 0},
7850 	{0x5E, 0x80, 0x80, 0, 0},
7851 	{0x5F, 0xf8, 0xf8, 0, 0},
7852 	{0x60, 0x88, 0x88, 0, 0},
7853 	{0x61, 0x88, 0x88, 0, 0},
7854 	{0x62, 0x88, 0x8, 1, 1},
7855 	{0x63, 0x88, 0x88, 0, 0},
7856 	{0x64, 0, 0, 0, 0},
7857 	{0x65, 0x1, 0x1, 1, 1},
7858 	{0x66, 0x8a, 0x8a, 0, 0},
7859 	{0x67, 0x8, 0x8, 0, 0},
7860 	{0x68, 0x83, 0x83, 0, 0},
7861 	{0x69, 0x6, 0x6, 0, 0},
7862 	{0x6A, 0xa0, 0xa0, 0, 0},
7863 	{0x6B, 0xa, 0xa, 0, 0},
7864 	{0x6C, 0x87, 0x87, 1, 1},
7865 	{0x6D, 0x2a, 0x2a, 0, 0},
7866 	{0x6E, 0x2a, 0x2a, 0, 0},
7867 	{0x6F, 0x2a, 0x2a, 0, 0},
7868 	{0x70, 0x2a, 0x2a, 0, 0},
7869 	{0x71, 0x18, 0x18, 0, 0},
7870 	{0x72, 0x6a, 0x6a, 1, 1},
7871 	{0x73, 0xab, 0xab, 1, 1},
7872 	{0x74, 0x13, 0x13, 1, 1},
7873 	{0x75, 0xc1, 0xc1, 1, 1},
7874 	{0x76, 0xaa, 0xaa, 1, 1},
7875 	{0x77, 0x87, 0x87, 1, 1},
7876 	{0x78, 0, 0, 0, 0},
7877 	{0x79, 0x6, 0x6, 0, 0},
7878 	{0x7A, 0x7, 0x7, 0, 0},
7879 	{0x7B, 0x7, 0x7, 0, 0},
7880 	{0x7C, 0x15, 0x15, 0, 0},
7881 	{0x7D, 0x55, 0x55, 0, 0},
7882 	{0x7E, 0x97, 0x97, 1, 1},
7883 	{0x7F, 0x8, 0x8, 0, 0},
7884 	{0x80, 0x14, 0x14, 1, 1},
7885 	{0x81, 0x33, 0x33, 0, 0},
7886 	{0x82, 0x88, 0x88, 0, 0},
7887 	{0x83, 0x6, 0x6, 0, 0},
7888 	{0x84, 0x3, 0x3, 1, 1},
7889 	{0x85, 0xa, 0xa, 0, 0},
7890 	{0x86, 0x3, 0x3, 1, 1},
7891 	{0x87, 0x2a, 0x2a, 0, 0},
7892 	{0x88, 0xa4, 0xa4, 0, 0},
7893 	{0x89, 0x18, 0x18, 0, 0},
7894 	{0x8A, 0x28, 0x28, 0, 0},
7895 	{0x8B, 0, 0, 0, 0},
7896 	{0x8C, 0x4a, 0x4a, 0, 0},
7897 	{0x8D, 0, 0, 0, 0},
7898 	{0x8E, 0xf8, 0xf8, 0, 0},
7899 	{0x8F, 0x88, 0x88, 0, 0},
7900 	{0x90, 0x88, 0x88, 0, 0},
7901 	{0x91, 0x88, 0x8, 1, 1},
7902 	{0x92, 0x88, 0x88, 0, 0},
7903 	{0x93, 0, 0, 0, 0},
7904 	{0x94, 0x1, 0x1, 1, 1},
7905 	{0x95, 0x8a, 0x8a, 0, 0},
7906 	{0x96, 0x8, 0x8, 0, 0},
7907 	{0x97, 0x83, 0x83, 0, 0},
7908 	{0x98, 0x6, 0x6, 0, 0},
7909 	{0x99, 0xa0, 0xa0, 0, 0},
7910 	{0x9A, 0xa, 0xa, 0, 0},
7911 	{0x9B, 0x87, 0x87, 1, 1},
7912 	{0x9C, 0x2a, 0x2a, 0, 0},
7913 	{0x9D, 0x2a, 0x2a, 0, 0},
7914 	{0x9E, 0x2a, 0x2a, 0, 0},
7915 	{0x9F, 0x2a, 0x2a, 0, 0},
7916 	{0xA0, 0x18, 0x18, 0, 0},
7917 	{0xA1, 0x6a, 0x6a, 1, 1},
7918 	{0xA2, 0xab, 0xab, 1, 1},
7919 	{0xA3, 0x13, 0x13, 1, 1},
7920 	{0xA4, 0xc1, 0xc1, 1, 1},
7921 	{0xA5, 0xaa, 0xaa, 1, 1},
7922 	{0xA6, 0x87, 0x87, 1, 1},
7923 	{0xA7, 0, 0, 0, 0},
7924 	{0xA8, 0x6, 0x6, 0, 0},
7925 	{0xA9, 0x7, 0x7, 0, 0},
7926 	{0xAA, 0x7, 0x7, 0, 0},
7927 	{0xAB, 0x15, 0x15, 0, 0},
7928 	{0xAC, 0x55, 0x55, 0, 0},
7929 	{0xAD, 0x97, 0x97, 1, 1},
7930 	{0xAE, 0x8, 0x8, 0, 0},
7931 	{0xAF, 0x14, 0x14, 1, 1},
7932 	{0xB0, 0x33, 0x33, 0, 0},
7933 	{0xB1, 0x88, 0x88, 0, 0},
7934 	{0xB2, 0x6, 0x6, 0, 0},
7935 	{0xB3, 0x3, 0x3, 1, 1},
7936 	{0xB4, 0xa, 0xa, 0, 0},
7937 	{0xB5, 0x3, 0x3, 1, 1},
7938 	{0xB6, 0x2a, 0x2a, 0, 0},
7939 	{0xB7, 0xa4, 0xa4, 0, 0},
7940 	{0xB8, 0x18, 0x18, 0, 0},
7941 	{0xB9, 0x28, 0x28, 0, 0},
7942 	{0xBA, 0, 0, 0, 0},
7943 	{0xBB, 0x4a, 0x4a, 0, 0},
7944 	{0xBC, 0, 0, 0, 0},
7945 	{0xBD, 0x71, 0x71, 0, 0},
7946 	{0xBE, 0x72, 0x72, 0, 0},
7947 	{0xBF, 0x73, 0x73, 0, 0},
7948 	{0xC0, 0x74, 0x74, 0, 0},
7949 	{0xC1, 0x75, 0x75, 0, 0},
7950 	{0xC2, 0x76, 0x76, 0, 0},
7951 	{0xC3, 0x77, 0x77, 0, 0},
7952 	{0xC4, 0x78, 0x78, 0, 0},
7953 	{0xC5, 0x79, 0x79, 0, 0},
7954 	{0xC6, 0x7a, 0x7a, 0, 0},
7955 	{0xC7, 0, 0, 0, 0},
7956 	{0xC8, 0, 0, 0, 0},
7957 	{0xC9, 0, 0, 0, 0},
7958 	{0xCA, 0, 0, 0, 0},
7959 	{0xCB, 0, 0, 0, 0},
7960 	{0xCC, 0, 0, 0, 0},
7961 	{0xCD, 0, 0, 0, 0},
7962 	{0xCE, 0x6, 0x6, 0, 0},
7963 	{0xCF, 0, 0, 0, 0},
7964 	{0xD0, 0, 0, 0, 0},
7965 	{0xD1, 0x18, 0x18, 0, 0},
7966 	{0xD2, 0x88, 0x88, 0, 0},
7967 	{0xD3, 0, 0, 0, 0},
7968 	{0xD4, 0, 0, 0, 0},
7969 	{0xD5, 0, 0, 0, 0},
7970 	{0xD6, 0, 0, 0, 0},
7971 	{0xD7, 0, 0, 0, 0},
7972 	{0xD8, 0, 0, 0, 0},
7973 	{0xD9, 0, 0, 0, 0},
7974 	{0xDA, 0x6, 0x6, 0, 0},
7975 	{0xDB, 0, 0, 0, 0},
7976 	{0xDC, 0, 0, 0, 0},
7977 	{0xDD, 0x18, 0x18, 0, 0},
7978 	{0xDE, 0x88, 0x88, 0, 0},
7979 	{0xDF, 0, 0, 0, 0},
7980 	{0xE0, 0, 0, 0, 0},
7981 	{0xE1, 0, 0, 0, 0},
7982 	{0xE2, 0, 0, 0, 0},
7983 	{0xFFFF, 0, 0, 0, 0},
7984 };
7985 
7986 static struct radio_regs regs_SYN_2056[] = {
7987 	{0x02, 0, 0, 0, 0},
7988 	{0x03, 0, 0, 0, 0},
7989 	{0x04, 0, 0, 0, 0},
7990 	{0x05, 0, 0, 0, 0},
7991 	{0x06, 0, 0, 0, 0},
7992 	{0x07, 0, 0, 0, 0},
7993 	{0x08, 0, 0, 0, 0},
7994 	{0x09, 0x1, 0x1, 0, 0},
7995 	{0x0A, 0, 0, 0, 0},
7996 	{0x0B, 0, 0, 0, 0},
7997 	{0x0C, 0, 0, 0, 0},
7998 	{0x0D, 0, 0, 0, 0},
7999 	{0x0E, 0, 0, 0, 0},
8000 	{0x0F, 0, 0, 0, 0},
8001 	{0x10, 0, 0, 0, 0},
8002 	{0x11, 0, 0, 0, 0},
8003 	{0x12, 0, 0, 0, 0},
8004 	{0x13, 0, 0, 0, 0},
8005 	{0x14, 0, 0, 0, 0},
8006 	{0x15, 0, 0, 0, 0},
8007 	{0x16, 0, 0, 0, 0},
8008 	{0x17, 0, 0, 0, 0},
8009 	{0x18, 0, 0, 0, 0},
8010 	{0x19, 0, 0, 0, 0},
8011 	{0x1A, 0, 0, 0, 0},
8012 	{0x1B, 0, 0, 0, 0},
8013 	{0x1C, 0, 0, 0, 0},
8014 	{0x1D, 0, 0, 0, 0},
8015 	{0x1E, 0, 0, 0, 0},
8016 	{0x1F, 0, 0, 0, 0},
8017 	{0x20, 0, 0, 0, 0},
8018 	{0x21, 0, 0, 0, 0},
8019 	{0x22, 0x60, 0x60, 0, 0},
8020 	{0x23, 0x6, 0x6, 0, 0},
8021 	{0x24, 0xc, 0xc, 0, 0},
8022 	{0x25, 0, 0, 0, 0},
8023 	{0x26, 0, 0, 0, 0},
8024 	{0x27, 0, 0, 0, 0},
8025 	{0x28, 0x1, 0x1, 0, 0},
8026 	{0x29, 0, 0, 0, 0},
8027 	{0x2A, 0, 0, 0, 0},
8028 	{0x2B, 0, 0, 0, 0},
8029 	{0x2C, 0, 0, 0, 0},
8030 	{0x2D, 0, 0, 0, 0},
8031 	{0x2E, 0xd, 0xd, 0, 0},
8032 	{0x2F, 0x1f, 0x1f, 0, 0},
8033 	{0x30, 0x15, 0x15, 0, 0},
8034 	{0x31, 0xf, 0xf, 0, 0},
8035 	{0x32, 0, 0, 0, 0},
8036 	{0x33, 0, 0, 0, 0},
8037 	{0x34, 0, 0, 0, 0},
8038 	{0x35, 0, 0, 0, 0},
8039 	{0x36, 0, 0, 0, 0},
8040 	{0x37, 0, 0, 0, 0},
8041 	{0x38, 0, 0, 0, 0},
8042 	{0x39, 0, 0, 0, 0},
8043 	{0x3A, 0, 0, 0, 0},
8044 	{0x3B, 0, 0, 0, 0},
8045 	{0x3C, 0x13, 0x13, 0, 0},
8046 	{0x3D, 0xf, 0xf, 0, 0},
8047 	{0x3E, 0x18, 0x18, 0, 0},
8048 	{0x3F, 0, 0, 0, 0},
8049 	{0x40, 0, 0, 0, 0},
8050 	{0x41, 0x20, 0x20, 0, 0},
8051 	{0x42, 0x20, 0x20, 0, 0},
8052 	{0x43, 0, 0, 0, 0},
8053 	{0x44, 0x77, 0x77, 0, 0},
8054 	{0x45, 0x7, 0x7, 0, 0},
8055 	{0x46, 0x1, 0x1, 0, 0},
8056 	{0x47, 0x4, 0x4, 0, 0},
8057 	{0x48, 0xf, 0xf, 0, 0},
8058 	{0x49, 0x30, 0x30, 0, 0},
8059 	{0x4A, 0x32, 0x32, 0, 0},
8060 	{0x4B, 0xd, 0xd, 0, 0},
8061 	{0x4C, 0xd, 0xd, 0, 0},
8062 	{0x4D, 0x4, 0x4, 0, 0},
8063 	{0x4E, 0x6, 0x6, 0, 0},
8064 	{0x4F, 0x1, 0x1, 0, 0},
8065 	{0x50, 0x1c, 0x1c, 0, 0},
8066 	{0x51, 0x2, 0x2, 0, 0},
8067 	{0x52, 0x2, 0x2, 0, 0},
8068 	{0x53, 0xf7, 0xf7, 1, 1},
8069 	{0x54, 0xb4, 0xb4, 0, 0},
8070 	{0x55, 0xd2, 0xd2, 0, 0},
8071 	{0x56, 0, 0, 0, 0},
8072 	{0x57, 0, 0, 0, 0},
8073 	{0x58, 0x4, 0x4, 0, 0},
8074 	{0x59, 0x96, 0x96, 0, 0},
8075 	{0x5A, 0x3e, 0x3e, 0, 0},
8076 	{0x5B, 0x3e, 0x3e, 0, 0},
8077 	{0x5C, 0x13, 0x13, 0, 0},
8078 	{0x5D, 0x2, 0x2, 0, 0},
8079 	{0x5E, 0, 0, 0, 0},
8080 	{0x5F, 0x7, 0x7, 0, 0},
8081 	{0x60, 0x7, 0x7, 1, 1},
8082 	{0x61, 0x8, 0x8, 0, 0},
8083 	{0x62, 0x3, 0x3, 0, 0},
8084 	{0x63, 0, 0, 0, 0},
8085 	{0x64, 0, 0, 0, 0},
8086 	{0x65, 0, 0, 0, 0},
8087 	{0x66, 0, 0, 0, 0},
8088 	{0x67, 0, 0, 0, 0},
8089 	{0x68, 0x40, 0x40, 0, 0},
8090 	{0x69, 0, 0, 0, 0},
8091 	{0x6A, 0, 0, 0, 0},
8092 	{0x6B, 0, 0, 0, 0},
8093 	{0x6C, 0, 0, 0, 0},
8094 	{0x6D, 0x1, 0x1, 0, 0},
8095 	{0x6E, 0, 0, 0, 0},
8096 	{0x6F, 0, 0, 0, 0},
8097 	{0x70, 0x60, 0x60, 0, 0},
8098 	{0x71, 0x66, 0x66, 0, 0},
8099 	{0x72, 0xc, 0xc, 0, 0},
8100 	{0x73, 0x66, 0x66, 0, 0},
8101 	{0x74, 0x8f, 0x8f, 1, 1},
8102 	{0x75, 0, 0, 0, 0},
8103 	{0x76, 0xcc, 0xcc, 0, 0},
8104 	{0x77, 0x1, 0x1, 0, 0},
8105 	{0x78, 0x66, 0x66, 0, 0},
8106 	{0x79, 0x66, 0x66, 0, 0},
8107 	{0x7A, 0, 0, 0, 0},
8108 	{0x7B, 0, 0, 0, 0},
8109 	{0x7C, 0, 0, 0, 0},
8110 	{0x7D, 0, 0, 0, 0},
8111 	{0x7E, 0, 0, 0, 0},
8112 	{0x7F, 0, 0, 0, 0},
8113 	{0x80, 0, 0, 0, 0},
8114 	{0x81, 0, 0, 0, 0},
8115 	{0x82, 0, 0, 0, 0},
8116 	{0x83, 0, 0, 0, 0},
8117 	{0x84, 0, 0, 0, 0},
8118 	{0x85, 0xff, 0xff, 0, 0},
8119 	{0x86, 0, 0, 0, 0},
8120 	{0x87, 0, 0, 0, 0},
8121 	{0x88, 0, 0, 0, 0},
8122 	{0x89, 0, 0, 0, 0},
8123 	{0x8A, 0, 0, 0, 0},
8124 	{0x8B, 0, 0, 0, 0},
8125 	{0x8C, 0, 0, 0, 0},
8126 	{0x8D, 0, 0, 0, 0},
8127 	{0x8E, 0, 0, 0, 0},
8128 	{0x8F, 0, 0, 0, 0},
8129 	{0x90, 0, 0, 0, 0},
8130 	{0x91, 0, 0, 0, 0},
8131 	{0x92, 0, 0, 0, 0},
8132 	{0x93, 0, 0, 0, 0},
8133 	{0x94, 0, 0, 0, 0},
8134 	{0x95, 0, 0, 0, 0},
8135 	{0x96, 0, 0, 0, 0},
8136 	{0x97, 0, 0, 0, 0},
8137 	{0x98, 0, 0, 0, 0},
8138 	{0x99, 0, 0, 0, 0},
8139 	{0x9A, 0, 0, 0, 0},
8140 	{0x9B, 0, 0, 0, 0},
8141 	{0x9C, 0, 0, 0, 0},
8142 	{0x9D, 0, 0, 0, 0},
8143 	{0x9E, 0, 0, 0, 0},
8144 	{0x9F, 0x6, 0x6, 0, 0},
8145 	{0xA0, 0x66, 0x66, 0, 0},
8146 	{0xA1, 0x66, 0x66, 0, 0},
8147 	{0xA2, 0x66, 0x66, 0, 0},
8148 	{0xA3, 0x66, 0x66, 0, 0},
8149 	{0xA4, 0x66, 0x66, 0, 0},
8150 	{0xA5, 0x66, 0x66, 0, 0},
8151 	{0xA6, 0x66, 0x66, 0, 0},
8152 	{0xA7, 0x66, 0x66, 0, 0},
8153 	{0xA8, 0x66, 0x66, 0, 0},
8154 	{0xA9, 0x66, 0x66, 0, 0},
8155 	{0xAA, 0x66, 0x66, 0, 0},
8156 	{0xAB, 0x66, 0x66, 0, 0},
8157 	{0xAC, 0x66, 0x66, 0, 0},
8158 	{0xAD, 0x66, 0x66, 0, 0},
8159 	{0xAE, 0x66, 0x66, 0, 0},
8160 	{0xAF, 0x66, 0x66, 0, 0},
8161 	{0xB0, 0x66, 0x66, 0, 0},
8162 	{0xB1, 0x66, 0x66, 0, 0},
8163 	{0xB2, 0x66, 0x66, 0, 0},
8164 	{0xB3, 0xa, 0xa, 0, 0},
8165 	{0xB4, 0, 0, 0, 0},
8166 	{0xB5, 0, 0, 0, 0},
8167 	{0xB6, 0, 0, 0, 0},
8168 	{0xFFFF, 0, 0, 0, 0}
8169 };
8170 
8171 static struct radio_regs regs_TX_2056[] = {
8172 	{0x02, 0, 0, 0, 0},
8173 	{0x03, 0, 0, 0, 0},
8174 	{0x04, 0, 0, 0, 0},
8175 	{0x05, 0, 0, 0, 0},
8176 	{0x06, 0, 0, 0, 0},
8177 	{0x07, 0, 0, 0, 0},
8178 	{0x08, 0, 0, 0, 0},
8179 	{0x09, 0, 0, 0, 0},
8180 	{0x0A, 0, 0, 0, 0},
8181 	{0x0B, 0, 0, 0, 0},
8182 	{0x0C, 0, 0, 0, 0},
8183 	{0x0D, 0, 0, 0, 0},
8184 	{0x0E, 0, 0, 0, 0},
8185 	{0x0F, 0, 0, 0, 0},
8186 	{0x10, 0, 0, 0, 0},
8187 	{0x11, 0, 0, 0, 0},
8188 	{0x12, 0, 0, 0, 0},
8189 	{0x13, 0, 0, 0, 0},
8190 	{0x14, 0, 0, 0, 0},
8191 	{0x15, 0, 0, 0, 0},
8192 	{0x16, 0, 0, 0, 0},
8193 	{0x17, 0, 0, 0, 0},
8194 	{0x18, 0, 0, 0, 0},
8195 	{0x19, 0, 0, 0, 0},
8196 	{0x1A, 0, 0, 0, 0},
8197 	{0x1B, 0, 0, 0, 0},
8198 	{0x1C, 0, 0, 0, 0},
8199 	{0x1D, 0, 0, 0, 0},
8200 	{0x1E, 0, 0, 0, 0},
8201 	{0x1F, 0, 0, 0, 0},
8202 	{0x20, 0, 0, 0, 0},
8203 	{0x21, 0x88, 0x88, 0, 0},
8204 	{0x22, 0x88, 0x88, 0, 0},
8205 	{0x23, 0x88, 0x88, 0, 0},
8206 	{0x24, 0x88, 0x88, 0, 0},
8207 	{0x25, 0xc, 0xc, 0, 0},
8208 	{0x26, 0, 0, 0, 0},
8209 	{0x27, 0x3, 0x3, 0, 0},
8210 	{0x28, 0, 0, 0, 0},
8211 	{0x29, 0x3, 0x3, 0, 0},
8212 	{0x2A, 0x37, 0x37, 0, 0},
8213 	{0x2B, 0x3, 0x3, 0, 0},
8214 	{0x2C, 0, 0, 0, 0},
8215 	{0x2D, 0, 0, 0, 0},
8216 	{0x2E, 0x1, 0x1, 0, 0},
8217 	{0x2F, 0x1, 0x1, 0, 0},
8218 	{0x30, 0, 0, 0, 0},
8219 	{0x31, 0, 0, 0, 0},
8220 	{0x32, 0, 0, 0, 0},
8221 	{0x33, 0x11, 0x11, 0, 0},
8222 	{0x34, 0x11, 0x11, 0, 0},
8223 	{0x35, 0, 0, 0, 0},
8224 	{0x36, 0, 0, 0, 0},
8225 	{0x37, 0x3, 0x3, 0, 0},
8226 	{0x38, 0xf, 0xf, 0, 0},
8227 	{0x39, 0, 0, 0, 0},
8228 	{0x3A, 0x2d, 0x2d, 0, 0},
8229 	{0x3B, 0, 0, 0, 0},
8230 	{0x3C, 0x6e, 0x6e, 0, 0},
8231 	{0x3D, 0xf0, 0xf0, 1, 1},
8232 	{0x3E, 0, 0, 0, 0},
8233 	{0x3F, 0, 0, 0, 0},
8234 	{0x40, 0, 0, 0, 0},
8235 	{0x41, 0x3, 0x3, 0, 0},
8236 	{0x42, 0x3, 0x3, 0, 0},
8237 	{0x43, 0, 0, 0, 0},
8238 	{0x44, 0x1e, 0x1e, 0, 0},
8239 	{0x45, 0, 0, 0, 0},
8240 	{0x46, 0x6e, 0x6e, 0, 0},
8241 	{0x47, 0xf0, 0xf0, 1, 1},
8242 	{0x48, 0, 0, 0, 0},
8243 	{0x49, 0x2, 0x2, 0, 0},
8244 	{0x4A, 0xff, 0xff, 1, 1},
8245 	{0x4B, 0xc, 0xc, 0, 0},
8246 	{0x4C, 0, 0, 0, 0},
8247 	{0x4D, 0x38, 0x38, 0, 0},
8248 	{0x4E, 0x70, 0x70, 1, 1},
8249 	{0x4F, 0x2, 0x2, 0, 0},
8250 	{0x50, 0x88, 0x88, 0, 0},
8251 	{0x51, 0xc, 0xc, 0, 0},
8252 	{0x52, 0, 0, 0, 0},
8253 	{0x53, 0x8, 0x8, 0, 0},
8254 	{0x54, 0x70, 0x70, 1, 1},
8255 	{0x55, 0x2, 0x2, 0, 0},
8256 	{0x56, 0xff, 0xff, 1, 1},
8257 	{0x57, 0, 0, 0, 0},
8258 	{0x58, 0x83, 0x83, 0, 0},
8259 	{0x59, 0x77, 0x77, 1, 1},
8260 	{0x5A, 0, 0, 0, 0},
8261 	{0x5B, 0x2, 0x2, 0, 0},
8262 	{0x5C, 0x88, 0x88, 0, 0},
8263 	{0x5D, 0, 0, 0, 0},
8264 	{0x5E, 0x8, 0x8, 0, 0},
8265 	{0x5F, 0x77, 0x77, 1, 1},
8266 	{0x60, 0x1, 0x1, 0, 0},
8267 	{0x61, 0, 0, 0, 0},
8268 	{0x62, 0x7, 0x7, 0, 0},
8269 	{0x63, 0, 0, 0, 0},
8270 	{0x64, 0x7, 0x7, 0, 0},
8271 	{0x65, 0, 0, 0, 0},
8272 	{0x66, 0, 0, 0, 0},
8273 	{0x67, 0x74, 0x74, 1, 1},
8274 	{0x68, 0, 0, 0, 0},
8275 	{0x69, 0xa, 0xa, 0, 0},
8276 	{0x6A, 0, 0, 0, 0},
8277 	{0x6B, 0, 0, 0, 0},
8278 	{0x6C, 0, 0, 0, 0},
8279 	{0x6D, 0, 0, 0, 0},
8280 	{0x6E, 0, 0, 0, 0},
8281 	{0x6F, 0, 0, 0, 0},
8282 	{0x70, 0, 0, 0, 0},
8283 	{0x71, 0x2, 0x2, 0, 0},
8284 	{0x72, 0, 0, 0, 0},
8285 	{0x73, 0, 0, 0, 0},
8286 	{0x74, 0xe, 0xe, 0, 0},
8287 	{0x75, 0xe, 0xe, 0, 0},
8288 	{0x76, 0xe, 0xe, 0, 0},
8289 	{0x77, 0x13, 0x13, 0, 0},
8290 	{0x78, 0x13, 0x13, 0, 0},
8291 	{0x79, 0x1b, 0x1b, 0, 0},
8292 	{0x7A, 0x1b, 0x1b, 0, 0},
8293 	{0x7B, 0x55, 0x55, 0, 0},
8294 	{0x7C, 0x5b, 0x5b, 0, 0},
8295 	{0x7D, 0, 0, 0, 0},
8296 	{0x7E, 0, 0, 0, 0},
8297 	{0x7F, 0, 0, 0, 0},
8298 	{0x80, 0, 0, 0, 0},
8299 	{0x81, 0, 0, 0, 0},
8300 	{0x82, 0, 0, 0, 0},
8301 	{0x83, 0, 0, 0, 0},
8302 	{0x84, 0, 0, 0, 0},
8303 	{0x85, 0, 0, 0, 0},
8304 	{0x86, 0, 0, 0, 0},
8305 	{0x87, 0, 0, 0, 0},
8306 	{0x88, 0, 0, 0, 0},
8307 	{0x89, 0, 0, 0, 0},
8308 	{0x8A, 0, 0, 0, 0},
8309 	{0x8B, 0, 0, 0, 0},
8310 	{0x8C, 0, 0, 0, 0},
8311 	{0x8D, 0, 0, 0, 0},
8312 	{0x8E, 0, 0, 0, 0},
8313 	{0x8F, 0, 0, 0, 0},
8314 	{0x90, 0, 0, 0, 0},
8315 	{0x91, 0, 0, 0, 0},
8316 	{0x92, 0, 0, 0, 0},
8317 	{0xFFFF, 0, 0, 0, 0}
8318 };
8319 
8320 static struct radio_regs regs_RX_2056[] = {
8321 	{0x02, 0, 0, 0, 0},
8322 	{0x03, 0, 0, 0, 0},
8323 	{0x04, 0, 0, 0, 0},
8324 	{0x05, 0, 0, 0, 0},
8325 	{0x06, 0, 0, 0, 0},
8326 	{0x07, 0, 0, 0, 0},
8327 	{0x08, 0, 0, 0, 0},
8328 	{0x09, 0, 0, 0, 0},
8329 	{0x0A, 0, 0, 0, 0},
8330 	{0x0B, 0, 0, 0, 0},
8331 	{0x0C, 0, 0, 0, 0},
8332 	{0x0D, 0, 0, 0, 0},
8333 	{0x0E, 0, 0, 0, 0},
8334 	{0x0F, 0, 0, 0, 0},
8335 	{0x10, 0, 0, 0, 0},
8336 	{0x11, 0, 0, 0, 0},
8337 	{0x12, 0, 0, 0, 0},
8338 	{0x13, 0, 0, 0, 0},
8339 	{0x14, 0, 0, 0, 0},
8340 	{0x15, 0, 0, 0, 0},
8341 	{0x16, 0, 0, 0, 0},
8342 	{0x17, 0, 0, 0, 0},
8343 	{0x18, 0, 0, 0, 0},
8344 	{0x19, 0, 0, 0, 0},
8345 	{0x1A, 0, 0, 0, 0},
8346 	{0x1B, 0, 0, 0, 0},
8347 	{0x1C, 0, 0, 0, 0},
8348 	{0x1D, 0, 0, 0, 0},
8349 	{0x1E, 0, 0, 0, 0},
8350 	{0x1F, 0, 0, 0, 0},
8351 	{0x20, 0x3, 0x3, 0, 0},
8352 	{0x21, 0, 0, 0, 0},
8353 	{0x22, 0, 0, 0, 0},
8354 	{0x23, 0x90, 0x90, 0, 0},
8355 	{0x24, 0x55, 0x55, 0, 0},
8356 	{0x25, 0x15, 0x15, 0, 0},
8357 	{0x26, 0x5, 0x5, 0, 0},
8358 	{0x27, 0x15, 0x15, 0, 0},
8359 	{0x28, 0x5, 0x5, 0, 0},
8360 	{0x29, 0x20, 0x20, 0, 0},
8361 	{0x2A, 0x11, 0x11, 0, 0},
8362 	{0x2B, 0x90, 0x90, 0, 0},
8363 	{0x2C, 0, 0, 0, 0},
8364 	{0x2D, 0x88, 0x88, 0, 0},
8365 	{0x2E, 0x32, 0x32, 0, 0},
8366 	{0x2F, 0x77, 0x77, 0, 0},
8367 	{0x30, 0x17, 0x17, 1, 1},
8368 	{0x31, 0xff, 0xff, 1, 1},
8369 	{0x32, 0x20, 0x20, 0, 0},
8370 	{0x33, 0, 0, 0, 0},
8371 	{0x34, 0x88, 0x88, 0, 0},
8372 	{0x35, 0x32, 0x32, 0, 0},
8373 	{0x36, 0x77, 0x77, 0, 0},
8374 	{0x37, 0x17, 0x17, 1, 1},
8375 	{0x38, 0xf0, 0xf0, 1, 1},
8376 	{0x39, 0x20, 0x20, 0, 0},
8377 	{0x3A, 0x8, 0x8, 0, 0},
8378 	{0x3B, 0x99, 0x99, 0, 0},
8379 	{0x3C, 0, 0, 0, 0},
8380 	{0x3D, 0x44, 0x44, 1, 1},
8381 	{0x3E, 0, 0, 0, 0},
8382 	{0x3F, 0x44, 0x44, 0, 0},
8383 	{0x40, 0xf, 0xf, 1, 1},
8384 	{0x41, 0x6, 0x6, 0, 0},
8385 	{0x42, 0x4, 0x4, 0, 0},
8386 	{0x43, 0x50, 0x50, 1, 1},
8387 	{0x44, 0x8, 0x8, 0, 0},
8388 	{0x45, 0x99, 0x99, 0, 0},
8389 	{0x46, 0, 0, 0, 0},
8390 	{0x47, 0x11, 0x11, 0, 0},
8391 	{0x48, 0, 0, 0, 0},
8392 	{0x49, 0x44, 0x44, 0, 0},
8393 	{0x4A, 0x7, 0x7, 0, 0},
8394 	{0x4B, 0x6, 0x6, 0, 0},
8395 	{0x4C, 0x4, 0x4, 0, 0},
8396 	{0x4D, 0, 0, 0, 0},
8397 	{0x4E, 0, 0, 0, 0},
8398 	{0x4F, 0x66, 0x66, 0, 0},
8399 	{0x50, 0x66, 0x66, 0, 0},
8400 	{0x51, 0x57, 0x57, 0, 0},
8401 	{0x52, 0x57, 0x57, 0, 0},
8402 	{0x53, 0x44, 0x44, 0, 0},
8403 	{0x54, 0, 0, 0, 0},
8404 	{0x55, 0, 0, 0, 0},
8405 	{0x56, 0x8, 0x8, 0, 0},
8406 	{0x57, 0x8, 0x8, 0, 0},
8407 	{0x58, 0x7, 0x7, 0, 0},
8408 	{0x59, 0x22, 0x22, 0, 0},
8409 	{0x5A, 0x22, 0x22, 0, 0},
8410 	{0x5B, 0x2, 0x2, 0, 0},
8411 	{0x5C, 0x23, 0x23, 0, 0},
8412 	{0x5D, 0x7, 0x7, 0, 0},
8413 	{0x5E, 0x55, 0x55, 0, 0},
8414 	{0x5F, 0x23, 0x23, 0, 0},
8415 	{0x60, 0x41, 0x41, 0, 0},
8416 	{0x61, 0x1, 0x1, 0, 0},
8417 	{0x62, 0xa, 0xa, 0, 0},
8418 	{0x63, 0, 0, 0, 0},
8419 	{0x64, 0, 0, 0, 0},
8420 	{0x65, 0, 0, 0, 0},
8421 	{0x66, 0, 0, 0, 0},
8422 	{0x67, 0, 0, 0, 0},
8423 	{0x68, 0, 0, 0, 0},
8424 	{0x69, 0, 0, 0, 0},
8425 	{0x6A, 0, 0, 0, 0},
8426 	{0x6B, 0xc, 0xc, 0, 0},
8427 	{0x6C, 0, 0, 0, 0},
8428 	{0x6D, 0, 0, 0, 0},
8429 	{0x6E, 0, 0, 0, 0},
8430 	{0x6F, 0, 0, 0, 0},
8431 	{0x70, 0, 0, 0, 0},
8432 	{0x71, 0, 0, 0, 0},
8433 	{0x72, 0x22, 0x22, 0, 0},
8434 	{0x73, 0x22, 0x22, 0, 0},
8435 	{0x74, 0x2, 0x2, 0, 0},
8436 	{0x75, 0xa, 0xa, 0, 0},
8437 	{0x76, 0x1, 0x1, 0, 0},
8438 	{0x77, 0x22, 0x22, 0, 0},
8439 	{0x78, 0x30, 0x30, 0, 0},
8440 	{0x79, 0, 0, 0, 0},
8441 	{0x7A, 0, 0, 0, 0},
8442 	{0x7B, 0, 0, 0, 0},
8443 	{0x7C, 0, 0, 0, 0},
8444 	{0x7D, 0, 0, 0, 0},
8445 	{0x7E, 0, 0, 0, 0},
8446 	{0x7F, 0, 0, 0, 0},
8447 	{0x80, 0, 0, 0, 0},
8448 	{0x81, 0, 0, 0, 0},
8449 	{0x82, 0, 0, 0, 0},
8450 	{0x83, 0, 0, 0, 0},
8451 	{0x84, 0, 0, 0, 0},
8452 	{0x85, 0, 0, 0, 0},
8453 	{0x86, 0, 0, 0, 0},
8454 	{0x87, 0, 0, 0, 0},
8455 	{0x88, 0, 0, 0, 0},
8456 	{0x89, 0, 0, 0, 0},
8457 	{0x8A, 0, 0, 0, 0},
8458 	{0x8B, 0, 0, 0, 0},
8459 	{0x8C, 0, 0, 0, 0},
8460 	{0x8D, 0, 0, 0, 0},
8461 	{0x8E, 0, 0, 0, 0},
8462 	{0x8F, 0, 0, 0, 0},
8463 	{0x90, 0, 0, 0, 0},
8464 	{0x91, 0, 0, 0, 0},
8465 	{0x92, 0, 0, 0, 0},
8466 	{0x93, 0, 0, 0, 0},
8467 	{0x94, 0, 0, 0, 0},
8468 	{0xFFFF, 0, 0, 0, 0}
8469 };
8470 
8471 static struct radio_regs regs_SYN_2056_A1[] = {
8472 	{0x02, 0, 0, 0, 0},
8473 	{0x03, 0, 0, 0, 0},
8474 	{0x04, 0, 0, 0, 0},
8475 	{0x05, 0, 0, 0, 0},
8476 	{0x06, 0, 0, 0, 0},
8477 	{0x07, 0, 0, 0, 0},
8478 	{0x08, 0, 0, 0, 0},
8479 	{0x09, 0x1, 0x1, 0, 0},
8480 	{0x0A, 0, 0, 0, 0},
8481 	{0x0B, 0, 0, 0, 0},
8482 	{0x0C, 0, 0, 0, 0},
8483 	{0x0D, 0, 0, 0, 0},
8484 	{0x0E, 0, 0, 0, 0},
8485 	{0x0F, 0, 0, 0, 0},
8486 	{0x10, 0, 0, 0, 0},
8487 	{0x11, 0, 0, 0, 0},
8488 	{0x12, 0, 0, 0, 0},
8489 	{0x13, 0, 0, 0, 0},
8490 	{0x14, 0, 0, 0, 0},
8491 	{0x15, 0, 0, 0, 0},
8492 	{0x16, 0, 0, 0, 0},
8493 	{0x17, 0, 0, 0, 0},
8494 	{0x18, 0, 0, 0, 0},
8495 	{0x19, 0, 0, 0, 0},
8496 	{0x1A, 0, 0, 0, 0},
8497 	{0x1B, 0, 0, 0, 0},
8498 	{0x1C, 0, 0, 0, 0},
8499 	{0x1D, 0, 0, 0, 0},
8500 	{0x1E, 0, 0, 0, 0},
8501 	{0x1F, 0, 0, 0, 0},
8502 	{0x20, 0, 0, 0, 0},
8503 	{0x21, 0, 0, 0, 0},
8504 	{0x22, 0x60, 0x60, 0, 0},
8505 	{0x23, 0x6, 0x6, 0, 0},
8506 	{0x24, 0xc, 0xc, 0, 0},
8507 	{0x25, 0, 0, 0, 0},
8508 	{0x26, 0, 0, 0, 0},
8509 	{0x27, 0, 0, 0, 0},
8510 	{0x28, 0x1, 0x1, 0, 0},
8511 	{0x29, 0, 0, 0, 0},
8512 	{0x2A, 0, 0, 0, 0},
8513 	{0x2B, 0, 0, 0, 0},
8514 	{0x2C, 0, 0, 0, 0},
8515 	{0x2D, 0, 0, 0, 0},
8516 	{0x2E, 0xd, 0xd, 0, 0},
8517 	{0x2F, 0x1f, 0x1f, 0, 0},
8518 	{0x30, 0x15, 0x15, 0, 0},
8519 	{0x31, 0xf, 0xf, 0, 0},
8520 	{0x32, 0, 0, 0, 0},
8521 	{0x33, 0, 0, 0, 0},
8522 	{0x34, 0, 0, 0, 0},
8523 	{0x35, 0, 0, 0, 0},
8524 	{0x36, 0, 0, 0, 0},
8525 	{0x37, 0, 0, 0, 0},
8526 	{0x38, 0, 0, 0, 0},
8527 	{0x39, 0, 0, 0, 0},
8528 	{0x3A, 0, 0, 0, 0},
8529 	{0x3B, 0, 0, 0, 0},
8530 	{0x3C, 0x13, 0x13, 0, 0},
8531 	{0x3D, 0xf, 0xf, 0, 0},
8532 	{0x3E, 0x18, 0x18, 0, 0},
8533 	{0x3F, 0, 0, 0, 0},
8534 	{0x40, 0, 0, 0, 0},
8535 	{0x41, 0x20, 0x20, 0, 0},
8536 	{0x42, 0x20, 0x20, 0, 0},
8537 	{0x43, 0, 0, 0, 0},
8538 	{0x44, 0x77, 0x77, 0, 0},
8539 	{0x45, 0x7, 0x7, 0, 0},
8540 	{0x46, 0x1, 0x1, 0, 0},
8541 	{0x47, 0x4, 0x4, 0, 0},
8542 	{0x48, 0xf, 0xf, 0, 0},
8543 	{0x49, 0x30, 0x30, 0, 0},
8544 	{0x4A, 0x32, 0x32, 0, 0},
8545 	{0x4B, 0xd, 0xd, 0, 0},
8546 	{0x4C, 0xd, 0xd, 0, 0},
8547 	{0x4D, 0x4, 0x4, 0, 0},
8548 	{0x4E, 0x6, 0x6, 0, 0},
8549 	{0x4F, 0x1, 0x1, 0, 0},
8550 	{0x50, 0x1c, 0x1c, 0, 0},
8551 	{0x51, 0x2, 0x2, 0, 0},
8552 	{0x52, 0x2, 0x2, 0, 0},
8553 	{0x53, 0xf7, 0xf7, 1, 1},
8554 	{0x54, 0xb4, 0xb4, 0, 0},
8555 	{0x55, 0xd2, 0xd2, 0, 0},
8556 	{0x56, 0, 0, 0, 0},
8557 	{0x57, 0, 0, 0, 0},
8558 	{0x58, 0x4, 0x4, 0, 0},
8559 	{0x59, 0x96, 0x96, 0, 0},
8560 	{0x5A, 0x3e, 0x3e, 0, 0},
8561 	{0x5B, 0x3e, 0x3e, 0, 0},
8562 	{0x5C, 0x13, 0x13, 0, 0},
8563 	{0x5D, 0x2, 0x2, 0, 0},
8564 	{0x5E, 0, 0, 0, 0},
8565 	{0x5F, 0x7, 0x7, 0, 0},
8566 	{0x60, 0x7, 0x7, 1, 1},
8567 	{0x61, 0x8, 0x8, 0, 0},
8568 	{0x62, 0x3, 0x3, 0, 0},
8569 	{0x63, 0, 0, 0, 0},
8570 	{0x64, 0, 0, 0, 0},
8571 	{0x65, 0, 0, 0, 0},
8572 	{0x66, 0, 0, 0, 0},
8573 	{0x67, 0, 0, 0, 0},
8574 	{0x68, 0x40, 0x40, 0, 0},
8575 	{0x69, 0, 0, 0, 0},
8576 	{0x6A, 0, 0, 0, 0},
8577 	{0x6B, 0, 0, 0, 0},
8578 	{0x6C, 0, 0, 0, 0},
8579 	{0x6D, 0x1, 0x1, 0, 0},
8580 	{0x6E, 0, 0, 0, 0},
8581 	{0x6F, 0, 0, 0, 0},
8582 	{0x70, 0x60, 0x60, 0, 0},
8583 	{0x71, 0x66, 0x66, 0, 0},
8584 	{0x72, 0xc, 0xc, 0, 0},
8585 	{0x73, 0x66, 0x66, 0, 0},
8586 	{0x74, 0x8f, 0x8f, 1, 1},
8587 	{0x75, 0, 0, 0, 0},
8588 	{0x76, 0xcc, 0xcc, 0, 0},
8589 	{0x77, 0x1, 0x1, 0, 0},
8590 	{0x78, 0x66, 0x66, 0, 0},
8591 	{0x79, 0x66, 0x66, 0, 0},
8592 	{0x7A, 0, 0, 0, 0},
8593 	{0x7B, 0, 0, 0, 0},
8594 	{0x7C, 0, 0, 0, 0},
8595 	{0x7D, 0, 0, 0, 0},
8596 	{0x7E, 0, 0, 0, 0},
8597 	{0x7F, 0, 0, 0, 0},
8598 	{0x80, 0, 0, 0, 0},
8599 	{0x81, 0, 0, 0, 0},
8600 	{0x82, 0, 0, 0, 0},
8601 	{0x83, 0, 0, 0, 0},
8602 	{0x84, 0, 0, 0, 0},
8603 	{0x85, 0xff, 0xff, 0, 0},
8604 	{0x86, 0, 0, 0, 0},
8605 	{0x87, 0, 0, 0, 0},
8606 	{0x88, 0, 0, 0, 0},
8607 	{0x89, 0, 0, 0, 0},
8608 	{0x8A, 0, 0, 0, 0},
8609 	{0x8B, 0, 0, 0, 0},
8610 	{0x8C, 0, 0, 0, 0},
8611 	{0x8D, 0, 0, 0, 0},
8612 	{0x8E, 0, 0, 0, 0},
8613 	{0x8F, 0, 0, 0, 0},
8614 	{0x90, 0, 0, 0, 0},
8615 	{0x91, 0, 0, 0, 0},
8616 	{0x92, 0, 0, 0, 0},
8617 	{0x93, 0, 0, 0, 0},
8618 	{0x94, 0, 0, 0, 0},
8619 	{0x95, 0, 0, 0, 0},
8620 	{0x96, 0, 0, 0, 0},
8621 	{0x97, 0, 0, 0, 0},
8622 	{0x98, 0, 0, 0, 0},
8623 	{0x99, 0, 0, 0, 0},
8624 	{0x9A, 0, 0, 0, 0},
8625 	{0x9B, 0, 0, 0, 0},
8626 	{0x9C, 0, 0, 0, 0},
8627 	{0x9D, 0, 0, 0, 0},
8628 	{0x9E, 0, 0, 0, 0},
8629 	{0x9F, 0x6, 0x6, 0, 0},
8630 	{0xA0, 0x66, 0x66, 0, 0},
8631 	{0xA1, 0x66, 0x66, 0, 0},
8632 	{0xA2, 0x66, 0x66, 0, 0},
8633 	{0xA3, 0x66, 0x66, 0, 0},
8634 	{0xA4, 0x66, 0x66, 0, 0},
8635 	{0xA5, 0x66, 0x66, 0, 0},
8636 	{0xA6, 0x66, 0x66, 0, 0},
8637 	{0xA7, 0x66, 0x66, 0, 0},
8638 	{0xA8, 0x66, 0x66, 0, 0},
8639 	{0xA9, 0x66, 0x66, 0, 0},
8640 	{0xAA, 0x66, 0x66, 0, 0},
8641 	{0xAB, 0x66, 0x66, 0, 0},
8642 	{0xAC, 0x66, 0x66, 0, 0},
8643 	{0xAD, 0x66, 0x66, 0, 0},
8644 	{0xAE, 0x66, 0x66, 0, 0},
8645 	{0xAF, 0x66, 0x66, 0, 0},
8646 	{0xB0, 0x66, 0x66, 0, 0},
8647 	{0xB1, 0x66, 0x66, 0, 0},
8648 	{0xB2, 0x66, 0x66, 0, 0},
8649 	{0xB3, 0xa, 0xa, 0, 0},
8650 	{0xB4, 0, 0, 0, 0},
8651 	{0xB5, 0, 0, 0, 0},
8652 	{0xB6, 0, 0, 0, 0},
8653 	{0xFFFF, 0, 0, 0, 0}
8654 };
8655 
8656 static struct radio_regs regs_TX_2056_A1[] = {
8657 	{0x02, 0, 0, 0, 0},
8658 	{0x03, 0, 0, 0, 0},
8659 	{0x04, 0, 0, 0, 0},
8660 	{0x05, 0, 0, 0, 0},
8661 	{0x06, 0, 0, 0, 0},
8662 	{0x07, 0, 0, 0, 0},
8663 	{0x08, 0, 0, 0, 0},
8664 	{0x09, 0, 0, 0, 0},
8665 	{0x0A, 0, 0, 0, 0},
8666 	{0x0B, 0, 0, 0, 0},
8667 	{0x0C, 0, 0, 0, 0},
8668 	{0x0D, 0, 0, 0, 0},
8669 	{0x0E, 0, 0, 0, 0},
8670 	{0x0F, 0, 0, 0, 0},
8671 	{0x10, 0, 0, 0, 0},
8672 	{0x11, 0, 0, 0, 0},
8673 	{0x12, 0, 0, 0, 0},
8674 	{0x13, 0, 0, 0, 0},
8675 	{0x14, 0, 0, 0, 0},
8676 	{0x15, 0, 0, 0, 0},
8677 	{0x16, 0, 0, 0, 0},
8678 	{0x17, 0, 0, 0, 0},
8679 	{0x18, 0, 0, 0, 0},
8680 	{0x19, 0, 0, 0, 0},
8681 	{0x1A, 0, 0, 0, 0},
8682 	{0x1B, 0, 0, 0, 0},
8683 	{0x1C, 0, 0, 0, 0},
8684 	{0x1D, 0, 0, 0, 0},
8685 	{0x1E, 0, 0, 0, 0},
8686 	{0x1F, 0, 0, 0, 0},
8687 	{0x20, 0, 0, 0, 0},
8688 	{0x21, 0x88, 0x88, 0, 0},
8689 	{0x22, 0x88, 0x88, 0, 0},
8690 	{0x23, 0x88, 0x88, 0, 0},
8691 	{0x24, 0x88, 0x88, 0, 0},
8692 	{0x25, 0xc, 0xc, 0, 0},
8693 	{0x26, 0, 0, 0, 0},
8694 	{0x27, 0x3, 0x3, 0, 0},
8695 	{0x28, 0, 0, 0, 0},
8696 	{0x29, 0x3, 0x3, 0, 0},
8697 	{0x2A, 0x37, 0x37, 0, 0},
8698 	{0x2B, 0x3, 0x3, 0, 0},
8699 	{0x2C, 0, 0, 0, 0},
8700 	{0x2D, 0, 0, 0, 0},
8701 	{0x2E, 0x1, 0x1, 0, 0},
8702 	{0x2F, 0x1, 0x1, 0, 0},
8703 	{0x30, 0, 0, 0, 0},
8704 	{0x31, 0, 0, 0, 0},
8705 	{0x32, 0, 0, 0, 0},
8706 	{0x33, 0x11, 0x11, 0, 0},
8707 	{0x34, 0x11, 0x11, 0, 0},
8708 	{0x35, 0, 0, 0, 0},
8709 	{0x36, 0, 0, 0, 0},
8710 	{0x37, 0x3, 0x3, 0, 0},
8711 	{0x38, 0xf, 0xf, 0, 0},
8712 	{0x39, 0, 0, 0, 0},
8713 	{0x3A, 0x2d, 0x2d, 0, 0},
8714 	{0x3B, 0, 0, 0, 0},
8715 	{0x3C, 0x6e, 0x6e, 0, 0},
8716 	{0x3D, 0xf0, 0xf0, 1, 1},
8717 	{0x3E, 0, 0, 0, 0},
8718 	{0x3F, 0, 0, 0, 0},
8719 	{0x40, 0, 0, 0, 0},
8720 	{0x41, 0x3, 0x3, 0, 0},
8721 	{0x42, 0x3, 0x3, 0, 0},
8722 	{0x43, 0, 0, 0, 0},
8723 	{0x44, 0x1e, 0x1e, 0, 0},
8724 	{0x45, 0, 0, 0, 0},
8725 	{0x46, 0x6e, 0x6e, 0, 0},
8726 	{0x47, 0xf0, 0xf0, 1, 1},
8727 	{0x48, 0, 0, 0, 0},
8728 	{0x49, 0x2, 0x2, 0, 0},
8729 	{0x4A, 0xff, 0xff, 1, 1},
8730 	{0x4B, 0xc, 0xc, 0, 0},
8731 	{0x4C, 0, 0, 0, 0},
8732 	{0x4D, 0x38, 0x38, 0, 0},
8733 	{0x4E, 0x70, 0x70, 1, 1},
8734 	{0x4F, 0x2, 0x2, 0, 0},
8735 	{0x50, 0x88, 0x88, 0, 0},
8736 	{0x51, 0xc, 0xc, 0, 0},
8737 	{0x52, 0, 0, 0, 0},
8738 	{0x53, 0x8, 0x8, 0, 0},
8739 	{0x54, 0x70, 0x70, 1, 1},
8740 	{0x55, 0x2, 0x2, 0, 0},
8741 	{0x56, 0xff, 0xff, 1, 1},
8742 	{0x57, 0, 0, 0, 0},
8743 	{0x58, 0x83, 0x83, 0, 0},
8744 	{0x59, 0x77, 0x77, 1, 1},
8745 	{0x5A, 0, 0, 0, 0},
8746 	{0x5B, 0x2, 0x2, 0, 0},
8747 	{0x5C, 0x88, 0x88, 0, 0},
8748 	{0x5D, 0, 0, 0, 0},
8749 	{0x5E, 0x8, 0x8, 0, 0},
8750 	{0x5F, 0x77, 0x77, 1, 1},
8751 	{0x60, 0x1, 0x1, 0, 0},
8752 	{0x61, 0, 0, 0, 0},
8753 	{0x62, 0x7, 0x7, 0, 0},
8754 	{0x63, 0, 0, 0, 0},
8755 	{0x64, 0x7, 0x7, 0, 0},
8756 	{0x65, 0, 0, 0, 0},
8757 	{0x66, 0, 0, 0, 0},
8758 	{0x67, 0x72, 0x72, 1, 1},
8759 	{0x68, 0, 0, 0, 0},
8760 	{0x69, 0xa, 0xa, 0, 0},
8761 	{0x6A, 0, 0, 0, 0},
8762 	{0x6B, 0, 0, 0, 0},
8763 	{0x6C, 0, 0, 0, 0},
8764 	{0x6D, 0, 0, 0, 0},
8765 	{0x6E, 0, 0, 0, 0},
8766 	{0x6F, 0, 0, 0, 0},
8767 	{0x70, 0, 0, 0, 0},
8768 	{0x71, 0x2, 0x2, 0, 0},
8769 	{0x72, 0, 0, 0, 0},
8770 	{0x73, 0, 0, 0, 0},
8771 	{0x74, 0xe, 0xe, 0, 0},
8772 	{0x75, 0xe, 0xe, 0, 0},
8773 	{0x76, 0xe, 0xe, 0, 0},
8774 	{0x77, 0x13, 0x13, 0, 0},
8775 	{0x78, 0x13, 0x13, 0, 0},
8776 	{0x79, 0x1b, 0x1b, 0, 0},
8777 	{0x7A, 0x1b, 0x1b, 0, 0},
8778 	{0x7B, 0x55, 0x55, 0, 0},
8779 	{0x7C, 0x5b, 0x5b, 0, 0},
8780 	{0x7D, 0, 0, 0, 0},
8781 	{0x7E, 0, 0, 0, 0},
8782 	{0x7F, 0, 0, 0, 0},
8783 	{0x80, 0, 0, 0, 0},
8784 	{0x81, 0, 0, 0, 0},
8785 	{0x82, 0, 0, 0, 0},
8786 	{0x83, 0, 0, 0, 0},
8787 	{0x84, 0, 0, 0, 0},
8788 	{0x85, 0, 0, 0, 0},
8789 	{0x86, 0, 0, 0, 0},
8790 	{0x87, 0, 0, 0, 0},
8791 	{0x88, 0, 0, 0, 0},
8792 	{0x89, 0, 0, 0, 0},
8793 	{0x8A, 0, 0, 0, 0},
8794 	{0x8B, 0, 0, 0, 0},
8795 	{0x8C, 0, 0, 0, 0},
8796 	{0x8D, 0, 0, 0, 0},
8797 	{0x8E, 0, 0, 0, 0},
8798 	{0x8F, 0, 0, 0, 0},
8799 	{0x90, 0, 0, 0, 0},
8800 	{0x91, 0, 0, 0, 0},
8801 	{0x92, 0, 0, 0, 0},
8802 	{0xFFFF, 0, 0, 0, 0}
8803 };
8804 
8805 static struct radio_regs regs_RX_2056_A1[] = {
8806 	{0x02, 0, 0, 0, 0},
8807 	{0x03, 0, 0, 0, 0},
8808 	{0x04, 0, 0, 0, 0},
8809 	{0x05, 0, 0, 0, 0},
8810 	{0x06, 0, 0, 0, 0},
8811 	{0x07, 0, 0, 0, 0},
8812 	{0x08, 0, 0, 0, 0},
8813 	{0x09, 0, 0, 0, 0},
8814 	{0x0A, 0, 0, 0, 0},
8815 	{0x0B, 0, 0, 0, 0},
8816 	{0x0C, 0, 0, 0, 0},
8817 	{0x0D, 0, 0, 0, 0},
8818 	{0x0E, 0, 0, 0, 0},
8819 	{0x0F, 0, 0, 0, 0},
8820 	{0x10, 0, 0, 0, 0},
8821 	{0x11, 0, 0, 0, 0},
8822 	{0x12, 0, 0, 0, 0},
8823 	{0x13, 0, 0, 0, 0},
8824 	{0x14, 0, 0, 0, 0},
8825 	{0x15, 0, 0, 0, 0},
8826 	{0x16, 0, 0, 0, 0},
8827 	{0x17, 0, 0, 0, 0},
8828 	{0x18, 0, 0, 0, 0},
8829 	{0x19, 0, 0, 0, 0},
8830 	{0x1A, 0, 0, 0, 0},
8831 	{0x1B, 0, 0, 0, 0},
8832 	{0x1C, 0, 0, 0, 0},
8833 	{0x1D, 0, 0, 0, 0},
8834 	{0x1E, 0, 0, 0, 0},
8835 	{0x1F, 0, 0, 0, 0},
8836 	{0x20, 0x3, 0x3, 0, 0},
8837 	{0x21, 0, 0, 0, 0},
8838 	{0x22, 0, 0, 0, 0},
8839 	{0x23, 0x90, 0x90, 0, 0},
8840 	{0x24, 0x55, 0x55, 0, 0},
8841 	{0x25, 0x15, 0x15, 0, 0},
8842 	{0x26, 0x5, 0x5, 0, 0},
8843 	{0x27, 0x15, 0x15, 0, 0},
8844 	{0x28, 0x5, 0x5, 0, 0},
8845 	{0x29, 0x20, 0x20, 0, 0},
8846 	{0x2A, 0x11, 0x11, 0, 0},
8847 	{0x2B, 0x90, 0x90, 0, 0},
8848 	{0x2C, 0, 0, 0, 0},
8849 	{0x2D, 0x88, 0x88, 0, 0},
8850 	{0x2E, 0x32, 0x32, 0, 0},
8851 	{0x2F, 0x77, 0x77, 0, 0},
8852 	{0x30, 0x17, 0x17, 1, 1},
8853 	{0x31, 0xff, 0xff, 1, 1},
8854 	{0x32, 0x20, 0x20, 0, 0},
8855 	{0x33, 0, 0, 0, 0},
8856 	{0x34, 0x88, 0x88, 0, 0},
8857 	{0x35, 0x32, 0x32, 0, 0},
8858 	{0x36, 0x77, 0x77, 0, 0},
8859 	{0x37, 0x17, 0x17, 1, 1},
8860 	{0x38, 0xf0, 0xf0, 1, 1},
8861 	{0x39, 0x20, 0x20, 0, 0},
8862 	{0x3A, 0x8, 0x8, 0, 0},
8863 	{0x3B, 0x55, 0x55, 1, 1},
8864 	{0x3C, 0, 0, 0, 0},
8865 	{0x3D, 0x44, 0x44, 1, 1},
8866 	{0x3E, 0, 0, 0, 0},
8867 	{0x3F, 0x44, 0x44, 0, 0},
8868 	{0x40, 0xf, 0xf, 1, 1},
8869 	{0x41, 0x6, 0x6, 0, 0},
8870 	{0x42, 0x4, 0x4, 0, 0},
8871 	{0x43, 0x50, 0x50, 1, 1},
8872 	{0x44, 0x8, 0x8, 0, 0},
8873 	{0x45, 0x55, 0x55, 1, 1},
8874 	{0x46, 0, 0, 0, 0},
8875 	{0x47, 0x11, 0x11, 0, 0},
8876 	{0x48, 0, 0, 0, 0},
8877 	{0x49, 0x44, 0x44, 0, 0},
8878 	{0x4A, 0x7, 0x7, 0, 0},
8879 	{0x4B, 0x6, 0x6, 0, 0},
8880 	{0x4C, 0x4, 0x4, 0, 0},
8881 	{0x4D, 0, 0, 0, 0},
8882 	{0x4E, 0, 0, 0, 0},
8883 	{0x4F, 0x26, 0x26, 1, 1},
8884 	{0x50, 0x26, 0x26, 1, 1},
8885 	{0x51, 0xf, 0xf, 1, 1},
8886 	{0x52, 0xf, 0xf, 1, 1},
8887 	{0x53, 0x44, 0x44, 0, 0},
8888 	{0x54, 0, 0, 0, 0},
8889 	{0x55, 0, 0, 0, 0},
8890 	{0x56, 0x8, 0x8, 0, 0},
8891 	{0x57, 0x8, 0x8, 0, 0},
8892 	{0x58, 0x7, 0x7, 0, 0},
8893 	{0x59, 0x22, 0x22, 0, 0},
8894 	{0x5A, 0x22, 0x22, 0, 0},
8895 	{0x5B, 0x2, 0x2, 0, 0},
8896 	{0x5C, 0x2f, 0x2f, 1, 1},
8897 	{0x5D, 0x7, 0x7, 0, 0},
8898 	{0x5E, 0x55, 0x55, 0, 0},
8899 	{0x5F, 0x23, 0x23, 0, 0},
8900 	{0x60, 0x41, 0x41, 0, 0},
8901 	{0x61, 0x1, 0x1, 0, 0},
8902 	{0x62, 0xa, 0xa, 0, 0},
8903 	{0x63, 0, 0, 0, 0},
8904 	{0x64, 0, 0, 0, 0},
8905 	{0x65, 0, 0, 0, 0},
8906 	{0x66, 0, 0, 0, 0},
8907 	{0x67, 0, 0, 0, 0},
8908 	{0x68, 0, 0, 0, 0},
8909 	{0x69, 0, 0, 0, 0},
8910 	{0x6A, 0, 0, 0, 0},
8911 	{0x6B, 0xc, 0xc, 0, 0},
8912 	{0x6C, 0, 0, 0, 0},
8913 	{0x6D, 0, 0, 0, 0},
8914 	{0x6E, 0, 0, 0, 0},
8915 	{0x6F, 0, 0, 0, 0},
8916 	{0x70, 0, 0, 0, 0},
8917 	{0x71, 0, 0, 0, 0},
8918 	{0x72, 0x22, 0x22, 0, 0},
8919 	{0x73, 0x22, 0x22, 0, 0},
8920 	{0x74, 0, 0, 1, 1},
8921 	{0x75, 0xa, 0xa, 0, 0},
8922 	{0x76, 0x1, 0x1, 0, 0},
8923 	{0x77, 0x22, 0x22, 0, 0},
8924 	{0x78, 0x30, 0x30, 0, 0},
8925 	{0x79, 0, 0, 0, 0},
8926 	{0x7A, 0, 0, 0, 0},
8927 	{0x7B, 0, 0, 0, 0},
8928 	{0x7C, 0, 0, 0, 0},
8929 	{0x7D, 0, 0, 0, 0},
8930 	{0x7E, 0, 0, 0, 0},
8931 	{0x7F, 0, 0, 0, 0},
8932 	{0x80, 0, 0, 0, 0},
8933 	{0x81, 0, 0, 0, 0},
8934 	{0x82, 0, 0, 0, 0},
8935 	{0x83, 0, 0, 0, 0},
8936 	{0x84, 0, 0, 0, 0},
8937 	{0x85, 0, 0, 0, 0},
8938 	{0x86, 0, 0, 0, 0},
8939 	{0x87, 0, 0, 0, 0},
8940 	{0x88, 0, 0, 0, 0},
8941 	{0x89, 0, 0, 0, 0},
8942 	{0x8A, 0, 0, 0, 0},
8943 	{0x8B, 0, 0, 0, 0},
8944 	{0x8C, 0, 0, 0, 0},
8945 	{0x8D, 0, 0, 0, 0},
8946 	{0x8E, 0, 0, 0, 0},
8947 	{0x8F, 0, 0, 0, 0},
8948 	{0x90, 0, 0, 0, 0},
8949 	{0x91, 0, 0, 0, 0},
8950 	{0x92, 0, 0, 0, 0},
8951 	{0x93, 0, 0, 0, 0},
8952 	{0x94, 0, 0, 0, 0},
8953 	{0xFFFF, 0, 0, 0, 0}
8954 };
8955 
8956 static struct radio_regs regs_SYN_2056_rev5[] = {
8957 	{0x02, 0, 0, 0, 0},
8958 	{0x03, 0, 0, 0, 0},
8959 	{0x04, 0, 0, 0, 0},
8960 	{0x05, 0, 0, 0, 0},
8961 	{0x06, 0, 0, 0, 0},
8962 	{0x07, 0, 0, 0, 0},
8963 	{0x08, 0, 0, 0, 0},
8964 	{0x09, 0x1, 0x1, 0, 0},
8965 	{0x0A, 0, 0, 0, 0},
8966 	{0x0B, 0, 0, 0, 0},
8967 	{0x0C, 0, 0, 0, 0},
8968 	{0x0D, 0, 0, 0, 0},
8969 	{0x0E, 0, 0, 0, 0},
8970 	{0x0F, 0, 0, 0, 0},
8971 	{0x10, 0, 0, 0, 0},
8972 	{0x11, 0, 0, 0, 0},
8973 	{0x12, 0, 0, 0, 0},
8974 	{0x13, 0, 0, 0, 0},
8975 	{0x14, 0, 0, 0, 0},
8976 	{0x15, 0, 0, 0, 0},
8977 	{0x16, 0, 0, 0, 0},
8978 	{0x17, 0, 0, 0, 0},
8979 	{0x18, 0, 0, 0, 0},
8980 	{0x19, 0, 0, 0, 0},
8981 	{0x1A, 0, 0, 0, 0},
8982 	{0x1B, 0, 0, 0, 0},
8983 	{0x1C, 0, 0, 0, 0},
8984 	{0x1D, 0, 0, 0, 0},
8985 	{0x1E, 0, 0, 0, 0},
8986 	{0x1F, 0, 0, 0, 0},
8987 	{0x20, 0, 0, 0, 0},
8988 	{0x21, 0, 0, 0, 0},
8989 	{0x22, 0x60, 0x60, 0, 0},
8990 	{0x23, 0x6, 0x6, 0, 0},
8991 	{0x24, 0xc, 0xc, 0, 0},
8992 	{0x25, 0, 0, 0, 0},
8993 	{0x26, 0, 0, 0, 0},
8994 	{0x27, 0, 0, 0, 0},
8995 	{0x28, 0x1, 0x1, 0, 0},
8996 	{0x29, 0, 0, 0, 0},
8997 	{0x2A, 0, 0, 0, 0},
8998 	{0x2B, 0, 0, 0, 0},
8999 	{0x2C, 0, 0, 0, 0},
9000 	{0x2D, 0, 0, 0, 0},
9001 	{0x2E, 0, 0, 0, 0},
9002 	{0x2F, 0x1f, 0x1f, 0, 0},
9003 	{0x30, 0x15, 0x15, 0, 0},
9004 	{0x31, 0xf, 0xf, 0, 0},
9005 	{0x32, 0, 0, 0, 0},
9006 	{0x33, 0, 0, 0, 0},
9007 	{0x34, 0, 0, 0, 0},
9008 	{0x35, 0, 0, 0, 0},
9009 	{0x36, 0, 0, 0, 0},
9010 	{0x37, 0, 0, 0, 0},
9011 	{0x38, 0, 0, 0, 0},
9012 	{0x39, 0, 0, 0, 0},
9013 	{0x3A, 0, 0, 0, 0},
9014 	{0x3B, 0, 0, 0, 0},
9015 	{0x3C, 0x13, 0x13, 0, 0},
9016 	{0x3D, 0xf, 0xf, 0, 0},
9017 	{0x3E, 0x18, 0x18, 0, 0},
9018 	{0x3F, 0, 0, 0, 0},
9019 	{0x40, 0, 0, 0, 0},
9020 	{0x41, 0x20, 0x20, 0, 0},
9021 	{0x42, 0x20, 0x20, 0, 0},
9022 	{0x43, 0, 0, 0, 0},
9023 	{0x44, 0x77, 0x77, 0, 0},
9024 	{0x45, 0x7, 0x7, 0, 0},
9025 	{0x46, 0x1, 0x1, 0, 0},
9026 	{0x47, 0x4, 0x4, 0, 0},
9027 	{0x48, 0xf, 0xf, 0, 0},
9028 	{0x49, 0x30, 0x30, 0, 0},
9029 	{0x4A, 0x32, 0x32, 0, 0},
9030 	{0x4B, 0xd, 0xd, 0, 0},
9031 	{0x4C, 0xd, 0xd, 0, 0},
9032 	{0x4D, 0x4, 0x4, 0, 0},
9033 	{0x4E, 0x6, 0x6, 0, 0},
9034 	{0x4F, 0x1, 0x1, 0, 0},
9035 	{0x50, 0x1c, 0x1c, 0, 0},
9036 	{0x51, 0x2, 0x2, 0, 0},
9037 	{0x52, 0x2, 0x2, 0, 0},
9038 	{0x53, 0xf7, 0xf7, 1, 1},
9039 	{0x54, 0xb4, 0xb4, 0, 0},
9040 	{0x55, 0xd2, 0xd2, 0, 0},
9041 	{0x56, 0, 0, 0, 0},
9042 	{0x57, 0, 0, 0, 0},
9043 	{0x58, 0x4, 0x4, 0, 0},
9044 	{0x59, 0x96, 0x96, 0, 0},
9045 	{0x5A, 0x3e, 0x3e, 0, 0},
9046 	{0x5B, 0x3e, 0x3e, 0, 0},
9047 	{0x5C, 0x13, 0x13, 0, 0},
9048 	{0x5D, 0x2, 0x2, 0, 0},
9049 	{0x5E, 0, 0, 0, 0},
9050 	{0x5F, 0x7, 0x7, 0, 0},
9051 	{0x60, 0x7, 0x7, 1, 1},
9052 	{0x61, 0x8, 0x8, 0, 0},
9053 	{0x62, 0x3, 0x3, 0, 0},
9054 	{0x63, 0, 0, 0, 0},
9055 	{0x64, 0, 0, 0, 0},
9056 	{0x65, 0, 0, 0, 0},
9057 	{0x66, 0, 0, 0, 0},
9058 	{0x67, 0, 0, 0, 0},
9059 	{0x68, 0x40, 0x40, 0, 0},
9060 	{0x69, 0, 0, 0, 0},
9061 	{0x6A, 0, 0, 0, 0},
9062 	{0x6B, 0, 0, 0, 0},
9063 	{0x6C, 0, 0, 0, 0},
9064 	{0x6D, 0x1, 0x1, 0, 0},
9065 	{0x6E, 0, 0, 0, 0},
9066 	{0x6F, 0, 0, 0, 0},
9067 	{0x70, 0x60, 0x60, 0, 0},
9068 	{0x71, 0x66, 0x66, 0, 0},
9069 	{0x72, 0xc, 0xc, 0, 0},
9070 	{0x73, 0x66, 0x66, 0, 0},
9071 	{0x74, 0x8f, 0x8f, 1, 1},
9072 	{0x75, 0, 0, 0, 0},
9073 	{0x76, 0xcc, 0xcc, 0, 0},
9074 	{0x77, 0x1, 0x1, 0, 0},
9075 	{0x78, 0x66, 0x66, 0, 0},
9076 	{0x79, 0x66, 0x66, 0, 0},
9077 	{0x7A, 0, 0, 0, 0},
9078 	{0x7B, 0, 0, 0, 0},
9079 	{0x7C, 0, 0, 0, 0},
9080 	{0x7D, 0, 0, 0, 0},
9081 	{0x7E, 0, 0, 0, 0},
9082 	{0x7F, 0, 0, 0, 0},
9083 	{0x80, 0, 0, 0, 0},
9084 	{0x81, 0, 0, 0, 0},
9085 	{0x82, 0, 0, 0, 0},
9086 	{0x83, 0, 0, 0, 0},
9087 	{0x84, 0, 0, 0, 0},
9088 	{0x85, 0xff, 0xff, 0, 0},
9089 	{0x86, 0, 0, 0, 0},
9090 	{0x87, 0, 0, 0, 0},
9091 	{0x88, 0, 0, 0, 0},
9092 	{0x89, 0, 0, 0, 0},
9093 	{0x8A, 0, 0, 0, 0},
9094 	{0x8B, 0, 0, 0, 0},
9095 	{0x8C, 0, 0, 0, 0},
9096 	{0x8D, 0, 0, 0, 0},
9097 	{0x8E, 0, 0, 0, 0},
9098 	{0x8F, 0, 0, 0, 0},
9099 	{0x90, 0, 0, 0, 0},
9100 	{0x91, 0, 0, 0, 0},
9101 	{0x92, 0, 0, 0, 0},
9102 	{0x93, 0, 0, 0, 0},
9103 	{0x94, 0, 0, 0, 0},
9104 	{0x95, 0, 0, 0, 0},
9105 	{0x96, 0, 0, 0, 0},
9106 	{0x97, 0, 0, 0, 0},
9107 	{0x98, 0, 0, 0, 0},
9108 	{0x99, 0, 0, 0, 0},
9109 	{0x9A, 0, 0, 0, 0},
9110 	{0x9B, 0, 0, 0, 0},
9111 	{0x9C, 0, 0, 0, 0},
9112 	{0x9D, 0, 0, 0, 0},
9113 	{0x9E, 0, 0, 0, 0},
9114 	{0x9F, 0x6, 0x6, 0, 0},
9115 	{0xA0, 0x66, 0x66, 0, 0},
9116 	{0xA1, 0x66, 0x66, 0, 0},
9117 	{0xA2, 0x66, 0x66, 0, 0},
9118 	{0xA3, 0x66, 0x66, 0, 0},
9119 	{0xA4, 0x66, 0x66, 0, 0},
9120 	{0xA5, 0x66, 0x66, 0, 0},
9121 	{0xA6, 0x66, 0x66, 0, 0},
9122 	{0xA7, 0x66, 0x66, 0, 0},
9123 	{0xA8, 0x66, 0x66, 0, 0},
9124 	{0xA9, 0x66, 0x66, 0, 0},
9125 	{0xAA, 0x66, 0x66, 0, 0},
9126 	{0xAB, 0x66, 0x66, 0, 0},
9127 	{0xAC, 0x66, 0x66, 0, 0},
9128 	{0xAD, 0x66, 0x66, 0, 0},
9129 	{0xAE, 0x66, 0x66, 0, 0},
9130 	{0xAF, 0x66, 0x66, 0, 0},
9131 	{0xB0, 0x66, 0x66, 0, 0},
9132 	{0xB1, 0x66, 0x66, 0, 0},
9133 	{0xB2, 0x66, 0x66, 0, 0},
9134 	{0xB3, 0xa, 0xa, 0, 0},
9135 	{0xB4, 0, 0, 0, 0},
9136 	{0xB5, 0, 0, 0, 0},
9137 	{0xB6, 0, 0, 0, 0},
9138 	{0xFFFF, 0, 0, 0, 0}
9139 };
9140 
9141 static struct radio_regs regs_TX_2056_rev5[] = {
9142 	{0x02, 0, 0, 0, 0},
9143 	{0x03, 0, 0, 0, 0},
9144 	{0x04, 0, 0, 0, 0},
9145 	{0x05, 0, 0, 0, 0},
9146 	{0x06, 0, 0, 0, 0},
9147 	{0x07, 0, 0, 0, 0},
9148 	{0x08, 0, 0, 0, 0},
9149 	{0x09, 0, 0, 0, 0},
9150 	{0x0A, 0, 0, 0, 0},
9151 	{0x0B, 0, 0, 0, 0},
9152 	{0x0C, 0, 0, 0, 0},
9153 	{0x0D, 0, 0, 0, 0},
9154 	{0x0E, 0, 0, 0, 0},
9155 	{0x0F, 0, 0, 0, 0},
9156 	{0x10, 0, 0, 0, 0},
9157 	{0x11, 0, 0, 0, 0},
9158 	{0x12, 0, 0, 0, 0},
9159 	{0x13, 0, 0, 0, 0},
9160 	{0x14, 0, 0, 0, 0},
9161 	{0x15, 0, 0, 0, 0},
9162 	{0x16, 0, 0, 0, 0},
9163 	{0x17, 0, 0, 0, 0},
9164 	{0x18, 0, 0, 0, 0},
9165 	{0x19, 0, 0, 0, 0},
9166 	{0x1A, 0, 0, 0, 0},
9167 	{0x1B, 0, 0, 0, 0},
9168 	{0x1C, 0, 0, 0, 0},
9169 	{0x1D, 0, 0, 0, 0},
9170 	{0x1E, 0, 0, 0, 0},
9171 	{0x1F, 0, 0, 0, 0},
9172 	{0x20, 0, 0, 0, 0},
9173 	{0x21, 0x88, 0x88, 0, 0},
9174 	{0x22, 0x88, 0x88, 0, 0},
9175 	{0x23, 0x88, 0x88, 0, 0},
9176 	{0x24, 0x88, 0x88, 0, 0},
9177 	{0x25, 0xc, 0xc, 0, 0},
9178 	{0x26, 0, 0, 0, 0},
9179 	{0x27, 0x3, 0x3, 0, 0},
9180 	{0x28, 0, 0, 0, 0},
9181 	{0x29, 0x3, 0x3, 0, 0},
9182 	{0x2A, 0x37, 0x37, 0, 0},
9183 	{0x2B, 0x3, 0x3, 0, 0},
9184 	{0x2C, 0, 0, 0, 0},
9185 	{0x2D, 0, 0, 0, 0},
9186 	{0x2E, 0x1, 0x1, 0, 0},
9187 	{0x2F, 0x1, 0x1, 0, 0},
9188 	{0x30, 0, 0, 0, 0},
9189 	{0x31, 0, 0, 0, 0},
9190 	{0x32, 0, 0, 0, 0},
9191 	{0x33, 0x11, 0x11, 0, 0},
9192 	{0x34, 0x11, 0x11, 0, 0},
9193 	{0x35, 0, 0, 0, 0},
9194 	{0x36, 0, 0, 0, 0},
9195 	{0x37, 0x3, 0x3, 0, 0},
9196 	{0x38, 0xf, 0xf, 0, 0},
9197 	{0x39, 0, 0, 0, 0},
9198 	{0x3A, 0x2d, 0x2d, 0, 0},
9199 	{0x3B, 0, 0, 0, 0},
9200 	{0x3C, 0x6e, 0x6e, 0, 0},
9201 	{0x3D, 0xf0, 0xf0, 1, 1},
9202 	{0x3E, 0, 0, 0, 0},
9203 	{0x3F, 0, 0, 0, 0},
9204 	{0x40, 0, 0, 0, 0},
9205 	{0x41, 0x3, 0x3, 0, 0},
9206 	{0x42, 0x3, 0x3, 0, 0},
9207 	{0x43, 0, 0, 0, 0},
9208 	{0x44, 0x1e, 0x1e, 0, 0},
9209 	{0x45, 0, 0, 0, 0},
9210 	{0x46, 0x6e, 0x6e, 0, 0},
9211 	{0x47, 0xf0, 0xf0, 1, 1},
9212 	{0x48, 0, 0, 0, 0},
9213 	{0x49, 0x2, 0x2, 0, 0},
9214 	{0x4A, 0xff, 0xff, 1, 1},
9215 	{0x4B, 0xc, 0xc, 0, 0},
9216 	{0x4C, 0, 0, 0, 0},
9217 	{0x4D, 0x38, 0x38, 0, 0},
9218 	{0x4E, 0x70, 0x70, 1, 1},
9219 	{0x4F, 0x2, 0x2, 0, 0},
9220 	{0x50, 0x88, 0x88, 0, 0},
9221 	{0x51, 0xc, 0xc, 0, 0},
9222 	{0x52, 0, 0, 0, 0},
9223 	{0x53, 0x8, 0x8, 0, 0},
9224 	{0x54, 0x70, 0x70, 1, 1},
9225 	{0x55, 0x2, 0x2, 0, 0},
9226 	{0x56, 0xff, 0xff, 1, 1},
9227 	{0x57, 0, 0, 0, 0},
9228 	{0x58, 0x83, 0x83, 0, 0},
9229 	{0x59, 0x77, 0x77, 1, 1},
9230 	{0x5A, 0, 0, 0, 0},
9231 	{0x5B, 0x2, 0x2, 0, 0},
9232 	{0x5C, 0x88, 0x88, 0, 0},
9233 	{0x5D, 0, 0, 0, 0},
9234 	{0x5E, 0x8, 0x8, 0, 0},
9235 	{0x5F, 0x77, 0x77, 1, 1},
9236 	{0x60, 0x1, 0x1, 0, 0},
9237 	{0x61, 0, 0, 0, 0},
9238 	{0x62, 0x7, 0x7, 0, 0},
9239 	{0x63, 0, 0, 0, 0},
9240 	{0x64, 0x7, 0x7, 0, 0},
9241 	{0x65, 0, 0, 0, 0},
9242 	{0x66, 0, 0, 0, 0},
9243 	{0x67, 0, 0, 1, 1},
9244 	{0x68, 0, 0, 0, 0},
9245 	{0x69, 0xa, 0xa, 0, 0},
9246 	{0x6A, 0, 0, 0, 0},
9247 	{0x6B, 0, 0, 0, 0},
9248 	{0x6C, 0, 0, 0, 0},
9249 	{0x6D, 0, 0, 0, 0},
9250 	{0x6E, 0, 0, 0, 0},
9251 	{0x6F, 0, 0, 0, 0},
9252 	{0x70, 0, 0, 0, 0},
9253 	{0x71, 0x2, 0x2, 0, 0},
9254 	{0x72, 0, 0, 0, 0},
9255 	{0x73, 0, 0, 0, 0},
9256 	{0x74, 0xe, 0xe, 0, 0},
9257 	{0x75, 0xe, 0xe, 0, 0},
9258 	{0x76, 0xe, 0xe, 0, 0},
9259 	{0x77, 0x13, 0x13, 0, 0},
9260 	{0x78, 0x13, 0x13, 0, 0},
9261 	{0x79, 0x1b, 0x1b, 0, 0},
9262 	{0x7A, 0x1b, 0x1b, 0, 0},
9263 	{0x7B, 0x55, 0x55, 0, 0},
9264 	{0x7C, 0x5b, 0x5b, 0, 0},
9265 	{0x7D, 0, 0, 0, 0},
9266 	{0x7E, 0, 0, 0, 0},
9267 	{0x7F, 0, 0, 0, 0},
9268 	{0x80, 0, 0, 0, 0},
9269 	{0x81, 0, 0, 0, 0},
9270 	{0x82, 0, 0, 0, 0},
9271 	{0x83, 0, 0, 0, 0},
9272 	{0x84, 0, 0, 0, 0},
9273 	{0x85, 0, 0, 0, 0},
9274 	{0x86, 0, 0, 0, 0},
9275 	{0x87, 0, 0, 0, 0},
9276 	{0x88, 0, 0, 0, 0},
9277 	{0x89, 0, 0, 0, 0},
9278 	{0x8A, 0, 0, 0, 0},
9279 	{0x8B, 0, 0, 0, 0},
9280 	{0x8C, 0, 0, 0, 0},
9281 	{0x8D, 0, 0, 0, 0},
9282 	{0x8E, 0, 0, 0, 0},
9283 	{0x8F, 0, 0, 0, 0},
9284 	{0x90, 0, 0, 0, 0},
9285 	{0x91, 0, 0, 0, 0},
9286 	{0x92, 0, 0, 0, 0},
9287 	{0x93, 0x70, 0x70, 0, 0},
9288 	{0x94, 0x70, 0x70, 0, 0},
9289 	{0x95, 0x71, 0x71, 1, 1},
9290 	{0x96, 0x71, 0x71, 1, 1},
9291 	{0x97, 0x72, 0x72, 1, 1},
9292 	{0x98, 0x73, 0x73, 1, 1},
9293 	{0x99, 0x74, 0x74, 1, 1},
9294 	{0x9A, 0x75, 0x75, 1, 1},
9295 	{0xFFFF, 0, 0, 0, 0}
9296 };
9297 
9298 static struct radio_regs regs_RX_2056_rev5[] = {
9299 	{0x02, 0, 0, 0, 0},
9300 	{0x03, 0, 0, 0, 0},
9301 	{0x04, 0, 0, 0, 0},
9302 	{0x05, 0, 0, 0, 0},
9303 	{0x06, 0, 0, 0, 0},
9304 	{0x07, 0, 0, 0, 0},
9305 	{0x08, 0, 0, 0, 0},
9306 	{0x09, 0, 0, 0, 0},
9307 	{0x0A, 0, 0, 0, 0},
9308 	{0x0B, 0, 0, 0, 0},
9309 	{0x0C, 0, 0, 0, 0},
9310 	{0x0D, 0, 0, 0, 0},
9311 	{0x0E, 0, 0, 0, 0},
9312 	{0x0F, 0, 0, 0, 0},
9313 	{0x10, 0, 0, 0, 0},
9314 	{0x11, 0, 0, 0, 0},
9315 	{0x12, 0, 0, 0, 0},
9316 	{0x13, 0, 0, 0, 0},
9317 	{0x14, 0, 0, 0, 0},
9318 	{0x15, 0, 0, 0, 0},
9319 	{0x16, 0, 0, 0, 0},
9320 	{0x17, 0, 0, 0, 0},
9321 	{0x18, 0, 0, 0, 0},
9322 	{0x19, 0, 0, 0, 0},
9323 	{0x1A, 0, 0, 0, 0},
9324 	{0x1B, 0, 0, 0, 0},
9325 	{0x1C, 0, 0, 0, 0},
9326 	{0x1D, 0, 0, 0, 0},
9327 	{0x1E, 0, 0, 0, 0},
9328 	{0x1F, 0, 0, 0, 0},
9329 	{0x20, 0x3, 0x3, 0, 0},
9330 	{0x21, 0, 0, 0, 0},
9331 	{0x22, 0, 0, 0, 0},
9332 	{0x23, 0x90, 0x90, 0, 0},
9333 	{0x24, 0x55, 0x55, 0, 0},
9334 	{0x25, 0x15, 0x15, 0, 0},
9335 	{0x26, 0x5, 0x5, 0, 0},
9336 	{0x27, 0x15, 0x15, 0, 0},
9337 	{0x28, 0x5, 0x5, 0, 0},
9338 	{0x29, 0x20, 0x20, 0, 0},
9339 	{0x2A, 0x11, 0x11, 0, 0},
9340 	{0x2B, 0x90, 0x90, 0, 0},
9341 	{0x2C, 0, 0, 0, 0},
9342 	{0x2D, 0x88, 0x88, 0, 0},
9343 	{0x2E, 0x32, 0x32, 0, 0},
9344 	{0x2F, 0x77, 0x77, 0, 0},
9345 	{0x30, 0x17, 0x17, 1, 1},
9346 	{0x31, 0xff, 0xff, 1, 1},
9347 	{0x32, 0x20, 0x20, 0, 0},
9348 	{0x33, 0, 0, 0, 0},
9349 	{0x34, 0x88, 0x88, 0, 0},
9350 	{0x35, 0x32, 0x32, 0, 0},
9351 	{0x36, 0x77, 0x77, 0, 0},
9352 	{0x37, 0x17, 0x17, 1, 1},
9353 	{0x38, 0xf0, 0xf0, 1, 1},
9354 	{0x39, 0x20, 0x20, 0, 0},
9355 	{0x3A, 0x8, 0x8, 0, 0},
9356 	{0x3B, 0x55, 0x55, 1, 1},
9357 	{0x3C, 0, 0, 0, 0},
9358 	{0x3D, 0x88, 0x88, 1, 1},
9359 	{0x3E, 0, 0, 0, 0},
9360 	{0x3F, 0, 0, 1, 1},
9361 	{0x40, 0x7, 0x7, 1, 1},
9362 	{0x41, 0x6, 0x6, 0, 0},
9363 	{0x42, 0x4, 0x4, 0, 0},
9364 	{0x43, 0, 0, 0, 0},
9365 	{0x44, 0x8, 0x8, 0, 0},
9366 	{0x45, 0x55, 0x55, 1, 1},
9367 	{0x46, 0, 0, 0, 0},
9368 	{0x47, 0x11, 0x11, 0, 0},
9369 	{0x48, 0, 0, 0, 0},
9370 	{0x49, 0, 0, 1, 1},
9371 	{0x4A, 0x7, 0x7, 0, 0},
9372 	{0x4B, 0x6, 0x6, 0, 0},
9373 	{0x4C, 0x4, 0x4, 0, 0},
9374 	{0x4D, 0, 0, 0, 0},
9375 	{0x4E, 0, 0, 0, 0},
9376 	{0x4F, 0x26, 0x26, 1, 1},
9377 	{0x50, 0x26, 0x26, 1, 1},
9378 	{0x51, 0xf, 0xf, 1, 1},
9379 	{0x52, 0xf, 0xf, 1, 1},
9380 	{0x53, 0x44, 0x44, 0, 0},
9381 	{0x54, 0, 0, 0, 0},
9382 	{0x55, 0, 0, 0, 0},
9383 	{0x56, 0x8, 0x8, 0, 0},
9384 	{0x57, 0x8, 0x8, 0, 0},
9385 	{0x58, 0x7, 0x7, 0, 0},
9386 	{0x59, 0x22, 0x22, 0, 0},
9387 	{0x5A, 0x22, 0x22, 0, 0},
9388 	{0x5B, 0x2, 0x2, 0, 0},
9389 	{0x5C, 0x4, 0x4, 1, 1},
9390 	{0x5D, 0x7, 0x7, 0, 0},
9391 	{0x5E, 0x55, 0x55, 0, 0},
9392 	{0x5F, 0x23, 0x23, 0, 0},
9393 	{0x60, 0x41, 0x41, 0, 0},
9394 	{0x61, 0x1, 0x1, 0, 0},
9395 	{0x62, 0xa, 0xa, 0, 0},
9396 	{0x63, 0, 0, 0, 0},
9397 	{0x64, 0, 0, 0, 0},
9398 	{0x65, 0, 0, 0, 0},
9399 	{0x66, 0, 0, 0, 0},
9400 	{0x67, 0, 0, 0, 0},
9401 	{0x68, 0, 0, 0, 0},
9402 	{0x69, 0, 0, 0, 0},
9403 	{0x6A, 0, 0, 0, 0},
9404 	{0x6B, 0xc, 0xc, 0, 0},
9405 	{0x6C, 0, 0, 0, 0},
9406 	{0x6D, 0, 0, 0, 0},
9407 	{0x6E, 0, 0, 0, 0},
9408 	{0x6F, 0, 0, 0, 0},
9409 	{0x70, 0, 0, 0, 0},
9410 	{0x71, 0, 0, 0, 0},
9411 	{0x72, 0x22, 0x22, 0, 0},
9412 	{0x73, 0x22, 0x22, 0, 0},
9413 	{0x74, 0, 0, 1, 1},
9414 	{0x75, 0xa, 0xa, 0, 0},
9415 	{0x76, 0x1, 0x1, 0, 0},
9416 	{0x77, 0x22, 0x22, 0, 0},
9417 	{0x78, 0x30, 0x30, 0, 0},
9418 	{0x79, 0, 0, 0, 0},
9419 	{0x7A, 0, 0, 0, 0},
9420 	{0x7B, 0, 0, 0, 0},
9421 	{0x7C, 0, 0, 0, 0},
9422 	{0x7D, 0, 0, 0, 0},
9423 	{0x7E, 0, 0, 0, 0},
9424 	{0x7F, 0, 0, 0, 0},
9425 	{0x80, 0, 0, 0, 0},
9426 	{0x81, 0, 0, 0, 0},
9427 	{0x82, 0, 0, 0, 0},
9428 	{0x83, 0, 0, 0, 0},
9429 	{0x84, 0, 0, 0, 0},
9430 	{0x85, 0, 0, 0, 0},
9431 	{0x86, 0, 0, 0, 0},
9432 	{0x87, 0, 0, 0, 0},
9433 	{0x88, 0, 0, 0, 0},
9434 	{0x89, 0, 0, 0, 0},
9435 	{0x8A, 0, 0, 0, 0},
9436 	{0x8B, 0, 0, 0, 0},
9437 	{0x8C, 0, 0, 0, 0},
9438 	{0x8D, 0, 0, 0, 0},
9439 	{0x8E, 0, 0, 0, 0},
9440 	{0x8F, 0, 0, 0, 0},
9441 	{0x90, 0, 0, 0, 0},
9442 	{0x91, 0, 0, 0, 0},
9443 	{0x92, 0, 0, 0, 0},
9444 	{0x93, 0, 0, 0, 0},
9445 	{0x94, 0, 0, 0, 0},
9446 	{0xFFFF, 0, 0, 0, 0}
9447 };
9448 
9449 static struct radio_regs regs_SYN_2056_rev6[] = {
9450 	{0x02, 0, 0, 0, 0},
9451 	{0x03, 0, 0, 0, 0},
9452 	{0x04, 0, 0, 0, 0},
9453 	{0x05, 0, 0, 0, 0},
9454 	{0x06, 0, 0, 0, 0},
9455 	{0x07, 0, 0, 0, 0},
9456 	{0x08, 0, 0, 0, 0},
9457 	{0x09, 0x1, 0x1, 0, 0},
9458 	{0x0A, 0, 0, 0, 0},
9459 	{0x0B, 0, 0, 0, 0},
9460 	{0x0C, 0, 0, 0, 0},
9461 	{0x0D, 0, 0, 0, 0},
9462 	{0x0E, 0, 0, 0, 0},
9463 	{0x0F, 0, 0, 0, 0},
9464 	{0x10, 0, 0, 0, 0},
9465 	{0x11, 0, 0, 0, 0},
9466 	{0x12, 0, 0, 0, 0},
9467 	{0x13, 0, 0, 0, 0},
9468 	{0x14, 0, 0, 0, 0},
9469 	{0x15, 0, 0, 0, 0},
9470 	{0x16, 0, 0, 0, 0},
9471 	{0x17, 0, 0, 0, 0},
9472 	{0x18, 0, 0, 0, 0},
9473 	{0x19, 0, 0, 0, 0},
9474 	{0x1A, 0, 0, 0, 0},
9475 	{0x1B, 0, 0, 0, 0},
9476 	{0x1C, 0, 0, 0, 0},
9477 	{0x1D, 0, 0, 0, 0},
9478 	{0x1E, 0, 0, 0, 0},
9479 	{0x1F, 0, 0, 0, 0},
9480 	{0x20, 0, 0, 0, 0},
9481 	{0x21, 0, 0, 0, 0},
9482 	{0x22, 0x60, 0x60, 0, 0},
9483 	{0x23, 0x6, 0x6, 0, 0},
9484 	{0x24, 0xc, 0xc, 0, 0},
9485 	{0x25, 0, 0, 0, 0},
9486 	{0x26, 0, 0, 0, 0},
9487 	{0x27, 0, 0, 0, 0},
9488 	{0x28, 0x1, 0x1, 0, 0},
9489 	{0x29, 0, 0, 0, 0},
9490 	{0x2A, 0, 0, 0, 0},
9491 	{0x2B, 0, 0, 0, 0},
9492 	{0x2C, 0, 0, 0, 0},
9493 	{0x2D, 0, 0, 0, 0},
9494 	{0x2E, 0, 0, 0, 0},
9495 	{0x2F, 0x1f, 0x1f, 0, 0},
9496 	{0x30, 0x15, 0x15, 0, 0},
9497 	{0x31, 0xf, 0xf, 0, 0},
9498 	{0x32, 0, 0, 0, 0},
9499 	{0x33, 0, 0, 0, 0},
9500 	{0x34, 0, 0, 0, 0},
9501 	{0x35, 0, 0, 0, 0},
9502 	{0x36, 0, 0, 0, 0},
9503 	{0x37, 0, 0, 0, 0},
9504 	{0x38, 0, 0, 0, 0},
9505 	{0x39, 0, 0, 0, 0},
9506 	{0x3A, 0, 0, 0, 0},
9507 	{0x3B, 0, 0, 0, 0},
9508 	{0x3C, 0x13, 0x13, 0, 0},
9509 	{0x3D, 0xf, 0xf, 0, 0},
9510 	{0x3E, 0x18, 0x18, 0, 0},
9511 	{0x3F, 0, 0, 0, 0},
9512 	{0x40, 0, 0, 0, 0},
9513 	{0x41, 0x20, 0x20, 0, 0},
9514 	{0x42, 0x20, 0x20, 0, 0},
9515 	{0x43, 0, 0, 0, 0},
9516 	{0x44, 0x77, 0x77, 0, 0},
9517 	{0x45, 0x7, 0x7, 0, 0},
9518 	{0x46, 0x1, 0x1, 0, 0},
9519 	{0x47, 0x4, 0x4, 0, 0},
9520 	{0x48, 0xf, 0xf, 0, 0},
9521 	{0x49, 0x30, 0x30, 0, 0},
9522 	{0x4A, 0x32, 0x32, 0, 0},
9523 	{0x4B, 0xd, 0xd, 0, 0},
9524 	{0x4C, 0xd, 0xd, 0, 0},
9525 	{0x4D, 0x4, 0x4, 0, 0},
9526 	{0x4E, 0x6, 0x6, 0, 0},
9527 	{0x4F, 0x1, 0x1, 0, 0},
9528 	{0x50, 0x1c, 0x1c, 0, 0},
9529 	{0x51, 0x2, 0x2, 0, 0},
9530 	{0x52, 0x2, 0x2, 0, 0},
9531 	{0x53, 0xf7, 0xf7, 1, 1},
9532 	{0x54, 0xb4, 0xb4, 0, 0},
9533 	{0x55, 0xd2, 0xd2, 0, 0},
9534 	{0x56, 0, 0, 0, 0},
9535 	{0x57, 0, 0, 0, 0},
9536 	{0x58, 0x4, 0x4, 0, 0},
9537 	{0x59, 0x96, 0x96, 0, 0},
9538 	{0x5A, 0x3e, 0x3e, 0, 0},
9539 	{0x5B, 0x3e, 0x3e, 0, 0},
9540 	{0x5C, 0x13, 0x13, 0, 0},
9541 	{0x5D, 0x2, 0x2, 0, 0},
9542 	{0x5E, 0, 0, 0, 0},
9543 	{0x5F, 0x7, 0x7, 0, 0},
9544 	{0x60, 0x7, 0x7, 1, 1},
9545 	{0x61, 0x8, 0x8, 0, 0},
9546 	{0x62, 0x3, 0x3, 0, 0},
9547 	{0x63, 0, 0, 0, 0},
9548 	{0x64, 0, 0, 0, 0},
9549 	{0x65, 0, 0, 0, 0},
9550 	{0x66, 0, 0, 0, 0},
9551 	{0x67, 0, 0, 0, 0},
9552 	{0x68, 0x40, 0x40, 0, 0},
9553 	{0x69, 0, 0, 0, 0},
9554 	{0x6A, 0, 0, 0, 0},
9555 	{0x6B, 0, 0, 0, 0},
9556 	{0x6C, 0, 0, 0, 0},
9557 	{0x6D, 0x1, 0x1, 0, 0},
9558 	{0x6E, 0, 0, 0, 0},
9559 	{0x6F, 0, 0, 0, 0},
9560 	{0x70, 0x60, 0x60, 0, 0},
9561 	{0x71, 0x66, 0x66, 0, 0},
9562 	{0x72, 0xc, 0xc, 0, 0},
9563 	{0x73, 0x66, 0x66, 0, 0},
9564 	{0x74, 0x8f, 0x8f, 1, 1},
9565 	{0x75, 0, 0, 0, 0},
9566 	{0x76, 0xcc, 0xcc, 0, 0},
9567 	{0x77, 0x1, 0x1, 0, 0},
9568 	{0x78, 0x66, 0x66, 0, 0},
9569 	{0x79, 0x66, 0x66, 0, 0},
9570 	{0x7A, 0, 0, 0, 0},
9571 	{0x7B, 0, 0, 0, 0},
9572 	{0x7C, 0, 0, 0, 0},
9573 	{0x7D, 0, 0, 0, 0},
9574 	{0x7E, 0, 0, 0, 0},
9575 	{0x7F, 0, 0, 0, 0},
9576 	{0x80, 0, 0, 0, 0},
9577 	{0x81, 0, 0, 0, 0},
9578 	{0x82, 0, 0, 0, 0},
9579 	{0x83, 0, 0, 0, 0},
9580 	{0x84, 0, 0, 0, 0},
9581 	{0x85, 0xff, 0xff, 0, 0},
9582 	{0x86, 0, 0, 0, 0},
9583 	{0x87, 0, 0, 0, 0},
9584 	{0x88, 0, 0, 0, 0},
9585 	{0x89, 0, 0, 0, 0},
9586 	{0x8A, 0, 0, 0, 0},
9587 	{0x8B, 0, 0, 0, 0},
9588 	{0x8C, 0, 0, 0, 0},
9589 	{0x8D, 0, 0, 0, 0},
9590 	{0x8E, 0, 0, 0, 0},
9591 	{0x8F, 0, 0, 0, 0},
9592 	{0x90, 0, 0, 0, 0},
9593 	{0x91, 0, 0, 0, 0},
9594 	{0x92, 0, 0, 0, 0},
9595 	{0x93, 0, 0, 0, 0},
9596 	{0x94, 0, 0, 0, 0},
9597 	{0x95, 0, 0, 0, 0},
9598 	{0x96, 0, 0, 0, 0},
9599 	{0x97, 0, 0, 0, 0},
9600 	{0x98, 0, 0, 0, 0},
9601 	{0x99, 0, 0, 0, 0},
9602 	{0x9A, 0, 0, 0, 0},
9603 	{0x9B, 0, 0, 0, 0},
9604 	{0x9C, 0, 0, 0, 0},
9605 	{0x9D, 0, 0, 0, 0},
9606 	{0x9E, 0, 0, 0, 0},
9607 	{0x9F, 0x6, 0x6, 0, 0},
9608 	{0xA0, 0x66, 0x66, 0, 0},
9609 	{0xA1, 0x66, 0x66, 0, 0},
9610 	{0xA2, 0x66, 0x66, 0, 0},
9611 	{0xA3, 0x66, 0x66, 0, 0},
9612 	{0xA4, 0x66, 0x66, 0, 0},
9613 	{0xA5, 0x66, 0x66, 0, 0},
9614 	{0xA6, 0x66, 0x66, 0, 0},
9615 	{0xA7, 0x66, 0x66, 0, 0},
9616 	{0xA8, 0x66, 0x66, 0, 0},
9617 	{0xA9, 0x66, 0x66, 0, 0},
9618 	{0xAA, 0x66, 0x66, 0, 0},
9619 	{0xAB, 0x66, 0x66, 0, 0},
9620 	{0xAC, 0x66, 0x66, 0, 0},
9621 	{0xAD, 0x66, 0x66, 0, 0},
9622 	{0xAE, 0x66, 0x66, 0, 0},
9623 	{0xAF, 0x66, 0x66, 0, 0},
9624 	{0xB0, 0x66, 0x66, 0, 0},
9625 	{0xB1, 0x66, 0x66, 0, 0},
9626 	{0xB2, 0x66, 0x66, 0, 0},
9627 	{0xB3, 0xa, 0xa, 0, 0},
9628 	{0xB4, 0, 0, 0, 0},
9629 	{0xB5, 0, 0, 0, 0},
9630 	{0xB6, 0, 0, 0, 0},
9631 	{0xFFFF, 0, 0, 0, 0}
9632 };
9633 
9634 static struct radio_regs regs_TX_2056_rev6[] = {
9635 	{0x02, 0, 0, 0, 0},
9636 	{0x03, 0, 0, 0, 0},
9637 	{0x04, 0, 0, 0, 0},
9638 	{0x05, 0, 0, 0, 0},
9639 	{0x06, 0, 0, 0, 0},
9640 	{0x07, 0, 0, 0, 0},
9641 	{0x08, 0, 0, 0, 0},
9642 	{0x09, 0, 0, 0, 0},
9643 	{0x0A, 0, 0, 0, 0},
9644 	{0x0B, 0, 0, 0, 0},
9645 	{0x0C, 0, 0, 0, 0},
9646 	{0x0D, 0, 0, 0, 0},
9647 	{0x0E, 0, 0, 0, 0},
9648 	{0x0F, 0, 0, 0, 0},
9649 	{0x10, 0, 0, 0, 0},
9650 	{0x11, 0, 0, 0, 0},
9651 	{0x12, 0, 0, 0, 0},
9652 	{0x13, 0, 0, 0, 0},
9653 	{0x14, 0, 0, 0, 0},
9654 	{0x15, 0, 0, 0, 0},
9655 	{0x16, 0, 0, 0, 0},
9656 	{0x17, 0, 0, 0, 0},
9657 	{0x18, 0, 0, 0, 0},
9658 	{0x19, 0, 0, 0, 0},
9659 	{0x1A, 0, 0, 0, 0},
9660 	{0x1B, 0, 0, 0, 0},
9661 	{0x1C, 0, 0, 0, 0},
9662 	{0x1D, 0, 0, 0, 0},
9663 	{0x1E, 0, 0, 0, 0},
9664 	{0x1F, 0, 0, 0, 0},
9665 	{0x20, 0, 0, 0, 0},
9666 	{0x21, 0x88, 0x88, 0, 0},
9667 	{0x22, 0x88, 0x88, 0, 0},
9668 	{0x23, 0x88, 0x88, 0, 0},
9669 	{0x24, 0x88, 0x88, 0, 0},
9670 	{0x25, 0xc, 0xc, 0, 0},
9671 	{0x26, 0, 0, 0, 0},
9672 	{0x27, 0x3, 0x3, 0, 0},
9673 	{0x28, 0, 0, 0, 0},
9674 	{0x29, 0x3, 0x3, 0, 0},
9675 	{0x2A, 0x37, 0x37, 0, 0},
9676 	{0x2B, 0x3, 0x3, 0, 0},
9677 	{0x2C, 0, 0, 0, 0},
9678 	{0x2D, 0, 0, 0, 0},
9679 	{0x2E, 0x1, 0x1, 0, 0},
9680 	{0x2F, 0x1, 0x1, 0, 0},
9681 	{0x30, 0, 0, 0, 0},
9682 	{0x31, 0, 0, 0, 0},
9683 	{0x32, 0, 0, 0, 0},
9684 	{0x33, 0x11, 0x11, 0, 0},
9685 	{0x34, 0xee, 0xee, 1, 1},
9686 	{0x35, 0, 0, 0, 0},
9687 	{0x36, 0, 0, 0, 0},
9688 	{0x37, 0x3, 0x3, 0, 0},
9689 	{0x38, 0x50, 0x50, 1, 1},
9690 	{0x39, 0, 0, 0, 0},
9691 	{0x3A, 0x50, 0x50, 1, 1},
9692 	{0x3B, 0, 0, 0, 0},
9693 	{0x3C, 0x6e, 0x6e, 0, 0},
9694 	{0x3D, 0xf0, 0xf0, 1, 1},
9695 	{0x3E, 0, 0, 0, 0},
9696 	{0x3F, 0, 0, 0, 0},
9697 	{0x40, 0, 0, 0, 0},
9698 	{0x41, 0x3, 0x3, 0, 0},
9699 	{0x42, 0x3, 0x3, 0, 0},
9700 	{0x43, 0, 0, 0, 0},
9701 	{0x44, 0x1e, 0x1e, 0, 0},
9702 	{0x45, 0, 0, 0, 0},
9703 	{0x46, 0x6e, 0x6e, 0, 0},
9704 	{0x47, 0xf0, 0xf0, 1, 1},
9705 	{0x48, 0, 0, 0, 0},
9706 	{0x49, 0x2, 0x2, 0, 0},
9707 	{0x4A, 0xff, 0xff, 1, 1},
9708 	{0x4B, 0xc, 0xc, 0, 0},
9709 	{0x4C, 0, 0, 0, 0},
9710 	{0x4D, 0x38, 0x38, 0, 0},
9711 	{0x4E, 0x70, 0x70, 1, 1},
9712 	{0x4F, 0x2, 0x2, 0, 0},
9713 	{0x50, 0x88, 0x88, 0, 0},
9714 	{0x51, 0xc, 0xc, 0, 0},
9715 	{0x52, 0, 0, 0, 0},
9716 	{0x53, 0x8, 0x8, 0, 0},
9717 	{0x54, 0x70, 0x70, 1, 1},
9718 	{0x55, 0x2, 0x2, 0, 0},
9719 	{0x56, 0xff, 0xff, 1, 1},
9720 	{0x57, 0, 0, 0, 0},
9721 	{0x58, 0x83, 0x83, 0, 0},
9722 	{0x59, 0x77, 0x77, 1, 1},
9723 	{0x5A, 0, 0, 0, 0},
9724 	{0x5B, 0x2, 0x2, 0, 0},
9725 	{0x5C, 0x88, 0x88, 0, 0},
9726 	{0x5D, 0, 0, 0, 0},
9727 	{0x5E, 0x8, 0x8, 0, 0},
9728 	{0x5F, 0x77, 0x77, 1, 1},
9729 	{0x60, 0x1, 0x1, 0, 0},
9730 	{0x61, 0, 0, 0, 0},
9731 	{0x62, 0x7, 0x7, 0, 0},
9732 	{0x63, 0, 0, 0, 0},
9733 	{0x64, 0x7, 0x7, 0, 0},
9734 	{0x65, 0, 0, 0, 0},
9735 	{0x66, 0, 0, 0, 0},
9736 	{0x67, 0, 0, 1, 1},
9737 	{0x68, 0, 0, 0, 0},
9738 	{0x69, 0xa, 0xa, 0, 0},
9739 	{0x6A, 0, 0, 0, 0},
9740 	{0x6B, 0, 0, 0, 0},
9741 	{0x6C, 0, 0, 0, 0},
9742 	{0x6D, 0, 0, 0, 0},
9743 	{0x6E, 0, 0, 0, 0},
9744 	{0x6F, 0, 0, 0, 0},
9745 	{0x70, 0, 0, 0, 0},
9746 	{0x71, 0x2, 0x2, 0, 0},
9747 	{0x72, 0, 0, 0, 0},
9748 	{0x73, 0, 0, 0, 0},
9749 	{0x74, 0xe, 0xe, 0, 0},
9750 	{0x75, 0xe, 0xe, 0, 0},
9751 	{0x76, 0xe, 0xe, 0, 0},
9752 	{0x77, 0x13, 0x13, 0, 0},
9753 	{0x78, 0x13, 0x13, 0, 0},
9754 	{0x79, 0x1b, 0x1b, 0, 0},
9755 	{0x7A, 0x1b, 0x1b, 0, 0},
9756 	{0x7B, 0x55, 0x55, 0, 0},
9757 	{0x7C, 0x5b, 0x5b, 0, 0},
9758 	{0x7D, 0x30, 0x30, 1, 1},
9759 	{0x7E, 0, 0, 0, 0},
9760 	{0x7F, 0, 0, 0, 0},
9761 	{0x80, 0, 0, 0, 0},
9762 	{0x81, 0, 0, 0, 0},
9763 	{0x82, 0, 0, 0, 0},
9764 	{0x83, 0, 0, 0, 0},
9765 	{0x84, 0, 0, 0, 0},
9766 	{0x85, 0, 0, 0, 0},
9767 	{0x86, 0, 0, 0, 0},
9768 	{0x87, 0, 0, 0, 0},
9769 	{0x88, 0, 0, 0, 0},
9770 	{0x89, 0, 0, 0, 0},
9771 	{0x8A, 0, 0, 0, 0},
9772 	{0x8B, 0, 0, 0, 0},
9773 	{0x8C, 0, 0, 0, 0},
9774 	{0x8D, 0, 0, 0, 0},
9775 	{0x8E, 0, 0, 0, 0},
9776 	{0x8F, 0, 0, 0, 0},
9777 	{0x90, 0, 0, 0, 0},
9778 	{0x91, 0, 0, 0, 0},
9779 	{0x92, 0, 0, 0, 0},
9780 	{0x93, 0x70, 0x70, 0, 0},
9781 	{0x94, 0x70, 0x70, 0, 0},
9782 	{0x95, 0x70, 0x70, 0, 0},
9783 	{0x96, 0x70, 0x70, 0, 0},
9784 	{0x97, 0x70, 0x70, 0, 0},
9785 	{0x98, 0x70, 0x70, 0, 0},
9786 	{0x99, 0x70, 0x70, 0, 0},
9787 	{0x9A, 0x70, 0x70, 0, 0},
9788 	{0xFFFF, 0, 0, 0, 0}
9789 };
9790 
9791 static struct radio_regs regs_RX_2056_rev6[] = {
9792 	{0x02, 0, 0, 0, 0},
9793 	{0x03, 0, 0, 0, 0},
9794 	{0x04, 0, 0, 0, 0},
9795 	{0x05, 0, 0, 0, 0},
9796 	{0x06, 0, 0, 0, 0},
9797 	{0x07, 0, 0, 0, 0},
9798 	{0x08, 0, 0, 0, 0},
9799 	{0x09, 0, 0, 0, 0},
9800 	{0x0A, 0, 0, 0, 0},
9801 	{0x0B, 0, 0, 0, 0},
9802 	{0x0C, 0, 0, 0, 0},
9803 	{0x0D, 0, 0, 0, 0},
9804 	{0x0E, 0, 0, 0, 0},
9805 	{0x0F, 0, 0, 0, 0},
9806 	{0x10, 0, 0, 0, 0},
9807 	{0x11, 0, 0, 0, 0},
9808 	{0x12, 0, 0, 0, 0},
9809 	{0x13, 0, 0, 0, 0},
9810 	{0x14, 0, 0, 0, 0},
9811 	{0x15, 0, 0, 0, 0},
9812 	{0x16, 0, 0, 0, 0},
9813 	{0x17, 0, 0, 0, 0},
9814 	{0x18, 0, 0, 0, 0},
9815 	{0x19, 0, 0, 0, 0},
9816 	{0x1A, 0, 0, 0, 0},
9817 	{0x1B, 0, 0, 0, 0},
9818 	{0x1C, 0, 0, 0, 0},
9819 	{0x1D, 0, 0, 0, 0},
9820 	{0x1E, 0, 0, 0, 0},
9821 	{0x1F, 0, 0, 0, 0},
9822 	{0x20, 0x3, 0x3, 0, 0},
9823 	{0x21, 0, 0, 0, 0},
9824 	{0x22, 0, 0, 0, 0},
9825 	{0x23, 0x90, 0x90, 0, 0},
9826 	{0x24, 0x55, 0x55, 0, 0},
9827 	{0x25, 0x15, 0x15, 0, 0},
9828 	{0x26, 0x5, 0x5, 0, 0},
9829 	{0x27, 0x15, 0x15, 0, 0},
9830 	{0x28, 0x5, 0x5, 0, 0},
9831 	{0x29, 0x20, 0x20, 0, 0},
9832 	{0x2A, 0x11, 0x11, 0, 0},
9833 	{0x2B, 0x90, 0x90, 0, 0},
9834 	{0x2C, 0, 0, 0, 0},
9835 	{0x2D, 0x88, 0x88, 0, 0},
9836 	{0x2E, 0x32, 0x32, 0, 0},
9837 	{0x2F, 0x77, 0x77, 0, 0},
9838 	{0x30, 0x17, 0x17, 1, 1},
9839 	{0x31, 0xff, 0xff, 1, 1},
9840 	{0x32, 0x20, 0x20, 0, 0},
9841 	{0x33, 0, 0, 0, 0},
9842 	{0x34, 0x88, 0x88, 0, 0},
9843 	{0x35, 0x32, 0x32, 0, 0},
9844 	{0x36, 0x77, 0x77, 0, 0},
9845 	{0x37, 0x17, 0x17, 1, 1},
9846 	{0x38, 0xf0, 0xf0, 1, 1},
9847 	{0x39, 0x20, 0x20, 0, 0},
9848 	{0x3A, 0x8, 0x8, 0, 0},
9849 	{0x3B, 0x55, 0x55, 1, 1},
9850 	{0x3C, 0, 0, 0, 0},
9851 	{0x3D, 0x88, 0x88, 1, 1},
9852 	{0x3E, 0, 0, 0, 0},
9853 	{0x3F, 0x44, 0x44, 0, 0},
9854 	{0x40, 0x7, 0x7, 1, 1},
9855 	{0x41, 0x6, 0x6, 0, 0},
9856 	{0x42, 0x4, 0x4, 0, 0},
9857 	{0x43, 0, 0, 0, 0},
9858 	{0x44, 0x8, 0x8, 0, 0},
9859 	{0x45, 0x55, 0x55, 1, 1},
9860 	{0x46, 0, 0, 0, 0},
9861 	{0x47, 0x11, 0x11, 0, 0},
9862 	{0x48, 0, 0, 0, 0},
9863 	{0x49, 0x44, 0x44, 0, 0},
9864 	{0x4A, 0x7, 0x7, 0, 0},
9865 	{0x4B, 0x6, 0x6, 0, 0},
9866 	{0x4C, 0x4, 0x4, 0, 0},
9867 	{0x4D, 0, 0, 0, 0},
9868 	{0x4E, 0, 0, 0, 0},
9869 	{0x4F, 0x26, 0x26, 1, 1},
9870 	{0x50, 0x26, 0x26, 1, 1},
9871 	{0x51, 0xf, 0xf, 1, 1},
9872 	{0x52, 0xf, 0xf, 1, 1},
9873 	{0x53, 0x44, 0x44, 0, 0},
9874 	{0x54, 0, 0, 0, 0},
9875 	{0x55, 0, 0, 0, 0},
9876 	{0x56, 0x8, 0x8, 0, 0},
9877 	{0x57, 0x8, 0x8, 0, 0},
9878 	{0x58, 0x7, 0x7, 0, 0},
9879 	{0x59, 0x22, 0x22, 0, 0},
9880 	{0x5A, 0x22, 0x22, 0, 0},
9881 	{0x5B, 0x2, 0x2, 0, 0},
9882 	{0x5C, 0x4, 0x4, 1, 1},
9883 	{0x5D, 0x7, 0x7, 0, 0},
9884 	{0x5E, 0x55, 0x55, 0, 0},
9885 	{0x5F, 0x23, 0x23, 0, 0},
9886 	{0x60, 0x41, 0x41, 0, 0},
9887 	{0x61, 0x1, 0x1, 0, 0},
9888 	{0x62, 0xa, 0xa, 0, 0},
9889 	{0x63, 0, 0, 0, 0},
9890 	{0x64, 0, 0, 0, 0},
9891 	{0x65, 0, 0, 0, 0},
9892 	{0x66, 0, 0, 0, 0},
9893 	{0x67, 0, 0, 0, 0},
9894 	{0x68, 0, 0, 0, 0},
9895 	{0x69, 0, 0, 0, 0},
9896 	{0x6A, 0, 0, 0, 0},
9897 	{0x6B, 0xc, 0xc, 0, 0},
9898 	{0x6C, 0, 0, 0, 0},
9899 	{0x6D, 0, 0, 0, 0},
9900 	{0x6E, 0, 0, 0, 0},
9901 	{0x6F, 0, 0, 0, 0},
9902 	{0x70, 0, 0, 0, 0},
9903 	{0x71, 0, 0, 0, 0},
9904 	{0x72, 0x22, 0x22, 0, 0},
9905 	{0x73, 0x22, 0x22, 0, 0},
9906 	{0x74, 0, 0, 1, 1},
9907 	{0x75, 0xa, 0xa, 0, 0},
9908 	{0x76, 0x1, 0x1, 0, 0},
9909 	{0x77, 0x22, 0x22, 0, 0},
9910 	{0x78, 0x30, 0x30, 0, 0},
9911 	{0x79, 0, 0, 0, 0},
9912 	{0x7A, 0, 0, 0, 0},
9913 	{0x7B, 0, 0, 0, 0},
9914 	{0x7C, 0, 0, 0, 0},
9915 	{0x7D, 0x5, 0x5, 1, 1},
9916 	{0x7E, 0, 0, 0, 0},
9917 	{0x7F, 0, 0, 0, 0},
9918 	{0x80, 0, 0, 0, 0},
9919 	{0x81, 0, 0, 0, 0},
9920 	{0x82, 0, 0, 0, 0},
9921 	{0x83, 0, 0, 0, 0},
9922 	{0x84, 0, 0, 0, 0},
9923 	{0x85, 0, 0, 0, 0},
9924 	{0x86, 0, 0, 0, 0},
9925 	{0x87, 0, 0, 0, 0},
9926 	{0x88, 0, 0, 0, 0},
9927 	{0x89, 0, 0, 0, 0},
9928 	{0x8A, 0, 0, 0, 0},
9929 	{0x8B, 0, 0, 0, 0},
9930 	{0x8C, 0, 0, 0, 0},
9931 	{0x8D, 0, 0, 0, 0},
9932 	{0x8E, 0, 0, 0, 0},
9933 	{0x8F, 0, 0, 0, 0},
9934 	{0x90, 0, 0, 0, 0},
9935 	{0x91, 0, 0, 0, 0},
9936 	{0x92, 0, 0, 0, 0},
9937 	{0x93, 0, 0, 0, 0},
9938 	{0x94, 0, 0, 0, 0},
9939 	{0xFFFF, 0, 0, 0, 0}
9940 };
9941 
9942 static struct radio_regs regs_SYN_2056_rev7[] = {
9943 	{0x02, 0, 0, 0, 0},
9944 	{0x03, 0, 0, 0, 0},
9945 	{0x04, 0, 0, 0, 0},
9946 	{0x05, 0, 0, 0, 0},
9947 	{0x06, 0, 0, 0, 0},
9948 	{0x07, 0, 0, 0, 0},
9949 	{0x08, 0, 0, 0, 0},
9950 	{0x09, 0x1, 0x1, 0, 0},
9951 	{0x0A, 0, 0, 0, 0},
9952 	{0x0B, 0, 0, 0, 0},
9953 	{0x0C, 0, 0, 0, 0},
9954 	{0x0D, 0, 0, 0, 0},
9955 	{0x0E, 0, 0, 0, 0},
9956 	{0x0F, 0, 0, 0, 0},
9957 	{0x10, 0, 0, 0, 0},
9958 	{0x11, 0, 0, 0, 0},
9959 	{0x12, 0, 0, 0, 0},
9960 	{0x13, 0, 0, 0, 0},
9961 	{0x14, 0, 0, 0, 0},
9962 	{0x15, 0, 0, 0, 0},
9963 	{0x16, 0, 0, 0, 0},
9964 	{0x17, 0, 0, 0, 0},
9965 	{0x18, 0, 0, 0, 0},
9966 	{0x19, 0, 0, 0, 0},
9967 	{0x1A, 0, 0, 0, 0},
9968 	{0x1B, 0, 0, 0, 0},
9969 	{0x1C, 0, 0, 0, 0},
9970 	{0x1D, 0, 0, 0, 0},
9971 	{0x1E, 0, 0, 0, 0},
9972 	{0x1F, 0, 0, 0, 0},
9973 	{0x20, 0, 0, 0, 0},
9974 	{0x21, 0, 0, 0, 0},
9975 	{0x22, 0x60, 0x60, 0, 0},
9976 	{0x23, 0x6, 0x6, 0, 0},
9977 	{0x24, 0xc, 0xc, 0, 0},
9978 	{0x25, 0, 0, 0, 0},
9979 	{0x26, 0, 0, 0, 0},
9980 	{0x27, 0, 0, 0, 0},
9981 	{0x28, 0x1, 0x1, 0, 0},
9982 	{0x29, 0, 0, 0, 0},
9983 	{0x2A, 0, 0, 0, 0},
9984 	{0x2B, 0, 0, 0, 0},
9985 	{0x2C, 0, 0, 0, 0},
9986 	{0x2D, 0, 0, 0, 0},
9987 	{0x2E, 0, 0, 0, 0},
9988 	{0x2F, 0x1f, 0x1f, 0, 0},
9989 	{0x30, 0x15, 0x15, 0, 0},
9990 	{0x31, 0xf, 0xf, 0, 0},
9991 	{0x32, 0, 0, 0, 0},
9992 	{0x33, 0, 0, 0, 0},
9993 	{0x34, 0, 0, 0, 0},
9994 	{0x35, 0, 0, 0, 0},
9995 	{0x36, 0, 0, 0, 0},
9996 	{0x37, 0, 0, 0, 0},
9997 	{0x38, 0, 0, 0, 0},
9998 	{0x39, 0, 0, 0, 0},
9999 	{0x3A, 0, 0, 0, 0},
10000 	{0x3B, 0, 0, 0, 0},
10001 	{0x3C, 0x13, 0x13, 0, 0},
10002 	{0x3D, 0xf, 0xf, 0, 0},
10003 	{0x3E, 0x18, 0x18, 0, 0},
10004 	{0x3F, 0, 0, 0, 0},
10005 	{0x40, 0, 0, 0, 0},
10006 	{0x41, 0x20, 0x20, 0, 0},
10007 	{0x42, 0x20, 0x20, 0, 0},
10008 	{0x43, 0, 0, 0, 0},
10009 	{0x44, 0x77, 0x77, 0, 0},
10010 	{0x45, 0x7, 0x7, 0, 0},
10011 	{0x46, 0x1, 0x1, 0, 0},
10012 	{0x47, 0x4, 0x4, 0, 0},
10013 	{0x48, 0xf, 0xf, 0, 0},
10014 	{0x49, 0x30, 0x30, 0, 0},
10015 	{0x4A, 0x32, 0x32, 0, 0},
10016 	{0x4B, 0xd, 0xd, 0, 0},
10017 	{0x4C, 0xd, 0xd, 0, 0},
10018 	{0x4D, 0x4, 0x4, 0, 0},
10019 	{0x4E, 0x6, 0x6, 0, 0},
10020 	{0x4F, 0x1, 0x1, 0, 0},
10021 	{0x50, 0x1c, 0x1c, 0, 0},
10022 	{0x51, 0x2, 0x2, 0, 0},
10023 	{0x52, 0x2, 0x2, 0, 0},
10024 	{0x53, 0xf7, 0xf7, 1, 1},
10025 	{0x54, 0xb4, 0xb4, 0, 0},
10026 	{0x55, 0xd2, 0xd2, 0, 0},
10027 	{0x56, 0, 0, 0, 0},
10028 	{0x57, 0, 0, 0, 0},
10029 	{0x58, 0x4, 0x4, 0, 0},
10030 	{0x59, 0x96, 0x96, 0, 0},
10031 	{0x5A, 0x3e, 0x3e, 0, 0},
10032 	{0x5B, 0x3e, 0x3e, 0, 0},
10033 	{0x5C, 0x13, 0x13, 0, 0},
10034 	{0x5D, 0x2, 0x2, 0, 0},
10035 	{0x5E, 0, 0, 0, 0},
10036 	{0x5F, 0x7, 0x7, 0, 0},
10037 	{0x60, 0x7, 0x7, 1, 1},
10038 	{0x61, 0x8, 0x8, 0, 0},
10039 	{0x62, 0x3, 0x3, 0, 0},
10040 	{0x63, 0, 0, 0, 0},
10041 	{0x64, 0, 0, 0, 0},
10042 	{0x65, 0, 0, 0, 0},
10043 	{0x66, 0, 0, 0, 0},
10044 	{0x67, 0, 0, 0, 0},
10045 	{0x68, 0x40, 0x40, 0, 0},
10046 	{0x69, 0, 0, 0, 0},
10047 	{0x6A, 0, 0, 0, 0},
10048 	{0x6B, 0, 0, 0, 0},
10049 	{0x6C, 0, 0, 0, 0},
10050 	{0x6D, 0x1, 0x1, 0, 0},
10051 	{0x6E, 0, 0, 0, 0},
10052 	{0x6F, 0, 0, 0, 0},
10053 	{0x70, 0x60, 0x60, 0, 0},
10054 	{0x71, 0x66, 0x66, 0, 0},
10055 	{0x72, 0xc, 0xc, 0, 0},
10056 	{0x73, 0x66, 0x66, 0, 0},
10057 	{0x74, 0x8f, 0x8f, 1, 1},
10058 	{0x75, 0, 0, 0, 0},
10059 	{0x76, 0xcc, 0xcc, 0, 0},
10060 	{0x77, 0x1, 0x1, 0, 0},
10061 	{0x78, 0x66, 0x66, 0, 0},
10062 	{0x79, 0x66, 0x66, 0, 0},
10063 	{0x7A, 0, 0, 0, 0},
10064 	{0x7B, 0, 0, 0, 0},
10065 	{0x7C, 0, 0, 0, 0},
10066 	{0x7D, 0, 0, 0, 0},
10067 	{0x7E, 0, 0, 0, 0},
10068 	{0x7F, 0, 0, 0, 0},
10069 	{0x80, 0, 0, 0, 0},
10070 	{0x81, 0, 0, 0, 0},
10071 	{0x82, 0, 0, 0, 0},
10072 	{0x83, 0, 0, 0, 0},
10073 	{0x84, 0, 0, 0, 0},
10074 	{0x85, 0xff, 0xff, 0, 0},
10075 	{0x86, 0, 0, 0, 0},
10076 	{0x87, 0, 0, 0, 0},
10077 	{0x88, 0, 0, 0, 0},
10078 	{0x89, 0, 0, 0, 0},
10079 	{0x8A, 0, 0, 0, 0},
10080 	{0x8B, 0, 0, 0, 0},
10081 	{0x8C, 0, 0, 0, 0},
10082 	{0x8D, 0, 0, 0, 0},
10083 	{0x8E, 0, 0, 0, 0},
10084 	{0x8F, 0, 0, 0, 0},
10085 	{0x90, 0, 0, 0, 0},
10086 	{0x91, 0, 0, 0, 0},
10087 	{0x92, 0, 0, 0, 0},
10088 	{0x93, 0, 0, 0, 0},
10089 	{0x94, 0, 0, 0, 0},
10090 	{0x95, 0, 0, 0, 0},
10091 	{0x96, 0, 0, 0, 0},
10092 	{0x97, 0, 0, 0, 0},
10093 	{0x98, 0, 0, 0, 0},
10094 	{0x99, 0, 0, 0, 0},
10095 	{0x9A, 0, 0, 0, 0},
10096 	{0x9B, 0, 0, 0, 0},
10097 	{0x9C, 0, 0, 0, 0},
10098 	{0x9D, 0, 0, 0, 0},
10099 	{0x9E, 0, 0, 0, 0},
10100 	{0x9F, 0x6, 0x6, 0, 0},
10101 	{0xA0, 0x66, 0x66, 0, 0},
10102 	{0xA1, 0x66, 0x66, 0, 0},
10103 	{0xA2, 0x66, 0x66, 0, 0},
10104 	{0xA3, 0x66, 0x66, 0, 0},
10105 	{0xA4, 0x66, 0x66, 0, 0},
10106 	{0xA5, 0x66, 0x66, 0, 0},
10107 	{0xA6, 0x66, 0x66, 0, 0},
10108 	{0xA7, 0x66, 0x66, 0, 0},
10109 	{0xA8, 0x66, 0x66, 0, 0},
10110 	{0xA9, 0x66, 0x66, 0, 0},
10111 	{0xAA, 0x66, 0x66, 0, 0},
10112 	{0xAB, 0x66, 0x66, 0, 0},
10113 	{0xAC, 0x66, 0x66, 0, 0},
10114 	{0xAD, 0x66, 0x66, 0, 0},
10115 	{0xAE, 0x66, 0x66, 0, 0},
10116 	{0xAF, 0x66, 0x66, 0, 0},
10117 	{0xB0, 0x66, 0x66, 0, 0},
10118 	{0xB1, 0x66, 0x66, 0, 0},
10119 	{0xB2, 0x66, 0x66, 0, 0},
10120 	{0xB3, 0xa, 0xa, 0, 0},
10121 	{0xB4, 0, 0, 0, 0},
10122 	{0xB5, 0, 0, 0, 0},
10123 	{0xB6, 0, 0, 0, 0},
10124 	{0xFFFF, 0, 0, 0, 0},
10125 };
10126 
10127 static struct radio_regs regs_TX_2056_rev7[] = {
10128 	{0x02, 0, 0, 0, 0},
10129 	{0x03, 0, 0, 0, 0},
10130 	{0x04, 0, 0, 0, 0},
10131 	{0x05, 0, 0, 0, 0},
10132 	{0x06, 0, 0, 0, 0},
10133 	{0x07, 0, 0, 0, 0},
10134 	{0x08, 0, 0, 0, 0},
10135 	{0x09, 0, 0, 0, 0},
10136 	{0x0A, 0, 0, 0, 0},
10137 	{0x0B, 0, 0, 0, 0},
10138 	{0x0C, 0, 0, 0, 0},
10139 	{0x0D, 0, 0, 0, 0},
10140 	{0x0E, 0, 0, 0, 0},
10141 	{0x0F, 0, 0, 0, 0},
10142 	{0x10, 0, 0, 0, 0},
10143 	{0x11, 0, 0, 0, 0},
10144 	{0x12, 0, 0, 0, 0},
10145 	{0x13, 0, 0, 0, 0},
10146 	{0x14, 0, 0, 0, 0},
10147 	{0x15, 0, 0, 0, 0},
10148 	{0x16, 0, 0, 0, 0},
10149 	{0x17, 0, 0, 0, 0},
10150 	{0x18, 0, 0, 0, 0},
10151 	{0x19, 0, 0, 0, 0},
10152 	{0x1A, 0, 0, 0, 0},
10153 	{0x1B, 0, 0, 0, 0},
10154 	{0x1C, 0, 0, 0, 0},
10155 	{0x1D, 0, 0, 0, 0},
10156 	{0x1E, 0, 0, 0, 0},
10157 	{0x1F, 0, 0, 0, 0},
10158 	{0x20, 0, 0, 0, 0},
10159 	{0x21, 0x88, 0x88, 0, 0},
10160 	{0x22, 0x88, 0x88, 0, 0},
10161 	{0x23, 0x88, 0x88, 0, 0},
10162 	{0x24, 0x88, 0x88, 0, 0},
10163 	{0x25, 0xc, 0xc, 0, 0},
10164 	{0x26, 0, 0, 0, 0},
10165 	{0x27, 0x3, 0x3, 0, 0},
10166 	{0x28, 0, 0, 0, 0},
10167 	{0x29, 0x3, 0x3, 0, 0},
10168 	{0x2A, 0x37, 0x37, 0, 0},
10169 	{0x2B, 0x3, 0x3, 0, 0},
10170 	{0x2C, 0, 0, 0, 0},
10171 	{0x2D, 0, 0, 0, 0},
10172 	{0x2E, 0x1, 0x1, 0, 0},
10173 	{0x2F, 0x1, 0x1, 0, 0},
10174 	{0x30, 0, 0, 0, 0},
10175 	{0x31, 0, 0, 0, 0},
10176 	{0x32, 0, 0, 0, 0},
10177 	{0x33, 0x11, 0x11, 0, 0},
10178 	{0x34, 0xee, 0xee, 1, 1},
10179 	{0x35, 0, 0, 0, 0},
10180 	{0x36, 0, 0, 0, 0},
10181 	{0x37, 0x3, 0x3, 0, 0},
10182 	{0x38, 0x50, 0x50, 1, 1},
10183 	{0x39, 0, 0, 0, 0},
10184 	{0x3A, 0x50, 0x50, 1, 1},
10185 	{0x3B, 0, 0, 0, 0},
10186 	{0x3C, 0x6e, 0x6e, 0, 0},
10187 	{0x3D, 0xf0, 0xf0, 1, 1},
10188 	{0x3E, 0, 0, 0, 0},
10189 	{0x3F, 0, 0, 0, 0},
10190 	{0x40, 0, 0, 0, 0},
10191 	{0x41, 0x3, 0x3, 0, 0},
10192 	{0x42, 0x3, 0x3, 0, 0},
10193 	{0x43, 0, 0, 0, 0},
10194 	{0x44, 0x1e, 0x1e, 0, 0},
10195 	{0x45, 0, 0, 0, 0},
10196 	{0x46, 0x6e, 0x6e, 0, 0},
10197 	{0x47, 0xf0, 0xf0, 1, 1},
10198 	{0x48, 0, 0, 0, 0},
10199 	{0x49, 0x2, 0x2, 0, 0},
10200 	{0x4A, 0xff, 0xff, 1, 1},
10201 	{0x4B, 0xc, 0xc, 0, 0},
10202 	{0x4C, 0, 0, 0, 0},
10203 	{0x4D, 0x38, 0x38, 0, 0},
10204 	{0x4E, 0x70, 0x70, 1, 1},
10205 	{0x4F, 0x2, 0x2, 0, 0},
10206 	{0x50, 0x88, 0x88, 0, 0},
10207 	{0x51, 0xc, 0xc, 0, 0},
10208 	{0x52, 0, 0, 0, 0},
10209 	{0x53, 0x8, 0x8, 0, 0},
10210 	{0x54, 0x70, 0x70, 1, 1},
10211 	{0x55, 0x2, 0x2, 0, 0},
10212 	{0x56, 0xff, 0xff, 1, 1},
10213 	{0x57, 0, 0, 0, 0},
10214 	{0x58, 0x83, 0x83, 0, 0},
10215 	{0x59, 0x77, 0x77, 1, 1},
10216 	{0x5A, 0, 0, 0, 0},
10217 	{0x5B, 0x2, 0x2, 0, 0},
10218 	{0x5C, 0x88, 0x88, 0, 0},
10219 	{0x5D, 0, 0, 0, 0},
10220 	{0x5E, 0x8, 0x8, 0, 0},
10221 	{0x5F, 0x77, 0x77, 1, 1},
10222 	{0x60, 0x1, 0x1, 0, 0},
10223 	{0x61, 0, 0, 0, 0},
10224 	{0x62, 0x7, 0x7, 0, 0},
10225 	{0x63, 0, 0, 0, 0},
10226 	{0x64, 0x7, 0x7, 0, 0},
10227 	{0x65, 0, 0, 0, 0},
10228 	{0x66, 0, 0, 0, 0},
10229 	{0x67, 0, 0, 1, 1},
10230 	{0x68, 0, 0, 0, 0},
10231 	{0x69, 0xa, 0xa, 0, 0},
10232 	{0x6A, 0, 0, 0, 0},
10233 	{0x6B, 0, 0, 0, 0},
10234 	{0x6C, 0, 0, 0, 0},
10235 	{0x6D, 0, 0, 0, 0},
10236 	{0x6E, 0, 0, 0, 0},
10237 	{0x6F, 0, 0, 0, 0},
10238 	{0x70, 0, 0, 0, 0},
10239 	{0x71, 0x2, 0x2, 0, 0},
10240 	{0x72, 0, 0, 0, 0},
10241 	{0x73, 0, 0, 0, 0},
10242 	{0x74, 0xe, 0xe, 0, 0},
10243 	{0x75, 0xe, 0xe, 0, 0},
10244 	{0x76, 0xe, 0xe, 0, 0},
10245 	{0x77, 0x13, 0x13, 0, 0},
10246 	{0x78, 0x13, 0x13, 0, 0},
10247 	{0x79, 0x1b, 0x1b, 0, 0},
10248 	{0x7A, 0x1b, 0x1b, 0, 0},
10249 	{0x7B, 0x55, 0x55, 0, 0},
10250 	{0x7C, 0x5b, 0x5b, 0, 0},
10251 	{0x7D, 0x30, 0x30, 1, 1},
10252 	{0x7E, 0, 0, 0, 0},
10253 	{0x7F, 0, 0, 0, 0},
10254 	{0x80, 0, 0, 0, 0},
10255 	{0x81, 0, 0, 0, 0},
10256 	{0x82, 0, 0, 0, 0},
10257 	{0x83, 0, 0, 0, 0},
10258 	{0x84, 0, 0, 0, 0},
10259 	{0x85, 0, 0, 0, 0},
10260 	{0x86, 0, 0, 0, 0},
10261 	{0x87, 0, 0, 0, 0},
10262 	{0x88, 0, 0, 0, 0},
10263 	{0x89, 0, 0, 0, 0},
10264 	{0x8A, 0, 0, 0, 0},
10265 	{0x8B, 0, 0, 0, 0},
10266 	{0x8C, 0, 0, 0, 0},
10267 	{0x8D, 0, 0, 0, 0},
10268 	{0x8E, 0, 0, 0, 0},
10269 	{0x8F, 0, 0, 0, 0},
10270 	{0x90, 0, 0, 0, 0},
10271 	{0x91, 0, 0, 0, 0},
10272 	{0x92, 0, 0, 0, 0},
10273 	{0x93, 0x70, 0x70, 0, 0},
10274 	{0x94, 0x70, 0x70, 0, 0},
10275 	{0x95, 0x71, 0x71, 1, 1},
10276 	{0x96, 0x71, 0x71, 1, 1},
10277 	{0x97, 0x72, 0x72, 1, 1},
10278 	{0x98, 0x73, 0x73, 1, 1},
10279 	{0x99, 0x74, 0x74, 1, 1},
10280 	{0x9A, 0x75, 0x75, 1, 1},
10281 	{0xFFFF, 0, 0, 0, 0},
10282 };
10283 
10284 static struct radio_regs regs_RX_2056_rev7[] = {
10285 	{0x02, 0, 0, 0, 0},
10286 	{0x03, 0, 0, 0, 0},
10287 	{0x04, 0, 0, 0, 0},
10288 	{0x05, 0, 0, 0, 0},
10289 	{0x06, 0, 0, 0, 0},
10290 	{0x07, 0, 0, 0, 0},
10291 	{0x08, 0, 0, 0, 0},
10292 	{0x09, 0, 0, 0, 0},
10293 	{0x0A, 0, 0, 0, 0},
10294 	{0x0B, 0, 0, 0, 0},
10295 	{0x0C, 0, 0, 0, 0},
10296 	{0x0D, 0, 0, 0, 0},
10297 	{0x0E, 0, 0, 0, 0},
10298 	{0x0F, 0, 0, 0, 0},
10299 	{0x10, 0, 0, 0, 0},
10300 	{0x11, 0, 0, 0, 0},
10301 	{0x12, 0, 0, 0, 0},
10302 	{0x13, 0, 0, 0, 0},
10303 	{0x14, 0, 0, 0, 0},
10304 	{0x15, 0, 0, 0, 0},
10305 	{0x16, 0, 0, 0, 0},
10306 	{0x17, 0, 0, 0, 0},
10307 	{0x18, 0, 0, 0, 0},
10308 	{0x19, 0, 0, 0, 0},
10309 	{0x1A, 0, 0, 0, 0},
10310 	{0x1B, 0, 0, 0, 0},
10311 	{0x1C, 0, 0, 0, 0},
10312 	{0x1D, 0, 0, 0, 0},
10313 	{0x1E, 0, 0, 0, 0},
10314 	{0x1F, 0, 0, 0, 0},
10315 	{0x20, 0x3, 0x3, 0, 0},
10316 	{0x21, 0, 0, 0, 0},
10317 	{0x22, 0, 0, 0, 0},
10318 	{0x23, 0x90, 0x90, 0, 0},
10319 	{0x24, 0x55, 0x55, 0, 0},
10320 	{0x25, 0x15, 0x15, 0, 0},
10321 	{0x26, 0x5, 0x5, 0, 0},
10322 	{0x27, 0x15, 0x15, 0, 0},
10323 	{0x28, 0x5, 0x5, 0, 0},
10324 	{0x29, 0x20, 0x20, 0, 0},
10325 	{0x2A, 0x11, 0x11, 0, 0},
10326 	{0x2B, 0x90, 0x90, 0, 0},
10327 	{0x2C, 0, 0, 0, 0},
10328 	{0x2D, 0x88, 0x88, 0, 0},
10329 	{0x2E, 0x32, 0x32, 0, 0},
10330 	{0x2F, 0x77, 0x77, 0, 0},
10331 	{0x30, 0x17, 0x17, 1, 1},
10332 	{0x31, 0xff, 0xff, 1, 1},
10333 	{0x32, 0x20, 0x20, 0, 0},
10334 	{0x33, 0, 0, 0, 0},
10335 	{0x34, 0x88, 0x88, 0, 0},
10336 	{0x35, 0x32, 0x32, 0, 0},
10337 	{0x36, 0x77, 0x77, 0, 0},
10338 	{0x37, 0x17, 0x17, 1, 1},
10339 	{0x38, 0xf0, 0xf0, 1, 1},
10340 	{0x39, 0x20, 0x20, 0, 0},
10341 	{0x3A, 0x8, 0x8, 0, 0},
10342 	{0x3B, 0x55, 0x55, 1, 1},
10343 	{0x3C, 0, 0, 0, 0},
10344 	{0x3D, 0x88, 0x88, 1, 1},
10345 	{0x3E, 0, 0, 0, 0},
10346 	{0x3F, 0, 0, 1, 1},
10347 	{0x40, 0x7, 0x7, 1, 1},
10348 	{0x41, 0x6, 0x6, 0, 0},
10349 	{0x42, 0x4, 0x4, 0, 0},
10350 	{0x43, 0, 0, 0, 0},
10351 	{0x44, 0x8, 0x8, 0, 0},
10352 	{0x45, 0x55, 0x55, 1, 1},
10353 	{0x46, 0, 0, 0, 0},
10354 	{0x47, 0x11, 0x11, 0, 0},
10355 	{0x48, 0, 0, 0, 0},
10356 	{0x49, 0, 0, 1, 1},
10357 	{0x4A, 0x7, 0x7, 0, 0},
10358 	{0x4B, 0x6, 0x6, 0, 0},
10359 	{0x4C, 0x4, 0x4, 0, 0},
10360 	{0x4D, 0, 0, 0, 0},
10361 	{0x4E, 0, 0, 0, 0},
10362 	{0x4F, 0x26, 0x26, 1, 1},
10363 	{0x50, 0x26, 0x26, 1, 1},
10364 	{0x51, 0xf, 0xf, 1, 1},
10365 	{0x52, 0xf, 0xf, 1, 1},
10366 	{0x53, 0x44, 0x44, 0, 0},
10367 	{0x54, 0, 0, 0, 0},
10368 	{0x55, 0, 0, 0, 0},
10369 	{0x56, 0x8, 0x8, 0, 0},
10370 	{0x57, 0x8, 0x8, 0, 0},
10371 	{0x58, 0x7, 0x7, 0, 0},
10372 	{0x59, 0x22, 0x22, 0, 0},
10373 	{0x5A, 0x22, 0x22, 0, 0},
10374 	{0x5B, 0x2, 0x2, 0, 0},
10375 	{0x5C, 0x4, 0x4, 1, 1},
10376 	{0x5D, 0x7, 0x7, 0, 0},
10377 	{0x5E, 0x55, 0x55, 0, 0},
10378 	{0x5F, 0x23, 0x23, 0, 0},
10379 	{0x60, 0x41, 0x41, 0, 0},
10380 	{0x61, 0x1, 0x1, 0, 0},
10381 	{0x62, 0xa, 0xa, 0, 0},
10382 	{0x63, 0, 0, 0, 0},
10383 	{0x64, 0, 0, 0, 0},
10384 	{0x65, 0, 0, 0, 0},
10385 	{0x66, 0, 0, 0, 0},
10386 	{0x67, 0, 0, 0, 0},
10387 	{0x68, 0, 0, 0, 0},
10388 	{0x69, 0, 0, 0, 0},
10389 	{0x6A, 0, 0, 0, 0},
10390 	{0x6B, 0xc, 0xc, 0, 0},
10391 	{0x6C, 0, 0, 0, 0},
10392 	{0x6D, 0, 0, 0, 0},
10393 	{0x6E, 0, 0, 0, 0},
10394 	{0x6F, 0, 0, 0, 0},
10395 	{0x70, 0, 0, 0, 0},
10396 	{0x71, 0, 0, 0, 0},
10397 	{0x72, 0x22, 0x22, 0, 0},
10398 	{0x73, 0x22, 0x22, 0, 0},
10399 	{0x74, 0, 0, 1, 1},
10400 	{0x75, 0xa, 0xa, 0, 0},
10401 	{0x76, 0x1, 0x1, 0, 0},
10402 	{0x77, 0x22, 0x22, 0, 0},
10403 	{0x78, 0x30, 0x30, 0, 0},
10404 	{0x79, 0, 0, 0, 0},
10405 	{0x7A, 0, 0, 0, 0},
10406 	{0x7B, 0, 0, 0, 0},
10407 	{0x7C, 0, 0, 0, 0},
10408 	{0x7D, 0, 0, 0, 0},
10409 	{0x7E, 0, 0, 0, 0},
10410 	{0x7F, 0, 0, 0, 0},
10411 	{0x80, 0, 0, 0, 0},
10412 	{0x81, 0, 0, 0, 0},
10413 	{0x82, 0, 0, 0, 0},
10414 	{0x83, 0, 0, 0, 0},
10415 	{0x84, 0, 0, 0, 0},
10416 	{0x85, 0, 0, 0, 0},
10417 	{0x86, 0, 0, 0, 0},
10418 	{0x87, 0, 0, 0, 0},
10419 	{0x88, 0, 0, 0, 0},
10420 	{0x89, 0, 0, 0, 0},
10421 	{0x8A, 0, 0, 0, 0},
10422 	{0x8B, 0, 0, 0, 0},
10423 	{0x8C, 0, 0, 0, 0},
10424 	{0x8D, 0, 0, 0, 0},
10425 	{0x8E, 0, 0, 0, 0},
10426 	{0x8F, 0, 0, 0, 0},
10427 	{0x90, 0, 0, 0, 0},
10428 	{0x91, 0, 0, 0, 0},
10429 	{0x92, 0, 0, 0, 0},
10430 	{0x93, 0, 0, 0, 0},
10431 	{0x94, 0, 0, 0, 0},
10432 	{0xFFFF, 0, 0, 0, 0},
10433 };
10434 
10435 static struct radio_regs regs_SYN_2056_rev8[] = {
10436 	{0x02, 0, 0, 0, 0},
10437 	{0x03, 0, 0, 0, 0},
10438 	{0x04, 0, 0, 0, 0},
10439 	{0x05, 0, 0, 0, 0},
10440 	{0x06, 0, 0, 0, 0},
10441 	{0x07, 0, 0, 0, 0},
10442 	{0x08, 0, 0, 0, 0},
10443 	{0x09, 0x1, 0x1, 0, 0},
10444 	{0x0A, 0, 0, 0, 0},
10445 	{0x0B, 0, 0, 0, 0},
10446 	{0x0C, 0, 0, 0, 0},
10447 	{0x0D, 0, 0, 0, 0},
10448 	{0x0E, 0, 0, 0, 0},
10449 	{0x0F, 0, 0, 0, 0},
10450 	{0x10, 0, 0, 0, 0},
10451 	{0x11, 0, 0, 0, 0},
10452 	{0x12, 0, 0, 0, 0},
10453 	{0x13, 0, 0, 0, 0},
10454 	{0x14, 0, 0, 0, 0},
10455 	{0x15, 0, 0, 0, 0},
10456 	{0x16, 0, 0, 0, 0},
10457 	{0x17, 0, 0, 0, 0},
10458 	{0x18, 0, 0, 0, 0},
10459 	{0x19, 0, 0, 0, 0},
10460 	{0x1A, 0, 0, 0, 0},
10461 	{0x1B, 0, 0, 0, 0},
10462 	{0x1C, 0, 0, 0, 0},
10463 	{0x1D, 0, 0, 0, 0},
10464 	{0x1E, 0, 0, 0, 0},
10465 	{0x1F, 0, 0, 0, 0},
10466 	{0x20, 0, 0, 0, 0},
10467 	{0x21, 0, 0, 0, 0},
10468 	{0x22, 0x60, 0x60, 0, 0},
10469 	{0x23, 0x6, 0x6, 0, 0},
10470 	{0x24, 0xc, 0xc, 0, 0},
10471 	{0x25, 0, 0, 0, 0},
10472 	{0x26, 0, 0, 0, 0},
10473 	{0x27, 0, 0, 0, 0},
10474 	{0x28, 0x1, 0x1, 0, 0},
10475 	{0x29, 0, 0, 0, 0},
10476 	{0x2A, 0, 0, 0, 0},
10477 	{0x2B, 0, 0, 0, 0},
10478 	{0x2C, 0, 0, 0, 0},
10479 	{0x2D, 0, 0, 0, 0},
10480 	{0x2E, 0, 0, 0, 0},
10481 	{0x2F, 0x1f, 0x1f, 0, 0},
10482 	{0x30, 0x15, 0x15, 0, 0},
10483 	{0x31, 0xf, 0xf, 0, 0},
10484 	{0x32, 0, 0, 0, 0},
10485 	{0x33, 0, 0, 0, 0},
10486 	{0x34, 0, 0, 0, 0},
10487 	{0x35, 0, 0, 0, 0},
10488 	{0x36, 0, 0, 0, 0},
10489 	{0x37, 0, 0, 0, 0},
10490 	{0x38, 0, 0, 0, 0},
10491 	{0x39, 0, 0, 0, 0},
10492 	{0x3A, 0, 0, 0, 0},
10493 	{0x3B, 0, 0, 0, 0},
10494 	{0x3C, 0x13, 0x13, 0, 0},
10495 	{0x3D, 0xf, 0xf, 0, 0},
10496 	{0x3E, 0x18, 0x18, 0, 0},
10497 	{0x3F, 0, 0, 0, 0},
10498 	{0x40, 0, 0, 0, 0},
10499 	{0x41, 0x20, 0x20, 0, 0},
10500 	{0x42, 0x20, 0x20, 0, 0},
10501 	{0x43, 0, 0, 0, 0},
10502 	{0x44, 0x77, 0x77, 0, 0},
10503 	{0x45, 0x7, 0x7, 0, 0},
10504 	{0x46, 0x1, 0x1, 0, 0},
10505 	{0x47, 0x4, 0x4, 0, 0},
10506 	{0x48, 0xf, 0xf, 0, 0},
10507 	{0x49, 0x30, 0x30, 0, 0},
10508 	{0x4A, 0x32, 0x32, 0, 0},
10509 	{0x4B, 0xd, 0xd, 0, 0},
10510 	{0x4C, 0xd, 0xd, 0, 0},
10511 	{0x4D, 0x4, 0x4, 0, 0},
10512 	{0x4E, 0x6, 0x6, 0, 0},
10513 	{0x4F, 0x1, 0x1, 0, 0},
10514 	{0x50, 0x1c, 0x1c, 0, 0},
10515 	{0x51, 0x2, 0x2, 0, 0},
10516 	{0x52, 0x2, 0x2, 0, 0},
10517 	{0x53, 0xf7, 0xf7, 1, 1},
10518 	{0x54, 0xb4, 0xb4, 0, 0},
10519 	{0x55, 0xd2, 0xd2, 0, 0},
10520 	{0x56, 0, 0, 0, 0},
10521 	{0x57, 0, 0, 0, 0},
10522 	{0x58, 0x4, 0x4, 0, 0},
10523 	{0x59, 0x96, 0x96, 0, 0},
10524 	{0x5A, 0x3e, 0x3e, 0, 0},
10525 	{0x5B, 0x3e, 0x3e, 0, 0},
10526 	{0x5C, 0x13, 0x13, 0, 0},
10527 	{0x5D, 0x2, 0x2, 0, 0},
10528 	{0x5E, 0, 0, 0, 0},
10529 	{0x5F, 0x7, 0x7, 0, 0},
10530 	{0x60, 0x7, 0x7, 1, 1},
10531 	{0x61, 0x8, 0x8, 0, 0},
10532 	{0x62, 0x3, 0x3, 0, 0},
10533 	{0x63, 0, 0, 0, 0},
10534 	{0x64, 0, 0, 0, 0},
10535 	{0x65, 0, 0, 0, 0},
10536 	{0x66, 0, 0, 0, 0},
10537 	{0x67, 0, 0, 0, 0},
10538 	{0x68, 0x40, 0x40, 0, 0},
10539 	{0x69, 0, 0, 0, 0},
10540 	{0x6A, 0, 0, 0, 0},
10541 	{0x6B, 0, 0, 0, 0},
10542 	{0x6C, 0, 0, 0, 0},
10543 	{0x6D, 0x1, 0x1, 0, 0},
10544 	{0x6E, 0, 0, 0, 0},
10545 	{0x6F, 0, 0, 0, 0},
10546 	{0x70, 0x60, 0x60, 0, 0},
10547 	{0x71, 0x66, 0x66, 0, 0},
10548 	{0x72, 0xc, 0xc, 0, 0},
10549 	{0x73, 0x66, 0x66, 0, 0},
10550 	{0x74, 0x8f, 0x8f, 1, 1},
10551 	{0x75, 0, 0, 0, 0},
10552 	{0x76, 0xcc, 0xcc, 0, 0},
10553 	{0x77, 0x1, 0x1, 0, 0},
10554 	{0x78, 0x66, 0x66, 0, 0},
10555 	{0x79, 0x66, 0x66, 0, 0},
10556 	{0x7A, 0, 0, 0, 0},
10557 	{0x7B, 0, 0, 0, 0},
10558 	{0x7C, 0, 0, 0, 0},
10559 	{0x7D, 0, 0, 0, 0},
10560 	{0x7E, 0, 0, 0, 0},
10561 	{0x7F, 0, 0, 0, 0},
10562 	{0x80, 0, 0, 0, 0},
10563 	{0x81, 0, 0, 0, 0},
10564 	{0x82, 0, 0, 0, 0},
10565 	{0x83, 0, 0, 0, 0},
10566 	{0x84, 0, 0, 0, 0},
10567 	{0x85, 0xff, 0xff, 0, 0},
10568 	{0x86, 0, 0, 0, 0},
10569 	{0x87, 0, 0, 0, 0},
10570 	{0x88, 0, 0, 0, 0},
10571 	{0x89, 0, 0, 0, 0},
10572 	{0x8A, 0, 0, 0, 0},
10573 	{0x8B, 0, 0, 0, 0},
10574 	{0x8C, 0, 0, 0, 0},
10575 	{0x8D, 0, 0, 0, 0},
10576 	{0x8E, 0, 0, 0, 0},
10577 	{0x8F, 0, 0, 0, 0},
10578 	{0x90, 0, 0, 0, 0},
10579 	{0x91, 0, 0, 0, 0},
10580 	{0x92, 0, 0, 0, 0},
10581 	{0x93, 0, 0, 0, 0},
10582 	{0x94, 0, 0, 0, 0},
10583 	{0x95, 0, 0, 0, 0},
10584 	{0x96, 0, 0, 0, 0},
10585 	{0x97, 0, 0, 0, 0},
10586 	{0x98, 0, 0, 0, 0},
10587 	{0x99, 0, 0, 0, 0},
10588 	{0x9A, 0, 0, 0, 0},
10589 	{0x9B, 0, 0, 0, 0},
10590 	{0x9C, 0, 0, 0, 0},
10591 	{0x9D, 0, 0, 0, 0},
10592 	{0x9E, 0, 0, 0, 0},
10593 	{0x9F, 0x6, 0x6, 0, 0},
10594 	{0xA0, 0x66, 0x66, 0, 0},
10595 	{0xA1, 0x66, 0x66, 0, 0},
10596 	{0xA2, 0x66, 0x66, 0, 0},
10597 	{0xA3, 0x66, 0x66, 0, 0},
10598 	{0xA4, 0x66, 0x66, 0, 0},
10599 	{0xA5, 0x66, 0x66, 0, 0},
10600 	{0xA6, 0x66, 0x66, 0, 0},
10601 	{0xA7, 0x66, 0x66, 0, 0},
10602 	{0xA8, 0x66, 0x66, 0, 0},
10603 	{0xA9, 0x66, 0x66, 0, 0},
10604 	{0xAA, 0x66, 0x66, 0, 0},
10605 	{0xAB, 0x66, 0x66, 0, 0},
10606 	{0xAC, 0x66, 0x66, 0, 0},
10607 	{0xAD, 0x66, 0x66, 0, 0},
10608 	{0xAE, 0x66, 0x66, 0, 0},
10609 	{0xAF, 0x66, 0x66, 0, 0},
10610 	{0xB0, 0x66, 0x66, 0, 0},
10611 	{0xB1, 0x66, 0x66, 0, 0},
10612 	{0xB2, 0x66, 0x66, 0, 0},
10613 	{0xB3, 0xa, 0xa, 0, 0},
10614 	{0xB4, 0, 0, 0, 0},
10615 	{0xB5, 0, 0, 0, 0},
10616 	{0xB6, 0, 0, 0, 0},
10617 	{0xFFFF, 0, 0, 0, 0},
10618 };
10619 
10620 static struct radio_regs regs_TX_2056_rev8[] = {
10621 	{0x02, 0, 0, 0, 0},
10622 	{0x03, 0, 0, 0, 0},
10623 	{0x04, 0, 0, 0, 0},
10624 	{0x05, 0, 0, 0, 0},
10625 	{0x06, 0, 0, 0, 0},
10626 	{0x07, 0, 0, 0, 0},
10627 	{0x08, 0, 0, 0, 0},
10628 	{0x09, 0, 0, 0, 0},
10629 	{0x0A, 0, 0, 0, 0},
10630 	{0x0B, 0, 0, 0, 0},
10631 	{0x0C, 0, 0, 0, 0},
10632 	{0x0D, 0, 0, 0, 0},
10633 	{0x0E, 0, 0, 0, 0},
10634 	{0x0F, 0, 0, 0, 0},
10635 	{0x10, 0, 0, 0, 0},
10636 	{0x11, 0, 0, 0, 0},
10637 	{0x12, 0, 0, 0, 0},
10638 	{0x13, 0, 0, 0, 0},
10639 	{0x14, 0, 0, 0, 0},
10640 	{0x15, 0, 0, 0, 0},
10641 	{0x16, 0, 0, 0, 0},
10642 	{0x17, 0, 0, 0, 0},
10643 	{0x18, 0, 0, 0, 0},
10644 	{0x19, 0, 0, 0, 0},
10645 	{0x1A, 0, 0, 0, 0},
10646 	{0x1B, 0, 0, 0, 0},
10647 	{0x1C, 0, 0, 0, 0},
10648 	{0x1D, 0, 0, 0, 0},
10649 	{0x1E, 0, 0, 0, 0},
10650 	{0x1F, 0, 0, 0, 0},
10651 	{0x20, 0, 0, 0, 0},
10652 	{0x21, 0x88, 0x88, 0, 0},
10653 	{0x22, 0x88, 0x88, 0, 0},
10654 	{0x23, 0x88, 0x88, 0, 0},
10655 	{0x24, 0x88, 0x88, 0, 0},
10656 	{0x25, 0xc, 0xc, 0, 0},
10657 	{0x26, 0, 0, 0, 0},
10658 	{0x27, 0x3, 0x3, 0, 0},
10659 	{0x28, 0, 0, 0, 0},
10660 	{0x29, 0x3, 0x3, 0, 0},
10661 	{0x2A, 0x37, 0x37, 0, 0},
10662 	{0x2B, 0x3, 0x3, 0, 0},
10663 	{0x2C, 0, 0, 0, 0},
10664 	{0x2D, 0, 0, 0, 0},
10665 	{0x2E, 0x1, 0x1, 0, 0},
10666 	{0x2F, 0x1, 0x1, 0, 0},
10667 	{0x30, 0, 0, 0, 0},
10668 	{0x31, 0, 0, 0, 0},
10669 	{0x32, 0, 0, 0, 0},
10670 	{0x33, 0x11, 0x11, 0, 0},
10671 	{0x34, 0xee, 0xee, 1, 1},
10672 	{0x35, 0, 0, 0, 0},
10673 	{0x36, 0, 0, 0, 0},
10674 	{0x37, 0x3, 0x3, 0, 0},
10675 	{0x38, 0x50, 0x50, 1, 1},
10676 	{0x39, 0, 0, 0, 0},
10677 	{0x3A, 0x50, 0x50, 1, 1},
10678 	{0x3B, 0, 0, 0, 0},
10679 	{0x3C, 0x6e, 0x6e, 0, 0},
10680 	{0x3D, 0xf0, 0xf0, 1, 1},
10681 	{0x3E, 0, 0, 0, 0},
10682 	{0x3F, 0, 0, 0, 0},
10683 	{0x40, 0, 0, 0, 0},
10684 	{0x41, 0x3, 0x3, 0, 0},
10685 	{0x42, 0x3, 0x3, 0, 0},
10686 	{0x43, 0, 0, 0, 0},
10687 	{0x44, 0x1e, 0x1e, 0, 0},
10688 	{0x45, 0, 0, 0, 0},
10689 	{0x46, 0x6e, 0x6e, 0, 0},
10690 	{0x47, 0xf0, 0xf0, 1, 1},
10691 	{0x48, 0, 0, 0, 0},
10692 	{0x49, 0x2, 0x2, 0, 0},
10693 	{0x4A, 0xff, 0xff, 1, 1},
10694 	{0x4B, 0xc, 0xc, 0, 0},
10695 	{0x4C, 0, 0, 0, 0},
10696 	{0x4D, 0x38, 0x38, 0, 0},
10697 	{0x4E, 0x70, 0x70, 1, 1},
10698 	{0x4F, 0x2, 0x2, 0, 0},
10699 	{0x50, 0x88, 0x88, 0, 0},
10700 	{0x51, 0xc, 0xc, 0, 0},
10701 	{0x52, 0, 0, 0, 0},
10702 	{0x53, 0x8, 0x8, 0, 0},
10703 	{0x54, 0x70, 0x70, 1, 1},
10704 	{0x55, 0x2, 0x2, 0, 0},
10705 	{0x56, 0xff, 0xff, 1, 1},
10706 	{0x57, 0, 0, 0, 0},
10707 	{0x58, 0x83, 0x83, 0, 0},
10708 	{0x59, 0x77, 0x77, 1, 1},
10709 	{0x5A, 0, 0, 0, 0},
10710 	{0x5B, 0x2, 0x2, 0, 0},
10711 	{0x5C, 0x88, 0x88, 0, 0},
10712 	{0x5D, 0, 0, 0, 0},
10713 	{0x5E, 0x8, 0x8, 0, 0},
10714 	{0x5F, 0x77, 0x77, 1, 1},
10715 	{0x60, 0x1, 0x1, 0, 0},
10716 	{0x61, 0, 0, 0, 0},
10717 	{0x62, 0x7, 0x7, 0, 0},
10718 	{0x63, 0, 0, 0, 0},
10719 	{0x64, 0x7, 0x7, 0, 0},
10720 	{0x65, 0, 0, 0, 0},
10721 	{0x66, 0, 0, 0, 0},
10722 	{0x67, 0, 0, 1, 1},
10723 	{0x68, 0, 0, 0, 0},
10724 	{0x69, 0xa, 0xa, 0, 0},
10725 	{0x6A, 0, 0, 0, 0},
10726 	{0x6B, 0, 0, 0, 0},
10727 	{0x6C, 0, 0, 0, 0},
10728 	{0x6D, 0, 0, 0, 0},
10729 	{0x6E, 0, 0, 0, 0},
10730 	{0x6F, 0, 0, 0, 0},
10731 	{0x70, 0, 0, 0, 0},
10732 	{0x71, 0x2, 0x2, 0, 0},
10733 	{0x72, 0, 0, 0, 0},
10734 	{0x73, 0, 0, 0, 0},
10735 	{0x74, 0xe, 0xe, 0, 0},
10736 	{0x75, 0xe, 0xe, 0, 0},
10737 	{0x76, 0xe, 0xe, 0, 0},
10738 	{0x77, 0x13, 0x13, 0, 0},
10739 	{0x78, 0x13, 0x13, 0, 0},
10740 	{0x79, 0x1b, 0x1b, 0, 0},
10741 	{0x7A, 0x1b, 0x1b, 0, 0},
10742 	{0x7B, 0x55, 0x55, 0, 0},
10743 	{0x7C, 0x5b, 0x5b, 0, 0},
10744 	{0x7D, 0x30, 0x30, 1, 1},
10745 	{0x7E, 0, 0, 0, 0},
10746 	{0x7F, 0, 0, 0, 0},
10747 	{0x80, 0, 0, 0, 0},
10748 	{0x81, 0, 0, 0, 0},
10749 	{0x82, 0, 0, 0, 0},
10750 	{0x83, 0, 0, 0, 0},
10751 	{0x84, 0, 0, 0, 0},
10752 	{0x85, 0, 0, 0, 0},
10753 	{0x86, 0, 0, 0, 0},
10754 	{0x87, 0, 0, 0, 0},
10755 	{0x88, 0, 0, 0, 0},
10756 	{0x89, 0, 0, 0, 0},
10757 	{0x8A, 0, 0, 0, 0},
10758 	{0x8B, 0, 0, 0, 0},
10759 	{0x8C, 0, 0, 0, 0},
10760 	{0x8D, 0, 0, 0, 0},
10761 	{0x8E, 0, 0, 0, 0},
10762 	{0x8F, 0, 0, 0, 0},
10763 	{0x90, 0, 0, 0, 0},
10764 	{0x91, 0, 0, 0, 0},
10765 	{0x92, 0, 0, 0, 0},
10766 	{0x93, 0x70, 0x70, 0, 0},
10767 	{0x94, 0x70, 0x70, 0, 0},
10768 	{0x95, 0x70, 0x70, 0, 0},
10769 	{0x96, 0x70, 0x70, 0, 0},
10770 	{0x97, 0x70, 0x70, 0, 0},
10771 	{0x98, 0x70, 0x70, 0, 0},
10772 	{0x99, 0x70, 0x70, 0, 0},
10773 	{0x9A, 0x70, 0x70, 0, 0},
10774 	{0xFFFF, 0, 0, 0, 0},
10775 };
10776 
10777 static struct radio_regs regs_RX_2056_rev8[] = {
10778 	{0x02, 0, 0, 0, 0},
10779 	{0x03, 0, 0, 0, 0},
10780 	{0x04, 0, 0, 0, 0},
10781 	{0x05, 0, 0, 0, 0},
10782 	{0x06, 0, 0, 0, 0},
10783 	{0x07, 0, 0, 0, 0},
10784 	{0x08, 0, 0, 0, 0},
10785 	{0x09, 0, 0, 0, 0},
10786 	{0x0A, 0, 0, 0, 0},
10787 	{0x0B, 0, 0, 0, 0},
10788 	{0x0C, 0, 0, 0, 0},
10789 	{0x0D, 0, 0, 0, 0},
10790 	{0x0E, 0, 0, 0, 0},
10791 	{0x0F, 0, 0, 0, 0},
10792 	{0x10, 0, 0, 0, 0},
10793 	{0x11, 0, 0, 0, 0},
10794 	{0x12, 0, 0, 0, 0},
10795 	{0x13, 0, 0, 0, 0},
10796 	{0x14, 0, 0, 0, 0},
10797 	{0x15, 0, 0, 0, 0},
10798 	{0x16, 0, 0, 0, 0},
10799 	{0x17, 0, 0, 0, 0},
10800 	{0x18, 0, 0, 0, 0},
10801 	{0x19, 0, 0, 0, 0},
10802 	{0x1A, 0, 0, 0, 0},
10803 	{0x1B, 0, 0, 0, 0},
10804 	{0x1C, 0, 0, 0, 0},
10805 	{0x1D, 0, 0, 0, 0},
10806 	{0x1E, 0, 0, 0, 0},
10807 	{0x1F, 0, 0, 0, 0},
10808 	{0x20, 0x3, 0x3, 0, 0},
10809 	{0x21, 0, 0, 0, 0},
10810 	{0x22, 0, 0, 0, 0},
10811 	{0x23, 0x90, 0x90, 0, 0},
10812 	{0x24, 0x55, 0x55, 0, 0},
10813 	{0x25, 0x15, 0x15, 0, 0},
10814 	{0x26, 0x5, 0x5, 0, 0},
10815 	{0x27, 0x15, 0x15, 0, 0},
10816 	{0x28, 0x5, 0x5, 0, 0},
10817 	{0x29, 0x20, 0x20, 0, 0},
10818 	{0x2A, 0x11, 0x11, 0, 0},
10819 	{0x2B, 0x90, 0x90, 0, 0},
10820 	{0x2C, 0, 0, 0, 0},
10821 	{0x2D, 0x88, 0x88, 0, 0},
10822 	{0x2E, 0x32, 0x32, 0, 0},
10823 	{0x2F, 0x77, 0x77, 0, 0},
10824 	{0x30, 0x17, 0x17, 1, 1},
10825 	{0x31, 0xff, 0xff, 1, 1},
10826 	{0x32, 0x20, 0x20, 0, 0},
10827 	{0x33, 0, 0, 0, 0},
10828 	{0x34, 0x88, 0x88, 0, 0},
10829 	{0x35, 0x32, 0x32, 0, 0},
10830 	{0x36, 0x77, 0x77, 0, 0},
10831 	{0x37, 0x17, 0x17, 1, 1},
10832 	{0x38, 0xf0, 0xf0, 1, 1},
10833 	{0x39, 0x20, 0x20, 0, 0},
10834 	{0x3A, 0x8, 0x8, 0, 0},
10835 	{0x3B, 0x55, 0x55, 1, 1},
10836 	{0x3C, 0, 0, 0, 0},
10837 	{0x3D, 0x88, 0x88, 1, 1},
10838 	{0x3E, 0, 0, 0, 0},
10839 	{0x3F, 0x44, 0x44, 0, 0},
10840 	{0x40, 0x7, 0x7, 1, 1},
10841 	{0x41, 0x6, 0x6, 0, 0},
10842 	{0x42, 0x4, 0x4, 0, 0},
10843 	{0x43, 0, 0, 0, 0},
10844 	{0x44, 0x8, 0x8, 0, 0},
10845 	{0x45, 0x55, 0x55, 1, 1},
10846 	{0x46, 0, 0, 0, 0},
10847 	{0x47, 0x11, 0x11, 0, 0},
10848 	{0x48, 0, 0, 0, 0},
10849 	{0x49, 0x44, 0x44, 0, 0},
10850 	{0x4A, 0x7, 0x7, 0, 0},
10851 	{0x4B, 0x6, 0x6, 0, 0},
10852 	{0x4C, 0x4, 0x4, 0, 0},
10853 	{0x4D, 0, 0, 0, 0},
10854 	{0x4E, 0, 0, 0, 0},
10855 	{0x4F, 0x26, 0x26, 1, 1},
10856 	{0x50, 0x26, 0x26, 1, 1},
10857 	{0x51, 0xf, 0xf, 1, 1},
10858 	{0x52, 0xf, 0xf, 1, 1},
10859 	{0x53, 0x44, 0x44, 0, 0},
10860 	{0x54, 0, 0, 0, 0},
10861 	{0x55, 0, 0, 0, 0},
10862 	{0x56, 0x8, 0x8, 0, 0},
10863 	{0x57, 0x8, 0x8, 0, 0},
10864 	{0x58, 0x7, 0x7, 0, 0},
10865 	{0x59, 0x22, 0x22, 0, 0},
10866 	{0x5A, 0x22, 0x22, 0, 0},
10867 	{0x5B, 0x2, 0x2, 0, 0},
10868 	{0x5C, 0x4, 0x4, 1, 1},
10869 	{0x5D, 0x7, 0x7, 0, 0},
10870 	{0x5E, 0x55, 0x55, 0, 0},
10871 	{0x5F, 0x23, 0x23, 0, 0},
10872 	{0x60, 0x41, 0x41, 0, 0},
10873 	{0x61, 0x1, 0x1, 0, 0},
10874 	{0x62, 0xa, 0xa, 0, 0},
10875 	{0x63, 0, 0, 0, 0},
10876 	{0x64, 0, 0, 0, 0},
10877 	{0x65, 0, 0, 0, 0},
10878 	{0x66, 0, 0, 0, 0},
10879 	{0x67, 0, 0, 0, 0},
10880 	{0x68, 0, 0, 0, 0},
10881 	{0x69, 0, 0, 0, 0},
10882 	{0x6A, 0, 0, 0, 0},
10883 	{0x6B, 0xc, 0xc, 0, 0},
10884 	{0x6C, 0, 0, 0, 0},
10885 	{0x6D, 0, 0, 0, 0},
10886 	{0x6E, 0, 0, 0, 0},
10887 	{0x6F, 0, 0, 0, 0},
10888 	{0x70, 0, 0, 0, 0},
10889 	{0x71, 0, 0, 0, 0},
10890 	{0x72, 0x22, 0x22, 0, 0},
10891 	{0x73, 0x22, 0x22, 0, 0},
10892 	{0x74, 0, 0, 1, 1},
10893 	{0x75, 0xa, 0xa, 0, 0},
10894 	{0x76, 0x1, 0x1, 0, 0},
10895 	{0x77, 0x22, 0x22, 0, 0},
10896 	{0x78, 0x30, 0x30, 0, 0},
10897 	{0x79, 0, 0, 0, 0},
10898 	{0x7A, 0, 0, 0, 0},
10899 	{0x7B, 0, 0, 0, 0},
10900 	{0x7C, 0, 0, 0, 0},
10901 	{0x7D, 0x5, 0x5, 1, 1},
10902 	{0x7E, 0, 0, 0, 0},
10903 	{0x7F, 0, 0, 0, 0},
10904 	{0x80, 0, 0, 0, 0},
10905 	{0x81, 0, 0, 0, 0},
10906 	{0x82, 0, 0, 0, 0},
10907 	{0x83, 0, 0, 0, 0},
10908 	{0x84, 0, 0, 0, 0},
10909 	{0x85, 0, 0, 0, 0},
10910 	{0x86, 0, 0, 0, 0},
10911 	{0x87, 0, 0, 0, 0},
10912 	{0x88, 0, 0, 0, 0},
10913 	{0x89, 0, 0, 0, 0},
10914 	{0x8A, 0, 0, 0, 0},
10915 	{0x8B, 0, 0, 0, 0},
10916 	{0x8C, 0, 0, 0, 0},
10917 	{0x8D, 0, 0, 0, 0},
10918 	{0x8E, 0, 0, 0, 0},
10919 	{0x8F, 0, 0, 0, 0},
10920 	{0x90, 0, 0, 0, 0},
10921 	{0x91, 0, 0, 0, 0},
10922 	{0x92, 0, 0, 0, 0},
10923 	{0x93, 0, 0, 0, 0},
10924 	{0x94, 0, 0, 0, 0},
10925 	{0xFFFF, 0, 0, 0, 0},
10926 };
10927 
10928 static const struct radio_regs regs_SYN_2056_rev11[] = {
10929 	{0x02, 0, 0, 0, 0},
10930 	{0x03, 0, 0, 0, 0},
10931 	{0x04, 0, 0, 0, 0},
10932 	{0x05, 0, 0, 0, 0},
10933 	{0x06, 0, 0, 0, 0},
10934 	{0x07, 0, 0, 0, 0},
10935 	{0x08, 0, 0, 0, 0},
10936 	{0x09, 0x1, 0x1, 0, 0},
10937 	{0x0A, 0, 0, 0, 0},
10938 	{0x0B, 0, 0, 0, 0},
10939 	{0x0C, 0, 0, 0, 0},
10940 	{0x0D, 0, 0, 0, 0},
10941 	{0x0E, 0, 0, 0, 0},
10942 	{0x0F, 0, 0, 0, 0},
10943 	{0x10, 0, 0, 0, 0},
10944 	{0x11, 0, 0, 0, 0},
10945 	{0x12, 0, 0, 0, 0},
10946 	{0x13, 0, 0, 0, 0},
10947 	{0x14, 0, 0, 0, 0},
10948 	{0x15, 0, 0, 0, 0},
10949 	{0x16, 0, 0, 0, 0},
10950 	{0x17, 0, 0, 0, 0},
10951 	{0x18, 0, 0, 0, 0},
10952 	{0x19, 0, 0, 0, 0},
10953 	{0x1A, 0, 0, 0, 0},
10954 	{0x1B, 0, 0, 0, 0},
10955 	{0x1C, 0, 0, 0, 0},
10956 	{0x1D, 0, 0, 0, 0},
10957 	{0x1E, 0, 0, 0, 0},
10958 	{0x1F, 0, 0, 0, 0},
10959 	{0x20, 0, 0, 0, 0},
10960 	{0x21, 0, 0, 0, 0},
10961 	{0x22, 0x60, 0x60, 0, 0},
10962 	{0x23, 0x6, 0x6, 0, 0},
10963 	{0x24, 0xc, 0xc, 0, 0},
10964 	{0x25, 0, 0, 0, 0},
10965 	{0x26, 0, 0, 0, 0},
10966 	{0x27, 0, 0, 0, 0},
10967 	{0x28, 0x1, 0x1, 0, 0},
10968 	{0x29, 0, 0, 0, 0},
10969 	{0x2A, 0, 0, 0, 0},
10970 	{0x2B, 0, 0, 0, 0},
10971 	{0x2C, 0, 0, 0, 0},
10972 	{0x2D, 0, 0, 0, 0},
10973 	{0x2E, 0, 0, 0, 0},
10974 	{0x2F, 0x1f, 0x1f, 0, 0},
10975 	{0x30, 0x15, 0x15, 0, 0},
10976 	{0x31, 0xf, 0xf, 0, 0},
10977 	{0x32, 0, 0, 0, 0},
10978 	{0x33, 0, 0, 0, 0},
10979 	{0x34, 0, 0, 0, 0},
10980 	{0x35, 0, 0, 0, 0},
10981 	{0x36, 0, 0, 0, 0},
10982 	{0x37, 0, 0, 0, 0},
10983 	{0x38, 0, 0, 0, 0},
10984 	{0x39, 0, 0, 0, 0},
10985 	{0x3A, 0, 0, 0, 0},
10986 	{0x3B, 0, 0, 0, 0},
10987 	{0x3C, 0x13, 0x13, 0, 0},
10988 	{0x3D, 0xf, 0xf, 0, 0},
10989 	{0x3E, 0x18, 0x18, 0, 0},
10990 	{0x3F, 0, 0, 0, 0},
10991 	{0x40, 0, 0, 0, 0},
10992 	{0x41, 0x20, 0x20, 0, 0},
10993 	{0x42, 0x20, 0x20, 0, 0},
10994 	{0x43, 0, 0, 0, 0},
10995 	{0x44, 0x77, 0x77, 0, 0},
10996 	{0x45, 0x7, 0x7, 0, 0},
10997 	{0x46, 0x1, 0x1, 0, 0},
10998 	{0x47, 0x6, 0x6, 1, 1},
10999 	{0x48, 0xf, 0xf, 0, 0},
11000 	{0x49, 0x3f, 0x3f, 1, 1},
11001 	{0x4A, 0x32, 0x32, 0, 0},
11002 	{0x4B, 0x6, 0x6, 1, 1},
11003 	{0x4C, 0x6, 0x6, 1, 1},
11004 	{0x4D, 0x4, 0x4, 0, 0},
11005 	{0x4E, 0x2b, 0x2b, 1, 1},
11006 	{0x4F, 0x1, 0x1, 0, 0},
11007 	{0x50, 0x1c, 0x1c, 0, 0},
11008 	{0x51, 0x2, 0x2, 0, 0},
11009 	{0x52, 0x2, 0x2, 0, 0},
11010 	{0x53, 0xf7, 0xf7, 1, 1},
11011 	{0x54, 0xb4, 0xb4, 0, 0},
11012 	{0x55, 0xd2, 0xd2, 0, 0},
11013 	{0x56, 0, 0, 0, 0},
11014 	{0x57, 0, 0, 0, 0},
11015 	{0x58, 0x4, 0x4, 0, 0},
11016 	{0x59, 0x96, 0x96, 0, 0},
11017 	{0x5A, 0x3e, 0x3e, 0, 0},
11018 	{0x5B, 0x3e, 0x3e, 0, 0},
11019 	{0x5C, 0x13, 0x13, 0, 0},
11020 	{0x5D, 0x2, 0x2, 0, 0},
11021 	{0x5E, 0, 0, 0, 0},
11022 	{0x5F, 0x7, 0x7, 0, 0},
11023 	{0x60, 0x7, 0x7, 1, 1},
11024 	{0x61, 0x8, 0x8, 0, 0},
11025 	{0x62, 0x3, 0x3, 0, 0},
11026 	{0x63, 0, 0, 0, 0},
11027 	{0x64, 0, 0, 0, 0},
11028 	{0x65, 0, 0, 0, 0},
11029 	{0x66, 0, 0, 0, 0},
11030 	{0x67, 0, 0, 0, 0},
11031 	{0x68, 0x40, 0x40, 0, 0},
11032 	{0x69, 0, 0, 0, 0},
11033 	{0x6A, 0, 0, 0, 0},
11034 	{0x6B, 0, 0, 0, 0},
11035 	{0x6C, 0, 0, 0, 0},
11036 	{0x6D, 0x1, 0x1, 0, 0},
11037 	{0x6E, 0, 0, 0, 0},
11038 	{0x6F, 0, 0, 0, 0},
11039 	{0x70, 0x60, 0x60, 0, 0},
11040 	{0x71, 0x66, 0x66, 0, 0},
11041 	{0x72, 0xc, 0xc, 0, 0},
11042 	{0x73, 0x66, 0x66, 0, 0},
11043 	{0x74, 0x8f, 0x8f, 1, 1},
11044 	{0x75, 0, 0, 0, 0},
11045 	{0x76, 0xcc, 0xcc, 0, 0},
11046 	{0x77, 0x1, 0x1, 0, 0},
11047 	{0x78, 0x66, 0x66, 0, 0},
11048 	{0x79, 0x66, 0x66, 0, 0},
11049 	{0x7A, 0, 0, 0, 0},
11050 	{0x7B, 0, 0, 0, 0},
11051 	{0x7C, 0, 0, 0, 0},
11052 	{0x7D, 0, 0, 0, 0},
11053 	{0x7E, 0, 0, 0, 0},
11054 	{0x7F, 0, 0, 0, 0},
11055 	{0x80, 0, 0, 0, 0},
11056 	{0x81, 0, 0, 0, 0},
11057 	{0x82, 0, 0, 0, 0},
11058 	{0x83, 0, 0, 0, 0},
11059 	{0x84, 0, 0, 0, 0},
11060 	{0x85, 0xff, 0xff, 0, 0},
11061 	{0x86, 0, 0, 0, 0},
11062 	{0x87, 0, 0, 0, 0},
11063 	{0x88, 0, 0, 0, 0},
11064 	{0x89, 0, 0, 0, 0},
11065 	{0x8A, 0, 0, 0, 0},
11066 	{0x8B, 0, 0, 0, 0},
11067 	{0x8C, 0, 0, 0, 0},
11068 	{0x8D, 0, 0, 0, 0},
11069 	{0x8E, 0, 0, 0, 0},
11070 	{0x8F, 0, 0, 0, 0},
11071 	{0x90, 0, 0, 0, 0},
11072 	{0x91, 0, 0, 0, 0},
11073 	{0x92, 0, 0, 0, 0},
11074 	{0x93, 0, 0, 0, 0},
11075 	{0x94, 0, 0, 0, 0},
11076 	{0x95, 0, 0, 0, 0},
11077 	{0x96, 0, 0, 0, 0},
11078 	{0x97, 0, 0, 0, 0},
11079 	{0x98, 0, 0, 0, 0},
11080 	{0x99, 0, 0, 0, 0},
11081 	{0x9A, 0, 0, 0, 0},
11082 	{0x9B, 0, 0, 0, 0},
11083 	{0x9C, 0, 0, 0, 0},
11084 	{0x9D, 0, 0, 0, 0},
11085 	{0x9E, 0, 0, 0, 0},
11086 	{0x9F, 0x6, 0x6, 0, 0},
11087 	{0xA0, 0x66, 0x66, 0, 0},
11088 	{0xA1, 0x66, 0x66, 0, 0},
11089 	{0xA2, 0x66, 0x66, 0, 0},
11090 	{0xA3, 0x66, 0x66, 0, 0},
11091 	{0xA4, 0x66, 0x66, 0, 0},
11092 	{0xA5, 0x66, 0x66, 0, 0},
11093 	{0xA6, 0x66, 0x66, 0, 0},
11094 	{0xA7, 0x66, 0x66, 0, 0},
11095 	{0xA8, 0x66, 0x66, 0, 0},
11096 	{0xA9, 0x66, 0x66, 0, 0},
11097 	{0xAA, 0x66, 0x66, 0, 0},
11098 	{0xAB, 0x66, 0x66, 0, 0},
11099 	{0xAC, 0x66, 0x66, 0, 0},
11100 	{0xAD, 0x66, 0x66, 0, 0},
11101 	{0xAE, 0x66, 0x66, 0, 0},
11102 	{0xAF, 0x66, 0x66, 0, 0},
11103 	{0xB0, 0x66, 0x66, 0, 0},
11104 	{0xB1, 0x66, 0x66, 0, 0},
11105 	{0xB2, 0x66, 0x66, 0, 0},
11106 	{0xB3, 0xa, 0xa, 0, 0},
11107 	{0xB4, 0, 0, 0, 0},
11108 	{0xB5, 0, 0, 0, 0},
11109 	{0xB6, 0, 0, 0, 0},
11110 	{0xFFFF, 0, 0, 0, 0},
11111 };
11112 
11113 static const struct radio_regs regs_TX_2056_rev11[] = {
11114 	{0x02, 0, 0, 0, 0},
11115 	{0x03, 0, 0, 0, 0},
11116 	{0x04, 0, 0, 0, 0},
11117 	{0x05, 0, 0, 0, 0},
11118 	{0x06, 0, 0, 0, 0},
11119 	{0x07, 0, 0, 0, 0},
11120 	{0x08, 0, 0, 0, 0},
11121 	{0x09, 0, 0, 0, 0},
11122 	{0x0A, 0, 0, 0, 0},
11123 	{0x0B, 0, 0, 0, 0},
11124 	{0x0C, 0, 0, 0, 0},
11125 	{0x0D, 0, 0, 0, 0},
11126 	{0x0E, 0, 0, 0, 0},
11127 	{0x0F, 0, 0, 0, 0},
11128 	{0x10, 0, 0, 0, 0},
11129 	{0x11, 0, 0, 0, 0},
11130 	{0x12, 0, 0, 0, 0},
11131 	{0x13, 0, 0, 0, 0},
11132 	{0x14, 0, 0, 0, 0},
11133 	{0x15, 0, 0, 0, 0},
11134 	{0x16, 0, 0, 0, 0},
11135 	{0x17, 0, 0, 0, 0},
11136 	{0x18, 0, 0, 0, 0},
11137 	{0x19, 0, 0, 0, 0},
11138 	{0x1A, 0, 0, 0, 0},
11139 	{0x1B, 0, 0, 0, 0},
11140 	{0x1C, 0, 0, 0, 0},
11141 	{0x1D, 0, 0, 0, 0},
11142 	{0x1E, 0, 0, 0, 0},
11143 	{0x1F, 0, 0, 0, 0},
11144 	{0x20, 0, 0, 0, 0},
11145 	{0x21, 0x88, 0x88, 0, 0},
11146 	{0x22, 0x88, 0x88, 0, 0},
11147 	{0x23, 0x88, 0x88, 0, 0},
11148 	{0x24, 0x88, 0x88, 0, 0},
11149 	{0x25, 0xc, 0xc, 0, 0},
11150 	{0x26, 0, 0, 0, 0},
11151 	{0x27, 0x3, 0x3, 0, 0},
11152 	{0x28, 0, 0, 0, 0},
11153 	{0x29, 0x3, 0x3, 0, 0},
11154 	{0x2A, 0x37, 0x37, 0, 0},
11155 	{0x2B, 0x3, 0x3, 0, 0},
11156 	{0x2C, 0, 0, 0, 0},
11157 	{0x2D, 0, 0, 0, 0},
11158 	{0x2E, 0x1, 0x1, 0, 0},
11159 	{0x2F, 0x1, 0x1, 0, 0},
11160 	{0x30, 0, 0, 0, 0},
11161 	{0x31, 0, 0, 0, 0},
11162 	{0x32, 0, 0, 0, 0},
11163 	{0x33, 0x11, 0x11, 0, 0},
11164 	{0x34, 0xee, 0xee, 1, 1},
11165 	{0x35, 0, 0, 0, 0},
11166 	{0x36, 0, 0, 0, 0},
11167 	{0x37, 0x3, 0x3, 0, 0},
11168 	{0x38, 0x50, 0x50, 1, 1},
11169 	{0x39, 0, 0, 0, 0},
11170 	{0x3A, 0x50, 0x50, 1, 1},
11171 	{0x3B, 0, 0, 0, 0},
11172 	{0x3C, 0x6e, 0x6e, 0, 0},
11173 	{0x3D, 0xf0, 0xf0, 1, 1},
11174 	{0x3E, 0, 0, 0, 0},
11175 	{0x3F, 0, 0, 0, 0},
11176 	{0x40, 0, 0, 0, 0},
11177 	{0x41, 0x3, 0x3, 0, 0},
11178 	{0x42, 0x3, 0x3, 0, 0},
11179 	{0x43, 0, 0, 0, 0},
11180 	{0x44, 0x1e, 0x1e, 0, 0},
11181 	{0x45, 0, 0, 0, 0},
11182 	{0x46, 0x6e, 0x6e, 0, 0},
11183 	{0x47, 0xf0, 0xf0, 1, 1},
11184 	{0x48, 0, 0, 0, 0},
11185 	{0x49, 0x2, 0x2, 0, 0},
11186 	{0x4A, 0xff, 0xff, 1, 1},
11187 	{0x4B, 0xc, 0xc, 0, 0},
11188 	{0x4C, 0, 0, 0, 0},
11189 	{0x4D, 0x38, 0x38, 0, 0},
11190 	{0x4E, 0x70, 0x70, 1, 1},
11191 	{0x4F, 0x2, 0x2, 0, 0},
11192 	{0x50, 0x88, 0x88, 0, 0},
11193 	{0x51, 0xc, 0xc, 0, 0},
11194 	{0x52, 0, 0, 0, 0},
11195 	{0x53, 0x8, 0x8, 0, 0},
11196 	{0x54, 0x70, 0x70, 1, 1},
11197 	{0x55, 0x2, 0x2, 0, 0},
11198 	{0x56, 0xff, 0xff, 1, 1},
11199 	{0x57, 0, 0, 0, 0},
11200 	{0x58, 0x83, 0x83, 0, 0},
11201 	{0x59, 0x77, 0x77, 1, 1},
11202 	{0x5A, 0, 0, 0, 0},
11203 	{0x5B, 0x2, 0x2, 0, 0},
11204 	{0x5C, 0x88, 0x88, 0, 0},
11205 	{0x5D, 0, 0, 0, 0},
11206 	{0x5E, 0x8, 0x8, 0, 0},
11207 	{0x5F, 0x77, 0x77, 1, 1},
11208 	{0x60, 0x1, 0x1, 0, 0},
11209 	{0x61, 0, 0, 0, 0},
11210 	{0x62, 0x7, 0x7, 0, 0},
11211 	{0x63, 0, 0, 0, 0},
11212 	{0x64, 0x7, 0x7, 0, 0},
11213 	{0x65, 0, 0, 0, 0},
11214 	{0x66, 0, 0, 0, 0},
11215 	{0x67, 0, 0, 1, 1},
11216 	{0x68, 0, 0, 0, 0},
11217 	{0x69, 0xa, 0xa, 0, 0},
11218 	{0x6A, 0, 0, 0, 0},
11219 	{0x6B, 0, 0, 0, 0},
11220 	{0x6C, 0, 0, 0, 0},
11221 	{0x6D, 0, 0, 0, 0},
11222 	{0x6E, 0, 0, 0, 0},
11223 	{0x6F, 0, 0, 0, 0},
11224 	{0x70, 0, 0, 0, 0},
11225 	{0x71, 0x2, 0x2, 0, 0},
11226 	{0x72, 0, 0, 0, 0},
11227 	{0x73, 0, 0, 0, 0},
11228 	{0x74, 0xe, 0xe, 0, 0},
11229 	{0x75, 0xe, 0xe, 0, 0},
11230 	{0x76, 0xe, 0xe, 0, 0},
11231 	{0x77, 0x13, 0x13, 0, 0},
11232 	{0x78, 0x13, 0x13, 0, 0},
11233 	{0x79, 0x1b, 0x1b, 0, 0},
11234 	{0x7A, 0x1b, 0x1b, 0, 0},
11235 	{0x7B, 0x55, 0x55, 0, 0},
11236 	{0x7C, 0x5b, 0x5b, 0, 0},
11237 	{0x7D, 0x30, 0x30, 1, 1},
11238 	{0x7E, 0, 0, 0, 0},
11239 	{0x7F, 0, 0, 0, 0},
11240 	{0x80, 0, 0, 0, 0},
11241 	{0x81, 0, 0, 0, 0},
11242 	{0x82, 0, 0, 0, 0},
11243 	{0x83, 0, 0, 0, 0},
11244 	{0x84, 0, 0, 0, 0},
11245 	{0x85, 0, 0, 0, 0},
11246 	{0x86, 0, 0, 0, 0},
11247 	{0x87, 0, 0, 0, 0},
11248 	{0x88, 0, 0, 0, 0},
11249 	{0x89, 0, 0, 0, 0},
11250 	{0x8A, 0, 0, 0, 0},
11251 	{0x8B, 0, 0, 0, 0},
11252 	{0x8C, 0, 0, 0, 0},
11253 	{0x8D, 0, 0, 0, 0},
11254 	{0x8E, 0, 0, 0, 0},
11255 	{0x8F, 0, 0, 0, 0},
11256 	{0x90, 0, 0, 0, 0},
11257 	{0x91, 0, 0, 0, 0},
11258 	{0x92, 0, 0, 0, 0},
11259 	{0x93, 0x70, 0x70, 0, 0},
11260 	{0x94, 0x70, 0x70, 0, 0},
11261 	{0x95, 0x70, 0x70, 0, 0},
11262 	{0x96, 0x70, 0x70, 0, 0},
11263 	{0x97, 0x70, 0x70, 0, 0},
11264 	{0x98, 0x70, 0x70, 0, 0},
11265 	{0x99, 0x70, 0x70, 0, 0},
11266 	{0x9A, 0x70, 0x70, 0, 0},
11267 	{0xFFFF, 0, 0, 0, 0},
11268 };
11269 
11270 static const struct radio_regs regs_RX_2056_rev11[] = {
11271 	{0x02, 0, 0, 0, 0},
11272 	{0x03, 0, 0, 0, 0},
11273 	{0x04, 0, 0, 0, 0},
11274 	{0x05, 0, 0, 0, 0},
11275 	{0x06, 0, 0, 0, 0},
11276 	{0x07, 0, 0, 0, 0},
11277 	{0x08, 0, 0, 0, 0},
11278 	{0x09, 0, 0, 0, 0},
11279 	{0x0A, 0, 0, 0, 0},
11280 	{0x0B, 0, 0, 0, 0},
11281 	{0x0C, 0, 0, 0, 0},
11282 	{0x0D, 0, 0, 0, 0},
11283 	{0x0E, 0, 0, 0, 0},
11284 	{0x0F, 0, 0, 0, 0},
11285 	{0x10, 0, 0, 0, 0},
11286 	{0x11, 0, 0, 0, 0},
11287 	{0x12, 0, 0, 0, 0},
11288 	{0x13, 0, 0, 0, 0},
11289 	{0x14, 0, 0, 0, 0},
11290 	{0x15, 0, 0, 0, 0},
11291 	{0x16, 0, 0, 0, 0},
11292 	{0x17, 0, 0, 0, 0},
11293 	{0x18, 0, 0, 0, 0},
11294 	{0x19, 0, 0, 0, 0},
11295 	{0x1A, 0, 0, 0, 0},
11296 	{0x1B, 0, 0, 0, 0},
11297 	{0x1C, 0, 0, 0, 0},
11298 	{0x1D, 0, 0, 0, 0},
11299 	{0x1E, 0, 0, 0, 0},
11300 	{0x1F, 0, 0, 0, 0},
11301 	{0x20, 0x3, 0x3, 0, 0},
11302 	{0x21, 0, 0, 0, 0},
11303 	{0x22, 0, 0, 0, 0},
11304 	{0x23, 0x90, 0x90, 0, 0},
11305 	{0x24, 0x55, 0x55, 0, 0},
11306 	{0x25, 0x15, 0x15, 0, 0},
11307 	{0x26, 0x5, 0x5, 0, 0},
11308 	{0x27, 0x15, 0x15, 0, 0},
11309 	{0x28, 0x5, 0x5, 0, 0},
11310 	{0x29, 0x20, 0x20, 0, 0},
11311 	{0x2A, 0x11, 0x11, 0, 0},
11312 	{0x2B, 0x90, 0x90, 0, 0},
11313 	{0x2C, 0, 0, 0, 0},
11314 	{0x2D, 0x88, 0x88, 0, 0},
11315 	{0x2E, 0x32, 0x32, 0, 0},
11316 	{0x2F, 0x77, 0x77, 0, 0},
11317 	{0x30, 0x17, 0x17, 1, 1},
11318 	{0x31, 0xff, 0xff, 1, 1},
11319 	{0x32, 0x20, 0x20, 0, 0},
11320 	{0x33, 0, 0, 0, 0},
11321 	{0x34, 0x88, 0x88, 0, 0},
11322 	{0x35, 0x32, 0x32, 0, 0},
11323 	{0x36, 0x77, 0x77, 0, 0},
11324 	{0x37, 0x17, 0x17, 1, 1},
11325 	{0x38, 0xf0, 0xf0, 1, 1},
11326 	{0x39, 0x20, 0x20, 0, 0},
11327 	{0x3A, 0x8, 0x8, 0, 0},
11328 	{0x3B, 0x55, 0x55, 1, 1},
11329 	{0x3C, 0, 0, 0, 0},
11330 	{0x3D, 0x88, 0x88, 1, 1},
11331 	{0x3E, 0, 0, 0, 0},
11332 	{0x3F, 0x44, 0x44, 0, 0},
11333 	{0x40, 0x7, 0x7, 1, 1},
11334 	{0x41, 0x6, 0x6, 0, 0},
11335 	{0x42, 0x4, 0x4, 0, 0},
11336 	{0x43, 0, 0, 0, 0},
11337 	{0x44, 0x8, 0x8, 0, 0},
11338 	{0x45, 0x55, 0x55, 1, 1},
11339 	{0x46, 0, 0, 0, 0},
11340 	{0x47, 0x11, 0x11, 0, 0},
11341 	{0x48, 0, 0, 0, 0},
11342 	{0x49, 0x44, 0x44, 0, 0},
11343 	{0x4A, 0x7, 0x7, 0, 0},
11344 	{0x4B, 0x6, 0x6, 0, 0},
11345 	{0x4C, 0x4, 0x4, 0, 0},
11346 	{0x4D, 0, 0, 0, 0},
11347 	{0x4E, 0, 0, 0, 0},
11348 	{0x4F, 0x26, 0x26, 1, 1},
11349 	{0x50, 0x26, 0x26, 1, 1},
11350 	{0x51, 0xf, 0xf, 1, 1},
11351 	{0x52, 0xf, 0xf, 1, 1},
11352 	{0x53, 0x44, 0x44, 0, 0},
11353 	{0x54, 0, 0, 0, 0},
11354 	{0x55, 0, 0, 0, 0},
11355 	{0x56, 0x8, 0x8, 0, 0},
11356 	{0x57, 0x8, 0x8, 0, 0},
11357 	{0x58, 0x7, 0x7, 0, 0},
11358 	{0x59, 0x22, 0x22, 0, 0},
11359 	{0x5A, 0x22, 0x22, 0, 0},
11360 	{0x5B, 0x2, 0x2, 0, 0},
11361 	{0x5C, 0x4, 0x4, 1, 1},
11362 	{0x5D, 0x7, 0x7, 0, 0},
11363 	{0x5E, 0x55, 0x55, 0, 0},
11364 	{0x5F, 0x23, 0x23, 0, 0},
11365 	{0x60, 0x41, 0x41, 0, 0},
11366 	{0x61, 0x1, 0x1, 0, 0},
11367 	{0x62, 0xa, 0xa, 0, 0},
11368 	{0x63, 0, 0, 0, 0},
11369 	{0x64, 0, 0, 0, 0},
11370 	{0x65, 0, 0, 0, 0},
11371 	{0x66, 0, 0, 0, 0},
11372 	{0x67, 0, 0, 0, 0},
11373 	{0x68, 0, 0, 0, 0},
11374 	{0x69, 0, 0, 0, 0},
11375 	{0x6A, 0, 0, 0, 0},
11376 	{0x6B, 0xc, 0xc, 0, 0},
11377 	{0x6C, 0, 0, 0, 0},
11378 	{0x6D, 0, 0, 0, 0},
11379 	{0x6E, 0, 0, 0, 0},
11380 	{0x6F, 0, 0, 0, 0},
11381 	{0x70, 0, 0, 0, 0},
11382 	{0x71, 0, 0, 0, 0},
11383 	{0x72, 0x22, 0x22, 0, 0},
11384 	{0x73, 0x22, 0x22, 0, 0},
11385 	{0x74, 0, 0, 1, 1},
11386 	{0x75, 0xa, 0xa, 0, 0},
11387 	{0x76, 0x1, 0x1, 0, 0},
11388 	{0x77, 0x22, 0x22, 0, 0},
11389 	{0x78, 0x30, 0x30, 0, 0},
11390 	{0x79, 0, 0, 0, 0},
11391 	{0x7A, 0, 0, 0, 0},
11392 	{0x7B, 0, 0, 0, 0},
11393 	{0x7C, 0, 0, 0, 0},
11394 	{0x7D, 0x5, 0x5, 1, 1},
11395 	{0x7E, 0, 0, 0, 0},
11396 	{0x7F, 0, 0, 0, 0},
11397 	{0x80, 0, 0, 0, 0},
11398 	{0x81, 0, 0, 0, 0},
11399 	{0x82, 0, 0, 0, 0},
11400 	{0x83, 0, 0, 0, 0},
11401 	{0x84, 0, 0, 0, 0},
11402 	{0x85, 0, 0, 0, 0},
11403 	{0x86, 0, 0, 0, 0},
11404 	{0x87, 0, 0, 0, 0},
11405 	{0x88, 0, 0, 0, 0},
11406 	{0x89, 0, 0, 0, 0},
11407 	{0x8A, 0, 0, 0, 0},
11408 	{0x8B, 0, 0, 0, 0},
11409 	{0x8C, 0, 0, 0, 0},
11410 	{0x8D, 0, 0, 0, 0},
11411 	{0x8E, 0, 0, 0, 0},
11412 	{0x8F, 0, 0, 0, 0},
11413 	{0x90, 0, 0, 0, 0},
11414 	{0x91, 0, 0, 0, 0},
11415 	{0x92, 0, 0, 0, 0},
11416 	{0x93, 0, 0, 0, 0},
11417 	{0x94, 0, 0, 0, 0},
11418 	{0xFFFF, 0, 0, 0, 0},
11419 };
11420 
11421 static struct radio_20xx_regs regs_2057_rev4[] = {
11422 	{0x00, 0x84, 0},
11423 	{0x01, 0, 0},
11424 	{0x02, 0x60, 0},
11425 	{0x03, 0x1f, 0},
11426 	{0x04, 0x4, 0},
11427 	{0x05, 0x2, 0},
11428 	{0x06, 0x1, 0},
11429 	{0x07, 0x1, 0},
11430 	{0x08, 0x1, 0},
11431 	{0x09, 0x69, 0},
11432 	{0x0A, 0x66, 0},
11433 	{0x0B, 0x6, 0},
11434 	{0x0C, 0x18, 0},
11435 	{0x0D, 0x3, 0},
11436 	{0x0E, 0x20, 1},
11437 	{0x0F, 0x20, 0},
11438 	{0x10, 0, 0},
11439 	{0x11, 0x7c, 0},
11440 	{0x12, 0x42, 0},
11441 	{0x13, 0xbd, 0},
11442 	{0x14, 0x7, 0},
11443 	{0x15, 0xf7, 0},
11444 	{0x16, 0x8, 0},
11445 	{0x17, 0x17, 0},
11446 	{0x18, 0x7, 0},
11447 	{0x19, 0, 0},
11448 	{0x1A, 0x2, 0},
11449 	{0x1B, 0x13, 0},
11450 	{0x1C, 0x3e, 0},
11451 	{0x1D, 0x3e, 0},
11452 	{0x1E, 0x96, 0},
11453 	{0x1F, 0x4, 0},
11454 	{0x20, 0, 0},
11455 	{0x21, 0, 0},
11456 	{0x22, 0x17, 0},
11457 	{0x23, 0x4, 0},
11458 	{0x24, 0x1, 0},
11459 	{0x25, 0x6, 0},
11460 	{0x26, 0x4, 0},
11461 	{0x27, 0xd, 0},
11462 	{0x28, 0xd, 0},
11463 	{0x29, 0x30, 0},
11464 	{0x2A, 0x32, 0},
11465 	{0x2B, 0x8, 0},
11466 	{0x2C, 0x1c, 0},
11467 	{0x2D, 0x2, 0},
11468 	{0x2E, 0x4, 0},
11469 	{0x2F, 0x7f, 0},
11470 	{0x30, 0x27, 0},
11471 	{0x31, 0, 1},
11472 	{0x32, 0, 1},
11473 	{0x33, 0, 1},
11474 	{0x34, 0, 0},
11475 	{0x35, 0x26, 1},
11476 	{0x36, 0x18, 0},
11477 	{0x37, 0x7, 0},
11478 	{0x38, 0x66, 0},
11479 	{0x39, 0x66, 0},
11480 	{0x3A, 0x66, 0},
11481 	{0x3B, 0x66, 0},
11482 	{0x3C, 0xff, 1},
11483 	{0x3D, 0xff, 1},
11484 	{0x3E, 0xff, 1},
11485 	{0x3F, 0xff, 1},
11486 	{0x40, 0x16, 0},
11487 	{0x41, 0x7, 0},
11488 	{0x42, 0x19, 0},
11489 	{0x43, 0x7, 0},
11490 	{0x44, 0x6, 0},
11491 	{0x45, 0x3, 0},
11492 	{0x46, 0x1, 0},
11493 	{0x47, 0x7, 0},
11494 	{0x48, 0x33, 0},
11495 	{0x49, 0x5, 0},
11496 	{0x4A, 0x77, 0},
11497 	{0x4B, 0x66, 0},
11498 	{0x4C, 0x66, 0},
11499 	{0x4D, 0, 0},
11500 	{0x4E, 0x4, 0},
11501 	{0x4F, 0xc, 0},
11502 	{0x50, 0, 0},
11503 	{0x51, 0x75, 0},
11504 	{0x56, 0x7, 0},
11505 	{0x57, 0, 0},
11506 	{0x58, 0, 0},
11507 	{0x59, 0xa8, 0},
11508 	{0x5A, 0, 0},
11509 	{0x5B, 0x1f, 0},
11510 	{0x5C, 0x30, 0},
11511 	{0x5D, 0x1, 0},
11512 	{0x5E, 0x30, 0},
11513 	{0x5F, 0x70, 0},
11514 	{0x60, 0, 0},
11515 	{0x61, 0, 0},
11516 	{0x62, 0x33, 1},
11517 	{0x63, 0x19, 0},
11518 	{0x64, 0x62, 0},
11519 	{0x65, 0, 0},
11520 	{0x66, 0x11, 0},
11521 	{0x69, 0, 0},
11522 	{0x6A, 0x7e, 0},
11523 	{0x6B, 0x3f, 0},
11524 	{0x6C, 0x7f, 0},
11525 	{0x6D, 0x78, 0},
11526 	{0x6E, 0xc8, 0},
11527 	{0x6F, 0x88, 0},
11528 	{0x70, 0x8, 0},
11529 	{0x71, 0xf, 0},
11530 	{0x72, 0xbc, 0},
11531 	{0x73, 0x8, 0},
11532 	{0x74, 0x60, 0},
11533 	{0x75, 0x1e, 0},
11534 	{0x76, 0x70, 0},
11535 	{0x77, 0, 0},
11536 	{0x78, 0, 0},
11537 	{0x79, 0, 0},
11538 	{0x7A, 0x33, 0},
11539 	{0x7B, 0x1e, 0},
11540 	{0x7C, 0x62, 0},
11541 	{0x7D, 0x11, 0},
11542 	{0x80, 0x3c, 0},
11543 	{0x81, 0x9c, 0},
11544 	{0x82, 0xa, 0},
11545 	{0x83, 0x9d, 0},
11546 	{0x84, 0xa, 0},
11547 	{0x85, 0, 0},
11548 	{0x86, 0x40, 0},
11549 	{0x87, 0x40, 0},
11550 	{0x88, 0x88, 0},
11551 	{0x89, 0x10, 0},
11552 	{0x8A, 0xf0, 1},
11553 	{0x8B, 0x10, 1},
11554 	{0x8C, 0xf0, 1},
11555 	{0x8D, 0, 0},
11556 	{0x8E, 0, 0},
11557 	{0x8F, 0x10, 0},
11558 	{0x90, 0x55, 0},
11559 	{0x91, 0x3f, 1},
11560 	{0x92, 0x36, 1},
11561 	{0x93, 0, 0},
11562 	{0x94, 0, 0},
11563 	{0x95, 0, 0},
11564 	{0x96, 0x87, 0},
11565 	{0x97, 0x11, 0},
11566 	{0x98, 0, 0},
11567 	{0x99, 0x33, 0},
11568 	{0x9A, 0x88, 0},
11569 	{0x9B, 0, 0},
11570 	{0x9C, 0x87, 0},
11571 	{0x9D, 0x11, 0},
11572 	{0x9E, 0, 0},
11573 	{0x9F, 0x33, 0},
11574 	{0xA0, 0x88, 0},
11575 	{0xA1, 0xe1, 0},
11576 	{0xA2, 0x3f, 0},
11577 	{0xA3, 0x44, 0},
11578 	{0xA4, 0x8c, 1},
11579 	{0xA5, 0x6d, 0},
11580 	{0xA6, 0x22, 0},
11581 	{0xA7, 0xbe, 0},
11582 	{0xA8, 0x55, 1},
11583 	{0xA9, 0xc, 0},
11584 	{0xAA, 0xc, 0},
11585 	{0xAB, 0xaa, 0},
11586 	{0xAC, 0x2, 0},
11587 	{0xAD, 0, 0},
11588 	{0xAE, 0x10, 0},
11589 	{0xAF, 0x1, 1},
11590 	{0xB0, 0, 0},
11591 	{0xB1, 0, 0},
11592 	{0xB2, 0x80, 0},
11593 	{0xB3, 0x60, 0},
11594 	{0xB4, 0x44, 0},
11595 	{0xB5, 0x55, 0},
11596 	{0xB6, 0x1, 0},
11597 	{0xB7, 0x55, 0},
11598 	{0xB8, 0x1, 0},
11599 	{0xB9, 0x5, 0},
11600 	{0xBA, 0x55, 0},
11601 	{0xBB, 0x55, 0},
11602 	{0xC1, 0, 0},
11603 	{0xC2, 0, 0},
11604 	{0xC3, 0, 0},
11605 	{0xC4, 0, 0},
11606 	{0xC5, 0, 0},
11607 	{0xC6, 0, 0},
11608 	{0xC7, 0, 0},
11609 	{0xC8, 0, 0},
11610 	{0xC9, 0, 0},
11611 	{0xCA, 0, 0},
11612 	{0xCB, 0, 0},
11613 	{0xCC, 0, 0},
11614 	{0xCD, 0, 0},
11615 	{0xCE, 0x5e, 0},
11616 	{0xCF, 0xc, 0},
11617 	{0xD0, 0xc, 0},
11618 	{0xD1, 0xc, 0},
11619 	{0xD2, 0, 0},
11620 	{0xD3, 0x2b, 0},
11621 	{0xD4, 0xc, 0},
11622 	{0xD5, 0, 0},
11623 	{0xD6, 0x75, 0},
11624 	{0xDB, 0x7, 0},
11625 	{0xDC, 0, 0},
11626 	{0xDD, 0, 0},
11627 	{0xDE, 0xa8, 0},
11628 	{0xDF, 0, 0},
11629 	{0xE0, 0x1f, 0},
11630 	{0xE1, 0x30, 0},
11631 	{0xE2, 0x1, 0},
11632 	{0xE3, 0x30, 0},
11633 	{0xE4, 0x70, 0},
11634 	{0xE5, 0, 0},
11635 	{0xE6, 0, 0},
11636 	{0xE7, 0x33, 0},
11637 	{0xE8, 0x19, 0},
11638 	{0xE9, 0x62, 0},
11639 	{0xEA, 0, 0},
11640 	{0xEB, 0x11, 0},
11641 	{0xEE, 0, 0},
11642 	{0xEF, 0x7e, 0},
11643 	{0xF0, 0x3f, 0},
11644 	{0xF1, 0x7f, 0},
11645 	{0xF2, 0x78, 0},
11646 	{0xF3, 0xc8, 0},
11647 	{0xF4, 0x88, 0},
11648 	{0xF5, 0x8, 0},
11649 	{0xF6, 0xf, 0},
11650 	{0xF7, 0xbc, 0},
11651 	{0xF8, 0x8, 0},
11652 	{0xF9, 0x60, 0},
11653 	{0xFA, 0x1e, 0},
11654 	{0xFB, 0x70, 0},
11655 	{0xFC, 0, 0},
11656 	{0xFD, 0, 0},
11657 	{0xFE, 0, 0},
11658 	{0xFF, 0x33, 0},
11659 	{0x100, 0x1e, 0},
11660 	{0x101, 0x62, 0},
11661 	{0x102, 0x11, 0},
11662 	{0x105, 0x3c, 0},
11663 	{0x106, 0x9c, 0},
11664 	{0x107, 0xa, 0},
11665 	{0x108, 0x9d, 0},
11666 	{0x109, 0xa, 0},
11667 	{0x10A, 0, 0},
11668 	{0x10B, 0x40, 0},
11669 	{0x10C, 0x40, 0},
11670 	{0x10D, 0x88, 0},
11671 	{0x10E, 0x10, 0},
11672 	{0x10F, 0xf0, 1},
11673 	{0x110, 0x10, 1},
11674 	{0x111, 0xf0, 1},
11675 	{0x112, 0, 0},
11676 	{0x113, 0, 0},
11677 	{0x114, 0x10, 0},
11678 	{0x115, 0x55, 0},
11679 	{0x116, 0x3f, 1},
11680 	{0x117, 0x36, 1},
11681 	{0x118, 0, 0},
11682 	{0x119, 0, 0},
11683 	{0x11A, 0, 0},
11684 	{0x11B, 0x87, 0},
11685 	{0x11C, 0x11, 0},
11686 	{0x11D, 0, 0},
11687 	{0x11E, 0x33, 0},
11688 	{0x11F, 0x88, 0},
11689 	{0x120, 0, 0},
11690 	{0x121, 0x87, 0},
11691 	{0x122, 0x11, 0},
11692 	{0x123, 0, 0},
11693 	{0x124, 0x33, 0},
11694 	{0x125, 0x88, 0},
11695 	{0x126, 0xe1, 0},
11696 	{0x127, 0x3f, 0},
11697 	{0x128, 0x44, 0},
11698 	{0x129, 0x8c, 1},
11699 	{0x12A, 0x6d, 0},
11700 	{0x12B, 0x22, 0},
11701 	{0x12C, 0xbe, 0},
11702 	{0x12D, 0x55, 1},
11703 	{0x12E, 0xc, 0},
11704 	{0x12F, 0xc, 0},
11705 	{0x130, 0xaa, 0},
11706 	{0x131, 0x2, 0},
11707 	{0x132, 0, 0},
11708 	{0x133, 0x10, 0},
11709 	{0x134, 0x1, 1},
11710 	{0x135, 0, 0},
11711 	{0x136, 0, 0},
11712 	{0x137, 0x80, 0},
11713 	{0x138, 0x60, 0},
11714 	{0x139, 0x44, 0},
11715 	{0x13A, 0x55, 0},
11716 	{0x13B, 0x1, 0},
11717 	{0x13C, 0x55, 0},
11718 	{0x13D, 0x1, 0},
11719 	{0x13E, 0x5, 0},
11720 	{0x13F, 0x55, 0},
11721 	{0x140, 0x55, 0},
11722 	{0x146, 0, 0},
11723 	{0x147, 0, 0},
11724 	{0x148, 0, 0},
11725 	{0x149, 0, 0},
11726 	{0x14A, 0, 0},
11727 	{0x14B, 0, 0},
11728 	{0x14C, 0, 0},
11729 	{0x14D, 0, 0},
11730 	{0x14E, 0, 0},
11731 	{0x14F, 0, 0},
11732 	{0x150, 0, 0},
11733 	{0x151, 0, 0},
11734 	{0x152, 0, 0},
11735 	{0x153, 0, 0},
11736 	{0x154, 0xc, 0},
11737 	{0x155, 0xc, 0},
11738 	{0x156, 0xc, 0},
11739 	{0x157, 0, 0},
11740 	{0x158, 0x2b, 0},
11741 	{0x159, 0x84, 0},
11742 	{0x15A, 0x15, 0},
11743 	{0x15B, 0xf, 0},
11744 	{0x15C, 0, 0},
11745 	{0x15D, 0, 0},
11746 	{0x15E, 0, 1},
11747 	{0x15F, 0, 1},
11748 	{0x160, 0, 1},
11749 	{0x161, 0, 1},
11750 	{0x162, 0, 1},
11751 	{0x163, 0, 1},
11752 	{0x164, 0, 0},
11753 	{0x165, 0, 0},
11754 	{0x166, 0, 0},
11755 	{0x167, 0, 0},
11756 	{0x168, 0, 0},
11757 	{0x169, 0x2, 1},
11758 	{0x16A, 0, 1},
11759 	{0x16B, 0, 1},
11760 	{0x16C, 0, 1},
11761 	{0x16D, 0, 0},
11762 	{0x170, 0, 0},
11763 	{0x171, 0x77, 0},
11764 	{0x172, 0x77, 0},
11765 	{0x173, 0x77, 0},
11766 	{0x174, 0x77, 0},
11767 	{0x175, 0, 0},
11768 	{0x176, 0x3, 0},
11769 	{0x177, 0x37, 0},
11770 	{0x178, 0x3, 0},
11771 	{0x179, 0, 0},
11772 	{0x17A, 0x21, 0},
11773 	{0x17B, 0x21, 0},
11774 	{0x17C, 0, 0},
11775 	{0x17D, 0xaa, 0},
11776 	{0x17E, 0, 0},
11777 	{0x17F, 0xaa, 0},
11778 	{0x180, 0, 0},
11779 	{0x190, 0, 0},
11780 	{0x191, 0x77, 0},
11781 	{0x192, 0x77, 0},
11782 	{0x193, 0x77, 0},
11783 	{0x194, 0x77, 0},
11784 	{0x195, 0, 0},
11785 	{0x196, 0x3, 0},
11786 	{0x197, 0x37, 0},
11787 	{0x198, 0x3, 0},
11788 	{0x199, 0, 0},
11789 	{0x19A, 0x21, 0},
11790 	{0x19B, 0x21, 0},
11791 	{0x19C, 0, 0},
11792 	{0x19D, 0xaa, 0},
11793 	{0x19E, 0, 0},
11794 	{0x19F, 0xaa, 0},
11795 	{0x1A0, 0, 0},
11796 	{0x1A1, 0x2, 0},
11797 	{0x1A2, 0xf, 0},
11798 	{0x1A3, 0xf, 0},
11799 	{0x1A4, 0, 1},
11800 	{0x1A5, 0, 1},
11801 	{0x1A6, 0, 1},
11802 	{0x1A7, 0x2, 0},
11803 	{0x1A8, 0xf, 0},
11804 	{0x1A9, 0xf, 0},
11805 	{0x1AA, 0, 1},
11806 	{0x1AB, 0, 1},
11807 	{0x1AC, 0, 1},
11808 	{0xFFFF, 0, 0},
11809 };
11810 
11811 static struct radio_20xx_regs regs_2057_rev5[] = {
11812 	{0x00, 0, 1},
11813 	{0x01, 0x57, 1},
11814 	{0x02, 0x20, 1},
11815 	{0x03, 0x1f, 0},
11816 	{0x04, 0x4, 0},
11817 	{0x05, 0x2, 0},
11818 	{0x06, 0x1, 0},
11819 	{0x07, 0x1, 0},
11820 	{0x08, 0x1, 0},
11821 	{0x09, 0x69, 0},
11822 	{0x0A, 0x66, 0},
11823 	{0x0B, 0x6, 0},
11824 	{0x0C, 0x18, 0},
11825 	{0x0D, 0x3, 0},
11826 	{0x0E, 0x20, 0},
11827 	{0x0F, 0x20, 0},
11828 	{0x10, 0, 0},
11829 	{0x11, 0x7c, 0},
11830 	{0x12, 0x42, 0},
11831 	{0x13, 0xbd, 0},
11832 	{0x14, 0x7, 0},
11833 	{0x15, 0x87, 0},
11834 	{0x16, 0x8, 0},
11835 	{0x17, 0x17, 0},
11836 	{0x18, 0x7, 0},
11837 	{0x19, 0, 0},
11838 	{0x1A, 0x2, 0},
11839 	{0x1B, 0x13, 0},
11840 	{0x1C, 0x3e, 0},
11841 	{0x1D, 0x3e, 0},
11842 	{0x1E, 0x96, 0},
11843 	{0x1F, 0x4, 0},
11844 	{0x20, 0, 0},
11845 	{0x21, 0, 0},
11846 	{0x22, 0x17, 0},
11847 	{0x23, 0x6, 1},
11848 	{0x24, 0x1, 0},
11849 	{0x25, 0x6, 0},
11850 	{0x26, 0x4, 0},
11851 	{0x27, 0xd, 0},
11852 	{0x28, 0xd, 0},
11853 	{0x29, 0x30, 0},
11854 	{0x2A, 0x32, 0},
11855 	{0x2B, 0x8, 0},
11856 	{0x2C, 0x1c, 0},
11857 	{0x2D, 0x2, 0},
11858 	{0x2E, 0x4, 0},
11859 	{0x2F, 0x7f, 0},
11860 	{0x30, 0x27, 0},
11861 	{0x31, 0, 1},
11862 	{0x32, 0, 1},
11863 	{0x33, 0, 1},
11864 	{0x34, 0, 0},
11865 	{0x35, 0x20, 0},
11866 	{0x36, 0x18, 0},
11867 	{0x37, 0x7, 0},
11868 	{0x38, 0x66, 0},
11869 	{0x39, 0x66, 0},
11870 	{0x3C, 0xff, 0},
11871 	{0x3D, 0xff, 0},
11872 	{0x40, 0x16, 0},
11873 	{0x41, 0x7, 0},
11874 	{0x45, 0x3, 0},
11875 	{0x46, 0x1, 0},
11876 	{0x47, 0x7, 0},
11877 	{0x4B, 0x66, 0},
11878 	{0x4C, 0x66, 0},
11879 	{0x4D, 0, 0},
11880 	{0x4E, 0x4, 0},
11881 	{0x4F, 0xc, 0},
11882 	{0x50, 0, 0},
11883 	{0x51, 0x70, 1},
11884 	{0x56, 0x7, 0},
11885 	{0x57, 0, 0},
11886 	{0x58, 0, 0},
11887 	{0x59, 0x88, 1},
11888 	{0x5A, 0, 0},
11889 	{0x5B, 0x1f, 0},
11890 	{0x5C, 0x20, 1},
11891 	{0x5D, 0x1, 0},
11892 	{0x5E, 0x30, 0},
11893 	{0x5F, 0x70, 0},
11894 	{0x60, 0, 0},
11895 	{0x61, 0, 0},
11896 	{0x62, 0x33, 1},
11897 	{0x63, 0xf, 1},
11898 	{0x64, 0xf, 1},
11899 	{0x65, 0, 0},
11900 	{0x66, 0x11, 0},
11901 	{0x80, 0x3c, 0},
11902 	{0x81, 0x1, 1},
11903 	{0x82, 0xa, 0},
11904 	{0x85, 0, 0},
11905 	{0x86, 0x40, 0},
11906 	{0x87, 0x40, 0},
11907 	{0x88, 0x88, 0},
11908 	{0x89, 0x10, 0},
11909 	{0x8A, 0xf0, 0},
11910 	{0x8B, 0x10, 0},
11911 	{0x8C, 0xf0, 0},
11912 	{0x8F, 0x10, 0},
11913 	{0x90, 0x55, 0},
11914 	{0x91, 0x3f, 1},
11915 	{0x92, 0x36, 1},
11916 	{0x93, 0, 0},
11917 	{0x94, 0, 0},
11918 	{0x95, 0, 0},
11919 	{0x96, 0x87, 0},
11920 	{0x97, 0x11, 0},
11921 	{0x98, 0, 0},
11922 	{0x99, 0x33, 0},
11923 	{0x9A, 0x88, 0},
11924 	{0xA1, 0x20, 1},
11925 	{0xA2, 0x3f, 0},
11926 	{0xA3, 0x44, 0},
11927 	{0xA4, 0x8c, 0},
11928 	{0xA5, 0x6c, 0},
11929 	{0xA6, 0x22, 0},
11930 	{0xA7, 0xbe, 0},
11931 	{0xA8, 0x55, 0},
11932 	{0xAA, 0xc, 0},
11933 	{0xAB, 0xaa, 0},
11934 	{0xAC, 0x2, 0},
11935 	{0xAD, 0, 0},
11936 	{0xAE, 0x10, 0},
11937 	{0xAF, 0x1, 0},
11938 	{0xB0, 0, 0},
11939 	{0xB1, 0, 0},
11940 	{0xB2, 0x80, 0},
11941 	{0xB3, 0x60, 0},
11942 	{0xB4, 0x44, 0},
11943 	{0xB5, 0x55, 0},
11944 	{0xB6, 0x1, 0},
11945 	{0xB7, 0x55, 0},
11946 	{0xB8, 0x1, 0},
11947 	{0xB9, 0x5, 0},
11948 	{0xBA, 0x55, 0},
11949 	{0xBB, 0x55, 0},
11950 	{0xC3, 0, 0},
11951 	{0xC4, 0, 0},
11952 	{0xC5, 0, 0},
11953 	{0xC6, 0, 0},
11954 	{0xC7, 0, 0},
11955 	{0xC8, 0, 0},
11956 	{0xC9, 0, 0},
11957 	{0xCA, 0, 0},
11958 	{0xCB, 0, 0},
11959 	{0xCD, 0, 0},
11960 	{0xCE, 0x5e, 0},
11961 	{0xCF, 0xc, 0},
11962 	{0xD0, 0xc, 0},
11963 	{0xD1, 0xc, 0},
11964 	{0xD2, 0, 0},
11965 	{0xD3, 0x2b, 0},
11966 	{0xD4, 0xc, 0},
11967 	{0xD5, 0, 0},
11968 	{0xD6, 0x70, 1},
11969 	{0xDB, 0x7, 0},
11970 	{0xDC, 0, 0},
11971 	{0xDD, 0, 0},
11972 	{0xDE, 0x88, 1},
11973 	{0xDF, 0, 0},
11974 	{0xE0, 0x1f, 0},
11975 	{0xE1, 0x20, 1},
11976 	{0xE2, 0x1, 0},
11977 	{0xE3, 0x30, 0},
11978 	{0xE4, 0x70, 0},
11979 	{0xE5, 0, 0},
11980 	{0xE6, 0, 0},
11981 	{0xE7, 0x33, 0},
11982 	{0xE8, 0xf, 1},
11983 	{0xE9, 0xf, 1},
11984 	{0xEA, 0, 0},
11985 	{0xEB, 0x11, 0},
11986 	{0x105, 0x3c, 0},
11987 	{0x106, 0x1, 1},
11988 	{0x107, 0xa, 0},
11989 	{0x10A, 0, 0},
11990 	{0x10B, 0x40, 0},
11991 	{0x10C, 0x40, 0},
11992 	{0x10D, 0x88, 0},
11993 	{0x10E, 0x10, 0},
11994 	{0x10F, 0xf0, 0},
11995 	{0x110, 0x10, 0},
11996 	{0x111, 0xf0, 0},
11997 	{0x114, 0x10, 0},
11998 	{0x115, 0x55, 0},
11999 	{0x116, 0x3f, 1},
12000 	{0x117, 0x36, 1},
12001 	{0x118, 0, 0},
12002 	{0x119, 0, 0},
12003 	{0x11A, 0, 0},
12004 	{0x11B, 0x87, 0},
12005 	{0x11C, 0x11, 0},
12006 	{0x11D, 0, 0},
12007 	{0x11E, 0x33, 0},
12008 	{0x11F, 0x88, 0},
12009 	{0x126, 0x20, 1},
12010 	{0x127, 0x3f, 0},
12011 	{0x128, 0x44, 0},
12012 	{0x129, 0x8c, 0},
12013 	{0x12A, 0x6c, 0},
12014 	{0x12B, 0x22, 0},
12015 	{0x12C, 0xbe, 0},
12016 	{0x12D, 0x55, 0},
12017 	{0x12F, 0xc, 0},
12018 	{0x130, 0xaa, 0},
12019 	{0x131, 0x2, 0},
12020 	{0x132, 0, 0},
12021 	{0x133, 0x10, 0},
12022 	{0x134, 0x1, 0},
12023 	{0x135, 0, 0},
12024 	{0x136, 0, 0},
12025 	{0x137, 0x80, 0},
12026 	{0x138, 0x60, 0},
12027 	{0x139, 0x44, 0},
12028 	{0x13A, 0x55, 0},
12029 	{0x13B, 0x1, 0},
12030 	{0x13C, 0x55, 0},
12031 	{0x13D, 0x1, 0},
12032 	{0x13E, 0x5, 0},
12033 	{0x13F, 0x55, 0},
12034 	{0x140, 0x55, 0},
12035 	{0x148, 0, 0},
12036 	{0x149, 0, 0},
12037 	{0x14A, 0, 0},
12038 	{0x14B, 0, 0},
12039 	{0x14C, 0, 0},
12040 	{0x14D, 0, 0},
12041 	{0x14E, 0, 0},
12042 	{0x14F, 0, 0},
12043 	{0x150, 0, 0},
12044 	{0x154, 0xc, 0},
12045 	{0x155, 0xc, 0},
12046 	{0x156, 0xc, 0},
12047 	{0x157, 0, 0},
12048 	{0x158, 0x2b, 0},
12049 	{0x159, 0x84, 0},
12050 	{0x15A, 0x15, 0},
12051 	{0x15B, 0xf, 0},
12052 	{0x15C, 0, 0},
12053 	{0x15D, 0, 0},
12054 	{0x15E, 0, 1},
12055 	{0x15F, 0, 1},
12056 	{0x160, 0, 1},
12057 	{0x161, 0, 1},
12058 	{0x162, 0, 1},
12059 	{0x163, 0, 1},
12060 	{0x164, 0, 0},
12061 	{0x165, 0, 0},
12062 	{0x166, 0, 0},
12063 	{0x167, 0, 0},
12064 	{0x168, 0, 0},
12065 	{0x169, 0, 0},
12066 	{0x16A, 0, 1},
12067 	{0x16B, 0, 1},
12068 	{0x16C, 0, 1},
12069 	{0x16D, 0, 0},
12070 	{0x170, 0, 0},
12071 	{0x171, 0x77, 0},
12072 	{0x172, 0x77, 0},
12073 	{0x173, 0x77, 0},
12074 	{0x174, 0x77, 0},
12075 	{0x175, 0, 0},
12076 	{0x176, 0x3, 0},
12077 	{0x177, 0x37, 0},
12078 	{0x178, 0x3, 0},
12079 	{0x179, 0, 0},
12080 	{0x17B, 0x21, 0},
12081 	{0x17C, 0, 0},
12082 	{0x17D, 0xaa, 0},
12083 	{0x17E, 0, 0},
12084 	{0x190, 0, 0},
12085 	{0x191, 0x77, 0},
12086 	{0x192, 0x77, 0},
12087 	{0x193, 0x77, 0},
12088 	{0x194, 0x77, 0},
12089 	{0x195, 0, 0},
12090 	{0x196, 0x3, 0},
12091 	{0x197, 0x37, 0},
12092 	{0x198, 0x3, 0},
12093 	{0x199, 0, 0},
12094 	{0x19B, 0x21, 0},
12095 	{0x19C, 0, 0},
12096 	{0x19D, 0xaa, 0},
12097 	{0x19E, 0, 0},
12098 	{0x1A1, 0x2, 0},
12099 	{0x1A2, 0xf, 0},
12100 	{0x1A3, 0xf, 0},
12101 	{0x1A4, 0, 1},
12102 	{0x1A5, 0, 1},
12103 	{0x1A6, 0, 1},
12104 	{0x1A7, 0x2, 0},
12105 	{0x1A8, 0xf, 0},
12106 	{0x1A9, 0xf, 0},
12107 	{0x1AA, 0, 1},
12108 	{0x1AB, 0, 1},
12109 	{0x1AC, 0, 1},
12110 	{0x1AD, 0x84, 0},
12111 	{0x1AE, 0x60, 0},
12112 	{0x1AF, 0x47, 0},
12113 	{0x1B0, 0x47, 0},
12114 	{0x1B1, 0, 0},
12115 	{0x1B2, 0, 0},
12116 	{0x1B3, 0, 0},
12117 	{0x1B4, 0, 0},
12118 	{0x1B5, 0, 0},
12119 	{0x1B6, 0, 0},
12120 	{0x1B7, 0xc, 1},
12121 	{0x1B8, 0, 0},
12122 	{0x1B9, 0, 0},
12123 	{0x1BA, 0, 0},
12124 	{0x1BB, 0, 0},
12125 	{0x1BC, 0, 0},
12126 	{0x1BD, 0, 0},
12127 	{0x1BE, 0, 0},
12128 	{0x1BF, 0, 0},
12129 	{0x1C0, 0, 0},
12130 	{0x1C1, 0x1, 1},
12131 	{0x1C2, 0x80, 1},
12132 	{0x1C3, 0, 0},
12133 	{0x1C4, 0, 0},
12134 	{0x1C5, 0, 0},
12135 	{0x1C6, 0, 0},
12136 	{0x1C7, 0, 0},
12137 	{0x1C8, 0, 0},
12138 	{0x1C9, 0, 0},
12139 	{0x1CA, 0, 0},
12140 	{0xFFFF, 0, 0}
12141 };
12142 
12143 static struct radio_20xx_regs regs_2057_rev5v1[] = {
12144 	{0x00, 0x15, 1},
12145 	{0x01, 0x57, 1},
12146 	{0x02, 0x20, 1},
12147 	{0x03, 0x1f, 0},
12148 	{0x04, 0x4, 0},
12149 	{0x05, 0x2, 0},
12150 	{0x06, 0x1, 0},
12151 	{0x07, 0x1, 0},
12152 	{0x08, 0x1, 0},
12153 	{0x09, 0x69, 0},
12154 	{0x0A, 0x66, 0},
12155 	{0x0B, 0x6, 0},
12156 	{0x0C, 0x18, 0},
12157 	{0x0D, 0x3, 0},
12158 	{0x0E, 0x20, 0},
12159 	{0x0F, 0x20, 0},
12160 	{0x10, 0, 0},
12161 	{0x11, 0x7c, 0},
12162 	{0x12, 0x42, 0},
12163 	{0x13, 0xbd, 0},
12164 	{0x14, 0x7, 0},
12165 	{0x15, 0x87, 0},
12166 	{0x16, 0x8, 0},
12167 	{0x17, 0x17, 0},
12168 	{0x18, 0x7, 0},
12169 	{0x19, 0, 0},
12170 	{0x1A, 0x2, 0},
12171 	{0x1B, 0x13, 0},
12172 	{0x1C, 0x3e, 0},
12173 	{0x1D, 0x3e, 0},
12174 	{0x1E, 0x96, 0},
12175 	{0x1F, 0x4, 0},
12176 	{0x20, 0, 0},
12177 	{0x21, 0, 0},
12178 	{0x22, 0x17, 0},
12179 	{0x23, 0x6, 1},
12180 	{0x24, 0x1, 0},
12181 	{0x25, 0x6, 0},
12182 	{0x26, 0x4, 0},
12183 	{0x27, 0xd, 0},
12184 	{0x28, 0xd, 0},
12185 	{0x29, 0x30, 0},
12186 	{0x2A, 0x32, 0},
12187 	{0x2B, 0x8, 0},
12188 	{0x2C, 0x1c, 0},
12189 	{0x2D, 0x2, 0},
12190 	{0x2E, 0x4, 0},
12191 	{0x2F, 0x7f, 0},
12192 	{0x30, 0x27, 0},
12193 	{0x31, 0, 1},
12194 	{0x32, 0, 1},
12195 	{0x33, 0, 1},
12196 	{0x34, 0, 0},
12197 	{0x35, 0x20, 0},
12198 	{0x36, 0x18, 0},
12199 	{0x37, 0x7, 0},
12200 	{0x38, 0x66, 0},
12201 	{0x39, 0x66, 0},
12202 	{0x3C, 0xff, 0},
12203 	{0x3D, 0xff, 0},
12204 	{0x40, 0x16, 0},
12205 	{0x41, 0x7, 0},
12206 	{0x45, 0x3, 0},
12207 	{0x46, 0x1, 0},
12208 	{0x47, 0x7, 0},
12209 	{0x4B, 0x66, 0},
12210 	{0x4C, 0x66, 0},
12211 	{0x4D, 0, 0},
12212 	{0x4E, 0x4, 0},
12213 	{0x4F, 0xc, 0},
12214 	{0x50, 0, 0},
12215 	{0x51, 0x70, 1},
12216 	{0x56, 0x7, 0},
12217 	{0x57, 0, 0},
12218 	{0x58, 0, 0},
12219 	{0x59, 0x88, 1},
12220 	{0x5A, 0, 0},
12221 	{0x5B, 0x1f, 0},
12222 	{0x5C, 0x20, 1},
12223 	{0x5D, 0x1, 0},
12224 	{0x5E, 0x30, 0},
12225 	{0x5F, 0x70, 0},
12226 	{0x60, 0, 0},
12227 	{0x61, 0, 0},
12228 	{0x62, 0x33, 1},
12229 	{0x63, 0xf, 1},
12230 	{0x64, 0xf, 1},
12231 	{0x65, 0, 0},
12232 	{0x66, 0x11, 0},
12233 	{0x80, 0x3c, 0},
12234 	{0x81, 0x1, 1},
12235 	{0x82, 0xa, 0},
12236 	{0x85, 0, 0},
12237 	{0x86, 0x40, 0},
12238 	{0x87, 0x40, 0},
12239 	{0x88, 0x88, 0},
12240 	{0x89, 0x10, 0},
12241 	{0x8A, 0xf0, 0},
12242 	{0x8B, 0x10, 0},
12243 	{0x8C, 0xf0, 0},
12244 	{0x8F, 0x10, 0},
12245 	{0x90, 0x55, 0},
12246 	{0x91, 0x3f, 1},
12247 	{0x92, 0x36, 1},
12248 	{0x93, 0, 0},
12249 	{0x94, 0, 0},
12250 	{0x95, 0, 0},
12251 	{0x96, 0x87, 0},
12252 	{0x97, 0x11, 0},
12253 	{0x98, 0, 0},
12254 	{0x99, 0x33, 0},
12255 	{0x9A, 0x88, 0},
12256 	{0xA1, 0x20, 1},
12257 	{0xA2, 0x3f, 0},
12258 	{0xA3, 0x44, 0},
12259 	{0xA4, 0x8c, 0},
12260 	{0xA5, 0x6c, 0},
12261 	{0xA6, 0x22, 0},
12262 	{0xA7, 0xbe, 0},
12263 	{0xA8, 0x55, 0},
12264 	{0xAA, 0xc, 0},
12265 	{0xAB, 0xaa, 0},
12266 	{0xAC, 0x2, 0},
12267 	{0xAD, 0, 0},
12268 	{0xAE, 0x10, 0},
12269 	{0xAF, 0x1, 0},
12270 	{0xB0, 0, 0},
12271 	{0xB1, 0, 0},
12272 	{0xB2, 0x80, 0},
12273 	{0xB3, 0x60, 0},
12274 	{0xB4, 0x44, 0},
12275 	{0xB5, 0x55, 0},
12276 	{0xB6, 0x1, 0},
12277 	{0xB7, 0x55, 0},
12278 	{0xB8, 0x1, 0},
12279 	{0xB9, 0x5, 0},
12280 	{0xBA, 0x55, 0},
12281 	{0xBB, 0x55, 0},
12282 	{0xC3, 0, 0},
12283 	{0xC4, 0, 0},
12284 	{0xC5, 0, 0},
12285 	{0xC6, 0, 0},
12286 	{0xC7, 0, 0},
12287 	{0xC8, 0, 0},
12288 	{0xC9, 0x1, 1},
12289 	{0xCA, 0, 0},
12290 	{0xCB, 0, 0},
12291 	{0xCD, 0, 0},
12292 	{0xCE, 0x5e, 0},
12293 	{0xCF, 0xc, 0},
12294 	{0xD0, 0xc, 0},
12295 	{0xD1, 0xc, 0},
12296 	{0xD2, 0, 0},
12297 	{0xD3, 0x2b, 0},
12298 	{0xD4, 0xc, 0},
12299 	{0xD5, 0, 0},
12300 	{0xD6, 0x70, 1},
12301 	{0xDB, 0x7, 0},
12302 	{0xDC, 0, 0},
12303 	{0xDD, 0, 0},
12304 	{0xDE, 0x88, 1},
12305 	{0xDF, 0, 0},
12306 	{0xE0, 0x1f, 0},
12307 	{0xE1, 0x20, 1},
12308 	{0xE2, 0x1, 0},
12309 	{0xE3, 0x30, 0},
12310 	{0xE4, 0x70, 0},
12311 	{0xE5, 0, 0},
12312 	{0xE6, 0, 0},
12313 	{0xE7, 0x33, 0},
12314 	{0xE8, 0xf, 1},
12315 	{0xE9, 0xf, 1},
12316 	{0xEA, 0, 0},
12317 	{0xEB, 0x11, 0},
12318 	{0x105, 0x3c, 0},
12319 	{0x106, 0x1, 1},
12320 	{0x107, 0xa, 0},
12321 	{0x10A, 0, 0},
12322 	{0x10B, 0x40, 0},
12323 	{0x10C, 0x40, 0},
12324 	{0x10D, 0x88, 0},
12325 	{0x10E, 0x10, 0},
12326 	{0x10F, 0xf0, 0},
12327 	{0x110, 0x10, 0},
12328 	{0x111, 0xf0, 0},
12329 	{0x114, 0x10, 0},
12330 	{0x115, 0x55, 0},
12331 	{0x116, 0x3f, 1},
12332 	{0x117, 0x36, 1},
12333 	{0x118, 0, 0},
12334 	{0x119, 0, 0},
12335 	{0x11A, 0, 0},
12336 	{0x11B, 0x87, 0},
12337 	{0x11C, 0x11, 0},
12338 	{0x11D, 0, 0},
12339 	{0x11E, 0x33, 0},
12340 	{0x11F, 0x88, 0},
12341 	{0x126, 0x20, 1},
12342 	{0x127, 0x3f, 0},
12343 	{0x128, 0x44, 0},
12344 	{0x129, 0x8c, 0},
12345 	{0x12A, 0x6c, 0},
12346 	{0x12B, 0x22, 0},
12347 	{0x12C, 0xbe, 0},
12348 	{0x12D, 0x55, 0},
12349 	{0x12F, 0xc, 0},
12350 	{0x130, 0xaa, 0},
12351 	{0x131, 0x2, 0},
12352 	{0x132, 0, 0},
12353 	{0x133, 0x10, 0},
12354 	{0x134, 0x1, 0},
12355 	{0x135, 0, 0},
12356 	{0x136, 0, 0},
12357 	{0x137, 0x80, 0},
12358 	{0x138, 0x60, 0},
12359 	{0x139, 0x44, 0},
12360 	{0x13A, 0x55, 0},
12361 	{0x13B, 0x1, 0},
12362 	{0x13C, 0x55, 0},
12363 	{0x13D, 0x1, 0},
12364 	{0x13E, 0x5, 0},
12365 	{0x13F, 0x55, 0},
12366 	{0x140, 0x55, 0},
12367 	{0x148, 0, 0},
12368 	{0x149, 0, 0},
12369 	{0x14A, 0, 0},
12370 	{0x14B, 0, 0},
12371 	{0x14C, 0, 0},
12372 	{0x14D, 0, 0},
12373 	{0x14E, 0x1, 1},
12374 	{0x14F, 0, 0},
12375 	{0x150, 0, 0},
12376 	{0x154, 0xc, 0},
12377 	{0x155, 0xc, 0},
12378 	{0x156, 0xc, 0},
12379 	{0x157, 0, 0},
12380 	{0x158, 0x2b, 0},
12381 	{0x159, 0x84, 0},
12382 	{0x15A, 0x15, 0},
12383 	{0x15B, 0xf, 0},
12384 	{0x15C, 0, 0},
12385 	{0x15D, 0, 0},
12386 	{0x15E, 0, 1},
12387 	{0x15F, 0, 1},
12388 	{0x160, 0, 1},
12389 	{0x161, 0, 1},
12390 	{0x162, 0, 1},
12391 	{0x163, 0, 1},
12392 	{0x164, 0, 0},
12393 	{0x165, 0, 0},
12394 	{0x166, 0, 0},
12395 	{0x167, 0, 0},
12396 	{0x168, 0, 0},
12397 	{0x169, 0, 0},
12398 	{0x16A, 0, 1},
12399 	{0x16B, 0, 1},
12400 	{0x16C, 0, 1},
12401 	{0x16D, 0, 0},
12402 	{0x170, 0, 0},
12403 	{0x171, 0x77, 0},
12404 	{0x172, 0x77, 0},
12405 	{0x173, 0x77, 0},
12406 	{0x174, 0x77, 0},
12407 	{0x175, 0, 0},
12408 	{0x176, 0x3, 0},
12409 	{0x177, 0x37, 0},
12410 	{0x178, 0x3, 0},
12411 	{0x179, 0, 0},
12412 	{0x17B, 0x21, 0},
12413 	{0x17C, 0, 0},
12414 	{0x17D, 0xaa, 0},
12415 	{0x17E, 0, 0},
12416 	{0x190, 0, 0},
12417 	{0x191, 0x77, 0},
12418 	{0x192, 0x77, 0},
12419 	{0x193, 0x77, 0},
12420 	{0x194, 0x77, 0},
12421 	{0x195, 0, 0},
12422 	{0x196, 0x3, 0},
12423 	{0x197, 0x37, 0},
12424 	{0x198, 0x3, 0},
12425 	{0x199, 0, 0},
12426 	{0x19B, 0x21, 0},
12427 	{0x19C, 0, 0},
12428 	{0x19D, 0xaa, 0},
12429 	{0x19E, 0, 0},
12430 	{0x1A1, 0x2, 0},
12431 	{0x1A2, 0xf, 0},
12432 	{0x1A3, 0xf, 0},
12433 	{0x1A4, 0, 1},
12434 	{0x1A5, 0, 1},
12435 	{0x1A6, 0, 1},
12436 	{0x1A7, 0x2, 0},
12437 	{0x1A8, 0xf, 0},
12438 	{0x1A9, 0xf, 0},
12439 	{0x1AA, 0, 1},
12440 	{0x1AB, 0, 1},
12441 	{0x1AC, 0, 1},
12442 	{0x1AD, 0x84, 0},
12443 	{0x1AE, 0x60, 0},
12444 	{0x1AF, 0x47, 0},
12445 	{0x1B0, 0x47, 0},
12446 	{0x1B1, 0, 0},
12447 	{0x1B2, 0, 0},
12448 	{0x1B3, 0, 0},
12449 	{0x1B4, 0, 0},
12450 	{0x1B5, 0, 0},
12451 	{0x1B6, 0, 0},
12452 	{0x1B7, 0xc, 1},
12453 	{0x1B8, 0, 0},
12454 	{0x1B9, 0, 0},
12455 	{0x1BA, 0, 0},
12456 	{0x1BB, 0, 0},
12457 	{0x1BC, 0, 0},
12458 	{0x1BD, 0, 0},
12459 	{0x1BE, 0, 0},
12460 	{0x1BF, 0, 0},
12461 	{0x1C0, 0, 0},
12462 	{0x1C1, 0x1, 1},
12463 	{0x1C2, 0x80, 1},
12464 	{0x1C3, 0, 0},
12465 	{0x1C4, 0, 0},
12466 	{0x1C5, 0, 0},
12467 	{0x1C6, 0, 0},
12468 	{0x1C7, 0, 0},
12469 	{0x1C8, 0, 0},
12470 	{0x1C9, 0, 0},
12471 	{0x1CA, 0, 0},
12472 	{0xFFFF, 0, 0}
12473 };
12474 
12475 static struct radio_20xx_regs regs_2057_rev7[] = {
12476 	{0x00, 0, 1},
12477 	{0x01, 0x57, 1},
12478 	{0x02, 0x20, 1},
12479 	{0x03, 0x1f, 0},
12480 	{0x04, 0x4, 0},
12481 	{0x05, 0x2, 0},
12482 	{0x06, 0x1, 0},
12483 	{0x07, 0x1, 0},
12484 	{0x08, 0x1, 0},
12485 	{0x09, 0x69, 0},
12486 	{0x0A, 0x66, 0},
12487 	{0x0B, 0x6, 0},
12488 	{0x0C, 0x18, 0},
12489 	{0x0D, 0x3, 0},
12490 	{0x0E, 0x20, 0},
12491 	{0x0F, 0x20, 0},
12492 	{0x10, 0, 0},
12493 	{0x11, 0x7c, 0},
12494 	{0x12, 0x42, 0},
12495 	{0x13, 0xbd, 0},
12496 	{0x14, 0x7, 0},
12497 	{0x15, 0x87, 0},
12498 	{0x16, 0x8, 0},
12499 	{0x17, 0x17, 0},
12500 	{0x18, 0x7, 0},
12501 	{0x19, 0, 0},
12502 	{0x1A, 0x2, 0},
12503 	{0x1B, 0x13, 0},
12504 	{0x1C, 0x3e, 0},
12505 	{0x1D, 0x3e, 0},
12506 	{0x1E, 0x96, 0},
12507 	{0x1F, 0x4, 0},
12508 	{0x20, 0, 0},
12509 	{0x21, 0, 0},
12510 	{0x22, 0x17, 0},
12511 	{0x23, 0x6, 0},
12512 	{0x24, 0x1, 0},
12513 	{0x25, 0x6, 0},
12514 	{0x26, 0x4, 0},
12515 	{0x27, 0xd, 0},
12516 	{0x28, 0xd, 0},
12517 	{0x29, 0x30, 0},
12518 	{0x2A, 0x32, 0},
12519 	{0x2B, 0x8, 0},
12520 	{0x2C, 0x1c, 0},
12521 	{0x2D, 0x2, 0},
12522 	{0x2E, 0x4, 0},
12523 	{0x2F, 0x7f, 0},
12524 	{0x30, 0x27, 0},
12525 	{0x31, 0, 1},
12526 	{0x32, 0, 1},
12527 	{0x33, 0, 1},
12528 	{0x34, 0, 0},
12529 	{0x35, 0x20, 0},
12530 	{0x36, 0x18, 0},
12531 	{0x37, 0x7, 0},
12532 	{0x38, 0x66, 0},
12533 	{0x39, 0x66, 0},
12534 	{0x3A, 0x66, 0},
12535 	{0x3B, 0x66, 0},
12536 	{0x3C, 0xff, 0},
12537 	{0x3D, 0xff, 0},
12538 	{0x3E, 0xff, 0},
12539 	{0x3F, 0xff, 0},
12540 	{0x40, 0x16, 0},
12541 	{0x41, 0x7, 0},
12542 	{0x42, 0x19, 0},
12543 	{0x43, 0x7, 0},
12544 	{0x44, 0x6, 0},
12545 	{0x45, 0x3, 0},
12546 	{0x46, 0x1, 0},
12547 	{0x47, 0x7, 0},
12548 	{0x48, 0x33, 0},
12549 	{0x49, 0x5, 0},
12550 	{0x4A, 0x77, 0},
12551 	{0x4B, 0x66, 0},
12552 	{0x4C, 0x66, 0},
12553 	{0x4D, 0, 0},
12554 	{0x4E, 0x4, 0},
12555 	{0x4F, 0xc, 0},
12556 	{0x50, 0, 0},
12557 	{0x51, 0x70, 1},
12558 	{0x56, 0x7, 0},
12559 	{0x57, 0, 0},
12560 	{0x58, 0, 0},
12561 	{0x59, 0x88, 1},
12562 	{0x5A, 0, 0},
12563 	{0x5B, 0x1f, 0},
12564 	{0x5C, 0x20, 1},
12565 	{0x5D, 0x1, 0},
12566 	{0x5E, 0x30, 0},
12567 	{0x5F, 0x70, 0},
12568 	{0x60, 0, 0},
12569 	{0x61, 0, 0},
12570 	{0x62, 0x33, 1},
12571 	{0x63, 0xf, 1},
12572 	{0x64, 0x13, 1},
12573 	{0x65, 0, 0},
12574 	{0x66, 0xee, 1},
12575 	{0x69, 0, 0},
12576 	{0x6A, 0x7e, 0},
12577 	{0x6B, 0x3f, 0},
12578 	{0x6C, 0x7f, 0},
12579 	{0x6D, 0x78, 0},
12580 	{0x6E, 0x58, 1},
12581 	{0x6F, 0x88, 0},
12582 	{0x70, 0x8, 0},
12583 	{0x71, 0xf, 0},
12584 	{0x72, 0xbc, 0},
12585 	{0x73, 0x8, 0},
12586 	{0x74, 0x60, 0},
12587 	{0x75, 0x13, 1},
12588 	{0x76, 0x70, 0},
12589 	{0x77, 0, 0},
12590 	{0x78, 0, 0},
12591 	{0x79, 0, 0},
12592 	{0x7A, 0x33, 0},
12593 	{0x7B, 0x13, 1},
12594 	{0x7C, 0x14, 1},
12595 	{0x7D, 0xee, 1},
12596 	{0x80, 0x3c, 0},
12597 	{0x81, 0x1, 1},
12598 	{0x82, 0xa, 0},
12599 	{0x83, 0x9d, 0},
12600 	{0x84, 0xa, 0},
12601 	{0x85, 0, 0},
12602 	{0x86, 0x40, 0},
12603 	{0x87, 0x40, 0},
12604 	{0x88, 0x88, 0},
12605 	{0x89, 0x10, 0},
12606 	{0x8A, 0xf0, 0},
12607 	{0x8B, 0x10, 0},
12608 	{0x8C, 0xf0, 0},
12609 	{0x8D, 0, 0},
12610 	{0x8E, 0, 0},
12611 	{0x8F, 0x10, 0},
12612 	{0x90, 0x55, 0},
12613 	{0x91, 0x3f, 1},
12614 	{0x92, 0x36, 1},
12615 	{0x93, 0, 0},
12616 	{0x94, 0, 0},
12617 	{0x95, 0, 0},
12618 	{0x96, 0x87, 0},
12619 	{0x97, 0x11, 0},
12620 	{0x98, 0, 0},
12621 	{0x99, 0x33, 0},
12622 	{0x9A, 0x88, 0},
12623 	{0x9B, 0, 0},
12624 	{0x9C, 0x87, 0},
12625 	{0x9D, 0x11, 0},
12626 	{0x9E, 0, 0},
12627 	{0x9F, 0x33, 0},
12628 	{0xA0, 0x88, 0},
12629 	{0xA1, 0x20, 1},
12630 	{0xA2, 0x3f, 0},
12631 	{0xA3, 0x44, 0},
12632 	{0xA4, 0x8c, 0},
12633 	{0xA5, 0x6c, 0},
12634 	{0xA6, 0x22, 0},
12635 	{0xA7, 0xbe, 0},
12636 	{0xA8, 0x55, 0},
12637 	{0xAA, 0xc, 0},
12638 	{0xAB, 0xaa, 0},
12639 	{0xAC, 0x2, 0},
12640 	{0xAD, 0, 0},
12641 	{0xAE, 0x10, 0},
12642 	{0xAF, 0x1, 0},
12643 	{0xB0, 0, 0},
12644 	{0xB1, 0, 0},
12645 	{0xB2, 0x80, 0},
12646 	{0xB3, 0x60, 0},
12647 	{0xB4, 0x44, 0},
12648 	{0xB5, 0x55, 0},
12649 	{0xB6, 0x1, 0},
12650 	{0xB7, 0x55, 0},
12651 	{0xB8, 0x1, 0},
12652 	{0xB9, 0x5, 0},
12653 	{0xBA, 0x55, 0},
12654 	{0xBB, 0x55, 0},
12655 	{0xC1, 0, 0},
12656 	{0xC2, 0, 0},
12657 	{0xC3, 0, 0},
12658 	{0xC4, 0, 0},
12659 	{0xC5, 0, 0},
12660 	{0xC6, 0, 0},
12661 	{0xC7, 0, 0},
12662 	{0xC8, 0, 0},
12663 	{0xC9, 0, 0},
12664 	{0xCA, 0, 0},
12665 	{0xCB, 0, 0},
12666 	{0xCC, 0, 0},
12667 	{0xCD, 0, 0},
12668 	{0xCE, 0x5e, 0},
12669 	{0xCF, 0xc, 0},
12670 	{0xD0, 0xc, 0},
12671 	{0xD1, 0xc, 0},
12672 	{0xD2, 0, 0},
12673 	{0xD3, 0x2b, 0},
12674 	{0xD4, 0xc, 0},
12675 	{0xD5, 0, 0},
12676 	{0xD6, 0x70, 1},
12677 	{0xDB, 0x7, 0},
12678 	{0xDC, 0, 0},
12679 	{0xDD, 0, 0},
12680 	{0xDE, 0x88, 1},
12681 	{0xDF, 0, 0},
12682 	{0xE0, 0x1f, 0},
12683 	{0xE1, 0x20, 1},
12684 	{0xE2, 0x1, 0},
12685 	{0xE3, 0x30, 0},
12686 	{0xE4, 0x70, 0},
12687 	{0xE5, 0, 0},
12688 	{0xE6, 0, 0},
12689 	{0xE7, 0x33, 0},
12690 	{0xE8, 0xf, 1},
12691 	{0xE9, 0x13, 1},
12692 	{0xEA, 0, 0},
12693 	{0xEB, 0xee, 1},
12694 	{0xEE, 0, 0},
12695 	{0xEF, 0x7e, 0},
12696 	{0xF0, 0x3f, 0},
12697 	{0xF1, 0x7f, 0},
12698 	{0xF2, 0x78, 0},
12699 	{0xF3, 0x58, 1},
12700 	{0xF4, 0x88, 0},
12701 	{0xF5, 0x8, 0},
12702 	{0xF6, 0xf, 0},
12703 	{0xF7, 0xbc, 0},
12704 	{0xF8, 0x8, 0},
12705 	{0xF9, 0x60, 0},
12706 	{0xFA, 0x13, 1},
12707 	{0xFB, 0x70, 0},
12708 	{0xFC, 0, 0},
12709 	{0xFD, 0, 0},
12710 	{0xFE, 0, 0},
12711 	{0xFF, 0x33, 0},
12712 	{0x100, 0x13, 1},
12713 	{0x101, 0x14, 1},
12714 	{0x102, 0xee, 1},
12715 	{0x105, 0x3c, 0},
12716 	{0x106, 0x1, 1},
12717 	{0x107, 0xa, 0},
12718 	{0x108, 0x9d, 0},
12719 	{0x109, 0xa, 0},
12720 	{0x10A, 0, 0},
12721 	{0x10B, 0x40, 0},
12722 	{0x10C, 0x40, 0},
12723 	{0x10D, 0x88, 0},
12724 	{0x10E, 0x10, 0},
12725 	{0x10F, 0xf0, 0},
12726 	{0x110, 0x10, 0},
12727 	{0x111, 0xf0, 0},
12728 	{0x112, 0, 0},
12729 	{0x113, 0, 0},
12730 	{0x114, 0x10, 0},
12731 	{0x115, 0x55, 0},
12732 	{0x116, 0x3f, 1},
12733 	{0x117, 0x36, 1},
12734 	{0x118, 0, 0},
12735 	{0x119, 0, 0},
12736 	{0x11A, 0, 0},
12737 	{0x11B, 0x87, 0},
12738 	{0x11C, 0x11, 0},
12739 	{0x11D, 0, 0},
12740 	{0x11E, 0x33, 0},
12741 	{0x11F, 0x88, 0},
12742 	{0x120, 0, 0},
12743 	{0x121, 0x87, 0},
12744 	{0x122, 0x11, 0},
12745 	{0x123, 0, 0},
12746 	{0x124, 0x33, 0},
12747 	{0x125, 0x88, 0},
12748 	{0x126, 0x20, 1},
12749 	{0x127, 0x3f, 0},
12750 	{0x128, 0x44, 0},
12751 	{0x129, 0x8c, 0},
12752 	{0x12A, 0x6c, 0},
12753 	{0x12B, 0x22, 0},
12754 	{0x12C, 0xbe, 0},
12755 	{0x12D, 0x55, 0},
12756 	{0x12F, 0xc, 0},
12757 	{0x130, 0xaa, 0},
12758 	{0x131, 0x2, 0},
12759 	{0x132, 0, 0},
12760 	{0x133, 0x10, 0},
12761 	{0x134, 0x1, 0},
12762 	{0x135, 0, 0},
12763 	{0x136, 0, 0},
12764 	{0x137, 0x80, 0},
12765 	{0x138, 0x60, 0},
12766 	{0x139, 0x44, 0},
12767 	{0x13A, 0x55, 0},
12768 	{0x13B, 0x1, 0},
12769 	{0x13C, 0x55, 0},
12770 	{0x13D, 0x1, 0},
12771 	{0x13E, 0x5, 0},
12772 	{0x13F, 0x55, 0},
12773 	{0x140, 0x55, 0},
12774 	{0x146, 0, 0},
12775 	{0x147, 0, 0},
12776 	{0x148, 0, 0},
12777 	{0x149, 0, 0},
12778 	{0x14A, 0, 0},
12779 	{0x14B, 0, 0},
12780 	{0x14C, 0, 0},
12781 	{0x14D, 0, 0},
12782 	{0x14E, 0, 0},
12783 	{0x14F, 0, 0},
12784 	{0x150, 0, 0},
12785 	{0x151, 0, 0},
12786 	{0x154, 0xc, 0},
12787 	{0x155, 0xc, 0},
12788 	{0x156, 0xc, 0},
12789 	{0x157, 0, 0},
12790 	{0x158, 0x2b, 0},
12791 	{0x159, 0x84, 0},
12792 	{0x15A, 0x15, 0},
12793 	{0x15B, 0xf, 0},
12794 	{0x15C, 0, 0},
12795 	{0x15D, 0, 0},
12796 	{0x15E, 0, 1},
12797 	{0x15F, 0, 1},
12798 	{0x160, 0, 1},
12799 	{0x161, 0, 1},
12800 	{0x162, 0, 1},
12801 	{0x163, 0, 1},
12802 	{0x164, 0, 0},
12803 	{0x165, 0, 0},
12804 	{0x166, 0, 0},
12805 	{0x167, 0, 0},
12806 	{0x168, 0, 0},
12807 	{0x169, 0, 0},
12808 	{0x16A, 0, 1},
12809 	{0x16B, 0, 1},
12810 	{0x16C, 0, 1},
12811 	{0x16D, 0, 0},
12812 	{0x170, 0, 0},
12813 	{0x171, 0x77, 0},
12814 	{0x172, 0x77, 0},
12815 	{0x173, 0x77, 0},
12816 	{0x174, 0x77, 0},
12817 	{0x175, 0, 0},
12818 	{0x176, 0x3, 0},
12819 	{0x177, 0x37, 0},
12820 	{0x178, 0x3, 0},
12821 	{0x179, 0, 0},
12822 	{0x17A, 0x21, 0},
12823 	{0x17B, 0x21, 0},
12824 	{0x17C, 0, 0},
12825 	{0x17D, 0xaa, 0},
12826 	{0x17E, 0, 0},
12827 	{0x17F, 0xaa, 0},
12828 	{0x180, 0, 0},
12829 	{0x190, 0, 0},
12830 	{0x191, 0x77, 0},
12831 	{0x192, 0x77, 0},
12832 	{0x193, 0x77, 0},
12833 	{0x194, 0x77, 0},
12834 	{0x195, 0, 0},
12835 	{0x196, 0x3, 0},
12836 	{0x197, 0x37, 0},
12837 	{0x198, 0x3, 0},
12838 	{0x199, 0, 0},
12839 	{0x19A, 0x21, 0},
12840 	{0x19B, 0x21, 0},
12841 	{0x19C, 0, 0},
12842 	{0x19D, 0xaa, 0},
12843 	{0x19E, 0, 0},
12844 	{0x19F, 0xaa, 0},
12845 	{0x1A0, 0, 0},
12846 	{0x1A1, 0x2, 0},
12847 	{0x1A2, 0xf, 0},
12848 	{0x1A3, 0xf, 0},
12849 	{0x1A4, 0, 1},
12850 	{0x1A5, 0, 1},
12851 	{0x1A6, 0, 1},
12852 	{0x1A7, 0x2, 0},
12853 	{0x1A8, 0xf, 0},
12854 	{0x1A9, 0xf, 0},
12855 	{0x1AA, 0, 1},
12856 	{0x1AB, 0, 1},
12857 	{0x1AC, 0, 1},
12858 	{0x1AD, 0x84, 0},
12859 	{0x1AE, 0x60, 0},
12860 	{0x1AF, 0x47, 0},
12861 	{0x1B0, 0x47, 0},
12862 	{0x1B1, 0, 0},
12863 	{0x1B2, 0, 0},
12864 	{0x1B3, 0, 0},
12865 	{0x1B4, 0, 0},
12866 	{0x1B5, 0, 0},
12867 	{0x1B6, 0, 0},
12868 	{0x1B7, 0x5, 1},
12869 	{0x1B8, 0, 0},
12870 	{0x1B9, 0, 0},
12871 	{0x1BA, 0, 0},
12872 	{0x1BB, 0, 0},
12873 	{0x1BC, 0, 0},
12874 	{0x1BD, 0, 0},
12875 	{0x1BE, 0, 0},
12876 	{0x1BF, 0, 0},
12877 	{0x1C0, 0, 0},
12878 	{0x1C1, 0, 0},
12879 	{0x1C2, 0xa0, 1},
12880 	{0x1C3, 0, 0},
12881 	{0x1C4, 0, 0},
12882 	{0x1C5, 0, 0},
12883 	{0x1C6, 0, 0},
12884 	{0x1C7, 0, 0},
12885 	{0x1C8, 0, 0},
12886 	{0x1C9, 0, 0},
12887 	{0x1CA, 0, 0},
12888 	{0xFFFF, 0, 0}
12889 };
12890 
12891 static struct radio_20xx_regs regs_2057_rev8[] = {
12892 	{0x00, 0x8, 1},
12893 	{0x01, 0x57, 1},
12894 	{0x02, 0x20, 1},
12895 	{0x03, 0x1f, 0},
12896 	{0x04, 0x4, 0},
12897 	{0x05, 0x2, 0},
12898 	{0x06, 0x1, 0},
12899 	{0x07, 0x1, 0},
12900 	{0x08, 0x1, 0},
12901 	{0x09, 0x69, 0},
12902 	{0x0A, 0x66, 0},
12903 	{0x0B, 0x6, 0},
12904 	{0x0C, 0x18, 0},
12905 	{0x0D, 0x3, 0},
12906 	{0x0E, 0x20, 0},
12907 	{0x0F, 0x20, 0},
12908 	{0x10, 0, 0},
12909 	{0x11, 0x7c, 0},
12910 	{0x12, 0x42, 0},
12911 	{0x13, 0xbd, 0},
12912 	{0x14, 0x7, 0},
12913 	{0x15, 0x87, 0},
12914 	{0x16, 0x8, 0},
12915 	{0x17, 0x17, 0},
12916 	{0x18, 0x7, 0},
12917 	{0x19, 0, 0},
12918 	{0x1A, 0x2, 0},
12919 	{0x1B, 0x13, 0},
12920 	{0x1C, 0x3e, 0},
12921 	{0x1D, 0x3e, 0},
12922 	{0x1E, 0x96, 0},
12923 	{0x1F, 0x4, 0},
12924 	{0x20, 0, 0},
12925 	{0x21, 0, 0},
12926 	{0x22, 0x17, 0},
12927 	{0x23, 0x6, 0},
12928 	{0x24, 0x1, 0},
12929 	{0x25, 0x6, 0},
12930 	{0x26, 0x4, 0},
12931 	{0x27, 0xd, 0},
12932 	{0x28, 0xd, 0},
12933 	{0x29, 0x30, 0},
12934 	{0x2A, 0x32, 0},
12935 	{0x2B, 0x8, 0},
12936 	{0x2C, 0x1c, 0},
12937 	{0x2D, 0x2, 0},
12938 	{0x2E, 0x4, 0},
12939 	{0x2F, 0x7f, 0},
12940 	{0x30, 0x27, 0},
12941 	{0x31, 0, 1},
12942 	{0x32, 0, 1},
12943 	{0x33, 0, 1},
12944 	{0x34, 0, 0},
12945 	{0x35, 0x20, 0},
12946 	{0x36, 0x18, 0},
12947 	{0x37, 0x7, 0},
12948 	{0x38, 0x66, 0},
12949 	{0x39, 0x66, 0},
12950 	{0x3A, 0x66, 0},
12951 	{0x3B, 0x66, 0},
12952 	{0x3C, 0xff, 0},
12953 	{0x3D, 0xff, 0},
12954 	{0x3E, 0xff, 0},
12955 	{0x3F, 0xff, 0},
12956 	{0x40, 0x16, 0},
12957 	{0x41, 0x7, 0},
12958 	{0x42, 0x19, 0},
12959 	{0x43, 0x7, 0},
12960 	{0x44, 0x6, 0},
12961 	{0x45, 0x3, 0},
12962 	{0x46, 0x1, 0},
12963 	{0x47, 0x7, 0},
12964 	{0x48, 0x33, 0},
12965 	{0x49, 0x5, 0},
12966 	{0x4A, 0x77, 0},
12967 	{0x4B, 0x66, 0},
12968 	{0x4C, 0x66, 0},
12969 	{0x4D, 0, 0},
12970 	{0x4E, 0x4, 0},
12971 	{0x4F, 0xc, 0},
12972 	{0x50, 0, 0},
12973 	{0x51, 0x70, 1},
12974 	{0x56, 0x7, 0},
12975 	{0x57, 0, 0},
12976 	{0x58, 0, 0},
12977 	{0x59, 0x88, 1},
12978 	{0x5A, 0, 0},
12979 	{0x5B, 0x1f, 0},
12980 	{0x5C, 0x20, 1},
12981 	{0x5D, 0x1, 0},
12982 	{0x5E, 0x30, 0},
12983 	{0x5F, 0x70, 0},
12984 	{0x60, 0, 0},
12985 	{0x61, 0, 0},
12986 	{0x62, 0x33, 1},
12987 	{0x63, 0xf, 1},
12988 	{0x64, 0xf, 1},
12989 	{0x65, 0, 0},
12990 	{0x66, 0x11, 0},
12991 	{0x69, 0, 0},
12992 	{0x6A, 0x7e, 0},
12993 	{0x6B, 0x3f, 0},
12994 	{0x6C, 0x7f, 0},
12995 	{0x6D, 0x78, 0},
12996 	{0x6E, 0x58, 1},
12997 	{0x6F, 0x88, 0},
12998 	{0x70, 0x8, 0},
12999 	{0x71, 0xf, 0},
13000 	{0x72, 0xbc, 0},
13001 	{0x73, 0x8, 0},
13002 	{0x74, 0x60, 0},
13003 	{0x75, 0x13, 1},
13004 	{0x76, 0x70, 0},
13005 	{0x77, 0, 0},
13006 	{0x78, 0, 0},
13007 	{0x79, 0, 0},
13008 	{0x7A, 0x33, 0},
13009 	{0x7B, 0x13, 1},
13010 	{0x7C, 0xf, 1},
13011 	{0x7D, 0xee, 1},
13012 	{0x80, 0x3c, 0},
13013 	{0x81, 0x1, 1},
13014 	{0x82, 0xa, 0},
13015 	{0x83, 0x9d, 0},
13016 	{0x84, 0xa, 0},
13017 	{0x85, 0, 0},
13018 	{0x86, 0x40, 0},
13019 	{0x87, 0x40, 0},
13020 	{0x88, 0x88, 0},
13021 	{0x89, 0x10, 0},
13022 	{0x8A, 0xf0, 0},
13023 	{0x8B, 0x10, 0},
13024 	{0x8C, 0xf0, 0},
13025 	{0x8D, 0, 0},
13026 	{0x8E, 0, 0},
13027 	{0x8F, 0x10, 0},
13028 	{0x90, 0x55, 0},
13029 	{0x91, 0x3f, 1},
13030 	{0x92, 0x36, 1},
13031 	{0x93, 0, 0},
13032 	{0x94, 0, 0},
13033 	{0x95, 0, 0},
13034 	{0x96, 0x87, 0},
13035 	{0x97, 0x11, 0},
13036 	{0x98, 0, 0},
13037 	{0x99, 0x33, 0},
13038 	{0x9A, 0x88, 0},
13039 	{0x9B, 0, 0},
13040 	{0x9C, 0x87, 0},
13041 	{0x9D, 0x11, 0},
13042 	{0x9E, 0, 0},
13043 	{0x9F, 0x33, 0},
13044 	{0xA0, 0x88, 0},
13045 	{0xA1, 0x20, 1},
13046 	{0xA2, 0x3f, 0},
13047 	{0xA3, 0x44, 0},
13048 	{0xA4, 0x8c, 0},
13049 	{0xA5, 0x6c, 0},
13050 	{0xA6, 0x22, 0},
13051 	{0xA7, 0xbe, 0},
13052 	{0xA8, 0x55, 0},
13053 	{0xAA, 0xc, 0},
13054 	{0xAB, 0xaa, 0},
13055 	{0xAC, 0x2, 0},
13056 	{0xAD, 0, 0},
13057 	{0xAE, 0x10, 0},
13058 	{0xAF, 0x1, 0},
13059 	{0xB0, 0, 0},
13060 	{0xB1, 0, 0},
13061 	{0xB2, 0x80, 0},
13062 	{0xB3, 0x60, 0},
13063 	{0xB4, 0x44, 0},
13064 	{0xB5, 0x55, 0},
13065 	{0xB6, 0x1, 0},
13066 	{0xB7, 0x55, 0},
13067 	{0xB8, 0x1, 0},
13068 	{0xB9, 0x5, 0},
13069 	{0xBA, 0x55, 0},
13070 	{0xBB, 0x55, 0},
13071 	{0xC1, 0, 0},
13072 	{0xC2, 0, 0},
13073 	{0xC3, 0, 0},
13074 	{0xC4, 0, 0},
13075 	{0xC5, 0, 0},
13076 	{0xC6, 0, 0},
13077 	{0xC7, 0, 0},
13078 	{0xC8, 0, 0},
13079 	{0xC9, 0x1, 1},
13080 	{0xCA, 0, 0},
13081 	{0xCB, 0, 0},
13082 	{0xCC, 0, 0},
13083 	{0xCD, 0, 0},
13084 	{0xCE, 0x5e, 0},
13085 	{0xCF, 0xc, 0},
13086 	{0xD0, 0xc, 0},
13087 	{0xD1, 0xc, 0},
13088 	{0xD2, 0, 0},
13089 	{0xD3, 0x2b, 0},
13090 	{0xD4, 0xc, 0},
13091 	{0xD5, 0, 0},
13092 	{0xD6, 0x70, 1},
13093 	{0xDB, 0x7, 0},
13094 	{0xDC, 0, 0},
13095 	{0xDD, 0, 0},
13096 	{0xDE, 0x88, 1},
13097 	{0xDF, 0, 0},
13098 	{0xE0, 0x1f, 0},
13099 	{0xE1, 0x20, 1},
13100 	{0xE2, 0x1, 0},
13101 	{0xE3, 0x30, 0},
13102 	{0xE4, 0x70, 0},
13103 	{0xE5, 0, 0},
13104 	{0xE6, 0, 0},
13105 	{0xE7, 0x33, 0},
13106 	{0xE8, 0xf, 1},
13107 	{0xE9, 0xf, 1},
13108 	{0xEA, 0, 0},
13109 	{0xEB, 0x11, 0},
13110 	{0xEE, 0, 0},
13111 	{0xEF, 0x7e, 0},
13112 	{0xF0, 0x3f, 0},
13113 	{0xF1, 0x7f, 0},
13114 	{0xF2, 0x78, 0},
13115 	{0xF3, 0x58, 1},
13116 	{0xF4, 0x88, 0},
13117 	{0xF5, 0x8, 0},
13118 	{0xF6, 0xf, 0},
13119 	{0xF7, 0xbc, 0},
13120 	{0xF8, 0x8, 0},
13121 	{0xF9, 0x60, 0},
13122 	{0xFA, 0x13, 1},
13123 	{0xFB, 0x70, 0},
13124 	{0xFC, 0, 0},
13125 	{0xFD, 0, 0},
13126 	{0xFE, 0, 0},
13127 	{0xFF, 0x33, 0},
13128 	{0x100, 0x13, 1},
13129 	{0x101, 0xf, 1},
13130 	{0x102, 0xee, 1},
13131 	{0x105, 0x3c, 0},
13132 	{0x106, 0x1, 1},
13133 	{0x107, 0xa, 0},
13134 	{0x108, 0x9d, 0},
13135 	{0x109, 0xa, 0},
13136 	{0x10A, 0, 0},
13137 	{0x10B, 0x40, 0},
13138 	{0x10C, 0x40, 0},
13139 	{0x10D, 0x88, 0},
13140 	{0x10E, 0x10, 0},
13141 	{0x10F, 0xf0, 0},
13142 	{0x110, 0x10, 0},
13143 	{0x111, 0xf0, 0},
13144 	{0x112, 0, 0},
13145 	{0x113, 0, 0},
13146 	{0x114, 0x10, 0},
13147 	{0x115, 0x55, 0},
13148 	{0x116, 0x3f, 1},
13149 	{0x117, 0x36, 1},
13150 	{0x118, 0, 0},
13151 	{0x119, 0, 0},
13152 	{0x11A, 0, 0},
13153 	{0x11B, 0x87, 0},
13154 	{0x11C, 0x11, 0},
13155 	{0x11D, 0, 0},
13156 	{0x11E, 0x33, 0},
13157 	{0x11F, 0x88, 0},
13158 	{0x120, 0, 0},
13159 	{0x121, 0x87, 0},
13160 	{0x122, 0x11, 0},
13161 	{0x123, 0, 0},
13162 	{0x124, 0x33, 0},
13163 	{0x125, 0x88, 0},
13164 	{0x126, 0x20, 1},
13165 	{0x127, 0x3f, 0},
13166 	{0x128, 0x44, 0},
13167 	{0x129, 0x8c, 0},
13168 	{0x12A, 0x6c, 0},
13169 	{0x12B, 0x22, 0},
13170 	{0x12C, 0xbe, 0},
13171 	{0x12D, 0x55, 0},
13172 	{0x12F, 0xc, 0},
13173 	{0x130, 0xaa, 0},
13174 	{0x131, 0x2, 0},
13175 	{0x132, 0, 0},
13176 	{0x133, 0x10, 0},
13177 	{0x134, 0x1, 0},
13178 	{0x135, 0, 0},
13179 	{0x136, 0, 0},
13180 	{0x137, 0x80, 0},
13181 	{0x138, 0x60, 0},
13182 	{0x139, 0x44, 0},
13183 	{0x13A, 0x55, 0},
13184 	{0x13B, 0x1, 0},
13185 	{0x13C, 0x55, 0},
13186 	{0x13D, 0x1, 0},
13187 	{0x13E, 0x5, 0},
13188 	{0x13F, 0x55, 0},
13189 	{0x140, 0x55, 0},
13190 	{0x146, 0, 0},
13191 	{0x147, 0, 0},
13192 	{0x148, 0, 0},
13193 	{0x149, 0, 0},
13194 	{0x14A, 0, 0},
13195 	{0x14B, 0, 0},
13196 	{0x14C, 0, 0},
13197 	{0x14D, 0, 0},
13198 	{0x14E, 0x1, 1},
13199 	{0x14F, 0, 0},
13200 	{0x150, 0, 0},
13201 	{0x151, 0, 0},
13202 	{0x154, 0xc, 0},
13203 	{0x155, 0xc, 0},
13204 	{0x156, 0xc, 0},
13205 	{0x157, 0, 0},
13206 	{0x158, 0x2b, 0},
13207 	{0x159, 0x84, 0},
13208 	{0x15A, 0x15, 0},
13209 	{0x15B, 0xf, 0},
13210 	{0x15C, 0, 0},
13211 	{0x15D, 0, 0},
13212 	{0x15E, 0, 1},
13213 	{0x15F, 0, 1},
13214 	{0x160, 0, 1},
13215 	{0x161, 0, 1},
13216 	{0x162, 0, 1},
13217 	{0x163, 0, 1},
13218 	{0x164, 0, 0},
13219 	{0x165, 0, 0},
13220 	{0x166, 0, 0},
13221 	{0x167, 0, 0},
13222 	{0x168, 0, 0},
13223 	{0x169, 0, 0},
13224 	{0x16A, 0, 1},
13225 	{0x16B, 0, 1},
13226 	{0x16C, 0, 1},
13227 	{0x16D, 0, 0},
13228 	{0x170, 0, 0},
13229 	{0x171, 0x77, 0},
13230 	{0x172, 0x77, 0},
13231 	{0x173, 0x77, 0},
13232 	{0x174, 0x77, 0},
13233 	{0x175, 0, 0},
13234 	{0x176, 0x3, 0},
13235 	{0x177, 0x37, 0},
13236 	{0x178, 0x3, 0},
13237 	{0x179, 0, 0},
13238 	{0x17A, 0x21, 0},
13239 	{0x17B, 0x21, 0},
13240 	{0x17C, 0, 0},
13241 	{0x17D, 0xaa, 0},
13242 	{0x17E, 0, 0},
13243 	{0x17F, 0xaa, 0},
13244 	{0x180, 0, 0},
13245 	{0x190, 0, 0},
13246 	{0x191, 0x77, 0},
13247 	{0x192, 0x77, 0},
13248 	{0x193, 0x77, 0},
13249 	{0x194, 0x77, 0},
13250 	{0x195, 0, 0},
13251 	{0x196, 0x3, 0},
13252 	{0x197, 0x37, 0},
13253 	{0x198, 0x3, 0},
13254 	{0x199, 0, 0},
13255 	{0x19A, 0x21, 0},
13256 	{0x19B, 0x21, 0},
13257 	{0x19C, 0, 0},
13258 	{0x19D, 0xaa, 0},
13259 	{0x19E, 0, 0},
13260 	{0x19F, 0xaa, 0},
13261 	{0x1A0, 0, 0},
13262 	{0x1A1, 0x2, 0},
13263 	{0x1A2, 0xf, 0},
13264 	{0x1A3, 0xf, 0},
13265 	{0x1A4, 0, 1},
13266 	{0x1A5, 0, 1},
13267 	{0x1A6, 0, 1},
13268 	{0x1A7, 0x2, 0},
13269 	{0x1A8, 0xf, 0},
13270 	{0x1A9, 0xf, 0},
13271 	{0x1AA, 0, 1},
13272 	{0x1AB, 0, 1},
13273 	{0x1AC, 0, 1},
13274 	{0x1AD, 0x84, 0},
13275 	{0x1AE, 0x60, 0},
13276 	{0x1AF, 0x47, 0},
13277 	{0x1B0, 0x47, 0},
13278 	{0x1B1, 0, 0},
13279 	{0x1B2, 0, 0},
13280 	{0x1B3, 0, 0},
13281 	{0x1B4, 0, 0},
13282 	{0x1B5, 0, 0},
13283 	{0x1B6, 0, 0},
13284 	{0x1B7, 0x5, 1},
13285 	{0x1B8, 0, 0},
13286 	{0x1B9, 0, 0},
13287 	{0x1BA, 0, 0},
13288 	{0x1BB, 0, 0},
13289 	{0x1BC, 0, 0},
13290 	{0x1BD, 0, 0},
13291 	{0x1BE, 0, 0},
13292 	{0x1BF, 0, 0},
13293 	{0x1C0, 0, 0},
13294 	{0x1C1, 0, 0},
13295 	{0x1C2, 0xa0, 1},
13296 	{0x1C3, 0, 0},
13297 	{0x1C4, 0, 0},
13298 	{0x1C5, 0, 0},
13299 	{0x1C6, 0, 0},
13300 	{0x1C7, 0, 0},
13301 	{0x1C8, 0, 0},
13302 	{0x1C9, 0, 0},
13303 	{0x1CA, 0, 0},
13304 	{0xFFFF, 0, 0}
13305 };
13306 
13307 static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13308 
13309 static s32 nphy_lnagain_est0[] = { -315, 40370 };
13310 static s32 nphy_lnagain_est1[] = { -224, 23242 };
13311 
13312 static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13313 	{
13314 		{0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13315 		{0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13316 		{0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13317 		{0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13318 		{0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13319 		{0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13320 		{0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13321 		{0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13322 		{0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13323 	},
13324 	{
13325 		{0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13326 		{0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13327 		{0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13328 		{0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13329 		{0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13330 		{0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13331 		{0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13332 		{0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13333 		{0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13334 	}
13335 };
13336 
13337 static const u32 nphy_tpc_txgain[] = {
13338 	0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13339 	0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13340 	0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13341 	0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13342 	0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13343 	0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13344 	0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13345 	0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13346 	0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13347 	0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13348 	0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13349 	0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13350 	0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13351 	0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13352 	0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13353 	0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13354 	0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13355 	0x03902942, 0x03902844, 0x03902842, 0x03902744,
13356 	0x03902742, 0x03902644, 0x03902642, 0x03902544,
13357 	0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13358 	0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13359 	0x03802842, 0x03802744, 0x03802742, 0x03802644,
13360 	0x03802642, 0x03802544, 0x03802542, 0x03802444,
13361 	0x03802442, 0x03802344, 0x03802342, 0x03802244,
13362 	0x03802242, 0x03802144, 0x03802142, 0x03802044,
13363 	0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13364 	0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13365 	0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13366 	0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13367 	0x03801842, 0x03801744, 0x03801742, 0x03801644,
13368 	0x03801642, 0x03801544, 0x03801542, 0x03801444,
13369 	0x03801442, 0x03801344, 0x03801342, 0x00002b00
13370 };
13371 
13372 static const u16 nphy_tpc_loscale[] = {
13373 	256, 256, 271, 271, 287, 256, 256, 271,
13374 	271, 287, 287, 304, 304, 256, 256, 271,
13375 	271, 287, 287, 304, 304, 322, 322, 341,
13376 	341, 362, 362, 383, 383, 256, 256, 271,
13377 	271, 287, 287, 304, 304, 322, 322, 256,
13378 	256, 271, 271, 287, 287, 304, 304, 322,
13379 	322, 341, 341, 362, 362, 256, 256, 271,
13380 	271, 287, 287, 304, 304, 322, 322, 256,
13381 	256, 271, 271, 287, 287, 304, 304, 322,
13382 	322, 341, 341, 362, 362, 256, 256, 271,
13383 	271, 287, 287, 304, 304, 322, 322, 341,
13384 	341, 362, 362, 383, 383, 406, 406, 430,
13385 	430, 455, 455, 482, 482, 511, 511, 541,
13386 	541, 573, 573, 607, 607, 643, 643, 681,
13387 	681, 722, 722, 764, 764, 810, 810, 858,
13388 	858, 908, 908, 962, 962, 1019, 1019, 256
13389 };
13390 
13391 static u32 nphy_tpc_txgain_ipa[] = {
13392 	0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13393 	0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13394 	0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13395 	0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13396 	0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13397 	0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13398 	0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13399 	0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13400 	0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13401 	0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13402 	0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13403 	0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13404 	0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13405 	0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13406 	0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13407 	0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13408 	0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13409 	0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13410 	0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13411 	0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13412 	0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13413 	0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13414 	0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13415 	0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13416 	0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13417 	0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13418 	0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13419 	0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13420 	0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13421 	0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13422 	0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13423 	0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13424 };
13425 
13426 static u32 nphy_tpc_txgain_ipa_rev5[] = {
13427 	0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13428 	0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13429 	0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13430 	0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13431 	0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13432 	0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13433 	0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13434 	0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13435 	0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13436 	0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13437 	0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13438 	0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13439 	0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13440 	0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13441 	0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13442 	0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13443 	0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13444 	0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13445 	0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13446 	0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13447 	0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13448 	0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13449 	0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13450 	0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13451 	0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13452 	0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13453 	0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13454 	0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13455 	0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13456 	0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13457 	0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13458 	0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13459 };
13460 
13461 static u32 nphy_tpc_txgain_ipa_rev6[] = {
13462 	0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13463 	0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13464 	0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13465 	0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13466 	0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13467 	0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13468 	0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13469 	0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13470 	0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13471 	0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13472 	0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13473 	0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13474 	0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13475 	0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13476 	0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13477 	0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13478 	0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13479 	0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13480 	0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13481 	0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13482 	0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13483 	0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13484 	0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13485 	0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13486 	0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13487 	0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13488 	0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13489 	0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13490 	0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13491 	0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13492 	0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13493 	0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13494 };
13495 
13496 static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13497 	0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13498 	0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13499 	0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13500 	0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13501 	0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13502 	0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13503 	0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13504 	0x70470028, 0x70470026, 0x70470024, 0x70470022,
13505 	0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13506 	0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13507 	0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13508 	0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13509 	0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13510 	0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13511 	0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13512 	0x70170019, 0x70170018, 0x70170016, 0x70170015,
13513 	0x70170014, 0x70170013, 0x70170012, 0x70170010,
13514 	0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13515 	0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13516 	0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13517 	0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13518 	0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13519 	0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13520 	0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13521 	0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13522 	0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13523 	0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13524 	0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13525 	0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13526 	0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13527 	0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13528 	0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13529 };
13530 
13531 static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13532 	0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13533 	0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13534 	0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13535 	0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13536 	0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13537 	0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13538 	0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13539 	0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13540 	0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13541 	0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13542 	0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13543 	0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13544 	0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13545 	0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13546 	0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13547 	0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13548 	0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13549 	0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13550 	0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13551 	0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13552 	0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13553 	0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13554 	0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13555 	0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13556 	0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13557 	0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13558 	0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13559 	0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13560 	0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13561 	0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13562 	0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13563 	0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13564 };
13565 
13566 static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13567 	0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13568 	0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13569 	0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13570 	0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13571 	0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13572 	0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13573 	0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13574 	0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13575 	0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13576 	0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13577 	0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13578 	0x30170028, 0x30170026, 0x30170024, 0x30170022,
13579 	0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13580 	0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13581 	0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13582 	0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13583 	0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13584 	0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13585 	0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13586 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13587 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13588 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13589 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13590 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13591 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13592 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13593 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13594 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13595 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13596 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13597 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13598 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13599 };
13600 
13601 static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13602 	0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13603 	0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13604 	0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13605 	0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13606 	0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13607 	0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13608 	0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13609 	0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13610 	0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13611 	0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13612 	0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13613 	0x30170028, 0x30170026, 0x30170024, 0x30170022,
13614 	0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13615 	0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13616 	0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13617 	0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13618 	0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13619 	0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13620 	0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13621 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13622 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13623 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13624 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13625 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13626 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13627 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13628 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13629 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13630 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13631 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13632 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13633 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13634 };
13635 
13636 static u32 nphy_tpc_txgain_ipa_5g[] = {
13637 	0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13638 	0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13639 	0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13640 	0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13641 	0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13642 	0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13643 	0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13644 	0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13645 	0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13646 	0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13647 	0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13648 	0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13649 	0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13650 	0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13651 	0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13652 	0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13653 	0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13654 	0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13655 	0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13656 	0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13657 	0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13658 	0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13659 	0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13660 	0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13661 	0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13662 	0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13663 	0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13664 	0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13665 	0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13666 	0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13667 	0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13668 	0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13669 };
13670 
13671 static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13672 	0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13673 	0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13674 	0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13675 	0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13676 	0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13677 	0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13678 	0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13679 	0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13680 	0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13681 	0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13682 	0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13683 	0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13684 	0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13685 	0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13686 	0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13687 	0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13688 	0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13689 	0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13690 	0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13691 	0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13692 	0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13693 	0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13694 	0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13695 	0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13696 	0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13697 	0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13698 	0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13699 	0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13700 	0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13701 	0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13702 	0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13703 	0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13704 };
13705 
13706 static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13707 	0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13708 	0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13709 	0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13710 	0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13711 	0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13712 	0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13713 	0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13714 	0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13715 	0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13716 	0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13717 	0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13718 	0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13719 	0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13720 	0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13721 	0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13722 	0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13723 	0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13724 	0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13725 	0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13726 	0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13727 	0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13728 	0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13729 	0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13730 	0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13731 	0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13732 	0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13733 	0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13734 	0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13735 	0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13736 	0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13737 	0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13738 	0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13739 };
13740 
13741 static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13742 	-114, -108, -98, -91, -84, -78, -70, -62,
13743 	-54, -46, -39, -31, -23, -15, -8, 0
13744 };
13745 
13746 static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13747 	-100, -95, -89, -83, -77, -70, -63, -56,
13748 	-48, -41, -33, -25, -19, -12, -6, 0
13749 };
13750 
13751 static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13752 	-159, -113, -86, -72, -62, -54, -48, -43,
13753 	-39, -35, -31, -28, -25, -23, -20, -18,
13754 	-17, -15, -13, -11, -10, -8, -7, -6,
13755 	-5, -4, -3, -3, -2, -1, -1, 0
13756 };
13757 
13758 static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13759 	-109, -109, -82, -68, -58, -50, -44, -39,
13760 	-35, -31, -28, -26, -23, -21, -19, -17,
13761 	-16, -14, -13, -11, -10, -9, -8, -7,
13762 	-5, -5, -4, -3, -2, -1, -1, 0
13763 };
13764 
13765 static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13766 	-122, -122, -95, -80, -69, -61, -54, -49,
13767 	-43, -39, -35, -32, -28, -26, -23, -21,
13768 	-18, -16, -15, -13, -11, -10, -8, -7,
13769 	-6, -5, -4, -3, -2, -1, -1, 0
13770 };
13771 
13772 static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13773 	-107, -101, -92, -85, -78, -71, -62, -55,
13774 	-47, -39, -32, -24, -19, -12, -6, 0
13775 };
13776 
13777 static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13778 	-110, -104, -95, -88, -81, -74, -66, -58,
13779 	-50, -44, -36, -28, -23, -15, -8, 0
13780 };
13781 
13782 static u8 pad_gain_codes_used_2057rev5[] = {
13783 	20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13784 	10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13785 };
13786 
13787 static u8 pad_gain_codes_used_2057rev7[] = {
13788 	15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13789 	5, 4, 3, 2, 1
13790 };
13791 
13792 static u8 pad_all_gain_codes_2057[] = {
13793 	31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13794 	21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13795 	11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13796 	1, 0
13797 };
13798 
13799 static u8 pga_all_gain_codes_2057[] = {
13800 	15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13801 };
13802 
13803 static u32 nphy_papd_scaltbl[] = {
13804 	0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13805 	0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13806 	0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13807 	0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13808 	0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13809 	0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13810 	0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13811 	0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13812 	0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13813 	0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13814 	0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13815 	0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13816 	0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13817 	0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13818 	0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13819 	0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13820 };
13821 
13822 static u32 nphy_tpc_txgain_rev3[] = {
13823 	0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13824 	0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13825 	0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13826 	0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13827 	0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13828 	0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13829 	0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13830 	0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13831 	0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13832 	0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13833 	0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13834 	0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13835 	0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13836 	0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13837 	0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13838 	0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13839 	0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13840 	0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13841 	0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13842 	0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13843 	0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13844 	0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13845 	0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13846 	0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13847 	0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13848 	0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13849 	0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13850 	0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13851 	0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13852 	0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13853 	0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13854 	0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13855 };
13856 
13857 static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13858 	0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13859 	0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13860 	0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13861 	0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13862 	0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13863 	0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13864 	0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13865 	0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13866 	0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13867 	0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13868 	0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13869 	0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13870 	0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13871 	0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13872 	0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13873 	0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13874 	0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13875 	0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13876 	0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13877 	0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13878 	0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13879 	0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13880 	0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13881 	0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13882 	0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13883 	0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13884 	0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13885 	0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13886 	0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13887 	0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13888 	0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13889 	0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13890 };
13891 
13892 static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13893 	0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13894 	0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13895 	0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13896 	0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13897 	0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13898 	0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13899 	0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13900 	0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13901 	0x80290031, 0x80210039, 0x80210036, 0x80210033,
13902 	0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13903 	0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13904 	0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13905 	0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13906 	0x80110027, 0x80110024, 0x80110022, 0x80110020,
13907 	0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13908 	0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13909 	0x80090029, 0x80090027, 0x80090025, 0x80090023,
13910 	0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13911 	0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13912 	0x8009061d, 0x8009071d, 0x8009071d, 0x8009071d,
13913 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13914 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13915 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13916 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13917 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13918 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13919 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13920 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13921 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13922 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13923 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13924 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d
13925 };
13926 
13927 static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13928 	0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13929 	0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13930 	0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13931 	0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13932 	0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13933 	0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13934 	0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13935 	0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13936 	0x10290031, 0x10210039, 0x10210036, 0x10210033,
13937 	0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13938 	0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13939 	0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13940 	0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13941 	0x10110027, 0x10110024, 0x10110022, 0x10110020,
13942 	0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13943 	0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13944 	0x10090029, 0x10090027, 0x10090025, 0x10090023,
13945 	0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13946 	0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13947 	0x10090015, 0x10090013, 0x10090012, 0x10090011,
13948 	0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13949 	0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13950 	0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13951 	0x10090008, 0x10090008, 0x10090007, 0x10090007,
13952 	0x10090007, 0x10090006, 0x10090006, 0x10090005,
13953 	0x10090005, 0x10090005, 0x10090005, 0x10090004,
13954 	0x10090004, 0x10090004, 0x10090004, 0x10090003,
13955 	0x10090003, 0x10090003, 0x10090003, 0x10090003,
13956 	0x10090003, 0x10090002, 0x10090002, 0x10090002,
13957 	0x10090002, 0x10090002, 0x10090002, 0x10090002,
13958 	0x10090002, 0x10090002, 0x10090001, 0x10090001,
13959 	0x10090001, 0x10090001, 0x10090001, 0x10090001
13960 };
13961 
13962 static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13963 	0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13964 	0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13965 	0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13966 	0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13967 	0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13968 	0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13969 	0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13970 	0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13971 	0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13972 	0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13973 	0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13974 	0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13975 	0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13976 	0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13977 	0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13978 	0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13979 	0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13980 	0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13981 	0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13982 	0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13983 	0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13984 	0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13985 	0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13986 	0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13987 	0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13988 	0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
13989 	0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
13990 	0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
13991 	0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
13992 	0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
13993 	0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
13994 	0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
13995 };
13996 
13997 static u32 nphy_tpc_5GHz_txgain_rev4[] = {
13998 	0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
13999 	0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
14000 	0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
14001 	0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
14002 	0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
14003 	0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
14004 	0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
14005 	0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
14006 	0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
14007 	0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
14008 	0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
14009 	0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
14010 	0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
14011 	0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
14012 	0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
14013 	0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
14014 	0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
14015 	0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
14016 	0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
14017 	0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
14018 	0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
14019 	0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
14020 	0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
14021 	0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
14022 	0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
14023 	0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
14024 	0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14025 	0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14026 	0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14027 	0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14028 	0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14029 	0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14030 };
14031 
14032 static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14033 	0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14034 	0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14035 	0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14036 	0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14037 	0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14038 	0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14039 	0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14040 	0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14041 	0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14042 	0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14043 	0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14044 	0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14045 	0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14046 	0x09620039, 0x09620037, 0x09620035, 0x09620033,
14047 	0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14048 	0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14049 	0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14050 	0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14051 	0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14052 	0x06620039, 0x06620037, 0x06620035, 0x06620033,
14053 	0x05620046, 0x05620044, 0x05620042, 0x05620040,
14054 	0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14055 	0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14056 	0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14057 	0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14058 	0x03620038, 0x03620037, 0x03620035, 0x03620033,
14059 	0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14060 	0x02620046, 0x02620044, 0x02620043, 0x02620042,
14061 	0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14062 	0x01620043, 0x01620042, 0x01620041, 0x01620040,
14063 	0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14064 	0x0062003b, 0x00620039, 0x00620037, 0x00620035
14065 };
14066 
14067 static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14068 	0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14069 	0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14070 	0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14071 	0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14072 	0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14073 	0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14074 	0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14075 	0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14076 	0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14077 	0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14078 	0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14079 	0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14080 	0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14081 	0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14082 	0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14083 	0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14084 	0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14085 	0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14086 	0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14087 	0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14088 	0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14089 	0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14090 	0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14091 	0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14092 	0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14093 	0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14094 	0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14095 	0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14096 	0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14097 	0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14098 	0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14099 	0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14100 };
14101 
14102 static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14103 static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14104 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14105 	0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a
14106 };
14107 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14108 	0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16
14109 };
14110 
wlc_phy_bist_check_phy(struct brcms_phy_pub * pih)14111 bool wlc_phy_bist_check_phy(struct brcms_phy_pub *pih)
14112 {
14113 	struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
14114 	u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14115 
14116 	if (NREV_GE(pi->pubpi.phy_rev, 16))
14117 		return true;
14118 
14119 	phybist0 = read_phy_reg(pi, 0x0e);
14120 	phybist1 = read_phy_reg(pi, 0x0f);
14121 	phybist2 = read_phy_reg(pi, 0xea);
14122 	phybist3 = read_phy_reg(pi, 0xeb);
14123 	phybist4 = read_phy_reg(pi, 0x156);
14124 
14125 	if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14126 	    (phybist3 == 0) && (phybist4 == 0))
14127 		return true;
14128 
14129 	return false;
14130 }
14131 
wlc_phy_bphy_init_nphy(struct brcms_phy * pi)14132 static void wlc_phy_bphy_init_nphy(struct brcms_phy *pi)
14133 {
14134 	u16 addr, val;
14135 
14136 	val = 0x1e1f;
14137 	for (addr = (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT);
14138 	     addr <= (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT_END); addr++) {
14139 		write_phy_reg(pi, addr, val);
14140 		if (addr == (NPHY_TO_BPHY_OFF + 0x97))
14141 			val = 0x3e3f;
14142 		else
14143 			val -= 0x0202;
14144 	}
14145 
14146 	write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_STEP, 0x668);
14147 }
14148 
14149 void
wlc_phy_table_write_nphy(struct brcms_phy * pi,u32 id,u32 len,u32 offset,u32 width,const void * data)14150 wlc_phy_table_write_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14151 			 u32 width, const void *data)
14152 {
14153 	struct phytbl_info tbl;
14154 
14155 	tbl.tbl_id = id;
14156 	tbl.tbl_len = len;
14157 	tbl.tbl_offset = offset;
14158 	tbl.tbl_width = width;
14159 	tbl.tbl_ptr = data;
14160 	wlc_phy_write_table_nphy(pi, &tbl);
14161 }
14162 
14163 void
wlc_phy_table_read_nphy(struct brcms_phy * pi,u32 id,u32 len,u32 offset,u32 width,void * data)14164 wlc_phy_table_read_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14165 			u32 width, void *data)
14166 {
14167 	struct phytbl_info tbl;
14168 
14169 	tbl.tbl_id = id;
14170 	tbl.tbl_len = len;
14171 	tbl.tbl_offset = offset;
14172 	tbl.tbl_width = width;
14173 	tbl.tbl_ptr = data;
14174 	wlc_phy_read_table_nphy(pi, &tbl);
14175 }
14176 
14177 static void
wlc_phy_static_table_download_nphy(struct brcms_phy * pi)14178 wlc_phy_static_table_download_nphy(struct brcms_phy *pi)
14179 {
14180 	uint idx;
14181 
14182 	if (NREV_GE(pi->pubpi.phy_rev, 16)) {
14183 		for (idx = 0; idx < mimophytbl_info_sz_rev16; idx++)
14184 			wlc_phy_write_table_nphy(pi,
14185 						 &mimophytbl_info_rev16[idx]);
14186 	} else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14187 		for (idx = 0; idx < mimophytbl_info_sz_rev7; idx++)
14188 			wlc_phy_write_table_nphy(pi,
14189 						 &mimophytbl_info_rev7[idx]);
14190 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14191 		for (idx = 0; idx < mimophytbl_info_sz_rev3; idx++)
14192 			wlc_phy_write_table_nphy(pi,
14193 						 &mimophytbl_info_rev3[idx]);
14194 	} else {
14195 		for (idx = 0; idx < mimophytbl_info_sz_rev0; idx++)
14196 			wlc_phy_write_table_nphy(pi,
14197 						 &mimophytbl_info_rev0[idx]);
14198 	}
14199 }
14200 
wlc_phy_tbl_init_nphy(struct brcms_phy * pi)14201 static void wlc_phy_tbl_init_nphy(struct brcms_phy *pi)
14202 {
14203 	uint idx = 0;
14204 	u8 antswctrllut;
14205 
14206 	if (pi->phy_init_por)
14207 		wlc_phy_static_table_download_nphy(pi);
14208 
14209 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14210 
14211 		antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14212 			       pi->srom_fem2g.antswctrllut : pi->srom_fem5g.
14213 			       antswctrllut;
14214 
14215 		switch (antswctrllut) {
14216 		case 0:
14217 
14218 			break;
14219 
14220 		case 1:
14221 
14222 			if (pi->aa2g == 7)
14223 				wlc_phy_table_write_nphy(
14224 					pi,
14225 					NPHY_TBL_ID_ANTSWCTRLLUT,
14226 					2, 0x21, 8,
14227 					&ant_sw_ctrl_tbl_rev8_2o3[0]);
14228 			else
14229 				wlc_phy_table_write_nphy(
14230 					pi,
14231 					NPHY_TBL_ID_ANTSWCTRLLUT,
14232 					2, 0x21, 8,
14233 					&ant_sw_ctrl_tbl_rev8
14234 					[0]);
14235 
14236 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14237 						 2, 0x25, 8,
14238 						 &ant_sw_ctrl_tbl_rev8[2]);
14239 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14240 						 2, 0x29, 8,
14241 						 &ant_sw_ctrl_tbl_rev8[4]);
14242 			break;
14243 
14244 		case 2:
14245 
14246 			wlc_phy_table_write_nphy(
14247 				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14248 				2, 0x1, 8,
14249 				&ant_sw_ctrl_tbl_rev8_2057v7_core0[0]);
14250 			wlc_phy_table_write_nphy(
14251 				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14252 				2, 0x5, 8,
14253 				&ant_sw_ctrl_tbl_rev8_2057v7_core0[2]);
14254 			wlc_phy_table_write_nphy(
14255 				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14256 				2, 0x9, 8,
14257 				&ant_sw_ctrl_tbl_rev8_2057v7_core0[4]);
14258 
14259 			wlc_phy_table_write_nphy(
14260 				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14261 				2, 0x21, 8,
14262 				&ant_sw_ctrl_tbl_rev8_2057v7_core1[0]);
14263 			wlc_phy_table_write_nphy(
14264 				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14265 				2, 0x25, 8,
14266 				&ant_sw_ctrl_tbl_rev8_2057v7_core1[2]);
14267 			wlc_phy_table_write_nphy(
14268 				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14269 				2, 0x29, 8,
14270 				&ant_sw_ctrl_tbl_rev8_2057v7_core1[4]);
14271 			break;
14272 
14273 		default:
14274 			break;
14275 		}
14276 
14277 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14278 		for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14279 
14280 			if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14281 				antswctrllut =
14282 					CHSPEC_IS2G(pi->radio_chanspec) ?
14283 					pi->srom_fem2g.antswctrllut :
14284 					pi->srom_fem5g.antswctrllut;
14285 				switch (antswctrllut) {
14286 				case 0:
14287 					wlc_phy_write_table_nphy(
14288 						pi,
14289 						&mimophytbl_info_rev3_volatile
14290 						[idx]);
14291 					break;
14292 				case 1:
14293 					wlc_phy_write_table_nphy(
14294 						pi,
14295 						&mimophytbl_info_rev3_volatile1
14296 						[idx]);
14297 					break;
14298 				case 2:
14299 					wlc_phy_write_table_nphy(
14300 						pi,
14301 						&mimophytbl_info_rev3_volatile2
14302 						[idx]);
14303 					break;
14304 				case 3:
14305 					wlc_phy_write_table_nphy(
14306 						pi,
14307 						&mimophytbl_info_rev3_volatile3
14308 						[idx]);
14309 					break;
14310 				default:
14311 					break;
14312 				}
14313 			} else {
14314 				wlc_phy_write_table_nphy(
14315 					pi,
14316 					&mimophytbl_info_rev3_volatile[idx]);
14317 			}
14318 		}
14319 	} else {
14320 		for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++)
14321 			wlc_phy_write_table_nphy(pi,
14322 						 &mimophytbl_info_rev0_volatile
14323 						 [idx]);
14324 	}
14325 }
14326 
14327 static void
wlc_phy_write_txmacreg_nphy(struct brcms_phy * pi,u16 holdoff,u16 delay)14328 wlc_phy_write_txmacreg_nphy(struct brcms_phy *pi, u16 holdoff, u16 delay)
14329 {
14330 	write_phy_reg(pi, 0x77, holdoff);
14331 	write_phy_reg(pi, 0xb4, delay);
14332 }
14333 
wlc_phy_nphy_tkip_rifs_war(struct brcms_phy * pi,u8 rifs)14334 void wlc_phy_nphy_tkip_rifs_war(struct brcms_phy *pi, u8 rifs)
14335 {
14336 	u16 holdoff, delay;
14337 
14338 	if (rifs) {
14339 
14340 		holdoff = 0x10;
14341 		delay = 0x258;
14342 	} else {
14343 
14344 		holdoff = 0x15;
14345 		delay = 0x320;
14346 	}
14347 
14348 	wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14349 
14350 	if (pi->sh && (pi->sh->_rifs_phy != rifs))
14351 		pi->sh->_rifs_phy = rifs;
14352 }
14353 
wlc_phy_txpwrctrl_config_nphy(struct brcms_phy * pi)14354 static void wlc_phy_txpwrctrl_config_nphy(struct brcms_phy *pi)
14355 {
14356 
14357 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14358 		pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14359 		pi->phy_5g_pwrgain = true;
14360 		return;
14361 	}
14362 
14363 	pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14364 	pi->phy_5g_pwrgain = false;
14365 
14366 	if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14367 	    NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14368 		pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14369 	else if ((pi->sh->sromrev >= 4)
14370 		 && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14371 		pi->phy_5g_pwrgain = true;
14372 }
14373 
wlc_phy_txpwr_srom_read_ppr_nphy(struct brcms_phy * pi)14374 static void wlc_phy_txpwr_srom_read_ppr_nphy(struct brcms_phy *pi)
14375 {
14376 	u16 bw40po, cddpo, stbcpo, bwduppo;
14377 	uint band_num;
14378 	struct ssb_sprom *sprom = &pi->d11core->bus->sprom;
14379 
14380 	if (pi->sh->sromrev >= 9)
14381 		return;
14382 
14383 	bw40po = sprom->bw40po;
14384 	pi->bw402gpo = bw40po & 0xf;
14385 	pi->bw405gpo = (bw40po & 0xf0) >> 4;
14386 	pi->bw405glpo = (bw40po & 0xf00) >> 8;
14387 	pi->bw405ghpo = (bw40po & 0xf000) >> 12;
14388 
14389 	cddpo = sprom->cddpo;
14390 	pi->cdd2gpo = cddpo & 0xf;
14391 	pi->cdd5gpo = (cddpo & 0xf0) >> 4;
14392 	pi->cdd5glpo = (cddpo & 0xf00) >> 8;
14393 	pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
14394 
14395 	stbcpo = sprom->stbcpo;
14396 	pi->stbc2gpo = stbcpo & 0xf;
14397 	pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
14398 	pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
14399 	pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
14400 
14401 	bwduppo = sprom->bwduppo;
14402 	pi->bwdup2gpo = bwduppo & 0xf;
14403 	pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
14404 	pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
14405 	pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
14406 
14407 	for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
14408 	     band_num++) {
14409 		switch (band_num) {
14410 		case 0:
14411 			pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
14412 				sprom->core_pwr_info[0].maxpwr_2g;
14413 			pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
14414 				sprom->core_pwr_info[1].maxpwr_2g;
14415 			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
14416 				sprom->core_pwr_info[0].pa_2g[0];
14417 			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
14418 				sprom->core_pwr_info[1].pa_2g[0];
14419 			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
14420 				sprom->core_pwr_info[0].pa_2g[1];
14421 			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
14422 				sprom->core_pwr_info[1].pa_2g[1];
14423 			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
14424 				sprom->core_pwr_info[0].pa_2g[2];
14425 			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
14426 				sprom->core_pwr_info[1].pa_2g[2];
14427 			pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
14428 				sprom->core_pwr_info[0].itssi_2g;
14429 			pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
14430 				sprom->core_pwr_info[1].itssi_2g;
14431 
14432 			pi->cck2gpo = sprom->cck2gpo;
14433 
14434 			pi->ofdm2gpo = sprom->ofdm2gpo;
14435 
14436 			pi->mcs2gpo[0] = sprom->mcs2gpo[0];
14437 			pi->mcs2gpo[1] = sprom->mcs2gpo[1];
14438 			pi->mcs2gpo[2] = sprom->mcs2gpo[2];
14439 			pi->mcs2gpo[3] = sprom->mcs2gpo[3];
14440 			pi->mcs2gpo[4] = sprom->mcs2gpo[4];
14441 			pi->mcs2gpo[5] = sprom->mcs2gpo[5];
14442 			pi->mcs2gpo[6] = sprom->mcs2gpo[6];
14443 			pi->mcs2gpo[7] = sprom->mcs2gpo[7];
14444 			break;
14445 		case 1:
14446 
14447 			pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
14448 				sprom->core_pwr_info[0].maxpwr_5g;
14449 			pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
14450 				sprom->core_pwr_info[1].maxpwr_5g;
14451 			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
14452 				sprom->core_pwr_info[0].pa_5g[0];
14453 			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
14454 				sprom->core_pwr_info[1].pa_5g[0];
14455 			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
14456 				sprom->core_pwr_info[0].pa_5g[1];
14457 			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
14458 				sprom->core_pwr_info[1].pa_5g[1];
14459 			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
14460 				sprom->core_pwr_info[0].pa_5g[2];
14461 			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
14462 				sprom->core_pwr_info[1].pa_5g[2];
14463 			pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
14464 				sprom->core_pwr_info[0].itssi_5g;
14465 			pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
14466 				sprom->core_pwr_info[1].itssi_5g;
14467 
14468 			pi->ofdm5gpo = sprom->ofdm5gpo;
14469 
14470 			pi->mcs5gpo[0] = sprom->mcs5gpo[0];
14471 			pi->mcs5gpo[1] = sprom->mcs5gpo[1];
14472 			pi->mcs5gpo[2] = sprom->mcs5gpo[2];
14473 			pi->mcs5gpo[3] = sprom->mcs5gpo[3];
14474 			pi->mcs5gpo[4] = sprom->mcs5gpo[4];
14475 			pi->mcs5gpo[5] = sprom->mcs5gpo[5];
14476 			pi->mcs5gpo[6] = sprom->mcs5gpo[6];
14477 			pi->mcs5gpo[7] = sprom->mcs5gpo[7];
14478 			break;
14479 		case 2:
14480 
14481 			pi->nphy_pwrctrl_info[0].max_pwr_5gl =
14482 				sprom->core_pwr_info[0].maxpwr_5gl;
14483 			pi->nphy_pwrctrl_info[1].max_pwr_5gl =
14484 				sprom->core_pwr_info[1].maxpwr_5gl;
14485 			pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
14486 				sprom->core_pwr_info[0].pa_5gl[0];
14487 			pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
14488 				sprom->core_pwr_info[1].pa_5gl[0];
14489 			pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
14490 				sprom->core_pwr_info[0].pa_5gl[1];
14491 			pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
14492 				sprom->core_pwr_info[1].pa_5gl[1];
14493 			pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
14494 				sprom->core_pwr_info[0].pa_5gl[2];
14495 			pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
14496 				sprom->core_pwr_info[1].pa_5gl[2];
14497 			pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
14498 			pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
14499 
14500 			pi->ofdm5glpo = sprom->ofdm5glpo;
14501 
14502 			pi->mcs5glpo[0] = sprom->mcs5glpo[0];
14503 			pi->mcs5glpo[1] = sprom->mcs5glpo[1];
14504 			pi->mcs5glpo[2] = sprom->mcs5glpo[2];
14505 			pi->mcs5glpo[3] = sprom->mcs5glpo[3];
14506 			pi->mcs5glpo[4] = sprom->mcs5glpo[4];
14507 			pi->mcs5glpo[5] = sprom->mcs5glpo[5];
14508 			pi->mcs5glpo[6] = sprom->mcs5glpo[6];
14509 			pi->mcs5glpo[7] = sprom->mcs5glpo[7];
14510 			break;
14511 		case 3:
14512 
14513 			pi->nphy_pwrctrl_info[0].max_pwr_5gh =
14514 				sprom->core_pwr_info[0].maxpwr_5gh;
14515 			pi->nphy_pwrctrl_info[1].max_pwr_5gh =
14516 				sprom->core_pwr_info[1].maxpwr_5gh;
14517 			pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
14518 				sprom->core_pwr_info[0].pa_5gh[0];
14519 			pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
14520 				sprom->core_pwr_info[1].pa_5gh[0];
14521 			pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
14522 				sprom->core_pwr_info[0].pa_5gh[1];
14523 			pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
14524 				sprom->core_pwr_info[1].pa_5gh[1];
14525 			pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
14526 				sprom->core_pwr_info[0].pa_5gh[2];
14527 			pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
14528 				sprom->core_pwr_info[1].pa_5gh[2];
14529 			pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
14530 			pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
14531 
14532 			pi->ofdm5ghpo = sprom->ofdm5ghpo;
14533 
14534 			pi->mcs5ghpo[0] = sprom->mcs5ghpo[0];
14535 			pi->mcs5ghpo[1] = sprom->mcs5ghpo[1];
14536 			pi->mcs5ghpo[2] = sprom->mcs5ghpo[2];
14537 			pi->mcs5ghpo[3] = sprom->mcs5ghpo[3];
14538 			pi->mcs5ghpo[4] = sprom->mcs5ghpo[4];
14539 			pi->mcs5ghpo[5] = sprom->mcs5ghpo[5];
14540 			pi->mcs5ghpo[6] = sprom->mcs5ghpo[6];
14541 			pi->mcs5ghpo[7] = sprom->mcs5ghpo[7];
14542 			break;
14543 		}
14544 	}
14545 
14546 	wlc_phy_txpwr_apply_nphy(pi);
14547 }
14548 
wlc_phy_txpwr_srom_read_nphy(struct brcms_phy * pi)14549 static void wlc_phy_txpwr_srom_read_nphy(struct brcms_phy *pi)
14550 {
14551 	struct ssb_sprom *sprom = &pi->d11core->bus->sprom;
14552 
14553 	pi->antswitch = sprom->antswitch;
14554 	pi->aa2g = sprom->ant_available_bg;
14555 	pi->aa5g = sprom->ant_available_a;
14556 
14557 	pi->srom_fem2g.tssipos = sprom->fem.ghz2.tssipos;
14558 	pi->srom_fem2g.extpagain = sprom->fem.ghz2.extpa_gain;
14559 	pi->srom_fem2g.pdetrange = sprom->fem.ghz2.pdet_range;
14560 	pi->srom_fem2g.triso = sprom->fem.ghz2.tr_iso;
14561 	pi->srom_fem2g.antswctrllut = sprom->fem.ghz2.antswlut;
14562 
14563 	pi->srom_fem5g.tssipos = sprom->fem.ghz5.tssipos;
14564 	pi->srom_fem5g.extpagain = sprom->fem.ghz5.extpa_gain;
14565 	pi->srom_fem5g.pdetrange = sprom->fem.ghz5.pdet_range;
14566 	pi->srom_fem5g.triso = sprom->fem.ghz5.tr_iso;
14567 	if (sprom->fem.ghz5.antswlut)
14568 		pi->srom_fem5g.antswctrllut = sprom->fem.ghz5.antswlut;
14569 	else
14570 		pi->srom_fem5g.antswctrllut = sprom->fem.ghz2.antswlut;
14571 
14572 	wlc_phy_txpower_ipa_upd(pi);
14573 
14574 	pi->phy_txcore_disable_temp = sprom->tempthresh;
14575 	if (pi->phy_txcore_disable_temp == 0)
14576 		pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
14577 
14578 	pi->phy_tempsense_offset = sprom->tempoffset;
14579 	if (pi->phy_tempsense_offset != 0) {
14580 		if (pi->phy_tempsense_offset >
14581 		    (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET))
14582 			pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
14583 		else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
14584 						     NPHY_SROM_MINTEMPOFFSET))
14585 			pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
14586 		else
14587 			pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
14588 	}
14589 
14590 	pi->phy_txcore_enable_temp =
14591 		pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
14592 
14593 	pi->phycal_tempdelta = sprom->phycal_tempdelta;
14594 	if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA)
14595 		pi->phycal_tempdelta = 0;
14596 
14597 	wlc_phy_txpwr_srom_read_ppr_nphy(pi);
14598 }
14599 
wlc_phy_attach_nphy(struct brcms_phy * pi)14600 void wlc_phy_attach_nphy(struct brcms_phy *pi)
14601 {
14602 	uint i;
14603 
14604 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6))
14605 		pi->phyhang_avoid = true;
14606 
14607 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14608 		pi->nphy_gband_spurwar_en = true;
14609 		if (pi->sh->boardflags2 & BFL2_SPUR_WAR)
14610 			pi->nphy_aband_spurwar_en = true;
14611 	}
14612 	if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14613 		if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR)
14614 			pi->nphy_gband_spurwar2_en = true;
14615 	}
14616 
14617 	pi->n_preamble_override = AUTO;
14618 	if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14619 		pi->n_preamble_override = BRCMS_N_PREAMBLE_MIXEDMODE;
14620 
14621 	pi->nphy_txrx_chain = AUTO;
14622 	pi->phy_scraminit = AUTO;
14623 
14624 	pi->nphy_rxcalparams = 0x010100B5;
14625 
14626 	pi->nphy_perical = PHY_PERICAL_MPHASE;
14627 	pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14628 	pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14629 
14630 	pi->nphy_gain_boost = true;
14631 	pi->nphy_elna_gain_config = false;
14632 	pi->radio_is_on = false;
14633 
14634 	for (i = 0; i < pi->pubpi.phy_corenum; i++)
14635 		pi->nphy_txpwrindex[i].index = AUTO;
14636 
14637 	wlc_phy_txpwrctrl_config_nphy(pi);
14638 	if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14639 		pi->hwpwrctrl_capable = true;
14640 
14641 	pi->pi_fptr.init = wlc_phy_init_nphy;
14642 	pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14643 	pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14644 	pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14645 
14646 	wlc_phy_txpwr_srom_read_nphy(pi);
14647 }
14648 
get_rf_pwr_offset(struct brcms_phy * pi,s16 pga_gn,s16 pad_gn)14649 static s32 get_rf_pwr_offset(struct brcms_phy *pi, s16 pga_gn, s16 pad_gn)
14650 {
14651 	s32 rfpwr_offset = 0;
14652 
14653 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
14654 		if ((pi->pubpi.radiorev == 3) ||
14655 		    (pi->pubpi.radiorev == 4) ||
14656 		    (pi->pubpi.radiorev == 6))
14657 			rfpwr_offset = (s16)
14658 				       nphy_papd_padgain_dlt_2g_2057rev3n4
14659 				       [pad_gn];
14660 		else if (pi->pubpi.radiorev == 5)
14661 			rfpwr_offset = (s16)
14662 				       nphy_papd_padgain_dlt_2g_2057rev5
14663 				       [pad_gn];
14664 		else if ((pi->pubpi.radiorev == 7)
14665 			 || (pi->pubpi.radiorev ==
14666 			     8))
14667 			rfpwr_offset = (s16)
14668 				       nphy_papd_padgain_dlt_2g_2057rev7
14669 				       [pad_gn];
14670 	} else {
14671 		if ((pi->pubpi.radiorev == 3) ||
14672 		    (pi->pubpi.radiorev == 4) ||
14673 		    (pi->pubpi.radiorev == 6))
14674 			rfpwr_offset = (s16)
14675 				       nphy_papd_pgagain_dlt_5g_2057
14676 				       [pga_gn];
14677 		else if ((pi->pubpi.radiorev == 7)
14678 			 || (pi->pubpi.radiorev ==
14679 			     8))
14680 			rfpwr_offset = (s16)
14681 				       nphy_papd_pgagain_dlt_5g_2057rev7
14682 				       [pga_gn];
14683 	}
14684 	return rfpwr_offset;
14685 }
14686 
wlc_phy_update_mimoconfig_nphy(struct brcms_phy * pi,s32 preamble)14687 static void wlc_phy_update_mimoconfig_nphy(struct brcms_phy *pi, s32 preamble)
14688 {
14689 	bool gf_preamble = false;
14690 	u16 val;
14691 
14692 	if (preamble == BRCMS_N_PREAMBLE_GF)
14693 		gf_preamble = true;
14694 
14695 	val = read_phy_reg(pi, 0xed);
14696 
14697 	val |= RX_GF_MM_AUTO;
14698 	val &= ~RX_GF_OR_MM;
14699 	if (gf_preamble)
14700 		val |= RX_GF_OR_MM;
14701 
14702 	write_phy_reg(pi, 0xed, val);
14703 }
14704 
wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy * pi)14705 static void wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
14706 {
14707 	int j, type;
14708 	u16 addr_offset[] = { 0x186, 0x195, 0x2c5};
14709 
14710 	for (type = 0; type < 3; type++) {
14711 		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14712 			write_phy_reg(pi, addr_offset[type] + j,
14713 				      NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
14714 	}
14715 
14716 	if (pi->bw == WL_CHANSPEC_BW_40) {
14717 		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14718 			write_phy_reg(pi, 0x186 + j,
14719 				      NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14720 	} else {
14721 		if (CHSPEC_IS5G(pi->radio_chanspec)) {
14722 			for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14723 				write_phy_reg(pi, 0x186 + j,
14724 					NPHY_IPA_REV4_txdigi_filtcoeffs[5][j]);
14725 		}
14726 
14727 		if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
14728 			for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14729 				write_phy_reg(pi, 0x2c5 + j,
14730 					NPHY_IPA_REV4_txdigi_filtcoeffs[6][j]);
14731 		}
14732 	}
14733 }
14734 
wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy * pi)14735 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy *pi)
14736 {
14737 	int j;
14738 
14739 	if (pi->bw == WL_CHANSPEC_BW_40) {
14740 		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14741 			write_phy_reg(pi, 0x195 + j,
14742 				      NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
14743 	} else {
14744 		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14745 			write_phy_reg(pi, 0x186 + j,
14746 				      NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14747 	}
14748 }
14749 
14750 static void
wlc_phy_set_rfseq_nphy(struct brcms_phy * pi,u8 cmd,const u8 * events,const u8 * dlys,u8 len)14751 wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, const u8 *events,
14752 		       const u8 *dlys, u8 len)
14753 {
14754 	u32 t1_offset, t2_offset;
14755 	u8 ctr;
14756 	u8 end_event =
14757 		NREV_GE(pi->pubpi.phy_rev,
14758 			3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
14759 	u8 end_dly = 1;
14760 
14761 	if (pi->phyhang_avoid)
14762 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
14763 
14764 	t1_offset = cmd << 4;
14765 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
14766 				 events);
14767 	t2_offset = t1_offset + 0x080;
14768 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
14769 				 dlys);
14770 
14771 	for (ctr = len; ctr < 16; ctr++) {
14772 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14773 					 t1_offset + ctr, 8, &end_event);
14774 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14775 					 t2_offset + ctr, 8, &end_dly);
14776 	}
14777 
14778 	if (pi->phyhang_avoid)
14779 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
14780 }
14781 
wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy * pi,u16 offset)14782 static u16 wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy *pi, u16 offset)
14783 {
14784 	u16 lpf_bw_ctl_val = 0;
14785 	u16 rx2tx_lpf_rc_lut_offset = 0;
14786 
14787 	if (offset == 0) {
14788 		if (CHSPEC_IS40(pi->radio_chanspec))
14789 			rx2tx_lpf_rc_lut_offset = 0x159;
14790 		else
14791 			rx2tx_lpf_rc_lut_offset = 0x154;
14792 	} else {
14793 		rx2tx_lpf_rc_lut_offset = offset;
14794 	}
14795 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14796 				(u32) rx2tx_lpf_rc_lut_offset, 16,
14797 				&lpf_bw_ctl_val);
14798 
14799 	lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
14800 
14801 	return lpf_bw_ctl_val;
14802 }
14803 
14804 static void
wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy * pi,u16 field,u16 value,u8 core_mask,u8 off,u8 override_id)14805 wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy *pi, u16 field, u16 value,
14806 				  u8 core_mask, u8 off, u8 override_id)
14807 {
14808 	u8 core_num;
14809 	u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
14810 	u8 val_shift = 0;
14811 
14812 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14813 		en_mask = field;
14814 		for (core_num = 0; core_num < 2; core_num++) {
14815 			if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
14816 
14817 				switch (field) {
14818 				case (0x1 << 2):
14819 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14820 					val_addr = (core_num == 0) ? 0x7a :
14821 						   0x7d;
14822 					val_mask = (0x1 << 1);
14823 					val_shift = 1;
14824 					break;
14825 				case (0x1 << 3):
14826 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14827 					val_addr = (core_num == 0) ? 0x7a :
14828 						   0x7d;
14829 					val_mask = (0x1 << 2);
14830 					val_shift = 2;
14831 					break;
14832 				case (0x1 << 4):
14833 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14834 					val_addr = (core_num == 0) ? 0x7a :
14835 						   0x7d;
14836 					val_mask = (0x1 << 4);
14837 					val_shift = 4;
14838 					break;
14839 				case (0x1 << 5):
14840 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14841 					val_addr = (core_num == 0) ? 0x7a :
14842 						   0x7d;
14843 					val_mask = (0x1 << 5);
14844 					val_shift = 5;
14845 					break;
14846 				case (0x1 << 6):
14847 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14848 					val_addr = (core_num == 0) ? 0x7a :
14849 						   0x7d;
14850 					val_mask = (0x1 << 6);
14851 					val_shift = 6;
14852 					break;
14853 				case (0x1 << 7):
14854 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14855 					val_addr = (core_num == 0) ? 0x7a :
14856 						   0x7d;
14857 					val_mask = (0x1 << 7);
14858 					val_shift = 7;
14859 					break;
14860 				case (0x1 << 10):
14861 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14862 					val_addr = (core_num == 0) ? 0xf8 :
14863 						   0xfa;
14864 					val_mask = (0x7 << 4);
14865 					val_shift = 4;
14866 					break;
14867 				case (0x1 << 11):
14868 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14869 					val_addr = (core_num == 0) ? 0x7b :
14870 						   0x7e;
14871 					val_mask = (0xffff << 0);
14872 					val_shift = 0;
14873 					break;
14874 				case (0x1 << 12):
14875 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14876 					val_addr = (core_num == 0) ? 0x7c :
14877 						   0x7f;
14878 					val_mask = (0xffff << 0);
14879 					val_shift = 0;
14880 					break;
14881 				case (0x3 << 13):
14882 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14883 					val_addr = (core_num == 0) ? 0x348 :
14884 						   0x349;
14885 					val_mask = (0xff << 0);
14886 					val_shift = 0;
14887 					break;
14888 				case (0x1 << 13):
14889 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14890 					val_addr = (core_num == 0) ? 0x348 :
14891 						   0x349;
14892 					val_mask = (0xf << 0);
14893 					val_shift = 0;
14894 					break;
14895 				default:
14896 					addr = 0xffff;
14897 					break;
14898 				}
14899 			} else if (override_id ==
14900 				   NPHY_REV7_RFCTRLOVERRIDE_ID1) {
14901 
14902 				switch (field) {
14903 				case (0x1 << 1):
14904 					en_addr = (core_num == 0) ? 0x342 :
14905 						  0x343;
14906 					val_addr = (core_num == 0) ? 0x340 :
14907 						   0x341;
14908 					val_mask = (0x1 << 1);
14909 					val_shift = 1;
14910 					break;
14911 				case (0x1 << 3):
14912 					en_addr = (core_num == 0) ? 0x342 :
14913 						  0x343;
14914 					val_addr = (core_num == 0) ? 0x340 :
14915 						   0x341;
14916 					val_mask = (0x1 << 3);
14917 					val_shift = 3;
14918 					break;
14919 				case (0x1 << 5):
14920 					en_addr = (core_num == 0) ? 0x342 :
14921 						  0x343;
14922 					val_addr = (core_num == 0) ? 0x340 :
14923 						   0x341;
14924 					val_mask = (0x1 << 5);
14925 					val_shift = 5;
14926 					break;
14927 				case (0x1 << 4):
14928 					en_addr = (core_num == 0) ? 0x342 :
14929 						  0x343;
14930 					val_addr = (core_num == 0) ? 0x340 :
14931 						   0x341;
14932 					val_mask = (0x1 << 4);
14933 					val_shift = 4;
14934 					break;
14935 				case (0x1 << 2):
14936 
14937 					en_addr = (core_num == 0) ? 0x342 :
14938 						  0x343;
14939 					val_addr = (core_num == 0) ? 0x340 :
14940 						   0x341;
14941 					val_mask = (0x1 << 2);
14942 					val_shift = 2;
14943 					break;
14944 				case (0x1 << 7):
14945 
14946 					en_addr = (core_num == 0) ? 0x342 :
14947 						  0x343;
14948 					val_addr = (core_num == 0) ? 0x340 :
14949 						   0x341;
14950 					val_mask = (0x7 << 8);
14951 					val_shift = 8;
14952 					break;
14953 				case (0x1 << 11):
14954 					en_addr = (core_num == 0) ? 0x342 :
14955 						  0x343;
14956 					val_addr = (core_num == 0) ? 0x340 :
14957 						   0x341;
14958 					val_mask = (0x1 << 14);
14959 					val_shift = 14;
14960 					break;
14961 				case (0x1 << 10):
14962 					en_addr = (core_num == 0) ? 0x342 :
14963 						  0x343;
14964 					val_addr = (core_num == 0) ? 0x340 :
14965 						   0x341;
14966 					val_mask = (0x1 << 13);
14967 					val_shift = 13;
14968 					break;
14969 				case (0x1 << 9):
14970 					en_addr = (core_num == 0) ? 0x342 :
14971 						  0x343;
14972 					val_addr = (core_num == 0) ? 0x340 :
14973 						   0x341;
14974 					val_mask = (0x1 << 12);
14975 					val_shift = 12;
14976 					break;
14977 				case (0x1 << 8):
14978 					en_addr = (core_num == 0) ? 0x342 :
14979 						  0x343;
14980 					val_addr = (core_num == 0) ? 0x340 :
14981 						   0x341;
14982 					val_mask = (0x1 << 11);
14983 					val_shift = 11;
14984 					break;
14985 				case (0x1 << 6):
14986 					en_addr = (core_num == 0) ? 0x342 :
14987 						  0x343;
14988 					val_addr = (core_num == 0) ? 0x340 :
14989 						   0x341;
14990 					val_mask = (0x1 << 6);
14991 					val_shift = 6;
14992 					break;
14993 				case (0x1 << 0):
14994 					en_addr = (core_num == 0) ? 0x342 :
14995 						  0x343;
14996 					val_addr = (core_num == 0) ? 0x340 :
14997 						   0x341;
14998 					val_mask = (0x1 << 0);
14999 					val_shift = 0;
15000 					break;
15001 				default:
15002 					addr = 0xffff;
15003 					break;
15004 				}
15005 			} else if (override_id ==
15006 				   NPHY_REV7_RFCTRLOVERRIDE_ID2) {
15007 
15008 				switch (field) {
15009 				case (0x1 << 3):
15010 					en_addr = (core_num == 0) ? 0x346 :
15011 						  0x347;
15012 					val_addr = (core_num == 0) ? 0x344 :
15013 						   0x345;
15014 					val_mask = (0x1 << 3);
15015 					val_shift = 3;
15016 					break;
15017 				case (0x1 << 1):
15018 					en_addr = (core_num == 0) ? 0x346 :
15019 						  0x347;
15020 					val_addr = (core_num == 0) ? 0x344 :
15021 						   0x345;
15022 					val_mask = (0x1 << 1);
15023 					val_shift = 1;
15024 					break;
15025 				case (0x1 << 0):
15026 					en_addr = (core_num == 0) ? 0x346 :
15027 						  0x347;
15028 					val_addr = (core_num == 0) ? 0x344 :
15029 						   0x345;
15030 					val_mask = (0x1 << 0);
15031 					val_shift = 0;
15032 					break;
15033 				case (0x1 << 2):
15034 					en_addr = (core_num == 0) ? 0x346 :
15035 						  0x347;
15036 					val_addr = (core_num == 0) ? 0x344 :
15037 						   0x345;
15038 					val_mask = (0x1 << 2);
15039 					val_shift = 2;
15040 					break;
15041 				case (0x1 << 4):
15042 					en_addr = (core_num == 0) ? 0x346 :
15043 						  0x347;
15044 					val_addr = (core_num == 0) ? 0x344 :
15045 						   0x345;
15046 					val_mask = (0x1 << 4);
15047 					val_shift = 4;
15048 					break;
15049 				default:
15050 					addr = 0xffff;
15051 					break;
15052 				}
15053 			}
15054 
15055 			if (off) {
15056 				and_phy_reg(pi, en_addr, ~en_mask);
15057 				and_phy_reg(pi, val_addr, ~val_mask);
15058 			} else {
15059 
15060 				if ((core_mask == 0)
15061 				    || (core_mask & (1 << core_num))) {
15062 					or_phy_reg(pi, en_addr, en_mask);
15063 
15064 					if (addr != 0xffff)
15065 						mod_phy_reg(pi, val_addr,
15066 							    val_mask,
15067 							    (value <<
15068 							     val_shift));
15069 				}
15070 			}
15071 		}
15072 	}
15073 }
15074 
wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy * pi)15075 static void wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy *pi)
15076 {
15077 	uint core;
15078 	int ctr;
15079 	s16 gain_delta[2];
15080 	u8 curr_channel;
15081 	u16 minmax_gain[2];
15082 	u16 regval[4];
15083 
15084 	if (pi->phyhang_avoid)
15085 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
15086 
15087 	if (pi->nphy_gain_boost) {
15088 		if ((CHSPEC_IS2G(pi->radio_chanspec))) {
15089 
15090 			gain_delta[0] = 6;
15091 			gain_delta[1] = 6;
15092 		} else {
15093 
15094 			curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
15095 			gain_delta[0] =
15096 				(s16)
15097 				PHY_HW_ROUND(((nphy_lnagain_est0[0] *
15098 					       curr_channel) +
15099 					      nphy_lnagain_est0[1]), 13);
15100 			gain_delta[1] =
15101 				(s16)
15102 				PHY_HW_ROUND(((nphy_lnagain_est1[0] *
15103 					       curr_channel) +
15104 					      nphy_lnagain_est1[1]), 13);
15105 		}
15106 	} else {
15107 
15108 		gain_delta[0] = 0;
15109 		gain_delta[1] = 0;
15110 	}
15111 
15112 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
15113 		if (pi->nphy_elna_gain_config) {
15114 
15115 			regval[0] = nphy_def_lnagains[2] + gain_delta[core];
15116 			regval[1] = nphy_def_lnagains[3] + gain_delta[core];
15117 			regval[2] = nphy_def_lnagains[3] + gain_delta[core];
15118 			regval[3] = nphy_def_lnagains[3] + gain_delta[core];
15119 		} else {
15120 			for (ctr = 0; ctr < 4; ctr++)
15121 				regval[ctr] =
15122 					nphy_def_lnagains[ctr] +
15123 					gain_delta[core];
15124 		}
15125 		wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
15126 
15127 		minmax_gain[core] =
15128 			(u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
15129 	}
15130 
15131 	mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
15132 	mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
15133 
15134 	if (pi->phyhang_avoid)
15135 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
15136 }
15137 
15138 static void
wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy * pi,u8 core)15139 wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy *pi, u8 core)
15140 {
15141 	if (core == PHY_CORE_0) {
15142 		write_phy_reg(pi, 0x38, 0x4);
15143 		if (CHSPEC_IS2G(pi->radio_chanspec))
15144 			write_phy_reg(pi, 0x37, 0x0060);
15145 		else
15146 			write_phy_reg(pi, 0x37, 0x1080);
15147 	} else if (core == PHY_CORE_1) {
15148 		write_phy_reg(pi, 0x2ae, 0x4);
15149 		if (CHSPEC_IS2G(pi->radio_chanspec))
15150 			write_phy_reg(pi, 0x2ad, 0x0060);
15151 		else
15152 			write_phy_reg(pi, 0x2ad, 0x1080);
15153 	}
15154 }
15155 
wlc_phy_war_txchain_upd_nphy(struct brcms_phy * pi,u8 txchain)15156 static void wlc_phy_war_txchain_upd_nphy(struct brcms_phy *pi, u8 txchain)
15157 {
15158 	u8 txchain0, txchain1;
15159 
15160 	txchain0 = txchain & 0x1;
15161 	txchain1 = (txchain & 0x2) >> 1;
15162 	if (!txchain0)
15163 		wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15164 
15165 	if (!txchain1)
15166 		wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15167 }
15168 
wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy * pi)15169 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy *pi)
15170 {
15171 	s8 lna1_gain_db[] = { 8, 13, 17, 22 };
15172 	s8 lna2_gain_db[] = { -2, 7, 11, 15 };
15173 	s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
15174 	s8 tia_gainbits[] = {
15175 		0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15176 
15177 	mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15178 	mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15179 
15180 	mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15181 
15182 	mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
15183 	mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
15184 
15185 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
15186 				 lna1_gain_db);
15187 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
15188 				 lna1_gain_db);
15189 
15190 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
15191 				 lna2_gain_db);
15192 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
15193 				 lna2_gain_db);
15194 
15195 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15196 				 tia_gain_db);
15197 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15198 				 tia_gain_db);
15199 
15200 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15201 				 tia_gainbits);
15202 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15203 				 tia_gainbits);
15204 
15205 	write_phy_reg(pi, 0x37, 0x74);
15206 	write_phy_reg(pi, 0x2ad, 0x74);
15207 	write_phy_reg(pi, 0x38, 0x18);
15208 	write_phy_reg(pi, 0x2ae, 0x18);
15209 
15210 	write_phy_reg(pi, 0x2b, 0xe8);
15211 	write_phy_reg(pi, 0x41, 0xe8);
15212 
15213 	if (CHSPEC_IS20(pi->radio_chanspec)) {
15214 
15215 		mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
15216 		mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
15217 	} else {
15218 
15219 		mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
15220 		mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
15221 	}
15222 }
15223 
wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy * pi)15224 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
15225 {
15226 	u16 currband;
15227 	static const s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
15228 	const s8 *lna1_gain_db = NULL;
15229 	const s8 *lna1_gain_db_2 = NULL;
15230 	const s8 *lna2_gain_db = NULL;
15231 	static const s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
15232 	const s8 *tia_gain_db;
15233 	static const s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
15234 	const s8 *tia_gainbits;
15235 	static const u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
15236 	const u16 *rfseq_init_gain;
15237 	u16 init_gaincode;
15238 	u16 clip1hi_gaincode;
15239 	u16 clip1md_gaincode = 0;
15240 	u16 clip1md_gaincode_B;
15241 	u16 clip1lo_gaincode;
15242 	u16 clip1lo_gaincode_B;
15243 	u8 crsminl_th = 0;
15244 	u8 crsminu_th;
15245 	u16 nbclip_th = 0;
15246 	u8 w1clip_th;
15247 	u16 freq;
15248 	s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
15249 	u8 chg_nbclip_th = 0;
15250 
15251 	mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15252 	mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15253 
15254 	currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15255 	if (currband == 0) {
15256 
15257 		lna1_gain_db = lna1G_gain_db_rev7;
15258 
15259 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15260 					 lna1_gain_db);
15261 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15262 					 lna1_gain_db);
15263 
15264 		mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
15265 
15266 		if (CHSPEC_IS40(pi->radio_chanspec)) {
15267 			mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
15268 			mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
15269 		}
15270 
15271 		mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15272 
15273 		if (CHSPEC_IS20(pi->radio_chanspec)) {
15274 			mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
15275 			mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
15276 		}
15277 	} else {
15278 
15279 		init_gaincode = 0x9e;
15280 		clip1hi_gaincode = 0x9e;
15281 		clip1md_gaincode_B = 0x24;
15282 		clip1lo_gaincode = 0x8a;
15283 		clip1lo_gaincode_B = 8;
15284 		rfseq_init_gain = rfseqA_init_gain_rev7;
15285 
15286 		tia_gain_db = tiaA_gain_db_rev7;
15287 		tia_gainbits = tiaA_gainbits_rev7;
15288 
15289 		freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
15290 		if (CHSPEC_IS20(pi->radio_chanspec)) {
15291 
15292 			w1clip_th = 25;
15293 			clip1md_gaincode = 0x82;
15294 
15295 			if ((freq <= 5080) || (freq == 5825)) {
15296 
15297 				static const s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
15298 				static const s8 lna1A_gain_db_2_rev7[] = { 11, 17, 22, 25};
15299 				static const s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15300 
15301 				crsminu_th = 0x3e;
15302 				lna1_gain_db = lna1A_gain_db_rev7;
15303 				lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15304 				lna2_gain_db = lna2A_gain_db_rev7;
15305 			} else if ((freq >= 5500) && (freq <= 5700)) {
15306 
15307 				static const s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
15308 				static const s8 lna1A_gain_db_2_rev7[] = { 12, 18, 22, 26};
15309 				static const s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
15310 
15311 				crsminu_th = 0x45;
15312 				clip1md_gaincode_B = 0x14;
15313 				nbclip_th = 0xff;
15314 				chg_nbclip_th = 1;
15315 				lna1_gain_db = lna1A_gain_db_rev7;
15316 				lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15317 				lna2_gain_db = lna2A_gain_db_rev7;
15318 			} else {
15319 
15320 				static const s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
15321 				static const s8 lna1A_gain_db_2_rev7[] = { 12, 18, 22, 26};
15322 				static const s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15323 
15324 				crsminu_th = 0x41;
15325 				lna1_gain_db = lna1A_gain_db_rev7;
15326 				lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15327 				lna2_gain_db = lna2A_gain_db_rev7;
15328 			}
15329 
15330 			if (freq <= 4920) {
15331 				nvar_baseline_offset0 = 5;
15332 				nvar_baseline_offset1 = 5;
15333 			} else if ((freq > 4920) && (freq <= 5320)) {
15334 				nvar_baseline_offset0 = 3;
15335 				nvar_baseline_offset1 = 5;
15336 			} else if ((freq > 5320) && (freq <= 5700)) {
15337 				nvar_baseline_offset0 = 3;
15338 				nvar_baseline_offset1 = 2;
15339 			} else {
15340 				nvar_baseline_offset0 = 4;
15341 				nvar_baseline_offset1 = 0;
15342 			}
15343 		} else {
15344 
15345 			crsminu_th = 0x3a;
15346 			crsminl_th = 0x3a;
15347 			w1clip_th = 20;
15348 
15349 			if ((freq >= 4920) && (freq <= 5320)) {
15350 				nvar_baseline_offset0 = 4;
15351 				nvar_baseline_offset1 = 5;
15352 			} else if ((freq > 5320) && (freq <= 5550)) {
15353 				nvar_baseline_offset0 = 4;
15354 				nvar_baseline_offset1 = 2;
15355 			} else {
15356 				nvar_baseline_offset0 = 5;
15357 				nvar_baseline_offset1 = 3;
15358 			}
15359 		}
15360 
15361 		write_phy_reg(pi, 0x20, init_gaincode);
15362 		write_phy_reg(pi, 0x2a7, init_gaincode);
15363 
15364 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15365 					 pi->pubpi.phy_corenum, 0x106, 16,
15366 					 rfseq_init_gain);
15367 
15368 		write_phy_reg(pi, 0x22, clip1hi_gaincode);
15369 		write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15370 
15371 		write_phy_reg(pi, 0x36, clip1md_gaincode_B);
15372 		write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
15373 
15374 		write_phy_reg(pi, 0x37, clip1lo_gaincode);
15375 		write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15376 		write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
15377 		write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
15378 
15379 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15380 					 tia_gain_db);
15381 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15382 					 tia_gain_db);
15383 
15384 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15385 					 tia_gainbits);
15386 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15387 					 tia_gainbits);
15388 
15389 		mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15390 
15391 		if (chg_nbclip_th == 1) {
15392 			write_phy_reg(pi, 0x2b, nbclip_th);
15393 			write_phy_reg(pi, 0x41, nbclip_th);
15394 		}
15395 
15396 		mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
15397 		mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
15398 
15399 		mod_phy_reg(pi, 0x2e4,
15400 			    (0x3f << 0), (nvar_baseline_offset0 << 0));
15401 
15402 		mod_phy_reg(pi, 0x2e4,
15403 			    (0x3f << 6), (nvar_baseline_offset1 << 6));
15404 
15405 		if (CHSPEC_IS20(pi->radio_chanspec)) {
15406 
15407 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15408 						 lna1_gain_db);
15409 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15410 						 lna1_gain_db_2);
15411 
15412 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15413 						 8, lna2_gain_db);
15414 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15415 						 8, lna2_gain_db);
15416 
15417 			write_phy_reg(pi, 0x24, clip1md_gaincode);
15418 			write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15419 		} else {
15420 			mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15421 		}
15422 	}
15423 }
15424 
wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy * pi)15425 static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
15426 {
15427 	u16 w1th, hpf_code, currband;
15428 	int ctr;
15429 	u8 rfseq_updategainu_events[] = {
15430 		NPHY_RFSEQ_CMD_RX_GAIN,
15431 		NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15432 		NPHY_RFSEQ_CMD_SET_HPF_BW
15433 	};
15434 	static const u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
15435 	static const s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
15436 	static const s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
15437 	static const s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
15438 	static const s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
15439 	static const s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
15440 	static const s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
15441 	static const s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
15442 	static const s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
15443 	static const s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
15444 	const s8 *lna1_gain_db = NULL;
15445 	static const s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
15446 	static const s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
15447 	static const s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
15448 	static const s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
15449 	static const s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
15450 	static const s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
15451 	static const s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
15452 	static const s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
15453 	const s8 *lna2_gain_db = NULL;
15454 	static const s8 tiaG_gain_db[] = {
15455 		0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
15456 	static const s8 tiaA_gain_db[] = {
15457 		0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
15458 	static const s8 tiaA_gain_db_rev4[] = {
15459 		0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15460 	static const s8 tiaA_gain_db_rev5[] = {
15461 		0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15462 	static const s8 tiaA_gain_db_rev6[] = {
15463 		0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15464 	const s8 *tia_gain_db;
15465 	static const s8 tiaG_gainbits[] = {
15466 		0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15467 	static const s8 tiaA_gainbits[] = {
15468 		0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
15469 	static const s8 tiaA_gainbits_rev4[] = {
15470 		0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15471 	static const s8 tiaA_gainbits_rev5[] = {
15472 		0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15473 	static const s8 tiaA_gainbits_rev6[] = {
15474 		0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15475 	const s8 *tia_gainbits;
15476 	static const s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
15477 	static const s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
15478 	static const u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
15479 	static const u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
15480 	static const u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
15481 	static const u16 rfseqG_init_gain_rev5_elna[] = {
15482 		0x013f, 0x013f, 0x013f, 0x013f };
15483 	static const u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
15484 	static const u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
15485 	static const u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
15486 	static const u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
15487 	static const u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
15488 	static const u16 rfseqA_init_gain_rev4_elna[] = {
15489 		0x314f, 0x314f, 0x314f, 0x314f };
15490 	static const u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
15491 	static const u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
15492 	const u16 *rfseq_init_gain;
15493 	u16 initG_gaincode = 0x627e;
15494 	u16 initG_gaincode_rev4 = 0x527e;
15495 	u16 initG_gaincode_rev5 = 0x427e;
15496 	u16 initG_gaincode_rev5_elna = 0x027e;
15497 	u16 initG_gaincode_rev6 = 0x527e;
15498 	u16 initG_gaincode_rev6_224B0 = 0x427e;
15499 	u16 initG_gaincode_rev6_elna = 0x127e;
15500 	u16 initA_gaincode = 0x52de;
15501 	u16 initA_gaincode_rev4 = 0x629e;
15502 	u16 initA_gaincode_rev4_elna = 0x329e;
15503 	u16 initA_gaincode_rev5 = 0x729e;
15504 	u16 initA_gaincode_rev6 = 0x729e;
15505 	u16 init_gaincode;
15506 	u16 clip1hiG_gaincode = 0x107e;
15507 	u16 clip1hiG_gaincode_rev4 = 0x007e;
15508 	u16 clip1hiG_gaincode_rev5 = 0x1076;
15509 	u16 clip1hiG_gaincode_rev6 = 0x007e;
15510 	u16 clip1hiA_gaincode = 0x00de;
15511 	u16 clip1hiA_gaincode_rev4 = 0x029e;
15512 	u16 clip1hiA_gaincode_rev5 = 0x029e;
15513 	u16 clip1hiA_gaincode_rev6 = 0x029e;
15514 	u16 clip1hi_gaincode;
15515 	u16 clip1mdG_gaincode = 0x0066;
15516 	u16 clip1mdA_gaincode = 0x00ca;
15517 	u16 clip1mdA_gaincode_rev4 = 0x1084;
15518 	u16 clip1mdA_gaincode_rev5 = 0x2084;
15519 	u16 clip1mdA_gaincode_rev6 = 0x2084;
15520 	u16 clip1md_gaincode = 0;
15521 	u16 clip1loG_gaincode = 0x0074;
15522 	static const u16 clip1loG_gaincode_rev5[] = {
15523 		0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
15524 	};
15525 	static const u16 clip1loG_gaincode_rev6[] = {
15526 		0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
15527 	};
15528 	u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
15529 	u16 clip1loA_gaincode = 0x00cc;
15530 	u16 clip1loA_gaincode_rev4 = 0x0086;
15531 	u16 clip1loA_gaincode_rev5 = 0x2086;
15532 	u16 clip1loA_gaincode_rev6 = 0x2086;
15533 	u16 clip1lo_gaincode;
15534 	u8 crsminG_th = 0x18;
15535 	u8 crsminG_th_rev5 = 0x18;
15536 	u8 crsminG_th_rev6 = 0x18;
15537 	u8 crsminA_th = 0x1e;
15538 	u8 crsminA_th_rev4 = 0x24;
15539 	u8 crsminA_th_rev5 = 0x24;
15540 	u8 crsminA_th_rev6 = 0x24;
15541 	u8 crsmin_th;
15542 	u8 crsminlG_th = 0x18;
15543 	u8 crsminlG_th_rev5 = 0x18;
15544 	u8 crsminlG_th_rev6 = 0x18;
15545 	u8 crsminlA_th = 0x1e;
15546 	u8 crsminlA_th_rev4 = 0x24;
15547 	u8 crsminlA_th_rev5 = 0x24;
15548 	u8 crsminlA_th_rev6 = 0x24;
15549 	u8 crsminl_th = 0;
15550 	u8 crsminuG_th = 0x18;
15551 	u8 crsminuG_th_rev5 = 0x18;
15552 	u8 crsminuG_th_rev6 = 0x18;
15553 	u8 crsminuA_th = 0x1e;
15554 	u8 crsminuA_th_rev4 = 0x24;
15555 	u8 crsminuA_th_rev5 = 0x24;
15556 	u8 crsminuA_th_rev6 = 0x24;
15557 	u8 crsminuA_th_rev6_224B0 = 0x2d;
15558 	u8 crsminu_th;
15559 	u16 nbclipG_th = 0x20d;
15560 	u16 nbclipG_th_rev4 = 0x1a1;
15561 	u16 nbclipG_th_rev5 = 0x1d0;
15562 	u16 nbclipG_th_rev6 = 0x1d0;
15563 	u16 nbclipA_th = 0x1a1;
15564 	u16 nbclipA_th_rev4 = 0x107;
15565 	u16 nbclipA_th_rev5 = 0x0a9;
15566 	u16 nbclipA_th_rev6 = 0x0f0;
15567 	u16 nbclip_th = 0;
15568 	u8 w1clipG_th = 5;
15569 	u8 w1clipG_th_rev5 = 9;
15570 	u8 w1clipG_th_rev6 = 5;
15571 	u8 w1clipA_th = 25, w1clip_th;
15572 	u8 rssi_gain_default = 0x50;
15573 	u8 rssiG_gain_rev6_224B0 = 0x50;
15574 	u8 rssiA_gain_rev5 = 0x90;
15575 	u8 rssiA_gain_rev6 = 0x90;
15576 	u8 rssi_gain;
15577 	u16 regval[21];
15578 	u8 triso;
15579 
15580 	triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
15581 		pi->srom_fem2g.triso;
15582 
15583 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15584 		if (pi->pubpi.radiorev == 5) {
15585 			wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
15586 		} else if (pi->pubpi.radiorev == 7) {
15587 			wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15588 
15589 			mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
15590 			mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
15591 
15592 		} else if ((pi->pubpi.radiorev == 3)
15593 			   || (pi->pubpi.radiorev == 8)) {
15594 			wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15595 
15596 			if (pi->pubpi.radiorev == 8) {
15597 				mod_phy_reg(pi, 0x283,
15598 					    (0xff << 0), (0x44 << 0));
15599 				mod_phy_reg(pi, 0x280,
15600 					    (0xff << 0), (0x44 << 0));
15601 			}
15602 		} else {
15603 			wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15604 		}
15605 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15606 
15607 		mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
15608 
15609 		mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15610 		mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15611 
15612 		currband =
15613 			read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15614 		if (currband == 0) {
15615 			if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15616 				if (pi->pubpi.radiorev == 11) {
15617 					lna1_gain_db = lna1G_gain_db_rev6_224B0;
15618 					lna2_gain_db = lna2G_gain_db_rev6_224B0;
15619 					rfseq_init_gain =
15620 						rfseqG_init_gain_rev6_224B0;
15621 					init_gaincode =
15622 						initG_gaincode_rev6_224B0;
15623 					clip1hi_gaincode =
15624 						clip1hiG_gaincode_rev6;
15625 					clip1lo_gaincode =
15626 						clip1loG_gaincode_rev6_224B0;
15627 					nbclip_th = nbclipG_th_rev6;
15628 					w1clip_th = w1clipG_th_rev6;
15629 					crsmin_th = crsminG_th_rev6;
15630 					crsminl_th = crsminlG_th_rev6;
15631 					crsminu_th = crsminuG_th_rev6;
15632 					rssi_gain = rssiG_gain_rev6_224B0;
15633 				} else {
15634 					lna1_gain_db = lna1G_gain_db_rev6;
15635 					lna2_gain_db = lna2G_gain_db_rev6;
15636 					if (pi->sh->boardflags & BFL_EXTLNA) {
15637 
15638 						rfseq_init_gain =
15639 						     rfseqG_init_gain_rev6_elna;
15640 						init_gaincode =
15641 						       initG_gaincode_rev6_elna;
15642 					} else {
15643 						rfseq_init_gain =
15644 							rfseqG_init_gain_rev6;
15645 						init_gaincode =
15646 							initG_gaincode_rev6;
15647 					}
15648 					clip1hi_gaincode =
15649 						clip1hiG_gaincode_rev6;
15650 					switch (triso) {
15651 					case 0:
15652 						clip1lo_gaincode =
15653 							clip1loG_gaincode_rev6
15654 							[0];
15655 						break;
15656 					case 1:
15657 						clip1lo_gaincode =
15658 							clip1loG_gaincode_rev6
15659 							[1];
15660 						break;
15661 					case 2:
15662 						clip1lo_gaincode =
15663 							clip1loG_gaincode_rev6
15664 							[2];
15665 						break;
15666 					case 3:
15667 					default:
15668 
15669 						clip1lo_gaincode =
15670 							clip1loG_gaincode_rev6
15671 							[3];
15672 						break;
15673 					case 4:
15674 						clip1lo_gaincode =
15675 							clip1loG_gaincode_rev6
15676 							[4];
15677 						break;
15678 					case 5:
15679 						clip1lo_gaincode =
15680 							clip1loG_gaincode_rev6
15681 							[5];
15682 						break;
15683 					case 6:
15684 						clip1lo_gaincode =
15685 							clip1loG_gaincode_rev6
15686 							[6];
15687 						break;
15688 					case 7:
15689 						clip1lo_gaincode =
15690 							clip1loG_gaincode_rev6
15691 							[7];
15692 						break;
15693 					}
15694 					nbclip_th = nbclipG_th_rev6;
15695 					w1clip_th = w1clipG_th_rev6;
15696 					crsmin_th = crsminG_th_rev6;
15697 					crsminl_th = crsminlG_th_rev6;
15698 					crsminu_th = crsminuG_th_rev6;
15699 					rssi_gain = rssi_gain_default;
15700 				}
15701 			} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15702 				lna1_gain_db = lna1G_gain_db_rev5;
15703 				lna2_gain_db = lna2G_gain_db_rev5;
15704 				if (pi->sh->boardflags & BFL_EXTLNA) {
15705 
15706 					rfseq_init_gain =
15707 						rfseqG_init_gain_rev5_elna;
15708 					init_gaincode =
15709 						initG_gaincode_rev5_elna;
15710 				} else {
15711 					rfseq_init_gain = rfseqG_init_gain_rev5;
15712 					init_gaincode = initG_gaincode_rev5;
15713 				}
15714 				clip1hi_gaincode = clip1hiG_gaincode_rev5;
15715 				switch (triso) {
15716 				case 0:
15717 					clip1lo_gaincode =
15718 						clip1loG_gaincode_rev5[0];
15719 					break;
15720 				case 1:
15721 					clip1lo_gaincode =
15722 						clip1loG_gaincode_rev5[1];
15723 					break;
15724 				case 2:
15725 					clip1lo_gaincode =
15726 						clip1loG_gaincode_rev5[2];
15727 					break;
15728 				case 3:
15729 
15730 					clip1lo_gaincode =
15731 						clip1loG_gaincode_rev5[3];
15732 					break;
15733 				case 4:
15734 					clip1lo_gaincode =
15735 						clip1loG_gaincode_rev5[4];
15736 					break;
15737 				case 5:
15738 					clip1lo_gaincode =
15739 						clip1loG_gaincode_rev5[5];
15740 					break;
15741 				case 6:
15742 					clip1lo_gaincode =
15743 						clip1loG_gaincode_rev5[6];
15744 					break;
15745 				case 7:
15746 					clip1lo_gaincode =
15747 						clip1loG_gaincode_rev5[7];
15748 					break;
15749 				default:
15750 					clip1lo_gaincode =
15751 						clip1loG_gaincode_rev5[3];
15752 					break;
15753 				}
15754 				nbclip_th = nbclipG_th_rev5;
15755 				w1clip_th = w1clipG_th_rev5;
15756 				crsmin_th = crsminG_th_rev5;
15757 				crsminl_th = crsminlG_th_rev5;
15758 				crsminu_th = crsminuG_th_rev5;
15759 				rssi_gain = rssi_gain_default;
15760 			} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15761 				lna1_gain_db = lna1G_gain_db_rev4;
15762 				lna2_gain_db = lna2G_gain_db;
15763 				rfseq_init_gain = rfseqG_init_gain_rev4;
15764 				init_gaincode = initG_gaincode_rev4;
15765 				clip1hi_gaincode = clip1hiG_gaincode_rev4;
15766 				clip1lo_gaincode = clip1loG_gaincode;
15767 				nbclip_th = nbclipG_th_rev4;
15768 				w1clip_th = w1clipG_th;
15769 				crsmin_th = crsminG_th;
15770 				crsminl_th = crsminlG_th;
15771 				crsminu_th = crsminuG_th;
15772 				rssi_gain = rssi_gain_default;
15773 			} else {
15774 				lna1_gain_db = lna1G_gain_db;
15775 				lna2_gain_db = lna2G_gain_db;
15776 				rfseq_init_gain = rfseqG_init_gain;
15777 				init_gaincode = initG_gaincode;
15778 				clip1hi_gaincode = clip1hiG_gaincode;
15779 				clip1lo_gaincode = clip1loG_gaincode;
15780 				nbclip_th = nbclipG_th;
15781 				w1clip_th = w1clipG_th;
15782 				crsmin_th = crsminG_th;
15783 				crsminl_th = crsminlG_th;
15784 				crsminu_th = crsminuG_th;
15785 				rssi_gain = rssi_gain_default;
15786 			}
15787 			tia_gain_db = tiaG_gain_db;
15788 			tia_gainbits = tiaG_gainbits;
15789 			clip1md_gaincode = clip1mdG_gaincode;
15790 		} else {
15791 			if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15792 				lna1_gain_db = lna1A_gain_db_rev6;
15793 				lna2_gain_db = lna2A_gain_db_rev6;
15794 				tia_gain_db = tiaA_gain_db_rev6;
15795 				tia_gainbits = tiaA_gainbits_rev6;
15796 				rfseq_init_gain = rfseqA_init_gain_rev6;
15797 				init_gaincode = initA_gaincode_rev6;
15798 				clip1hi_gaincode = clip1hiA_gaincode_rev6;
15799 				clip1md_gaincode = clip1mdA_gaincode_rev6;
15800 				clip1lo_gaincode = clip1loA_gaincode_rev6;
15801 				crsmin_th = crsminA_th_rev6;
15802 				crsminl_th = crsminlA_th_rev6;
15803 				if ((pi->pubpi.radiorev == 11) &&
15804 				    (CHSPEC_IS40(pi->radio_chanspec) == 0))
15805 					crsminu_th = crsminuA_th_rev6_224B0;
15806 				else
15807 					crsminu_th = crsminuA_th_rev6;
15808 
15809 				nbclip_th = nbclipA_th_rev6;
15810 				rssi_gain = rssiA_gain_rev6;
15811 			} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15812 				lna1_gain_db = lna1A_gain_db_rev5;
15813 				lna2_gain_db = lna2A_gain_db_rev5;
15814 				tia_gain_db = tiaA_gain_db_rev5;
15815 				tia_gainbits = tiaA_gainbits_rev5;
15816 				rfseq_init_gain = rfseqA_init_gain_rev5;
15817 				init_gaincode = initA_gaincode_rev5;
15818 				clip1hi_gaincode = clip1hiA_gaincode_rev5;
15819 				clip1md_gaincode = clip1mdA_gaincode_rev5;
15820 				clip1lo_gaincode = clip1loA_gaincode_rev5;
15821 				crsmin_th = crsminA_th_rev5;
15822 				crsminl_th = crsminlA_th_rev5;
15823 				crsminu_th = crsminuA_th_rev5;
15824 				nbclip_th = nbclipA_th_rev5;
15825 				rssi_gain = rssiA_gain_rev5;
15826 			} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15827 				lna1_gain_db = lna1A_gain_db_rev4;
15828 				lna2_gain_db = lna2A_gain_db_rev4;
15829 				tia_gain_db = tiaA_gain_db_rev4;
15830 				tia_gainbits = tiaA_gainbits_rev4;
15831 				if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
15832 
15833 					rfseq_init_gain =
15834 						rfseqA_init_gain_rev4_elna;
15835 					init_gaincode =
15836 						initA_gaincode_rev4_elna;
15837 				} else {
15838 					rfseq_init_gain = rfseqA_init_gain_rev4;
15839 					init_gaincode = initA_gaincode_rev4;
15840 				}
15841 				clip1hi_gaincode = clip1hiA_gaincode_rev4;
15842 				clip1md_gaincode = clip1mdA_gaincode_rev4;
15843 				clip1lo_gaincode = clip1loA_gaincode_rev4;
15844 				crsmin_th = crsminA_th_rev4;
15845 				crsminl_th = crsminlA_th_rev4;
15846 				crsminu_th = crsminuA_th_rev4;
15847 				nbclip_th = nbclipA_th_rev4;
15848 				rssi_gain = rssi_gain_default;
15849 			} else {
15850 				lna1_gain_db = lna1A_gain_db;
15851 				lna2_gain_db = lna2A_gain_db;
15852 				tia_gain_db = tiaA_gain_db;
15853 				tia_gainbits = tiaA_gainbits;
15854 				rfseq_init_gain = rfseqA_init_gain;
15855 				init_gaincode = initA_gaincode;
15856 				clip1hi_gaincode = clip1hiA_gaincode;
15857 				clip1md_gaincode = clip1mdA_gaincode;
15858 				clip1lo_gaincode = clip1loA_gaincode;
15859 				crsmin_th = crsminA_th;
15860 				crsminl_th = crsminlA_th;
15861 				crsminu_th = crsminuA_th;
15862 				nbclip_th = nbclipA_th;
15863 				rssi_gain = rssi_gain_default;
15864 			}
15865 			w1clip_th = w1clipA_th;
15866 		}
15867 
15868 		write_radio_reg(pi,
15869 				(RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15870 				 RADIO_2056_RX0), 0x17);
15871 		write_radio_reg(pi,
15872 				(RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15873 				 RADIO_2056_RX1), 0x17);
15874 
15875 		write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
15876 				0xf0);
15877 		write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
15878 				0xf0);
15879 
15880 		write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
15881 				0x0);
15882 		write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
15883 				0x0);
15884 
15885 		write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
15886 				rssi_gain);
15887 		write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
15888 				rssi_gain);
15889 
15890 		write_radio_reg(pi,
15891 				(RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15892 				 RADIO_2056_RX0), 0x17);
15893 		write_radio_reg(pi,
15894 				(RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15895 				 RADIO_2056_RX1), 0x17);
15896 
15897 		write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
15898 				0xFF);
15899 		write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
15900 				0xFF);
15901 
15902 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
15903 					 8, lna1_gain_db);
15904 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
15905 					 8, lna1_gain_db);
15906 
15907 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15908 					 8, lna2_gain_db);
15909 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15910 					 8, lna2_gain_db);
15911 
15912 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
15913 					 8, tia_gain_db);
15914 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
15915 					 8, tia_gain_db);
15916 
15917 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
15918 					 8, tia_gainbits);
15919 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
15920 					 8, tia_gainbits);
15921 
15922 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
15923 					 8, &lpf_gain_db);
15924 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
15925 					 8, &lpf_gain_db);
15926 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
15927 					 8, &lpf_gainbits);
15928 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
15929 					 8, &lpf_gainbits);
15930 
15931 		write_phy_reg(pi, 0x20, init_gaincode);
15932 		write_phy_reg(pi, 0x2a7, init_gaincode);
15933 
15934 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15935 					 pi->pubpi.phy_corenum, 0x106, 16,
15936 					 rfseq_init_gain);
15937 
15938 		write_phy_reg(pi, 0x22, clip1hi_gaincode);
15939 		write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15940 
15941 		write_phy_reg(pi, 0x24, clip1md_gaincode);
15942 		write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15943 
15944 		write_phy_reg(pi, 0x37, clip1lo_gaincode);
15945 		write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15946 
15947 		mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
15948 		mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15949 		mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15950 
15951 		write_phy_reg(pi, 0x2b, nbclip_th);
15952 		write_phy_reg(pi, 0x41, nbclip_th);
15953 
15954 		mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
15955 		mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
15956 
15957 		write_phy_reg(pi, 0x150, 0x809c);
15958 
15959 	} else {
15960 
15961 		mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15962 		mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15963 
15964 		write_phy_reg(pi, 0x2b, 0x84);
15965 		write_phy_reg(pi, 0x41, 0x84);
15966 
15967 		if (CHSPEC_IS20(pi->radio_chanspec)) {
15968 			write_phy_reg(pi, 0x6b, 0x2b);
15969 			write_phy_reg(pi, 0x6c, 0x2b);
15970 			write_phy_reg(pi, 0x6d, 0x9);
15971 			write_phy_reg(pi, 0x6e, 0x9);
15972 		}
15973 
15974 		w1th = NPHY_RSSICAL_W1_TARGET - 4;
15975 		mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
15976 		mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
15977 
15978 		if (CHSPEC_IS20(pi->radio_chanspec)) {
15979 			mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
15980 			mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
15981 
15982 			mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
15983 			mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
15984 		}
15985 
15986 		write_phy_reg(pi, 0x150, 0x809c);
15987 
15988 		if (pi->nphy_gain_boost)
15989 			if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
15990 			    (CHSPEC_IS40(pi->radio_chanspec)))
15991 				hpf_code = 4;
15992 			else
15993 				hpf_code = 5;
15994 		else if (CHSPEC_IS40(pi->radio_chanspec))
15995 			hpf_code = 6;
15996 		else
15997 			hpf_code = 7;
15998 
15999 		mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16000 		mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16001 
16002 		for (ctr = 0; ctr < 4; ctr++)
16003 			regval[ctr] = (hpf_code << 8) | 0x7c;
16004 		wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16005 
16006 		wlc_phy_adjust_lnagaintbl_nphy(pi);
16007 
16008 		if (pi->nphy_elna_gain_config) {
16009 			regval[0] = 0;
16010 			regval[1] = 1;
16011 			regval[2] = 1;
16012 			regval[3] = 1;
16013 			wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16014 			wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16015 
16016 			for (ctr = 0; ctr < 4; ctr++)
16017 				regval[ctr] = (hpf_code << 8) | 0x74;
16018 			wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16019 		}
16020 
16021 		if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16022 			for (ctr = 0; ctr < 21; ctr++)
16023 				regval[ctr] = 3 * ctr;
16024 			wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16025 			wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16026 
16027 			for (ctr = 0; ctr < 21; ctr++)
16028 				regval[ctr] = (u16) ctr;
16029 			wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16030 			wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16031 		}
16032 
16033 		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16034 				       rfseq_updategainu_events,
16035 				       rfseq_updategainu_dlys,
16036 				       ARRAY_SIZE(rfseq_updategainu_events));
16037 
16038 		mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16039 
16040 		if (CHSPEC_IS2G(pi->radio_chanspec))
16041 			mod_phy_reg(pi,
16042 				    (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16043 				    0x7f, 0x4);
16044 	}
16045 }
16046 
wlc_phy_workarounds_nphy_rev7(struct brcms_phy * pi)16047 static void wlc_phy_workarounds_nphy_rev7(struct brcms_phy *pi)
16048 {
16049 	static const u8 rfseq_rx2tx_events_rev3_ipa[] = {
16050 		NPHY_REV3_RFSEQ_CMD_NOP,
16051 		NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16052 		NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16053 		NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16054 		NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16055 		NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16056 		NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16057 		NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16058 		NPHY_REV3_RFSEQ_CMD_END
16059 	};
16060 	static const u8 rfseq_rx2tx_dlys_rev3_ipa[] =
16061 		{ 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16062 	static const u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
16063 	u32 leg_data_weights;
16064 	u8 chan_freq_range = 0;
16065 	static const u16 dac_control = 0x0002;
16066 	u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
16067 	u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
16068 	u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
16069 	s32 min_nvar_val = 0x18d;
16070 	s32 min_nvar_offset_6mbps = 20;
16071 	u8 pdetrange;
16072 	u16 afectrl_adc_ctrl1_rev7 = 0x20;
16073 	u16 afectrl_adc_ctrl2_rev7 = 0x0;
16074 	u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
16075 	u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
16076 	u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
16077 	static const u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
16078 	static const u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16079 	static const u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16080 	u16 ipalvlshift_3p3_war_en = 0;
16081 	u16 rccal_bcap_val, rccal_scap_val;
16082 	u16 rccal_tx20_11b_bcap = 0;
16083 	u16 rccal_tx20_11b_scap = 0;
16084 	u16 rccal_tx20_11n_bcap = 0;
16085 	u16 rccal_tx20_11n_scap = 0;
16086 	u16 rccal_tx40_11n_bcap = 0;
16087 	u16 rccal_tx40_11n_scap = 0;
16088 	u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
16089 	u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
16090 	u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
16091 	u16 tx_lpf_bw_ofdm_20mhz = 0;
16092 	u16 tx_lpf_bw_ofdm_40mhz = 0;
16093 	u16 tx_lpf_bw_11b = 0;
16094 	u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
16095 	u16 txgm_idac_bleed = 0;
16096 	bool rccal_ovrd = false;
16097 	u16 freq;
16098 	int coreNum;
16099 
16100 
16101 	if (NREV_IS(pi->pubpi.phy_rev, 7)) {
16102 		mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
16103 
16104 		mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
16105 		mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
16106 		mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
16107 		mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
16108 		mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
16109 		mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
16110 		mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
16111 		mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
16112 		mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
16113 		mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
16114 		mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
16115 		mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
16116 		mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
16117 		mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
16118 		mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
16119 		mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
16120 	}
16121 
16122 	if (NREV_LE(pi->pubpi.phy_rev, 8)) {
16123 		write_phy_reg(pi, 0x23f, 0x1b0);
16124 		write_phy_reg(pi, 0x240, 0x1b0);
16125 	}
16126 
16127 	if (NREV_GE(pi->pubpi.phy_rev, 8))
16128 		mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
16129 
16130 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16131 				 &dac_control);
16132 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16133 				 &dac_control);
16134 
16135 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16136 				1, 0, 32, &leg_data_weights);
16137 	leg_data_weights = leg_data_weights & 0xffffff;
16138 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16139 				 1, 0, 32, &leg_data_weights);
16140 
16141 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16142 				 2, 0x15e, 16, rfseq_rx2tx_dacbufpu_rev7);
16143 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
16144 				 rfseq_rx2tx_dacbufpu_rev7);
16145 
16146 	if (PHY_IPA(pi))
16147 		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16148 				       rfseq_rx2tx_events_rev3_ipa,
16149 				       rfseq_rx2tx_dlys_rev3_ipa,
16150 				       ARRAY_SIZE
16151 				       (rfseq_rx2tx_events_rev3_ipa));
16152 
16153 	mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
16154 	mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
16155 
16156 	tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
16157 	tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
16158 	tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
16159 
16160 	if (PHY_IPA(pi)) {
16161 
16162 		if (((pi->pubpi.radiorev == 5)
16163 		     && (CHSPEC_IS40(pi->radio_chanspec) == 1))
16164 		    || (pi->pubpi.radiorev == 7)
16165 		    || (pi->pubpi.radiorev == 8)) {
16166 
16167 			rccal_bcap_val =
16168 			    read_radio_reg(pi, RADIO_2057_RCCAL_BCAP_VAL);
16169 			rccal_scap_val =
16170 			    read_radio_reg(pi, RADIO_2057_RCCAL_SCAP_VAL);
16171 
16172 			rccal_tx20_11b_bcap = rccal_bcap_val;
16173 			rccal_tx20_11b_scap = rccal_scap_val;
16174 
16175 			if ((pi->pubpi.radiorev == 5) &&
16176 			    (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
16177 
16178 				rccal_tx20_11n_bcap = rccal_bcap_val;
16179 				rccal_tx20_11n_scap = rccal_scap_val;
16180 				rccal_tx40_11n_bcap = 0xc;
16181 				rccal_tx40_11n_scap = 0xc;
16182 
16183 				rccal_ovrd = true;
16184 
16185 			} else if ((pi->pubpi.radiorev == 7)
16186 				   || (pi->pubpi.radiorev == 8)) {
16187 
16188 				tx_lpf_bw_ofdm_20mhz = 4;
16189 				tx_lpf_bw_11b = 1;
16190 
16191 				if (CHSPEC_IS2G(pi->radio_chanspec)) {
16192 					rccal_tx20_11n_bcap = 0xc;
16193 					rccal_tx20_11n_scap = 0xc;
16194 					rccal_tx40_11n_bcap = 0xa;
16195 					rccal_tx40_11n_scap = 0xa;
16196 				} else {
16197 					rccal_tx20_11n_bcap = 0x14;
16198 					rccal_tx20_11n_scap = 0x14;
16199 					rccal_tx40_11n_bcap = 0xf;
16200 					rccal_tx40_11n_scap = 0xf;
16201 				}
16202 
16203 				rccal_ovrd = true;
16204 			}
16205 		}
16206 
16207 	} else {
16208 
16209 		if (pi->pubpi.radiorev == 5) {
16210 
16211 			tx_lpf_bw_ofdm_20mhz = 1;
16212 			tx_lpf_bw_ofdm_40mhz = 3;
16213 
16214 			rccal_bcap_val =
16215 			    read_radio_reg(pi, RADIO_2057_RCCAL_BCAP_VAL);
16216 			rccal_scap_val =
16217 			    read_radio_reg(pi, RADIO_2057_RCCAL_SCAP_VAL);
16218 
16219 			rccal_tx20_11b_bcap = rccal_bcap_val;
16220 			rccal_tx20_11b_scap = rccal_scap_val;
16221 
16222 			rccal_tx20_11n_bcap = 0x13;
16223 			rccal_tx20_11n_scap = 0x11;
16224 			rccal_tx40_11n_bcap = 0x13;
16225 			rccal_tx40_11n_scap = 0x11;
16226 
16227 			rccal_ovrd = true;
16228 		}
16229 	}
16230 
16231 	if (rccal_ovrd) {
16232 
16233 		rx2tx_lpf_rc_lut_tx20_11b =
16234 		    (rccal_tx20_11b_bcap << 8) |
16235 		    (rccal_tx20_11b_scap << 3) | tx_lpf_bw_11b;
16236 		rx2tx_lpf_rc_lut_tx20_11n =
16237 		    (rccal_tx20_11n_bcap << 8) |
16238 		    (rccal_tx20_11n_scap << 3) | tx_lpf_bw_ofdm_20mhz;
16239 		rx2tx_lpf_rc_lut_tx40_11n =
16240 		    (rccal_tx40_11n_bcap << 8) |
16241 		    (rccal_tx40_11n_scap << 3) | tx_lpf_bw_ofdm_40mhz;
16242 
16243 		for (coreNum = 0; coreNum <= 1; coreNum++) {
16244 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16245 						 0x152 + coreNum * 0x10, 16,
16246 						 &rx2tx_lpf_rc_lut_tx20_11b);
16247 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16248 						 0x153 + coreNum * 0x10, 16,
16249 						 &rx2tx_lpf_rc_lut_tx20_11n);
16250 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16251 						 0x154 + coreNum * 0x10, 16,
16252 						 &rx2tx_lpf_rc_lut_tx20_11n);
16253 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16254 						 0x155 + coreNum * 0x10, 16,
16255 						 &rx2tx_lpf_rc_lut_tx40_11n);
16256 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16257 						 0x156 + coreNum * 0x10, 16,
16258 						 &rx2tx_lpf_rc_lut_tx40_11n);
16259 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16260 						 0x157 + coreNum * 0x10, 16,
16261 						 &rx2tx_lpf_rc_lut_tx40_11n);
16262 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16263 						 0x158 + coreNum * 0x10, 16,
16264 						 &rx2tx_lpf_rc_lut_tx40_11n);
16265 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16266 						 0x159 + coreNum * 0x10, 16,
16267 						 &rx2tx_lpf_rc_lut_tx40_11n);
16268 		}
16269 
16270 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 1, 0x3, 0,
16271 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
16272 	}
16273 
16274 	write_phy_reg(pi, 0x32f, 0x3);
16275 
16276 	if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
16277 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 0,
16278 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
16279 
16280 	if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
16281 	    (pi->pubpi.radiorev == 6)) {
16282 		if ((pi->sh->sromrev >= 8)
16283 		    && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
16284 			ipalvlshift_3p3_war_en = 1;
16285 
16286 		if (ipalvlshift_3p3_war_en) {
16287 			write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG, 0x5);
16288 			write_radio_reg(pi, RADIO_2057_GPAIO_SEL1, 0x30);
16289 			write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
16290 			or_radio_reg(pi, RADIO_2057_RXTXBIAS_CONFIG_CORE0, 0x1);
16291 			or_radio_reg(pi, RADIO_2057_RXTXBIAS_CONFIG_CORE1, 0x1);
16292 
16293 			ipa2g_mainbias = 0x1f;
16294 
16295 			ipa2g_casconv = 0x6f;
16296 
16297 			ipa2g_biasfilt = 0xaa;
16298 		} else {
16299 
16300 			ipa2g_mainbias = 0x2b;
16301 
16302 			ipa2g_casconv = 0x7f;
16303 
16304 			ipa2g_biasfilt = 0xee;
16305 		}
16306 
16307 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
16308 			for (coreNum = 0; coreNum <= 1; coreNum++) {
16309 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16310 						 coreNum, IPA2G_IMAIN,
16311 						 ipa2g_mainbias);
16312 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16313 						 coreNum, IPA2G_CASCONV,
16314 						 ipa2g_casconv);
16315 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16316 						 coreNum,
16317 						 IPA2G_BIAS_FILTER,
16318 						 ipa2g_biasfilt);
16319 			}
16320 		}
16321 	}
16322 
16323 	if (PHY_IPA(pi)) {
16324 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
16325 			if ((pi->pubpi.radiorev == 3)
16326 			    || (pi->pubpi.radiorev == 4)
16327 			    || (pi->pubpi.radiorev == 6))
16328 				txgm_idac_bleed = 0x7f;
16329 
16330 			for (coreNum = 0; coreNum <= 1; coreNum++) {
16331 				if (txgm_idac_bleed != 0)
16332 					WRITE_RADIO_REG4(pi, RADIO_2057,
16333 							 CORE, coreNum,
16334 							 TXGM_IDAC_BLEED,
16335 							 txgm_idac_bleed);
16336 			}
16337 
16338 			if (pi->pubpi.radiorev == 5) {
16339 				for (coreNum = 0; coreNum <= 1; coreNum++) {
16340 					WRITE_RADIO_REG4(pi, RADIO_2057,
16341 							 CORE, coreNum,
16342 							 IPA2G_CASCONV,
16343 							 0x13);
16344 					WRITE_RADIO_REG4(pi, RADIO_2057,
16345 							 CORE, coreNum,
16346 							 IPA2G_IMAIN,
16347 							 0x1f);
16348 					WRITE_RADIO_REG4(pi, RADIO_2057,
16349 							 CORE, coreNum,
16350 							 IPA2G_BIAS_FILTER,
16351 							 0xee);
16352 					WRITE_RADIO_REG4(pi, RADIO_2057,
16353 							 CORE, coreNum,
16354 							 PAD2G_IDACS,
16355 							 0x8a);
16356 					WRITE_RADIO_REG4(pi, RADIO_2057,
16357 							 CORE, coreNum,
16358 							 PAD_BIAS_FILTER_BWS,
16359 							 0x3e);
16360 				}
16361 			} else if ((pi->pubpi.radiorev == 7) ||
16362 				   (pi->pubpi.radiorev == 8)) {
16363 
16364 				if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16365 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16366 							 0, IPA2G_IMAIN, 0x14);
16367 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16368 							 1, IPA2G_IMAIN, 0x12);
16369 				} else {
16370 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16371 							 0, IPA2G_IMAIN, 0x16);
16372 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16373 							 1, IPA2G_IMAIN, 0x16);
16374 				}
16375 			}
16376 
16377 		} else {
16378 			freq =
16379 			    CHAN5G_FREQ(CHSPEC_CHANNEL
16380 					(pi->radio_chanspec));
16381 			if (((freq >= 5180) && (freq <= 5230))
16382 			    || ((freq >= 5745) && (freq <= 5805))) {
16383 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16384 						 0, IPA5G_BIAS_FILTER, 0xff);
16385 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16386 						 1, IPA5G_BIAS_FILTER, 0xff);
16387 			}
16388 		}
16389 	} else {
16390 
16391 		if (pi->pubpi.radiorev != 5) {
16392 			for (coreNum = 0; coreNum <= 1; coreNum++) {
16393 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16394 						 TXMIX2G_TUNE_BOOST_PU, 0x61);
16395 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16396 						 TXGM_IDAC_BLEED, 0x70);
16397 			}
16398 		}
16399 	}
16400 
16401 	if (pi->pubpi.radiorev == 4) {
16402 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x05, 16,
16403 					 &afectrl_adc_ctrl1_rev7);
16404 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x15, 16,
16405 					 &afectrl_adc_ctrl1_rev7);
16406 
16407 		for (coreNum = 0; coreNum <= 1; coreNum++) {
16408 			WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16409 					 AFE_VCM_CAL_MASTER, 0x0);
16410 			WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16411 					 AFE_SET_VCM_I, 0x3f);
16412 			WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16413 					 AFE_SET_VCM_Q, 0x3f);
16414 		}
16415 	} else {
16416 		mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
16417 		mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
16418 		mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
16419 		mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
16420 
16421 		mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
16422 		mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
16423 		mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
16424 		mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
16425 
16426 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x05, 16,
16427 					 &afectrl_adc_ctrl2_rev7);
16428 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x15, 16,
16429 					 &afectrl_adc_ctrl2_rev7);
16430 
16431 		mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
16432 		mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
16433 		mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
16434 		mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
16435 	}
16436 
16437 	write_phy_reg(pi, 0x6a, 0x2);
16438 
16439 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
16440 				 &min_nvar_offset_6mbps);
16441 
16442 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
16443 				 &rfseq_pktgn_lpf_hpc_rev7);
16444 
16445 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
16446 				 &rfseq_pktgn_lpf_h_hpc_rev7);
16447 
16448 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
16449 				 &rfseq_htpktgn_lpf_hpc_rev7);
16450 
16451 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
16452 				 &rfseq_cckpktgn_lpf_hpc_rev7);
16453 
16454 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
16455 				 &rfseq_tx2rx_lpf_h_hpc_rev7);
16456 
16457 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
16458 				 &rfseq_rx2tx_lpf_h_hpc_rev7);
16459 
16460 	if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16461 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16462 					 32, &min_nvar_val);
16463 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16464 					 127, 32, &min_nvar_val);
16465 	} else {
16466 		min_nvar_val = noise_var_tbl_rev7[3];
16467 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16468 					 32, &min_nvar_val);
16469 
16470 		min_nvar_val = noise_var_tbl_rev7[127];
16471 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16472 					 127, 32, &min_nvar_val);
16473 	}
16474 
16475 	wlc_phy_workarounds_nphy_gainctrl(pi);
16476 
16477 	pdetrange = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16478 		    pi->srom_fem5g.pdetrange : pi->srom_fem2g.pdetrange;
16479 
16480 	if (pdetrange == 0) {
16481 		chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16482 		if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16483 			aux_adc_vmid_rev7_core0[3] = 0x70;
16484 			aux_adc_vmid_rev7_core1[3] = 0x70;
16485 			aux_adc_gain_rev7[3] = 2;
16486 		} else {
16487 			aux_adc_vmid_rev7_core0[3] = 0x80;
16488 			aux_adc_vmid_rev7_core1[3] = 0x80;
16489 			aux_adc_gain_rev7[3] = 3;
16490 		}
16491 	} else if (pdetrange == 1) {
16492 		if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16493 			aux_adc_vmid_rev7_core0[3] = 0x7c;
16494 			aux_adc_vmid_rev7_core1[3] = 0x7c;
16495 			aux_adc_gain_rev7[3] = 2;
16496 		} else {
16497 			aux_adc_vmid_rev7_core0[3] = 0x8c;
16498 			aux_adc_vmid_rev7_core1[3] = 0x8c;
16499 			aux_adc_gain_rev7[3] = 1;
16500 		}
16501 	} else if (pdetrange == 2) {
16502 		if (pi->pubpi.radioid == BCM2057_ID) {
16503 			if ((pi->pubpi.radiorev == 5)
16504 			    || (pi->pubpi.radiorev == 7)
16505 			    || (pi->pubpi.radiorev == 8)) {
16506 				if (chan_freq_range ==
16507 				    WL_CHAN_FREQ_RANGE_2G) {
16508 					aux_adc_vmid_rev7_core0[3] = 0x8c;
16509 					aux_adc_vmid_rev7_core1[3] = 0x8c;
16510 					aux_adc_gain_rev7[3] = 0;
16511 				} else {
16512 					aux_adc_vmid_rev7_core0[3] = 0x96;
16513 					aux_adc_vmid_rev7_core1[3] = 0x96;
16514 					aux_adc_gain_rev7[3] = 0;
16515 				}
16516 			}
16517 		}
16518 
16519 	} else if (pdetrange == 3) {
16520 		if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
16521 			aux_adc_vmid_rev7_core0[3] = 0x89;
16522 			aux_adc_vmid_rev7_core1[3] = 0x89;
16523 			aux_adc_gain_rev7[3] = 0;
16524 		}
16525 
16526 	} else if (pdetrange == 5) {
16527 
16528 		if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16529 			aux_adc_vmid_rev7_core0[3] = 0x80;
16530 			aux_adc_vmid_rev7_core1[3] = 0x80;
16531 			aux_adc_gain_rev7[3] = 3;
16532 		} else {
16533 			aux_adc_vmid_rev7_core0[3] = 0x70;
16534 			aux_adc_vmid_rev7_core1[3] = 0x70;
16535 			aux_adc_gain_rev7[3] = 2;
16536 		}
16537 	}
16538 
16539 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
16540 				 &aux_adc_vmid_rev7_core0);
16541 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
16542 				 &aux_adc_vmid_rev7_core1);
16543 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
16544 				 &aux_adc_gain_rev7);
16545 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
16546 				 &aux_adc_gain_rev7);
16547 }
16548 
wlc_phy_workarounds_nphy_rev3(struct brcms_phy * pi)16549 static void wlc_phy_workarounds_nphy_rev3(struct brcms_phy *pi)
16550 {
16551 	static const u8 rfseq_tx2rx_events_rev3[] = {
16552 		NPHY_REV3_RFSEQ_CMD_EXT_PA,
16553 		NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16554 		NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16555 		NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16556 		NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16557 		NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16558 		NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16559 		NPHY_REV3_RFSEQ_CMD_END
16560 	};
16561 	static const u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
16562 	u8 rfseq_rx2tx_events_rev3[] = {
16563 		NPHY_REV3_RFSEQ_CMD_NOP,
16564 		NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16565 		NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16566 		NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16567 		NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16568 		NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16569 		NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16570 		NPHY_REV3_RFSEQ_CMD_EXT_PA,
16571 		NPHY_REV3_RFSEQ_CMD_END
16572 	};
16573 	u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
16574 	static const u8 rfseq_rx2tx_events_rev3_ipa[] = {
16575 		NPHY_REV3_RFSEQ_CMD_NOP,
16576 		NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16577 		NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16578 		NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16579 		NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16580 		NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16581 		NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16582 		NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16583 		NPHY_REV3_RFSEQ_CMD_END
16584 	};
16585 	static const u8 rfseq_rx2tx_dlys_rev3_ipa[] =
16586 	    { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16587 	s16 alpha0, alpha1, alpha2;
16588 	s16 beta0, beta1, beta2;
16589 	u32 leg_data_weights, ht_data_weights, nss1_data_weights,
16590 	    stbc_data_weights;
16591 	u8 chan_freq_range = 0;
16592 	static const u16 dac_control = 0x0002;
16593 	u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16594 	u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16595 	u16 *aux_adc_vmid;
16596 	u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
16597 	u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
16598 	u16 *aux_adc_gain;
16599 	static const u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
16600 	static const u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
16601 	s32 min_nvar_val = 0x18d;
16602 	u8 pdetrange;
16603 	u8 triso;
16604 
16605 	write_phy_reg(pi, 0x23f, 0x1f8);
16606 	write_phy_reg(pi, 0x240, 0x1f8);
16607 
16608 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16609 				1, 0, 32, &leg_data_weights);
16610 	leg_data_weights = leg_data_weights & 0xffffff;
16611 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16612 				 1, 0, 32, &leg_data_weights);
16613 
16614 	alpha0 = 293;
16615 	alpha1 = 435;
16616 	alpha2 = 261;
16617 	beta0 = 366;
16618 	beta1 = 205;
16619 	beta2 = 32;
16620 	write_phy_reg(pi, 0x145, alpha0);
16621 	write_phy_reg(pi, 0x146, alpha1);
16622 	write_phy_reg(pi, 0x147, alpha2);
16623 	write_phy_reg(pi, 0x148, beta0);
16624 	write_phy_reg(pi, 0x149, beta1);
16625 	write_phy_reg(pi, 0x14a, beta2);
16626 
16627 	write_phy_reg(pi, 0x38, 0xC);
16628 	write_phy_reg(pi, 0x2ae, 0xC);
16629 
16630 	wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
16631 			       rfseq_tx2rx_events_rev3,
16632 			       rfseq_tx2rx_dlys_rev3,
16633 			       ARRAY_SIZE(rfseq_tx2rx_events_rev3));
16634 
16635 	if (PHY_IPA(pi))
16636 		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16637 				       rfseq_rx2tx_events_rev3_ipa,
16638 				       rfseq_rx2tx_dlys_rev3_ipa,
16639 				       ARRAY_SIZE (rfseq_rx2tx_events_rev3_ipa));
16640 
16641 	if ((pi->sh->hw_phyrxchain != 0x3) &&
16642 	    (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
16643 
16644 		if (PHY_IPA(pi)) {
16645 			rfseq_rx2tx_dlys_rev3[5] = 59;
16646 			rfseq_rx2tx_dlys_rev3[6] = 1;
16647 			rfseq_rx2tx_events_rev3[7] = NPHY_REV3_RFSEQ_CMD_END;
16648 		}
16649 
16650 		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16651 				       rfseq_rx2tx_events_rev3,
16652 				       rfseq_rx2tx_dlys_rev3,
16653 				       ARRAY_SIZE (rfseq_rx2tx_events_rev3));
16654 	}
16655 
16656 	if (CHSPEC_IS2G(pi->radio_chanspec))
16657 		write_phy_reg(pi, 0x6a, 0x2);
16658 	else
16659 		write_phy_reg(pi, 0x6a, 0x9c40);
16660 
16661 	mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
16662 
16663 	if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16664 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16665 					 32, &min_nvar_val);
16666 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16667 					 127, 32, &min_nvar_val);
16668 	} else {
16669 		min_nvar_val = noise_var_tbl_rev3[3];
16670 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16671 					 32, &min_nvar_val);
16672 
16673 		min_nvar_val = noise_var_tbl_rev3[127];
16674 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16675 					 127, 32, &min_nvar_val);
16676 	}
16677 
16678 	wlc_phy_workarounds_nphy_gainctrl(pi);
16679 
16680 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16681 				 &dac_control);
16682 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16683 				 &dac_control);
16684 
16685 	pdetrange = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16686 			pi->srom_fem5g.pdetrange : pi->srom_fem2g.pdetrange;
16687 
16688 	if (pdetrange == 0) {
16689 		if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16690 			aux_adc_vmid = aux_adc_vmid_rev4;
16691 			aux_adc_gain = aux_adc_gain_rev4;
16692 		} else {
16693 			aux_adc_vmid = aux_adc_vmid_rev3;
16694 			aux_adc_gain = aux_adc_gain_rev3;
16695 		}
16696 		chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16697 		if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16698 			switch (chan_freq_range) {
16699 			case WL_CHAN_FREQ_RANGE_5GL:
16700 				aux_adc_vmid[3] = 0x89;
16701 				aux_adc_gain[3] = 0;
16702 				break;
16703 			case WL_CHAN_FREQ_RANGE_5GM:
16704 				aux_adc_vmid[3] = 0x89;
16705 				aux_adc_gain[3] = 0;
16706 				break;
16707 			case WL_CHAN_FREQ_RANGE_5GH:
16708 				aux_adc_vmid[3] = 0x89;
16709 				aux_adc_gain[3] = 0;
16710 				break;
16711 			default:
16712 				break;
16713 			}
16714 		}
16715 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16716 					 0x08, 16, aux_adc_vmid);
16717 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16718 					 0x18, 16, aux_adc_vmid);
16719 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16720 					 0x0c, 16, aux_adc_gain);
16721 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16722 					 0x1c, 16, aux_adc_gain);
16723 	} else if (pdetrange == 1) {
16724 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16725 					 0x08, 16, sk_adc_vmid);
16726 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16727 					 0x18, 16, sk_adc_vmid);
16728 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16729 					 0x0c, 16, sk_adc_gain);
16730 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16731 					 0x1c, 16, sk_adc_gain);
16732 	} else if (pdetrange == 2) {
16733 
16734 		u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16735 		u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16736 
16737 		if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16738 			chan_freq_range =
16739 			    wlc_phy_get_chan_freq_range_nphy(pi, 0);
16740 			if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16741 				bcm_adc_vmid[3] = 0x8e;
16742 				bcm_adc_gain[3] = 0x03;
16743 			} else {
16744 				bcm_adc_vmid[3] = 0x94;
16745 				bcm_adc_gain[3] = 0x03;
16746 			}
16747 		} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16748 			bcm_adc_vmid[3] = 0x84;
16749 			bcm_adc_gain[3] = 0x02;
16750 		}
16751 
16752 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16753 					 0x08, 16, bcm_adc_vmid);
16754 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16755 					 0x18, 16, bcm_adc_vmid);
16756 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16757 					 0x0c, 16, bcm_adc_gain);
16758 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16759 					 0x1c, 16, bcm_adc_gain);
16760 	} else if (pdetrange == 3) {
16761 		chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16762 		if ((NREV_GE(pi->pubpi.phy_rev, 4)) &&
16763 		    (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16764 			u16 auxadc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x270 };
16765 			u16 auxadc_gain[] = { 0x02, 0x02, 0x02, 0x00 };
16766 
16767 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16768 						 0x08, 16, auxadc_vmid);
16769 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16770 						 0x18, 16, auxadc_vmid);
16771 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16772 						 0x0c, 16, auxadc_gain);
16773 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16774 						 0x1c, 16, auxadc_gain);
16775 		}
16776 	} else if ((pdetrange == 4) || (pdetrange == 5)) {
16777 		u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
16778 		u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
16779 		u16 Vmid[2], Av[2];
16780 
16781 		chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16782 		if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16783 			Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
16784 			Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
16785 			Av[0] = (pdetrange == 4) ? 2 : 0;
16786 			Av[1] = (pdetrange == 4) ? 2 : 0;
16787 		} else {
16788 			Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
16789 			Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
16790 			Av[0] = (pdetrange == 4) ? 2 : 0;
16791 			Av[1] = (pdetrange == 4) ? 2 : 0;
16792 		}
16793 
16794 		bcm_adc_vmid[3] = Vmid[0];
16795 		bcm_adc_gain[3] = Av[0];
16796 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16797 					 0x08, 16, bcm_adc_vmid);
16798 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16799 					 0x0c, 16, bcm_adc_gain);
16800 
16801 		bcm_adc_vmid[3] = Vmid[1];
16802 		bcm_adc_gain[3] = Av[1];
16803 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16804 					 0x18, 16, bcm_adc_vmid);
16805 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16806 					 0x1c, 16, bcm_adc_gain);
16807 	}
16808 
16809 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0), 0x0);
16810 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1), 0x0);
16811 
16812 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0), 0x6);
16813 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1), 0x6);
16814 
16815 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0), 0x7);
16816 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1), 0x7);
16817 
16818 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0), 0x88);
16819 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1), 0x88);
16820 
16821 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0), 0x0);
16822 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1), 0x0);
16823 
16824 	write_radio_reg(pi, (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0), 0x0);
16825 	write_radio_reg(pi, (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1), 0x0);
16826 
16827 	triso = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16828 		 pi->srom_fem5g.triso : pi->srom_fem2g.triso;
16829 	if (triso == 7) {
16830 		wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
16831 		wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
16832 	}
16833 
16834 	wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
16835 
16836 	if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
16837 	     (CHSPEC_IS5G(pi->radio_chanspec))) ||
16838 	    (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
16839 	      (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
16840 	     (CHSPEC_IS2G(pi->radio_chanspec)))) {
16841 		nss1_data_weights = 0x00088888;
16842 		ht_data_weights = 0x00088888;
16843 		stbc_data_weights = 0x00088888;
16844 	} else {
16845 		nss1_data_weights = 0x88888888;
16846 		ht_data_weights = 0x88888888;
16847 		stbc_data_weights = 0x88888888;
16848 	}
16849 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16850 				 1, 1, 32, &nss1_data_weights);
16851 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16852 				 1, 2, 32, &ht_data_weights);
16853 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16854 				 1, 3, 32, &stbc_data_weights);
16855 
16856 	if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16857 		if (CHSPEC_IS5G(pi->radio_chanspec)) {
16858 			write_radio_reg(pi,
16859 					RADIO_2056_TX_GMBB_IDAC |
16860 					RADIO_2056_TX0, 0x70);
16861 			write_radio_reg(pi,
16862 					RADIO_2056_TX_GMBB_IDAC |
16863 					RADIO_2056_TX1, 0x70);
16864 		}
16865 	}
16866 
16867 	if (!pi->edcrs_threshold_lock) {
16868 		write_phy_reg(pi, 0x224, 0x3eb);
16869 		write_phy_reg(pi, 0x225, 0x3eb);
16870 		write_phy_reg(pi, 0x226, 0x341);
16871 		write_phy_reg(pi, 0x227, 0x341);
16872 		write_phy_reg(pi, 0x228, 0x42b);
16873 		write_phy_reg(pi, 0x229, 0x42b);
16874 		write_phy_reg(pi, 0x22a, 0x381);
16875 		write_phy_reg(pi, 0x22b, 0x381);
16876 		write_phy_reg(pi, 0x22c, 0x42b);
16877 		write_phy_reg(pi, 0x22d, 0x42b);
16878 		write_phy_reg(pi, 0x22e, 0x381);
16879 		write_phy_reg(pi, 0x22f, 0x381);
16880 	}
16881 
16882 	if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16883 
16884 		if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)
16885 			wlapi_bmac_mhf(pi->sh->physhim, MHF4,
16886 				       MHF4_BPHY_TXCORE0,
16887 				       MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);
16888 	}
16889 }
16890 
wlc_phy_workarounds_nphy_rev1(struct brcms_phy * pi)16891 static void wlc_phy_workarounds_nphy_rev1(struct brcms_phy *pi)
16892 {
16893 	static const u8 rfseq_rx2tx_events[] = {
16894 		NPHY_RFSEQ_CMD_NOP,
16895 		NPHY_RFSEQ_CMD_RXG_FBW,
16896 		NPHY_RFSEQ_CMD_TR_SWITCH,
16897 		NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16898 		NPHY_RFSEQ_CMD_RXPD_TXPD,
16899 		NPHY_RFSEQ_CMD_TX_GAIN,
16900 		NPHY_RFSEQ_CMD_EXT_PA
16901 	};
16902 	u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
16903 	static const u8 rfseq_tx2rx_events[] = {
16904 		NPHY_RFSEQ_CMD_NOP,
16905 		NPHY_RFSEQ_CMD_EXT_PA,
16906 		NPHY_RFSEQ_CMD_TX_GAIN,
16907 		NPHY_RFSEQ_CMD_RXPD_TXPD,
16908 		NPHY_RFSEQ_CMD_TR_SWITCH,
16909 		NPHY_RFSEQ_CMD_RXG_FBW,
16910 		NPHY_RFSEQ_CMD_CLR_HIQ_DIS
16911 	};
16912 	static const u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
16913 	s16 alpha0, alpha1, alpha2;
16914 	s16 beta0, beta1, beta2;
16915 	u16 regval;
16916 
16917 	if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
16918 	    (pi->sh->boardtype == 0x8b)) {
16919 		uint i;
16920 		u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
16921 		for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
16922 			rfseq_rx2tx_dlys[i] = war_dlys[i];
16923 	}
16924 
16925 	if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
16926 		and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
16927 		and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
16928 	} else {
16929 		or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
16930 		or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
16931 	}
16932 
16933 	regval = 0x000a;
16934 	wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
16935 	wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
16936 
16937 	if (NREV_LT(pi->pubpi.phy_rev, 3)) {
16938 		regval = 0xcdaa;
16939 		wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
16940 		wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
16941 	}
16942 
16943 	if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16944 		regval = 0x0000;
16945 		wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
16946 		wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
16947 
16948 		regval = 0x7aab;
16949 		wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
16950 		wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
16951 
16952 		regval = 0x0800;
16953 		wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
16954 		wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
16955 	}
16956 
16957 	write_phy_reg(pi, 0xf8, 0x02d8);
16958 	write_phy_reg(pi, 0xf9, 0x0301);
16959 	write_phy_reg(pi, 0xfa, 0x02d8);
16960 	write_phy_reg(pi, 0xfb, 0x0301);
16961 
16962 	wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
16963 			       rfseq_rx2tx_dlys,
16964 			       ARRAY_SIZE(rfseq_rx2tx_events));
16965 
16966 	wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
16967 			       rfseq_tx2rx_dlys,
16968 			       ARRAY_SIZE(rfseq_tx2rx_events));
16969 
16970 	wlc_phy_workarounds_nphy_gainctrl(pi);
16971 
16972 	if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16973 
16974 		if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
16975 			wlapi_bmac_mhf(pi->sh->physhim, MHF3,
16976 				       MHF3_NPHY_MLADV_WAR,
16977 				       MHF3_NPHY_MLADV_WAR, BRCM_BAND_ALL);
16978 
16979 	} else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16980 		write_phy_reg(pi, 0x1e3, 0x0);
16981 		write_phy_reg(pi, 0x1e4, 0x0);
16982 	}
16983 
16984 	if (NREV_LT(pi->pubpi.phy_rev, 2))
16985 		mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
16986 
16987 	alpha0 = 293;
16988 	alpha1 = 435;
16989 	alpha2 = 261;
16990 	beta0 = 366;
16991 	beta1 = 205;
16992 	beta2 = 32;
16993 	write_phy_reg(pi, 0x145, alpha0);
16994 	write_phy_reg(pi, 0x146, alpha1);
16995 	write_phy_reg(pi, 0x147, alpha2);
16996 	write_phy_reg(pi, 0x148, beta0);
16997 	write_phy_reg(pi, 0x149, beta1);
16998 	write_phy_reg(pi, 0x14a, beta2);
16999 
17000 	if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17001 		mod_phy_reg(pi, 0x142, (0xf << 12), 0);
17002 
17003 		write_phy_reg(pi, 0x192, 0xb5);
17004 		write_phy_reg(pi, 0x193, 0xa4);
17005 		write_phy_reg(pi, 0x194, 0x0);
17006 	}
17007 
17008 	if (NREV_IS(pi->pubpi.phy_rev, 2))
17009 		mod_phy_reg(pi, 0x221,
17010 			    NPHY_FORCESIG_DECODEGATEDCLKS,
17011 			    NPHY_FORCESIG_DECODEGATEDCLKS);
17012 }
17013 
wlc_phy_workarounds_nphy(struct brcms_phy * pi)17014 static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
17015 {
17016 	if (CHSPEC_IS5G(pi->radio_chanspec))
17017 		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
17018 	else
17019 		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
17020 
17021 	if (pi->phyhang_avoid)
17022 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
17023 
17024 	or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
17025 
17026 	if (NREV_GE(pi->pubpi.phy_rev, 7))
17027 		wlc_phy_workarounds_nphy_rev7(pi);
17028 	else if (NREV_GE(pi->pubpi.phy_rev, 3))
17029 		wlc_phy_workarounds_nphy_rev3(pi);
17030 	else
17031 		wlc_phy_workarounds_nphy_rev1(pi);
17032 
17033 	if (pi->phyhang_avoid)
17034 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
17035 }
17036 
wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy * pi)17037 static void wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
17038 {
17039 	int j, type = 2;
17040 	u16 addr_offset = 0x2c5;
17041 
17042 	for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
17043 		write_phy_reg(pi, addr_offset + j,
17044 			      NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
17045 }
17046 
wlc_phy_clip_det_nphy(struct brcms_phy * pi,u8 write,u16 * vals)17047 static void wlc_phy_clip_det_nphy(struct brcms_phy *pi, u8 write, u16 *vals)
17048 {
17049 
17050 	if (write == 0) {
17051 		vals[0] = read_phy_reg(pi, 0x2c);
17052 		vals[1] = read_phy_reg(pi, 0x42);
17053 	} else {
17054 		write_phy_reg(pi, 0x2c, vals[0]);
17055 		write_phy_reg(pi, 0x42, vals[1]);
17056 	}
17057 }
17058 
wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy * pi)17059 static void wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy *pi)
17060 {
17061 	u8 core;
17062 
17063 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17064 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17065 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
17066 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17067 						 TX_SSI_MASTER, 0x5);
17068 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17069 						 TX_SSI_MUX, 0xe);
17070 
17071 				if (pi->pubpi.radiorev != 5)
17072 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17073 							 core, TSSIA, 0);
17074 
17075 				if (!NREV_IS(pi->pubpi.phy_rev, 7))
17076 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17077 							 core, TSSIG, 0x1);
17078 				else
17079 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17080 							 core, TSSIG, 0x31);
17081 			} else {
17082 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17083 						 TX_SSI_MASTER, 0x9);
17084 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17085 						 TX_SSI_MUX, 0xc);
17086 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17087 						 TSSIG, 0);
17088 
17089 				if (pi->pubpi.radiorev != 5) {
17090 					if (!NREV_IS(pi->pubpi.phy_rev, 7))
17091 						WRITE_RADIO_REG3(pi, RADIO_2057,
17092 								 TX, core,
17093 								 TSSIA, 0x1);
17094 					else
17095 						WRITE_RADIO_REG3(pi, RADIO_2057,
17096 								 TX, core,
17097 								 TSSIA, 0x31);
17098 				}
17099 			}
17100 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
17101 					 0);
17102 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
17103 					 0);
17104 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
17105 					 0x3);
17106 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
17107 					 0x0);
17108 		}
17109 	} else {
17110 		WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
17111 				(CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
17112 				0x80);
17113 		WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
17114 		WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
17115 
17116 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17117 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
17118 					 0x0);
17119 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
17120 					 0x0);
17121 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
17122 					 0x3);
17123 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
17124 					 0x0);
17125 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
17126 					 0x8);
17127 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
17128 					 0x0);
17129 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
17130 					 0x0);
17131 
17132 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
17133 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17134 						 TX_SSI_MASTER, 0x5);
17135 
17136 				if (pi->pubpi.radiorev != 5)
17137 					WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17138 							 core, TSSIA, 0x0);
17139 				if (NREV_GE(pi->pubpi.phy_rev, 5))
17140 					WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17141 							 core, TSSIG, 0x31);
17142 				else
17143 					WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17144 							 core, TSSIG, 0x11);
17145 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17146 						 TX_SSI_MUX, 0xe);
17147 			} else {
17148 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17149 						 TX_SSI_MASTER, 0x9);
17150 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17151 						 TSSIA, 0x31);
17152 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17153 						 TSSIG, 0x0);
17154 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17155 						 TX_SSI_MUX, 0xc);
17156 			}
17157 		}
17158 	}
17159 }
17160 
17161 static void
wlc_phy_rfctrl_override_nphy(struct brcms_phy * pi,u16 field,u16 value,u8 core_mask,u8 off)17162 wlc_phy_rfctrl_override_nphy(struct brcms_phy *pi, u16 field, u16 value,
17163 			     u8 core_mask, u8 off)
17164 {
17165 	u8 core_num;
17166 	u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
17167 		0, val_mask = 0;
17168 	u8 shift = 0, val_shift = 0;
17169 
17170 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
17171 
17172 		en_mask = field;
17173 		for (core_num = 0; core_num < 2; core_num++) {
17174 
17175 			switch (field) {
17176 			case (0x1 << 1):
17177 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17178 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17179 				val_mask = (0x1 << 0);
17180 				val_shift = 0;
17181 				break;
17182 			case (0x1 << 2):
17183 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17184 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17185 				val_mask = (0x1 << 1);
17186 				val_shift = 1;
17187 				break;
17188 			case (0x1 << 3):
17189 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17190 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17191 				val_mask = (0x1 << 2);
17192 				val_shift = 2;
17193 				break;
17194 			case (0x1 << 4):
17195 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17196 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17197 				val_mask = (0x1 << 4);
17198 				val_shift = 4;
17199 				break;
17200 			case (0x1 << 5):
17201 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17202 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17203 				val_mask = (0x1 << 5);
17204 				val_shift = 5;
17205 				break;
17206 			case (0x1 << 6):
17207 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17208 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17209 				val_mask = (0x1 << 6);
17210 				val_shift = 6;
17211 				break;
17212 			case (0x1 << 7):
17213 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17214 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17215 				val_mask = (0x1 << 7);
17216 				val_shift = 7;
17217 				break;
17218 			case (0x1 << 8):
17219 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17220 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17221 				val_mask = (0x7 << 8);
17222 				val_shift = 8;
17223 				break;
17224 			case (0x1 << 11):
17225 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17226 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17227 				val_mask = (0x7 << 13);
17228 				val_shift = 13;
17229 				break;
17230 
17231 			case (0x1 << 9):
17232 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17233 				val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17234 				val_mask = (0x7 << 0);
17235 				val_shift = 0;
17236 				break;
17237 
17238 			case (0x1 << 10):
17239 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17240 				val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17241 				val_mask = (0x7 << 4);
17242 				val_shift = 4;
17243 				break;
17244 
17245 			case (0x1 << 12):
17246 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17247 				val_addr = (core_num == 0) ? 0x7b : 0x7e;
17248 				val_mask = (0xffff << 0);
17249 				val_shift = 0;
17250 				break;
17251 			case (0x1 << 13):
17252 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17253 				val_addr = (core_num == 0) ? 0x7c : 0x7f;
17254 				val_mask = (0xffff << 0);
17255 				val_shift = 0;
17256 				break;
17257 			case (0x1 << 14):
17258 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17259 				val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17260 				val_mask = (0x3 << 6);
17261 				val_shift = 6;
17262 				break;
17263 			case (0x1 << 0):
17264 				en_addr = (core_num == 0) ? 0xe5 : 0xe6;
17265 				val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17266 				val_mask = (0x1 << 15);
17267 				val_shift = 15;
17268 				break;
17269 			default:
17270 				addr = 0xffff;
17271 				break;
17272 			}
17273 
17274 			if (off) {
17275 				and_phy_reg(pi, en_addr, ~en_mask);
17276 				and_phy_reg(pi, val_addr, ~val_mask);
17277 			} else {
17278 
17279 				if ((core_mask == 0)
17280 				    || (core_mask & (1 << core_num))) {
17281 					or_phy_reg(pi, en_addr, en_mask);
17282 
17283 					if (addr != 0xffff)
17284 						mod_phy_reg(pi, val_addr,
17285 							    val_mask,
17286 							    (value <<
17287 							     val_shift));
17288 				}
17289 			}
17290 		}
17291 	} else {
17292 
17293 		if (off) {
17294 			and_phy_reg(pi, 0xec, ~field);
17295 			value = 0x0;
17296 		} else {
17297 			or_phy_reg(pi, 0xec, field);
17298 		}
17299 
17300 		for (core_num = 0; core_num < 2; core_num++) {
17301 
17302 			switch (field) {
17303 			case (0x1 << 1):
17304 			case (0x1 << 9):
17305 			case (0x1 << 12):
17306 			case (0x1 << 13):
17307 			case (0x1 << 14):
17308 				addr = 0x78;
17309 
17310 				core_mask = 0x1;
17311 				break;
17312 			case (0x1 << 2):
17313 			case (0x1 << 3):
17314 			case (0x1 << 4):
17315 			case (0x1 << 5):
17316 			case (0x1 << 6):
17317 			case (0x1 << 7):
17318 			case (0x1 << 8):
17319 				addr = (core_num == 0) ? 0x7a : 0x7d;
17320 				break;
17321 			case (0x1 << 10):
17322 				addr = (core_num == 0) ? 0x7b : 0x7e;
17323 				break;
17324 			case (0x1 << 11):
17325 				addr = (core_num == 0) ? 0x7c : 0x7f;
17326 				break;
17327 			default:
17328 				addr = 0xffff;
17329 			}
17330 
17331 			switch (field) {
17332 			case (0x1 << 1):
17333 				mask = (0x7 << 3);
17334 				shift = 3;
17335 				break;
17336 			case (0x1 << 9):
17337 				mask = (0x1 << 2);
17338 				shift = 2;
17339 				break;
17340 			case (0x1 << 12):
17341 				mask = (0x1 << 8);
17342 				shift = 8;
17343 				break;
17344 			case (0x1 << 13):
17345 				mask = (0x1 << 9);
17346 				shift = 9;
17347 				break;
17348 			case (0x1 << 14):
17349 				mask = (0xf << 12);
17350 				shift = 12;
17351 				break;
17352 			case (0x1 << 2):
17353 				mask = (0x1 << 0);
17354 				shift = 0;
17355 				break;
17356 			case (0x1 << 3):
17357 				mask = (0x1 << 1);
17358 				shift = 1;
17359 				break;
17360 			case (0x1 << 4):
17361 				mask = (0x1 << 2);
17362 				shift = 2;
17363 				break;
17364 			case (0x1 << 5):
17365 				mask = (0x3 << 4);
17366 				shift = 4;
17367 				break;
17368 			case (0x1 << 6):
17369 				mask = (0x3 << 6);
17370 				shift = 6;
17371 				break;
17372 			case (0x1 << 7):
17373 				mask = (0x1 << 8);
17374 				shift = 8;
17375 				break;
17376 			case (0x1 << 8):
17377 				mask = (0x1 << 9);
17378 				shift = 9;
17379 				break;
17380 			case (0x1 << 10):
17381 				mask = 0x1fff;
17382 				shift = 0x0;
17383 				break;
17384 			case (0x1 << 11):
17385 				mask = 0x1fff;
17386 				shift = 0x0;
17387 				break;
17388 			default:
17389 				mask = 0x0;
17390 				shift = 0x0;
17391 				break;
17392 			}
17393 
17394 			if ((addr != 0xffff) && (core_mask & (1 << core_num)))
17395 				mod_phy_reg(pi, addr, mask, (value << shift));
17396 		}
17397 
17398 		or_phy_reg(pi, 0xec, (0x1 << 0));
17399 		or_phy_reg(pi, 0x78, (0x1 << 0));
17400 		udelay(1);
17401 		and_phy_reg(pi, 0xec, ~(0x1 << 0));
17402 	}
17403 }
17404 
wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy * pi)17405 static void wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy *pi)
17406 {
17407 	s32 rssi_buf[4];
17408 	s32 int_val;
17409 
17410 	if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
17411 
17412 		return;
17413 
17414 	if (PHY_IPA(pi))
17415 		wlc_phy_ipa_internal_tssi_setup_nphy(pi);
17416 
17417 	if (NREV_GE(pi->pubpi.phy_rev, 7))
17418 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17419 						  0, 0x3, 0,
17420 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
17421 	else if (NREV_GE(pi->pubpi.phy_rev, 3))
17422 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
17423 
17424 	wlc_phy_stopplayback_nphy(pi);
17425 
17426 	wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
17427 
17428 	udelay(20);
17429 	int_val =
17430 		wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
17431 				       1);
17432 	wlc_phy_stopplayback_nphy(pi);
17433 	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
17434 
17435 	if (NREV_GE(pi->pubpi.phy_rev, 7))
17436 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17437 						  0, 0x3, 1,
17438 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
17439 	else if (NREV_GE(pi->pubpi.phy_rev, 3))
17440 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
17441 
17442 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17443 
17444 		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17445 			(u8) ((int_val >> 24) & 0xff);
17446 		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17447 			(u8) ((int_val >> 24) & 0xff);
17448 
17449 		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17450 			(u8) ((int_val >> 8) & 0xff);
17451 		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17452 			(u8) ((int_val >> 8) & 0xff);
17453 	} else {
17454 		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17455 			(u8) ((int_val >> 24) & 0xff);
17456 
17457 		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17458 			(u8) ((int_val >> 8) & 0xff);
17459 
17460 		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17461 			(u8) ((int_val >> 16) & 0xff);
17462 		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17463 			(u8) ((int_val) & 0xff);
17464 	}
17465 
17466 }
17467 
wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy * pi)17468 static void wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy *pi)
17469 {
17470 	u8 idx, idx2, i, delta_ind;
17471 
17472 	for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++)
17473 		pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
17474 
17475 	for (i = 0; i < 4; i++) {
17476 		idx2 = 0;
17477 
17478 		delta_ind = 0;
17479 
17480 		switch (i) {
17481 		case 0:
17482 
17483 			if (CHSPEC_IS40(pi->radio_chanspec)
17484 			    && NPHY_IS_SROM_REINTERPRET) {
17485 				idx = TXP_FIRST_MCS_40_SISO;
17486 			} else {
17487 				idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17488 				      TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
17489 				delta_ind = 1;
17490 			}
17491 			break;
17492 
17493 		case 1:
17494 
17495 			idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17496 			      TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
17497 			break;
17498 
17499 		case 2:
17500 
17501 			idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17502 			      TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
17503 			break;
17504 
17505 		case 3:
17506 
17507 			idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17508 			      TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
17509 			break;
17510 		}
17511 
17512 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17513 			pi->tx_power_offset[idx];
17514 		idx = idx + delta_ind;
17515 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17516 			pi->tx_power_offset[idx];
17517 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17518 			pi->tx_power_offset[idx];
17519 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17520 			pi->tx_power_offset[idx++];
17521 
17522 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17523 			pi->tx_power_offset[idx++];
17524 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17525 			pi->tx_power_offset[idx];
17526 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17527 			pi->tx_power_offset[idx];
17528 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17529 			pi->tx_power_offset[idx++];
17530 
17531 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17532 			pi->tx_power_offset[idx++];
17533 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17534 			pi->tx_power_offset[idx];
17535 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17536 			pi->tx_power_offset[idx];
17537 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17538 			pi->tx_power_offset[idx++];
17539 
17540 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17541 			pi->tx_power_offset[idx];
17542 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17543 			pi->tx_power_offset[idx++];
17544 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17545 			pi->tx_power_offset[idx];
17546 		idx = idx + 1 - delta_ind;
17547 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17548 			pi->tx_power_offset[idx];
17549 
17550 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17551 			pi->tx_power_offset[idx];
17552 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17553 			pi->tx_power_offset[idx];
17554 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17555 			pi->tx_power_offset[idx];
17556 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17557 			pi->tx_power_offset[idx];
17558 	}
17559 }
17560 
wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy * pi)17561 static void wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy *pi)
17562 {
17563 	u32 idx;
17564 	s16 a1[2], b0[2], b1[2];
17565 	s8 target_pwr_qtrdbm[2];
17566 	s32 num, den, pwr_est;
17567 	u8 chan_freq_range;
17568 	u8 idle_tssi[2];
17569 	u32 tbl_id, tbl_len, tbl_offset;
17570 	u32 regval[64];
17571 	u8 core;
17572 
17573 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17574 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17575 		(void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17576 		udelay(1);
17577 	}
17578 
17579 	if (pi->phyhang_avoid)
17580 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
17581 
17582 	or_phy_reg(pi, 0x122, (0x1 << 0));
17583 
17584 	if (NREV_GE(pi->pubpi.phy_rev, 3))
17585 		and_phy_reg(pi, 0x1e7, 0x7fff);
17586 	else
17587 		or_phy_reg(pi, 0x1e7, (0x1 << 15));
17588 
17589 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17590 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17591 
17592 	if (pi->sh->sromrev < 4) {
17593 		idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17594 		idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17595 		a1[0] = -424;
17596 		a1[1] = -424;
17597 		b0[0] = 5612;
17598 		b0[1] = 5612;
17599 		b1[1] = -1393;
17600 		b1[0] = -1393;
17601 	} else {
17602 
17603 		chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
17604 		switch (chan_freq_range) {
17605 		case WL_CHAN_FREQ_RANGE_2G:
17606 			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17607 			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17608 			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
17609 			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
17610 			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
17611 			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
17612 			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
17613 			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
17614 			break;
17615 		case WL_CHAN_FREQ_RANGE_5GL:
17616 			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17617 			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17618 			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
17619 			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
17620 			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
17621 			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
17622 			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
17623 			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
17624 			break;
17625 		case WL_CHAN_FREQ_RANGE_5GM:
17626 			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17627 			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17628 			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
17629 			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
17630 			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
17631 			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
17632 			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
17633 			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
17634 			break;
17635 		case WL_CHAN_FREQ_RANGE_5GH:
17636 			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17637 			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17638 			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
17639 			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
17640 			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
17641 			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
17642 			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
17643 			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
17644 			break;
17645 		default:
17646 			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17647 			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17648 			a1[0] = -424;
17649 			a1[1] = -424;
17650 			b0[0] = 5612;
17651 			b0[1] = 5612;
17652 			b1[1] = -1393;
17653 			b1[0] = -1393;
17654 			break;
17655 		}
17656 	}
17657 
17658 	/* use the provided transmit power */
17659 	target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
17660 	target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
17661 
17662 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17663 		if (pi->srom_fem2g.tssipos)
17664 			or_phy_reg(pi, 0x1e9, (0x1 << 14));
17665 
17666 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17667 			for (core = 0; core <= 1; core++) {
17668 				if (PHY_IPA(pi)) {
17669 					if (CHSPEC_IS2G(pi->radio_chanspec))
17670 						WRITE_RADIO_REG3(pi, RADIO_2057,
17671 								 TX, core,
17672 								 TX_SSI_MUX,
17673 								 0xe);
17674 					else
17675 						WRITE_RADIO_REG3(pi, RADIO_2057,
17676 								 TX, core,
17677 								 TX_SSI_MUX,
17678 								 0xc);
17679 				}
17680 			}
17681 		} else {
17682 			if (PHY_IPA(pi)) {
17683 
17684 				write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17685 						RADIO_2056_TX0,
17686 						(CHSPEC_IS5G
17687 						 (pi->radio_chanspec)) ?
17688 						 0xc : 0xe);
17689 				write_radio_reg(pi,
17690 						RADIO_2056_TX_TX_SSI_MUX |
17691 						RADIO_2056_TX1,
17692 						(CHSPEC_IS5G
17693 						 (pi->radio_chanspec)) ?
17694 						 0xc : 0xe);
17695 			} else {
17696 
17697 				write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17698 						RADIO_2056_TX0, 0x11);
17699 				write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17700 						RADIO_2056_TX1, 0x11);
17701 			}
17702 		}
17703 	}
17704 
17705 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17706 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17707 		(void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17708 		udelay(1);
17709 	}
17710 
17711 	if (NREV_GE(pi->pubpi.phy_rev, 7))
17712 		mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17713 			    (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17714 	else
17715 		mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17716 			    (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17717 
17718 	if (NREV_GE(pi->pubpi.phy_rev, 7))
17719 		mod_phy_reg(pi, 0x222, (0xff << 0),
17720 			    (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17721 	else if (NREV_GT(pi->pubpi.phy_rev, 1))
17722 		mod_phy_reg(pi, 0x222, (0xff << 0),
17723 			    (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17724 
17725 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17726 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17727 
17728 	write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
17729 
17730 	write_phy_reg(pi, 0x1e9,
17731 		      (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
17732 
17733 	write_phy_reg(pi, 0x1ea,
17734 		      (target_pwr_qtrdbm[0] << 0) |
17735 		      (target_pwr_qtrdbm[1] << 8));
17736 
17737 	tbl_len = 64;
17738 	tbl_offset = 0;
17739 	for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
17740 	     tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
17741 
17742 		for (idx = 0; idx < tbl_len; idx++) {
17743 			num = 8 *
17744 			      (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
17745 			den = 32768 + a1[tbl_id - 26] * idx;
17746 			pwr_est = max(DIV_ROUND_CLOSEST(4 * num, den), -8);
17747 			if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17748 				if (idx <=
17749 				    (uint) (31 - idle_tssi[tbl_id - 26] + 1))
17750 					pwr_est =
17751 						max(pwr_est,
17752 						    target_pwr_qtrdbm
17753 						    [tbl_id - 26] + 1);
17754 			}
17755 			regval[idx] = (u32) pwr_est;
17756 		}
17757 		wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
17758 					 regval);
17759 	}
17760 
17761 	wlc_phy_txpwr_limit_to_tbl_nphy(pi);
17762 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
17763 				 pi->adj_pwr_tbl_nphy);
17764 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
17765 				 pi->adj_pwr_tbl_nphy);
17766 
17767 	if (pi->phyhang_avoid)
17768 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
17769 }
17770 
wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy * pi)17771 static u32 *wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy *pi)
17772 {
17773 	u32 *tx_pwrctrl_tbl = NULL;
17774 
17775 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
17776 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17777 			if ((pi->pubpi.radiorev == 4)
17778 			    || (pi->pubpi.radiorev == 6))
17779 				tx_pwrctrl_tbl =
17780 					nphy_tpc_txgain_ipa_2g_2057rev4n6;
17781 			else if (pi->pubpi.radiorev == 3)
17782 				tx_pwrctrl_tbl =
17783 					nphy_tpc_txgain_ipa_2g_2057rev3;
17784 			else if (pi->pubpi.radiorev == 5)
17785 				tx_pwrctrl_tbl =
17786 					nphy_tpc_txgain_ipa_2g_2057rev5;
17787 			else if ((pi->pubpi.radiorev == 7)
17788 				 || (pi->pubpi.radiorev == 8))
17789 				tx_pwrctrl_tbl =
17790 					nphy_tpc_txgain_ipa_2g_2057rev7;
17791 		} else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
17792 			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
17793 			if (pi->sh->chip == BCMA_CHIP_ID_BCM47162)
17794 				tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17795 		} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
17796 			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17797 		} else {
17798 			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
17799 		}
17800 	} else {
17801 
17802 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17803 			if ((pi->pubpi.radiorev == 3) ||
17804 			    (pi->pubpi.radiorev == 4) ||
17805 			    (pi->pubpi.radiorev == 6))
17806 				tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
17807 			else if ((pi->pubpi.radiorev == 7)
17808 				 || (pi->pubpi.radiorev == 8))
17809 				tx_pwrctrl_tbl =
17810 					nphy_tpc_txgain_ipa_5g_2057rev7;
17811 		} else {
17812 			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
17813 		}
17814 	}
17815 
17816 	return tx_pwrctrl_tbl;
17817 }
17818 
wlc_phy_restore_rssical_nphy(struct brcms_phy * pi)17819 static void wlc_phy_restore_rssical_nphy(struct brcms_phy *pi)
17820 {
17821 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
17822 		if (pi->nphy_rssical_chanspec_2G == 0)
17823 			return;
17824 
17825 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17826 			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17827 				      RADIO_2057_VCM_MASK,
17828 				      pi->rssical_cache.
17829 				      rssical_radio_regs_2G[0]);
17830 			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17831 				      RADIO_2057_VCM_MASK,
17832 				      pi->rssical_cache.
17833 				      rssical_radio_regs_2G[1]);
17834 		} else {
17835 			mod_radio_reg(pi,
17836 				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17837 				      RADIO_2056_VCM_MASK,
17838 				      pi->rssical_cache.
17839 				      rssical_radio_regs_2G[0]);
17840 			mod_radio_reg(pi,
17841 				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17842 				      RADIO_2056_VCM_MASK,
17843 				      pi->rssical_cache.
17844 				      rssical_radio_regs_2G[1]);
17845 		}
17846 
17847 		write_phy_reg(pi, 0x1a6,
17848 			      pi->rssical_cache.rssical_phyregs_2G[0]);
17849 		write_phy_reg(pi, 0x1ac,
17850 			      pi->rssical_cache.rssical_phyregs_2G[1]);
17851 		write_phy_reg(pi, 0x1b2,
17852 			      pi->rssical_cache.rssical_phyregs_2G[2]);
17853 		write_phy_reg(pi, 0x1b8,
17854 			      pi->rssical_cache.rssical_phyregs_2G[3]);
17855 		write_phy_reg(pi, 0x1a4,
17856 			      pi->rssical_cache.rssical_phyregs_2G[4]);
17857 		write_phy_reg(pi, 0x1aa,
17858 			      pi->rssical_cache.rssical_phyregs_2G[5]);
17859 		write_phy_reg(pi, 0x1b0,
17860 			      pi->rssical_cache.rssical_phyregs_2G[6]);
17861 		write_phy_reg(pi, 0x1b6,
17862 			      pi->rssical_cache.rssical_phyregs_2G[7]);
17863 		write_phy_reg(pi, 0x1a5,
17864 			      pi->rssical_cache.rssical_phyregs_2G[8]);
17865 		write_phy_reg(pi, 0x1ab,
17866 			      pi->rssical_cache.rssical_phyregs_2G[9]);
17867 		write_phy_reg(pi, 0x1b1,
17868 			      pi->rssical_cache.rssical_phyregs_2G[10]);
17869 		write_phy_reg(pi, 0x1b7,
17870 			      pi->rssical_cache.rssical_phyregs_2G[11]);
17871 
17872 	} else {
17873 		if (pi->nphy_rssical_chanspec_5G == 0)
17874 			return;
17875 
17876 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17877 			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17878 				      RADIO_2057_VCM_MASK,
17879 				      pi->rssical_cache.
17880 				      rssical_radio_regs_5G[0]);
17881 			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17882 				      RADIO_2057_VCM_MASK,
17883 				      pi->rssical_cache.
17884 				      rssical_radio_regs_5G[1]);
17885 		} else {
17886 			mod_radio_reg(pi,
17887 				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17888 				      RADIO_2056_VCM_MASK,
17889 				      pi->rssical_cache.
17890 				      rssical_radio_regs_5G[0]);
17891 			mod_radio_reg(pi,
17892 				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17893 				      RADIO_2056_VCM_MASK,
17894 				      pi->rssical_cache.
17895 				      rssical_radio_regs_5G[1]);
17896 		}
17897 
17898 		write_phy_reg(pi, 0x1a6,
17899 			      pi->rssical_cache.rssical_phyregs_5G[0]);
17900 		write_phy_reg(pi, 0x1ac,
17901 			      pi->rssical_cache.rssical_phyregs_5G[1]);
17902 		write_phy_reg(pi, 0x1b2,
17903 			      pi->rssical_cache.rssical_phyregs_5G[2]);
17904 		write_phy_reg(pi, 0x1b8,
17905 			      pi->rssical_cache.rssical_phyregs_5G[3]);
17906 		write_phy_reg(pi, 0x1a4,
17907 			      pi->rssical_cache.rssical_phyregs_5G[4]);
17908 		write_phy_reg(pi, 0x1aa,
17909 			      pi->rssical_cache.rssical_phyregs_5G[5]);
17910 		write_phy_reg(pi, 0x1b0,
17911 			      pi->rssical_cache.rssical_phyregs_5G[6]);
17912 		write_phy_reg(pi, 0x1b6,
17913 			      pi->rssical_cache.rssical_phyregs_5G[7]);
17914 		write_phy_reg(pi, 0x1a5,
17915 			      pi->rssical_cache.rssical_phyregs_5G[8]);
17916 		write_phy_reg(pi, 0x1ab,
17917 			      pi->rssical_cache.rssical_phyregs_5G[9]);
17918 		write_phy_reg(pi, 0x1b1,
17919 			      pi->rssical_cache.rssical_phyregs_5G[10]);
17920 		write_phy_reg(pi, 0x1b7,
17921 			      pi->rssical_cache.rssical_phyregs_5G[11]);
17922 	}
17923 }
17924 
wlc_phy_internal_cal_txgain_nphy(struct brcms_phy * pi)17925 static void wlc_phy_internal_cal_txgain_nphy(struct brcms_phy *pi)
17926 {
17927 	u16 txcal_gain[2];
17928 
17929 	pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
17930 	pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
17931 	wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
17932 	wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
17933 
17934 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
17935 				txcal_gain);
17936 
17937 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
17938 		txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
17939 		txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
17940 	} else {
17941 		txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
17942 		txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
17943 	}
17944 
17945 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
17946 				 txcal_gain);
17947 }
17948 
wlc_phy_precal_txgain_nphy(struct brcms_phy * pi)17949 static void wlc_phy_precal_txgain_nphy(struct brcms_phy *pi)
17950 {
17951 	bool save_bbmult = false;
17952 	u8 txcal_index_2057_rev5n7 = 0;
17953 	u8 txcal_index_2057_rev3n4n6 = 10;
17954 
17955 	if (pi->use_int_tx_iqlo_cal_nphy) {
17956 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17957 			if ((pi->pubpi.radiorev == 3) ||
17958 			    (pi->pubpi.radiorev == 4) ||
17959 			    (pi->pubpi.radiorev == 6)) {
17960 
17961 				pi->nphy_txcal_pwr_idx[0] =
17962 					txcal_index_2057_rev3n4n6;
17963 				pi->nphy_txcal_pwr_idx[1] =
17964 					txcal_index_2057_rev3n4n6;
17965 				wlc_phy_txpwr_index_nphy(
17966 					pi, 3,
17967 					txcal_index_2057_rev3n4n6,
17968 					false);
17969 			} else {
17970 
17971 				pi->nphy_txcal_pwr_idx[0] =
17972 					txcal_index_2057_rev5n7;
17973 				pi->nphy_txcal_pwr_idx[1] =
17974 					txcal_index_2057_rev5n7;
17975 				wlc_phy_txpwr_index_nphy(
17976 					pi, 3,
17977 					txcal_index_2057_rev5n7,
17978 					false);
17979 			}
17980 			save_bbmult = true;
17981 
17982 		} else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
17983 			wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
17984 			if (pi->sh->hw_phytxchain != 3) {
17985 				pi->nphy_txcal_pwr_idx[1] =
17986 					pi->nphy_txcal_pwr_idx[0];
17987 				wlc_phy_txpwr_index_nphy(pi, 3,
17988 							 pi->
17989 							 nphy_txcal_pwr_idx[0],
17990 							 true);
17991 				save_bbmult = true;
17992 			}
17993 
17994 		} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
17995 			if (PHY_IPA(pi)) {
17996 				if (CHSPEC_IS2G(pi->radio_chanspec)) {
17997 					wlc_phy_cal_txgainctrl_nphy(pi, 12,
17998 								    false);
17999 				} else {
18000 					pi->nphy_txcal_pwr_idx[0] = 80;
18001 					pi->nphy_txcal_pwr_idx[1] = 80;
18002 					wlc_phy_txpwr_index_nphy(pi, 3, 80,
18003 								 false);
18004 					save_bbmult = true;
18005 				}
18006 			} else {
18007 				wlc_phy_internal_cal_txgain_nphy(pi);
18008 				save_bbmult = true;
18009 			}
18010 
18011 		} else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18012 			if (PHY_IPA(pi)) {
18013 				if (CHSPEC_IS2G(pi->radio_chanspec))
18014 					wlc_phy_cal_txgainctrl_nphy(pi, 12,
18015 								    false);
18016 				else
18017 					wlc_phy_cal_txgainctrl_nphy(pi, 14,
18018 								    false);
18019 			} else {
18020 				wlc_phy_internal_cal_txgain_nphy(pi);
18021 				save_bbmult = true;
18022 			}
18023 		}
18024 
18025 	} else {
18026 		wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
18027 	}
18028 
18029 	if (save_bbmult)
18030 		wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
18031 					&pi->nphy_txcal_bbmult);
18032 }
18033 
18034 static void
wlc_phy_rfctrlintc_override_nphy(struct brcms_phy * pi,u8 field,u16 value,u8 core_code)18035 wlc_phy_rfctrlintc_override_nphy(struct brcms_phy *pi, u8 field, u16 value,
18036 				 u8 core_code)
18037 {
18038 	u16 mask;
18039 	u16 val;
18040 	u8 core;
18041 
18042 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18043 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18044 			if (core_code == RADIO_MIMO_CORESEL_CORE1
18045 			    && core == PHY_CORE_1)
18046 				continue;
18047 			else if (core_code == RADIO_MIMO_CORESEL_CORE2
18048 				 && core == PHY_CORE_0)
18049 				continue;
18050 
18051 			if (NREV_LT(pi->pubpi.phy_rev, 7)) {
18052 
18053 				mask = (0x1 << 10);
18054 				val = 1 << 10;
18055 				mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18056 					    0x92, mask, val);
18057 			}
18058 
18059 			if (field == NPHY_RfctrlIntc_override_OFF) {
18060 
18061 				write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18062 					      0x92, 0);
18063 
18064 				wlc_phy_force_rfseq_nphy(pi,
18065 							 NPHY_RFSEQ_RESET2RX);
18066 			} else if (field == NPHY_RfctrlIntc_override_TRSW) {
18067 
18068 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18069 
18070 					mask = (0x1 << 6) | (0x1 << 7);
18071 
18072 					val = value << 6;
18073 					mod_phy_reg(pi,
18074 						    (core ==
18075 						     PHY_CORE_0) ? 0x91 : 0x92,
18076 						    mask, val);
18077 
18078 					or_phy_reg(pi,
18079 						   (core ==
18080 						    PHY_CORE_0) ? 0x91 : 0x92,
18081 						   (0x1 << 10));
18082 
18083 					and_phy_reg(pi, 0x2ff, (u16)
18084 						    0xffff & ~(0x3 << 14));
18085 					or_phy_reg(pi, 0x2ff, (0x1 << 13));
18086 					or_phy_reg(pi, 0x2ff, (0x1 << 0));
18087 				} else {
18088 
18089 					mask = (0x1 << 6) |
18090 					       (0x1 << 7) |
18091 					       (0x1 << 8) | (0x1 << 9);
18092 					val = value << 6;
18093 					mod_phy_reg(pi,
18094 						    (core ==
18095 						     PHY_CORE_0) ? 0x91 : 0x92,
18096 						    mask, val);
18097 
18098 					mask = (0x1 << 0);
18099 					val = 1 << 0;
18100 					mod_phy_reg(pi,
18101 						    (core ==
18102 						     PHY_CORE_0) ? 0xe7 : 0xec,
18103 						    mask, val);
18104 
18105 					mask = (core == PHY_CORE_0) ?
18106 					       (0x1 << 0) : (0x1 << 1);
18107 					val = 1 << ((core == PHY_CORE_0) ?
18108 						    0 : 1);
18109 					mod_phy_reg(pi, 0x78, mask, val);
18110 
18111 					SPINWAIT(((read_phy_reg(pi, 0x78) & val)
18112 						  != 0), 10000);
18113 					if (WARN(read_phy_reg(pi, 0x78) & val,
18114 						 "HW error: override failed"))
18115 						return;
18116 
18117 					mask = (0x1 << 0);
18118 					val = 0 << 0;
18119 					mod_phy_reg(pi,
18120 						    (core ==
18121 						     PHY_CORE_0) ? 0xe7 : 0xec,
18122 						    mask, val);
18123 				}
18124 			} else if (field == NPHY_RfctrlIntc_override_PA) {
18125 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18126 
18127 					mask = (0x1 << 4) | (0x1 << 5);
18128 
18129 					if (CHSPEC_IS5G(pi->radio_chanspec))
18130 						val = value << 5;
18131 					else
18132 						val = value << 4;
18133 
18134 					mod_phy_reg(pi,
18135 						    (core ==
18136 						     PHY_CORE_0) ? 0x91 : 0x92,
18137 						    mask, val);
18138 
18139 					or_phy_reg(pi,
18140 						   (core ==
18141 						    PHY_CORE_0) ? 0x91 : 0x92,
18142 						   (0x1 << 12));
18143 				} else {
18144 
18145 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18146 						mask = (0x1 << 5);
18147 						val = value << 5;
18148 					} else {
18149 						mask = (0x1 << 4);
18150 						val = value << 4;
18151 					}
18152 					mod_phy_reg(pi,
18153 						    (core ==
18154 						     PHY_CORE_0) ? 0x91 : 0x92,
18155 						    mask, val);
18156 				}
18157 			} else if (field ==
18158 				   NPHY_RfctrlIntc_override_EXT_LNA_PU) {
18159 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18160 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18161 
18162 						mask = (0x1 << 0);
18163 						val = value << 0;
18164 						mod_phy_reg(pi,
18165 							    (core ==
18166 							     PHY_CORE_0) ? 0x91
18167 							    : 0x92, mask, val);
18168 
18169 						mask = (0x1 << 2);
18170 						mod_phy_reg(pi,
18171 							    (core ==
18172 							     PHY_CORE_0) ? 0x91
18173 							    : 0x92, mask, 0);
18174 					} else {
18175 
18176 						mask = (0x1 << 2);
18177 						val = value << 2;
18178 						mod_phy_reg(pi,
18179 							    (core ==
18180 							     PHY_CORE_0) ? 0x91
18181 							    : 0x92, mask, val);
18182 
18183 						mask = (0x1 << 0);
18184 						mod_phy_reg(pi,
18185 							    (core ==
18186 							     PHY_CORE_0) ? 0x91
18187 							    : 0x92, mask, 0);
18188 					}
18189 
18190 					mask = (0x1 << 11);
18191 					val = 1 << 11;
18192 					mod_phy_reg(pi,
18193 						    (core ==
18194 						     PHY_CORE_0) ? 0x91 : 0x92,
18195 						    mask, val);
18196 				} else {
18197 
18198 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18199 						mask = (0x1 << 0);
18200 						val = value << 0;
18201 					} else {
18202 						mask = (0x1 << 2);
18203 						val = value << 2;
18204 					}
18205 					mod_phy_reg(pi,
18206 						    (core ==
18207 						     PHY_CORE_0) ? 0x91 : 0x92,
18208 						    mask, val);
18209 				}
18210 			} else if (field ==
18211 				   NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
18212 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18213 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18214 
18215 						mask = (0x1 << 1);
18216 						val = value << 1;
18217 						mod_phy_reg(pi,
18218 							    (core ==
18219 							     PHY_CORE_0) ? 0x91
18220 							    : 0x92, mask, val);
18221 
18222 						mask = (0x1 << 3);
18223 						mod_phy_reg(pi,
18224 							    (core ==
18225 							     PHY_CORE_0) ? 0x91
18226 							    : 0x92, mask, 0);
18227 					} else {
18228 
18229 						mask = (0x1 << 3);
18230 						val = value << 3;
18231 						mod_phy_reg(pi,
18232 							    (core ==
18233 							     PHY_CORE_0) ? 0x91
18234 							    : 0x92, mask, val);
18235 
18236 						mask = (0x1 << 1);
18237 						mod_phy_reg(pi,
18238 							    (core ==
18239 							     PHY_CORE_0) ? 0x91
18240 							    : 0x92, mask, 0);
18241 					}
18242 
18243 					mask = (0x1 << 11);
18244 					val = 1 << 11;
18245 					mod_phy_reg(pi,
18246 						    (core ==
18247 						     PHY_CORE_0) ? 0x91 : 0x92,
18248 						    mask, val);
18249 				} else {
18250 
18251 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18252 						mask = (0x1 << 1);
18253 						val = value << 1;
18254 					} else {
18255 						mask = (0x1 << 3);
18256 						val = value << 3;
18257 					}
18258 					mod_phy_reg(pi,
18259 						    (core ==
18260 						     PHY_CORE_0) ? 0x91 : 0x92,
18261 						    mask, val);
18262 				}
18263 			}
18264 		}
18265 	}
18266 }
18267 
18268 void
wlc_phy_cal_txgainctrl_nphy(struct brcms_phy * pi,s32 dBm_targetpower,bool debug)18269 wlc_phy_cal_txgainctrl_nphy(struct brcms_phy *pi, s32 dBm_targetpower,
18270 			    bool debug)
18271 {
18272 	int gainctrl_loopidx;
18273 	uint core;
18274 	u16 m0m1, curr_m0m1;
18275 	s32 delta_power;
18276 	s32 txpwrindex;
18277 	s32 qdBm_power[2];
18278 	u16 orig_BBConfig;
18279 	u16 phy_saveregs[4];
18280 	u32 freq_test;
18281 	u16 ampl_test = 250;
18282 	uint stepsize;
18283 	bool phyhang_avoid_state = false;
18284 
18285 	if (NREV_GE(pi->pubpi.phy_rev, 7))
18286 		stepsize = 2;
18287 	else
18288 		stepsize = 1;
18289 
18290 	if (CHSPEC_IS40(pi->radio_chanspec))
18291 		freq_test = 5000;
18292 	else
18293 		freq_test = 2500;
18294 
18295 	wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18296 	wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18297 
18298 	if (pi->phyhang_avoid)
18299 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
18300 
18301 	phyhang_avoid_state = pi->phyhang_avoid;
18302 	pi->phyhang_avoid = false;
18303 
18304 	phy_saveregs[0] = read_phy_reg(pi, 0x91);
18305 	phy_saveregs[1] = read_phy_reg(pi, 0x92);
18306 	phy_saveregs[2] = read_phy_reg(pi, 0xe7);
18307 	phy_saveregs[3] = read_phy_reg(pi, 0xec);
18308 	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
18309 					 RADIO_MIMO_CORESEL_CORE1 |
18310 					 RADIO_MIMO_CORESEL_CORE2);
18311 
18312 	if (!debug) {
18313 		wlc_phy_rfctrlintc_override_nphy(pi,
18314 						 NPHY_RfctrlIntc_override_TRSW,
18315 						 0x2, RADIO_MIMO_CORESEL_CORE1);
18316 		wlc_phy_rfctrlintc_override_nphy(pi,
18317 						 NPHY_RfctrlIntc_override_TRSW,
18318 						 0x8, RADIO_MIMO_CORESEL_CORE2);
18319 	} else {
18320 		wlc_phy_rfctrlintc_override_nphy(pi,
18321 						 NPHY_RfctrlIntc_override_TRSW,
18322 						 0x1, RADIO_MIMO_CORESEL_CORE1);
18323 		wlc_phy_rfctrlintc_override_nphy(pi,
18324 						 NPHY_RfctrlIntc_override_TRSW,
18325 						 0x7, RADIO_MIMO_CORESEL_CORE2);
18326 	}
18327 
18328 	orig_BBConfig = read_phy_reg(pi, 0x01);
18329 	mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
18330 
18331 	wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
18332 
18333 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18334 		txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
18335 
18336 		for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
18337 		     gainctrl_loopidx++) {
18338 			wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18339 					     false);
18340 
18341 			if (core == PHY_CORE_0)
18342 				curr_m0m1 = m0m1 & 0xff00;
18343 			else
18344 				curr_m0m1 = m0m1 & 0x00ff;
18345 
18346 			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
18347 			wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
18348 
18349 			udelay(50);
18350 
18351 			wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18352 						 NPHY_CAL_TSSISAMPS);
18353 
18354 			pi->nphy_bb_mult_save = 0;
18355 			wlc_phy_stopplayback_nphy(pi);
18356 
18357 			delta_power = (dBm_targetpower * 4) - qdBm_power[core];
18358 
18359 			txpwrindex -= stepsize * delta_power;
18360 			if (txpwrindex < 0)
18361 				txpwrindex = 0;
18362 			else if (txpwrindex > 127)
18363 				txpwrindex = 127;
18364 
18365 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
18366 				if (NREV_IS(pi->pubpi.phy_rev, 4) &&
18367 				    (pi->srom_fem5g.extpagain == 3)) {
18368 					if (txpwrindex < 30)
18369 						txpwrindex = 30;
18370 				}
18371 			} else {
18372 				if (NREV_GE(pi->pubpi.phy_rev, 5) &&
18373 				    (pi->srom_fem2g.extpagain == 3)) {
18374 					if (txpwrindex < 50)
18375 						txpwrindex = 50;
18376 				}
18377 			}
18378 
18379 			wlc_phy_txpwr_index_nphy(pi, (1 << core),
18380 						 (u8) txpwrindex, true);
18381 		}
18382 
18383 		pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
18384 
18385 		if (debug) {
18386 			u16 radio_gain;
18387 			u16 dbg_m0m1;
18388 
18389 			wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18390 
18391 			wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18392 					     false);
18393 
18394 			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18395 			wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
18396 
18397 			udelay(100);
18398 
18399 			wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18400 						 NPHY_CAL_TSSISAMPS);
18401 
18402 			wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
18403 						&radio_gain);
18404 
18405 			mdelay(4000);
18406 			pi->nphy_bb_mult_save = 0;
18407 			wlc_phy_stopplayback_nphy(pi);
18408 		}
18409 	}
18410 
18411 	wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
18412 	wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
18413 
18414 	wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
18415 
18416 	write_phy_reg(pi, 0x01, orig_BBConfig);
18417 
18418 	write_phy_reg(pi, 0x91, phy_saveregs[0]);
18419 	write_phy_reg(pi, 0x92, phy_saveregs[1]);
18420 	write_phy_reg(pi, 0xe7, phy_saveregs[2]);
18421 	write_phy_reg(pi, 0xec, phy_saveregs[3]);
18422 
18423 	pi->phyhang_avoid = phyhang_avoid_state;
18424 
18425 	if (pi->phyhang_avoid)
18426 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
18427 }
18428 
wlc_phy_savecal_nphy(struct brcms_phy * pi)18429 static void wlc_phy_savecal_nphy(struct brcms_phy *pi)
18430 {
18431 	void *tbl_ptr;
18432 	int coreNum;
18433 	u16 *txcal_radio_regs = NULL;
18434 
18435 	if (pi->phyhang_avoid)
18436 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
18437 
18438 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18439 
18440 		wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18441 					  &pi->calibration_cache.
18442 					  rxcal_coeffs_2G);
18443 
18444 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18445 			txcal_radio_regs =
18446 				pi->calibration_cache.txcal_radio_regs_2G;
18447 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18448 
18449 			pi->calibration_cache.txcal_radio_regs_2G[0] =
18450 				read_radio_reg(pi,
18451 					       RADIO_2056_TX_LOFT_FINE_I |
18452 					       RADIO_2056_TX0);
18453 			pi->calibration_cache.txcal_radio_regs_2G[1] =
18454 				read_radio_reg(pi,
18455 					       RADIO_2056_TX_LOFT_FINE_Q |
18456 					       RADIO_2056_TX0);
18457 			pi->calibration_cache.txcal_radio_regs_2G[2] =
18458 				read_radio_reg(pi,
18459 					       RADIO_2056_TX_LOFT_FINE_I |
18460 					       RADIO_2056_TX1);
18461 			pi->calibration_cache.txcal_radio_regs_2G[3] =
18462 				read_radio_reg(pi,
18463 					       RADIO_2056_TX_LOFT_FINE_Q |
18464 					       RADIO_2056_TX1);
18465 
18466 			pi->calibration_cache.txcal_radio_regs_2G[4] =
18467 				read_radio_reg(pi,
18468 					       RADIO_2056_TX_LOFT_COARSE_I |
18469 					       RADIO_2056_TX0);
18470 			pi->calibration_cache.txcal_radio_regs_2G[5] =
18471 				read_radio_reg(pi,
18472 					       RADIO_2056_TX_LOFT_COARSE_Q |
18473 					       RADIO_2056_TX0);
18474 			pi->calibration_cache.txcal_radio_regs_2G[6] =
18475 				read_radio_reg(pi,
18476 					       RADIO_2056_TX_LOFT_COARSE_I |
18477 					       RADIO_2056_TX1);
18478 			pi->calibration_cache.txcal_radio_regs_2G[7] =
18479 				read_radio_reg(pi,
18480 					       RADIO_2056_TX_LOFT_COARSE_Q |
18481 					       RADIO_2056_TX1);
18482 		} else {
18483 			pi->calibration_cache.txcal_radio_regs_2G[0] =
18484 			       read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18485 			pi->calibration_cache.txcal_radio_regs_2G[1] =
18486 			       read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18487 			pi->calibration_cache.txcal_radio_regs_2G[2] =
18488 			       read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18489 			pi->calibration_cache.txcal_radio_regs_2G[3] =
18490 			       read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18491 		}
18492 
18493 		pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
18494 		tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18495 	} else {
18496 
18497 		wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18498 					  &pi->calibration_cache.
18499 					  rxcal_coeffs_5G);
18500 
18501 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18502 			txcal_radio_regs =
18503 				pi->calibration_cache.txcal_radio_regs_5G;
18504 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18505 
18506 			pi->calibration_cache.txcal_radio_regs_5G[0] =
18507 				read_radio_reg(pi,
18508 					       RADIO_2056_TX_LOFT_FINE_I |
18509 					       RADIO_2056_TX0);
18510 			pi->calibration_cache.txcal_radio_regs_5G[1] =
18511 				read_radio_reg(pi,
18512 					       RADIO_2056_TX_LOFT_FINE_Q |
18513 					       RADIO_2056_TX0);
18514 			pi->calibration_cache.txcal_radio_regs_5G[2] =
18515 				read_radio_reg(pi,
18516 					       RADIO_2056_TX_LOFT_FINE_I |
18517 					       RADIO_2056_TX1);
18518 			pi->calibration_cache.txcal_radio_regs_5G[3] =
18519 				read_radio_reg(pi,
18520 					       RADIO_2056_TX_LOFT_FINE_Q |
18521 					       RADIO_2056_TX1);
18522 
18523 			pi->calibration_cache.txcal_radio_regs_5G[4] =
18524 				read_radio_reg(pi,
18525 					       RADIO_2056_TX_LOFT_COARSE_I |
18526 					       RADIO_2056_TX0);
18527 			pi->calibration_cache.txcal_radio_regs_5G[5] =
18528 				read_radio_reg(pi,
18529 					       RADIO_2056_TX_LOFT_COARSE_Q |
18530 					       RADIO_2056_TX0);
18531 			pi->calibration_cache.txcal_radio_regs_5G[6] =
18532 				read_radio_reg(pi,
18533 					       RADIO_2056_TX_LOFT_COARSE_I |
18534 					       RADIO_2056_TX1);
18535 			pi->calibration_cache.txcal_radio_regs_5G[7] =
18536 				read_radio_reg(pi,
18537 					       RADIO_2056_TX_LOFT_COARSE_Q |
18538 					       RADIO_2056_TX1);
18539 		} else {
18540 			pi->calibration_cache.txcal_radio_regs_5G[0] =
18541 			       read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18542 			pi->calibration_cache.txcal_radio_regs_5G[1] =
18543 			       read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18544 			pi->calibration_cache.txcal_radio_regs_5G[2] =
18545 			       read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18546 			pi->calibration_cache.txcal_radio_regs_5G[3] =
18547 			       read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18548 		}
18549 
18550 		pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
18551 		tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18552 	}
18553 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18554 		for (coreNum = 0; coreNum <= 1; coreNum++) {
18555 
18556 			txcal_radio_regs[2 * coreNum] =
18557 				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18558 						LOFT_FINE_I);
18559 			txcal_radio_regs[2 * coreNum + 1] =
18560 				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18561 						LOFT_FINE_Q);
18562 
18563 			txcal_radio_regs[2 * coreNum + 4] =
18564 				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18565 						LOFT_COARSE_I);
18566 			txcal_radio_regs[2 * coreNum + 5] =
18567 				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18568 						LOFT_COARSE_Q);
18569 		}
18570 	}
18571 
18572 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
18573 
18574 	if (pi->phyhang_avoid)
18575 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
18576 }
18577 
wlc_phy_tx_iq_war_nphy(struct brcms_phy * pi)18578 static void wlc_phy_tx_iq_war_nphy(struct brcms_phy *pi)
18579 {
18580 	struct nphy_iq_comp tx_comp;
18581 
18582 	wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, &tx_comp);
18583 
18584 	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
18585 	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
18586 	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
18587 	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
18588 }
18589 
wlc_phy_restorecal_nphy(struct brcms_phy * pi)18590 static void wlc_phy_restorecal_nphy(struct brcms_phy *pi)
18591 {
18592 	u16 *loft_comp;
18593 	u16 txcal_coeffs_bphy[4];
18594 	u16 *tbl_ptr;
18595 	int coreNum;
18596 	u16 *txcal_radio_regs = NULL;
18597 
18598 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18599 		if (pi->nphy_iqcal_chanspec_2G == 0)
18600 			return;
18601 
18602 		tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18603 		loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
18604 	} else {
18605 		if (pi->nphy_iqcal_chanspec_5G == 0)
18606 			return;
18607 
18608 		tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18609 		loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
18610 	}
18611 
18612 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16, tbl_ptr);
18613 
18614 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18615 		txcal_coeffs_bphy[0] = tbl_ptr[0];
18616 		txcal_coeffs_bphy[1] = tbl_ptr[1];
18617 		txcal_coeffs_bphy[2] = tbl_ptr[2];
18618 		txcal_coeffs_bphy[3] = tbl_ptr[3];
18619 	} else {
18620 		txcal_coeffs_bphy[0] = 0;
18621 		txcal_coeffs_bphy[1] = 0;
18622 		txcal_coeffs_bphy[2] = 0;
18623 		txcal_coeffs_bphy[3] = 0;
18624 	}
18625 
18626 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
18627 				 txcal_coeffs_bphy);
18628 
18629 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
18630 
18631 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
18632 
18633 	if (NREV_LT(pi->pubpi.phy_rev, 2))
18634 		wlc_phy_tx_iq_war_nphy(pi);
18635 
18636 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18637 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18638 			txcal_radio_regs =
18639 				pi->calibration_cache.txcal_radio_regs_2G;
18640 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18641 
18642 			write_radio_reg(pi,
18643 					RADIO_2056_TX_LOFT_FINE_I |
18644 					RADIO_2056_TX0,
18645 					pi->calibration_cache.
18646 					txcal_radio_regs_2G[0]);
18647 			write_radio_reg(pi,
18648 					RADIO_2056_TX_LOFT_FINE_Q |
18649 					RADIO_2056_TX0,
18650 					pi->calibration_cache.
18651 					txcal_radio_regs_2G[1]);
18652 			write_radio_reg(pi,
18653 					RADIO_2056_TX_LOFT_FINE_I |
18654 					RADIO_2056_TX1,
18655 					pi->calibration_cache.
18656 					txcal_radio_regs_2G[2]);
18657 			write_radio_reg(pi,
18658 					RADIO_2056_TX_LOFT_FINE_Q |
18659 					RADIO_2056_TX1,
18660 					pi->calibration_cache.
18661 					txcal_radio_regs_2G[3]);
18662 
18663 			write_radio_reg(pi,
18664 					RADIO_2056_TX_LOFT_COARSE_I |
18665 					RADIO_2056_TX0,
18666 					pi->calibration_cache.
18667 					txcal_radio_regs_2G[4]);
18668 			write_radio_reg(pi,
18669 					RADIO_2056_TX_LOFT_COARSE_Q |
18670 					RADIO_2056_TX0,
18671 					pi->calibration_cache.
18672 					txcal_radio_regs_2G[5]);
18673 			write_radio_reg(pi,
18674 					RADIO_2056_TX_LOFT_COARSE_I |
18675 					RADIO_2056_TX1,
18676 					pi->calibration_cache.
18677 					txcal_radio_regs_2G[6]);
18678 			write_radio_reg(pi,
18679 					RADIO_2056_TX_LOFT_COARSE_Q |
18680 					RADIO_2056_TX1,
18681 					pi->calibration_cache.
18682 					txcal_radio_regs_2G[7]);
18683 		} else {
18684 			write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18685 					pi->calibration_cache.
18686 					txcal_radio_regs_2G[0]);
18687 			write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18688 					pi->calibration_cache.
18689 					txcal_radio_regs_2G[1]);
18690 			write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18691 					pi->calibration_cache.
18692 					txcal_radio_regs_2G[2]);
18693 			write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18694 					pi->calibration_cache.
18695 					txcal_radio_regs_2G[3]);
18696 		}
18697 
18698 		wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18699 					  &pi->calibration_cache.
18700 					  rxcal_coeffs_2G);
18701 	} else {
18702 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18703 			txcal_radio_regs =
18704 				pi->calibration_cache.txcal_radio_regs_5G;
18705 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18706 
18707 			write_radio_reg(pi,
18708 					RADIO_2056_TX_LOFT_FINE_I |
18709 					RADIO_2056_TX0,
18710 					pi->calibration_cache.
18711 					txcal_radio_regs_5G[0]);
18712 			write_radio_reg(pi,
18713 					RADIO_2056_TX_LOFT_FINE_Q |
18714 					RADIO_2056_TX0,
18715 					pi->calibration_cache.
18716 					txcal_radio_regs_5G[1]);
18717 			write_radio_reg(pi,
18718 					RADIO_2056_TX_LOFT_FINE_I |
18719 					RADIO_2056_TX1,
18720 					pi->calibration_cache.
18721 					txcal_radio_regs_5G[2]);
18722 			write_radio_reg(pi,
18723 					RADIO_2056_TX_LOFT_FINE_Q |
18724 					RADIO_2056_TX1,
18725 					pi->calibration_cache.
18726 					txcal_radio_regs_5G[3]);
18727 
18728 			write_radio_reg(pi,
18729 					RADIO_2056_TX_LOFT_COARSE_I |
18730 					RADIO_2056_TX0,
18731 					pi->calibration_cache.
18732 					txcal_radio_regs_5G[4]);
18733 			write_radio_reg(pi,
18734 					RADIO_2056_TX_LOFT_COARSE_Q |
18735 					RADIO_2056_TX0,
18736 					pi->calibration_cache.
18737 					txcal_radio_regs_5G[5]);
18738 			write_radio_reg(pi,
18739 					RADIO_2056_TX_LOFT_COARSE_I |
18740 					RADIO_2056_TX1,
18741 					pi->calibration_cache.
18742 					txcal_radio_regs_5G[6]);
18743 			write_radio_reg(pi,
18744 					RADIO_2056_TX_LOFT_COARSE_Q |
18745 					RADIO_2056_TX1,
18746 					pi->calibration_cache.
18747 					txcal_radio_regs_5G[7]);
18748 		} else {
18749 			write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18750 					pi->calibration_cache.
18751 					txcal_radio_regs_5G[0]);
18752 			write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18753 					pi->calibration_cache.
18754 					txcal_radio_regs_5G[1]);
18755 			write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18756 					pi->calibration_cache.
18757 					txcal_radio_regs_5G[2]);
18758 			write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18759 					pi->calibration_cache.
18760 					txcal_radio_regs_5G[3]);
18761 		}
18762 
18763 		wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18764 					  &pi->calibration_cache.
18765 					  rxcal_coeffs_5G);
18766 	}
18767 
18768 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18769 		for (coreNum = 0; coreNum <= 1; coreNum++) {
18770 
18771 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18772 					 LOFT_FINE_I,
18773 					 txcal_radio_regs[2 * coreNum]);
18774 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18775 					 LOFT_FINE_Q,
18776 					 txcal_radio_regs[2 * coreNum + 1]);
18777 
18778 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18779 					 LOFT_COARSE_I,
18780 					 txcal_radio_regs[2 * coreNum + 4]);
18781 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18782 					 LOFT_COARSE_Q,
18783 					 txcal_radio_regs[2 * coreNum + 5]);
18784 		}
18785 	}
18786 }
18787 
wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy * pi)18788 static void wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy *pi)
18789 {
18790 	u32 idx;
18791 	u16 iqloCalbuf[7];
18792 	u32 iqcomp, locomp, curr_locomp;
18793 	s8 locomp_i, locomp_q;
18794 	s8 curr_locomp_i, curr_locomp_q;
18795 	u32 tbl_id, tbl_len, tbl_offset;
18796 	u32 regval[128];
18797 
18798 	if (pi->phyhang_avoid)
18799 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
18800 
18801 	wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
18802 
18803 	tbl_len = 128;
18804 	tbl_offset = 320;
18805 	for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18806 	     tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18807 		iqcomp =
18808 			(tbl_id ==
18809 			 26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
18810 			(iqloCalbuf[1] & 0x3ff)
18811 			: (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
18812 			(iqloCalbuf[3] & 0x3ff);
18813 
18814 		for (idx = 0; idx < tbl_len; idx++)
18815 			regval[idx] = iqcomp;
18816 		wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18817 					 regval);
18818 	}
18819 
18820 	tbl_offset = 448;
18821 	for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18822 	     tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18823 
18824 		locomp =
18825 			(u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
18826 		locomp_i = (s8) ((locomp >> 8) & 0xff);
18827 		locomp_q = (s8) ((locomp) & 0xff);
18828 		for (idx = 0; idx < tbl_len; idx++) {
18829 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18830 				curr_locomp_i = locomp_i;
18831 				curr_locomp_q = locomp_q;
18832 			} else {
18833 				curr_locomp_i = (s8) ((locomp_i *
18834 						       nphy_tpc_loscale[idx] +
18835 						       128) >> 8);
18836 				curr_locomp_q =
18837 					(s8) ((locomp_q *
18838 					       nphy_tpc_loscale[idx] +
18839 					       128) >> 8);
18840 			}
18841 			curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
18842 			curr_locomp |= (u32) (curr_locomp_q & 0xff);
18843 			regval[idx] = curr_locomp;
18844 		}
18845 		wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18846 					 regval);
18847 	}
18848 
18849 	if (NREV_LT(pi->pubpi.phy_rev, 2)) {
18850 
18851 		wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
18852 		wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
18853 	}
18854 
18855 	if (pi->phyhang_avoid)
18856 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
18857 }
18858 
wlc_phy_txlpfbw_nphy(struct brcms_phy * pi)18859 static void wlc_phy_txlpfbw_nphy(struct brcms_phy *pi)
18860 {
18861 	u8 tx_lpf_bw = 0;
18862 
18863 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18864 		if (CHSPEC_IS40(pi->radio_chanspec))
18865 			tx_lpf_bw = 3;
18866 		else
18867 			tx_lpf_bw = 1;
18868 
18869 		if (PHY_IPA(pi)) {
18870 			if (CHSPEC_IS40(pi->radio_chanspec))
18871 				tx_lpf_bw = 5;
18872 			else
18873 				tx_lpf_bw = 4;
18874 		}
18875 
18876 		write_phy_reg(pi, 0xe8,
18877 			      (tx_lpf_bw << 0) |
18878 			      (tx_lpf_bw << 3) |
18879 			      (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18880 
18881 		if (PHY_IPA(pi)) {
18882 
18883 			if (CHSPEC_IS40(pi->radio_chanspec))
18884 				tx_lpf_bw = 4;
18885 			else
18886 				tx_lpf_bw = 1;
18887 
18888 			write_phy_reg(pi, 0xe9,
18889 				      (tx_lpf_bw << 0) |
18890 				      (tx_lpf_bw << 3) |
18891 				      (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18892 		}
18893 	}
18894 }
18895 
18896 static void
wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy * pi,u16 reduction_factr)18897 wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy *pi, u16 reduction_factr)
18898 {
18899 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18900 		if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18901 		    CHSPEC_IS40(pi->radio_chanspec)) {
18902 			if (!pi->nphy_anarxlpf_adjusted) {
18903 				write_radio_reg(pi,
18904 						(RADIO_2056_RX_RXLPF_RCCAL_LPC |
18905 						 RADIO_2056_RX0),
18906 						((pi->nphy_rccal_value +
18907 						  reduction_factr) | 0x80));
18908 
18909 				pi->nphy_anarxlpf_adjusted = true;
18910 			}
18911 		} else {
18912 			if (pi->nphy_anarxlpf_adjusted) {
18913 				write_radio_reg(pi,
18914 						(RADIO_2056_RX_RXLPF_RCCAL_LPC |
18915 						 RADIO_2056_RX0),
18916 						(pi->nphy_rccal_value | 0x80));
18917 
18918 				pi->nphy_anarxlpf_adjusted = false;
18919 			}
18920 		}
18921 	}
18922 }
18923 
18924 static void
wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy * pi,int ntones,int * tone_id_buf,u32 * noise_var_buf)18925 wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy *pi, int ntones,
18926 				 int *tone_id_buf, u32 *noise_var_buf)
18927 {
18928 	int i;
18929 	u32 offset;
18930 	int tone_id;
18931 	int tbllen =
18932 		CHSPEC_IS40(pi->radio_chanspec) ?
18933 		NPHY_NOISEVAR_TBLLEN40 : NPHY_NOISEVAR_TBLLEN20;
18934 
18935 	if (pi->nphy_noisevars_adjusted) {
18936 		for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
18937 			tone_id = pi->nphy_saved_noisevars.tone_id[i];
18938 			offset = (tone_id >= 0) ?
18939 				 ((tone_id *
18940 				   2) + 1) : (tbllen + (tone_id * 2) + 1);
18941 			wlc_phy_table_write_nphy(
18942 				pi, NPHY_TBL_ID_NOISEVAR, 1,
18943 				offset, 32,
18944 				&pi->nphy_saved_noisevars.min_noise_vars[i]);
18945 		}
18946 
18947 		pi->nphy_saved_noisevars.bufcount = 0;
18948 		pi->nphy_noisevars_adjusted = false;
18949 	}
18950 
18951 	if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
18952 		pi->nphy_saved_noisevars.bufcount = 0;
18953 
18954 		for (i = 0; i < ntones; i++) {
18955 			tone_id = tone_id_buf[i];
18956 			offset = (tone_id >= 0) ?
18957 				 ((tone_id * 2) + 1) :
18958 				 (tbllen + (tone_id * 2) + 1);
18959 			pi->nphy_saved_noisevars.tone_id[i] = tone_id;
18960 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18961 						offset, 32,
18962 						&pi->nphy_saved_noisevars.
18963 						min_noise_vars[i]);
18964 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18965 						 offset, 32, &noise_var_buf[i]);
18966 			pi->nphy_saved_noisevars.bufcount++;
18967 		}
18968 
18969 		pi->nphy_noisevars_adjusted = true;
18970 	}
18971 }
18972 
wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy * pi,u8 minpwr)18973 static void wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy *pi, u8 minpwr)
18974 {
18975 	u16 regval;
18976 
18977 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18978 		if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18979 		    CHSPEC_IS40(pi->radio_chanspec)) {
18980 			if (!pi->nphy_crsminpwr_adjusted) {
18981 				regval = read_phy_reg(pi, 0x27d);
18982 				pi->nphy_crsminpwr[0] = regval & 0xff;
18983 				regval &= 0xff00;
18984 				regval |= (u16) minpwr;
18985 				write_phy_reg(pi, 0x27d, regval);
18986 
18987 				regval = read_phy_reg(pi, 0x280);
18988 				pi->nphy_crsminpwr[1] = regval & 0xff;
18989 				regval &= 0xff00;
18990 				regval |= (u16) minpwr;
18991 				write_phy_reg(pi, 0x280, regval);
18992 
18993 				regval = read_phy_reg(pi, 0x283);
18994 				pi->nphy_crsminpwr[2] = regval & 0xff;
18995 				regval &= 0xff00;
18996 				regval |= (u16) minpwr;
18997 				write_phy_reg(pi, 0x283, regval);
18998 
18999 				pi->nphy_crsminpwr_adjusted = true;
19000 			}
19001 		} else {
19002 			if (pi->nphy_crsminpwr_adjusted) {
19003 				regval = read_phy_reg(pi, 0x27d);
19004 				regval &= 0xff00;
19005 				regval |= pi->nphy_crsminpwr[0];
19006 				write_phy_reg(pi, 0x27d, regval);
19007 
19008 				regval = read_phy_reg(pi, 0x280);
19009 				regval &= 0xff00;
19010 				regval |= pi->nphy_crsminpwr[1];
19011 				write_phy_reg(pi, 0x280, regval);
19012 
19013 				regval = read_phy_reg(pi, 0x283);
19014 				regval &= 0xff00;
19015 				regval |= pi->nphy_crsminpwr[2];
19016 				write_phy_reg(pi, 0x283, regval);
19017 
19018 				pi->nphy_crsminpwr_adjusted = false;
19019 			}
19020 		}
19021 	}
19022 }
19023 
wlc_phy_spurwar_nphy(struct brcms_phy * pi)19024 static void wlc_phy_spurwar_nphy(struct brcms_phy *pi)
19025 {
19026 	u16 cur_channel = 0;
19027 	int nphy_adj_tone_id_buf[] = { 57, 58 };
19028 	u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
19029 	bool isAdjustNoiseVar = false;
19030 	uint numTonesAdjust = 0;
19031 
19032 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19033 		if (pi->phyhang_avoid)
19034 			wlc_phy_stay_in_carriersearch_nphy(pi, true);
19035 
19036 		cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19037 
19038 		if (pi->nphy_gband_spurwar_en) {
19039 
19040 			wlc_phy_adjust_rx_analpfbw_nphy(
19041 				pi,
19042 				NPHY_ANARXLPFBW_REDUCTIONFACT);
19043 
19044 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
19045 				if ((cur_channel == 11)
19046 				    && CHSPEC_IS40(pi->radio_chanspec))
19047 					wlc_phy_adjust_min_noisevar_nphy(
19048 						pi, 2,
19049 						nphy_adj_tone_id_buf,
19050 						nphy_adj_noise_var_buf);
19051 				else
19052 					wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19053 									 NULL,
19054 									 NULL);
19055 			}
19056 
19057 			wlc_phy_adjust_crsminpwr_nphy(pi,
19058 						     NPHY_ADJUSTED_MINCRSPOWER);
19059 		}
19060 
19061 		if ((pi->nphy_gband_spurwar2_en)
19062 		    && CHSPEC_IS2G(pi->radio_chanspec)) {
19063 
19064 			if (CHSPEC_IS40(pi->radio_chanspec)) {
19065 				switch (cur_channel) {
19066 				case 3:
19067 					nphy_adj_tone_id_buf[0] = 57;
19068 					nphy_adj_tone_id_buf[1] = 58;
19069 					nphy_adj_noise_var_buf[0] = 0x22f;
19070 					nphy_adj_noise_var_buf[1] = 0x25f;
19071 					isAdjustNoiseVar = true;
19072 					break;
19073 				case 4:
19074 					nphy_adj_tone_id_buf[0] = 41;
19075 					nphy_adj_tone_id_buf[1] = 42;
19076 					nphy_adj_noise_var_buf[0] = 0x22f;
19077 					nphy_adj_noise_var_buf[1] = 0x25f;
19078 					isAdjustNoiseVar = true;
19079 					break;
19080 				case 5:
19081 					nphy_adj_tone_id_buf[0] = 25;
19082 					nphy_adj_tone_id_buf[1] = 26;
19083 					nphy_adj_noise_var_buf[0] = 0x24f;
19084 					nphy_adj_noise_var_buf[1] = 0x25f;
19085 					isAdjustNoiseVar = true;
19086 					break;
19087 				case 6:
19088 					nphy_adj_tone_id_buf[0] = 9;
19089 					nphy_adj_tone_id_buf[1] = 10;
19090 					nphy_adj_noise_var_buf[0] = 0x22f;
19091 					nphy_adj_noise_var_buf[1] = 0x24f;
19092 					isAdjustNoiseVar = true;
19093 					break;
19094 				case 7:
19095 					nphy_adj_tone_id_buf[0] = 121;
19096 					nphy_adj_tone_id_buf[1] = 122;
19097 					nphy_adj_noise_var_buf[0] = 0x18f;
19098 					nphy_adj_noise_var_buf[1] = 0x24f;
19099 					isAdjustNoiseVar = true;
19100 					break;
19101 				case 8:
19102 					nphy_adj_tone_id_buf[0] = 105;
19103 					nphy_adj_tone_id_buf[1] = 106;
19104 					nphy_adj_noise_var_buf[0] = 0x22f;
19105 					nphy_adj_noise_var_buf[1] = 0x25f;
19106 					isAdjustNoiseVar = true;
19107 					break;
19108 				case 9:
19109 					nphy_adj_tone_id_buf[0] = 89;
19110 					nphy_adj_tone_id_buf[1] = 90;
19111 					nphy_adj_noise_var_buf[0] = 0x22f;
19112 					nphy_adj_noise_var_buf[1] = 0x24f;
19113 					isAdjustNoiseVar = true;
19114 					break;
19115 				case 10:
19116 					nphy_adj_tone_id_buf[0] = 73;
19117 					nphy_adj_tone_id_buf[1] = 74;
19118 					nphy_adj_noise_var_buf[0] = 0x22f;
19119 					nphy_adj_noise_var_buf[1] = 0x24f;
19120 					isAdjustNoiseVar = true;
19121 					break;
19122 				default:
19123 					isAdjustNoiseVar = false;
19124 					break;
19125 				}
19126 			}
19127 
19128 			if (isAdjustNoiseVar) {
19129 				numTonesAdjust = ARRAY_SIZE(nphy_adj_tone_id_buf);
19130 
19131 				wlc_phy_adjust_min_noisevar_nphy(
19132 					pi,
19133 					numTonesAdjust,
19134 					nphy_adj_tone_id_buf,
19135 					nphy_adj_noise_var_buf);
19136 			} else {
19137 				wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19138 								 NULL);
19139 			}
19140 		}
19141 
19142 		if ((pi->nphy_aband_spurwar_en) &&
19143 		    (CHSPEC_IS5G(pi->radio_chanspec))) {
19144 			switch (cur_channel) {
19145 			case 54:
19146 				nphy_adj_tone_id_buf[0] = 32;
19147 				nphy_adj_noise_var_buf[0] = 0x25f;
19148 				break;
19149 			case 38:
19150 			case 102:
19151 			case 118:
19152 				if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) &&
19153 				    (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
19154 					nphy_adj_tone_id_buf[0] = 32;
19155 					nphy_adj_noise_var_buf[0] = 0x21f;
19156 				} else {
19157 					nphy_adj_tone_id_buf[0] = 0;
19158 					nphy_adj_noise_var_buf[0] = 0x0;
19159 				}
19160 				break;
19161 			case 134:
19162 				nphy_adj_tone_id_buf[0] = 32;
19163 				nphy_adj_noise_var_buf[0] = 0x21f;
19164 				break;
19165 			case 151:
19166 				nphy_adj_tone_id_buf[0] = 16;
19167 				nphy_adj_noise_var_buf[0] = 0x23f;
19168 				break;
19169 			case 153:
19170 			case 161:
19171 				nphy_adj_tone_id_buf[0] = 48;
19172 				nphy_adj_noise_var_buf[0] = 0x23f;
19173 				break;
19174 			default:
19175 				nphy_adj_tone_id_buf[0] = 0;
19176 				nphy_adj_noise_var_buf[0] = 0x0;
19177 				break;
19178 			}
19179 
19180 			if (nphy_adj_tone_id_buf[0]
19181 			    && nphy_adj_noise_var_buf[0])
19182 				wlc_phy_adjust_min_noisevar_nphy(
19183 					pi, 1,
19184 					nphy_adj_tone_id_buf,
19185 					nphy_adj_noise_var_buf);
19186 			else
19187 				wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19188 								 NULL);
19189 		}
19190 
19191 		if (pi->phyhang_avoid)
19192 			wlc_phy_stay_in_carriersearch_nphy(pi, false);
19193 	}
19194 }
19195 
wlc_phy_init_nphy(struct brcms_phy * pi)19196 void wlc_phy_init_nphy(struct brcms_phy *pi)
19197 {
19198 	u16 val;
19199 	u16 clip1_ths[2];
19200 	struct nphy_txgains target_gain;
19201 	u8 tx_pwr_ctrl_state;
19202 	bool do_nphy_cal = false;
19203 	uint core;
19204 	u32 d11_clk_ctl_st;
19205 	bool do_rssi_cal = false;
19206 
19207 	core = 0;
19208 
19209 	if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19210 		pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19211 
19212 	if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
19213 	    ((pi->sh->chippkg == BCMA_PKG_ID_BCM4717) ||
19214 	     (pi->sh->chippkg == BCMA_PKG_ID_BCM4718))) {
19215 		if ((pi->sh->boardflags & BFL_EXTLNA) &&
19216 		    (CHSPEC_IS2G(pi->radio_chanspec)))
19217 			bcma_cc_set32(&pi->d11core->bus->drv_cc,
19218 				      BCMA_CC_CHIPCTL, 0x40);
19219 	}
19220 
19221 	if ((!PHY_IPA(pi)) && (pi->sh->chip == BCMA_CHIP_ID_BCM5357))
19222 		bcma_chipco_chipctl_maskset(&pi->d11core->bus->drv_cc, 1,
19223 					    ~CCTRL5357_EXTPA, CCTRL5357_EXTPA);
19224 
19225 	if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19226 	    CHSPEC_IS40(pi->radio_chanspec)) {
19227 
19228 		d11_clk_ctl_st = bcma_read32(pi->d11core,
19229 					     D11REGOFFS(clk_ctl_st));
19230 		bcma_mask32(pi->d11core, D11REGOFFS(clk_ctl_st),
19231 			    ~(CCS_FORCEHT | CCS_HTAREQ));
19232 
19233 		bcma_write32(pi->d11core, D11REGOFFS(clk_ctl_st),
19234 			     d11_clk_ctl_st);
19235 	}
19236 
19237 	pi->use_int_tx_iqlo_cal_nphy =
19238 		(PHY_IPA(pi) ||
19239 		 (NREV_GE(pi->pubpi.phy_rev, 7) ||
19240 		  (NREV_GE(pi->pubpi.phy_rev, 5)
19241 		   && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19242 
19243 	pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19244 
19245 	pi->nphy_deaf_count = 0;
19246 
19247 	wlc_phy_tbl_init_nphy(pi);
19248 
19249 	pi->nphy_crsminpwr_adjusted = false;
19250 	pi->nphy_noisevars_adjusted = false;
19251 
19252 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19253 		write_phy_reg(pi, 0xe7, 0);
19254 		write_phy_reg(pi, 0xec, 0);
19255 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19256 			write_phy_reg(pi, 0x342, 0);
19257 			write_phy_reg(pi, 0x343, 0);
19258 			write_phy_reg(pi, 0x346, 0);
19259 			write_phy_reg(pi, 0x347, 0);
19260 		}
19261 		write_phy_reg(pi, 0xe5, 0);
19262 		write_phy_reg(pi, 0xe6, 0);
19263 	} else {
19264 		write_phy_reg(pi, 0xec, 0);
19265 	}
19266 
19267 	write_phy_reg(pi, 0x91, 0);
19268 	write_phy_reg(pi, 0x92, 0);
19269 	if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19270 		write_phy_reg(pi, 0x93, 0);
19271 		write_phy_reg(pi, 0x94, 0);
19272 	}
19273 
19274 	and_phy_reg(pi, 0xa1, ~3);
19275 
19276 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19277 		write_phy_reg(pi, 0x8f, 0);
19278 		write_phy_reg(pi, 0xa5, 0);
19279 	} else {
19280 		write_phy_reg(pi, 0xa5, 0);
19281 	}
19282 
19283 	if (NREV_IS(pi->pubpi.phy_rev, 2))
19284 		mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19285 	else if (NREV_LT(pi->pubpi.phy_rev, 2))
19286 		mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19287 
19288 	write_phy_reg(pi, 0x203, 32);
19289 	write_phy_reg(pi, 0x201, 32);
19290 
19291 	if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19292 		write_phy_reg(pi, 0x20d, 160);
19293 	else
19294 		write_phy_reg(pi, 0x20d, 184);
19295 
19296 	write_phy_reg(pi, 0x13a, 200);
19297 
19298 	write_phy_reg(pi, 0x70, 80);
19299 
19300 	write_phy_reg(pi, 0x1ff, 48);
19301 
19302 	if (NREV_LT(pi->pubpi.phy_rev, 8))
19303 		wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19304 
19305 	wlc_phy_stf_chain_upd_nphy(pi);
19306 
19307 	if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19308 		write_phy_reg(pi, 0x180, 0xaa8);
19309 		write_phy_reg(pi, 0x181, 0x9a4);
19310 	}
19311 
19312 	if (PHY_IPA(pi)) {
19313 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19314 
19315 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19316 				    0x29b, (0x1 << 0), (1) << 0);
19317 
19318 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19319 				    0x29c, (0x1ff << 7),
19320 				    (pi->nphy_papd_epsilon_offset[core]) << 7);
19321 
19322 		}
19323 
19324 		wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19325 	} else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19326 		wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19327 	}
19328 
19329 	wlc_phy_workarounds_nphy(pi);
19330 
19331 	wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19332 
19333 	val = read_phy_reg(pi, 0x01);
19334 	write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19335 	write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19336 	wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19337 
19338 	wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19339 
19340 	wlc_phy_pa_override_nphy(pi, OFF);
19341 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19342 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19343 	wlc_phy_pa_override_nphy(pi, ON);
19344 
19345 	wlc_phy_classifier_nphy(pi, 0, 0);
19346 	wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19347 
19348 	if (CHSPEC_IS2G(pi->radio_chanspec))
19349 		wlc_phy_bphy_init_nphy(pi);
19350 
19351 	tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19352 	wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19353 
19354 	wlc_phy_txpwr_fixpower_nphy(pi);
19355 
19356 	wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19357 
19358 	wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19359 
19360 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19361 		u32 *tx_pwrctrl_tbl = NULL;
19362 		u16 idx;
19363 		s16 pga_gn = 0;
19364 		s16 pad_gn = 0;
19365 		s32 rfpwr_offset;
19366 
19367 		if (PHY_IPA(pi)) {
19368 			tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19369 		} else {
19370 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
19371 				if (NREV_IS(pi->pubpi.phy_rev, 3))
19372 					tx_pwrctrl_tbl =
19373 						nphy_tpc_5GHz_txgain_rev3;
19374 				else if (NREV_IS(pi->pubpi.phy_rev, 4))
19375 					tx_pwrctrl_tbl =
19376 						(pi->srom_fem5g.extpagain ==
19377 						 3) ?
19378 						nphy_tpc_5GHz_txgain_HiPwrEPA :
19379 						nphy_tpc_5GHz_txgain_rev4;
19380 				else
19381 					tx_pwrctrl_tbl =
19382 						nphy_tpc_5GHz_txgain_rev5;
19383 			} else {
19384 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19385 					if (pi->pubpi.radiorev == 5)
19386 						tx_pwrctrl_tbl =
19387 						   nphy_tpc_txgain_epa_2057rev5;
19388 					else if (pi->pubpi.radiorev == 3)
19389 						tx_pwrctrl_tbl =
19390 						   nphy_tpc_txgain_epa_2057rev3;
19391 				} else {
19392 					if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19393 					    (pi->srom_fem2g.extpagain == 3))
19394 						tx_pwrctrl_tbl =
19395 						       nphy_tpc_txgain_HiPwrEPA;
19396 					else
19397 						tx_pwrctrl_tbl =
19398 							nphy_tpc_txgain_rev3;
19399 				}
19400 			}
19401 		}
19402 
19403 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19404 					 192, 32, tx_pwrctrl_tbl);
19405 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19406 					 192, 32, tx_pwrctrl_tbl);
19407 
19408 		pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19409 
19410 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19411 
19412 			for (idx = 0; idx < 128; idx++) {
19413 				pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19414 				pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19415 				rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19416 								 pad_gn);
19417 				wlc_phy_table_write_nphy(
19418 					pi,
19419 					NPHY_TBL_ID_CORE1TXPWRCTL,
19420 					1, 576 + idx, 32,
19421 					&rfpwr_offset);
19422 				wlc_phy_table_write_nphy(
19423 					pi,
19424 					NPHY_TBL_ID_CORE2TXPWRCTL,
19425 					1, 576 + idx, 32,
19426 					&rfpwr_offset);
19427 			}
19428 		} else {
19429 
19430 			for (idx = 0; idx < 128; idx++) {
19431 				pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19432 				if (CHSPEC_IS2G(pi->radio_chanspec))
19433 					rfpwr_offset = (s16)
19434 						 nphy_papd_pga_gain_delta_ipa_2g
19435 								       [pga_gn];
19436 				else
19437 					rfpwr_offset = (s16)
19438 						 nphy_papd_pga_gain_delta_ipa_5g
19439 								       [pga_gn];
19440 
19441 				wlc_phy_table_write_nphy(
19442 					pi,
19443 					NPHY_TBL_ID_CORE1TXPWRCTL,
19444 					1, 576 + idx, 32,
19445 					&rfpwr_offset);
19446 				wlc_phy_table_write_nphy(
19447 					pi,
19448 					NPHY_TBL_ID_CORE2TXPWRCTL,
19449 					1, 576 + idx, 32,
19450 					&rfpwr_offset);
19451 			}
19452 
19453 		}
19454 	} else {
19455 
19456 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19457 					 192, 32, nphy_tpc_txgain);
19458 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19459 					 192, 32, nphy_tpc_txgain);
19460 	}
19461 
19462 	if (pi->sh->phyrxchain != 0x3)
19463 		wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19464 					     pi->sh->phyrxchain);
19465 
19466 	if (PHY_PERICAL_MPHASE_PENDING(pi))
19467 		wlc_phy_cal_perical_mphase_restart(pi);
19468 
19469 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19470 		do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19471 			      (pi->nphy_rssical_chanspec_2G == 0) :
19472 			      (pi->nphy_rssical_chanspec_5G == 0);
19473 
19474 		if (do_rssi_cal)
19475 			wlc_phy_rssi_cal_nphy(pi);
19476 		else
19477 			wlc_phy_restore_rssical_nphy(pi);
19478 	} else {
19479 		wlc_phy_rssi_cal_nphy(pi);
19480 	}
19481 
19482 	if (!SCAN_RM_IN_PROGRESS(pi))
19483 		do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19484 			      (pi->nphy_iqcal_chanspec_2G == 0) :
19485 			      (pi->nphy_iqcal_chanspec_5G == 0);
19486 
19487 	if (!pi->do_initcal)
19488 		do_nphy_cal = false;
19489 
19490 	if (do_nphy_cal) {
19491 
19492 		target_gain = wlc_phy_get_tx_gain_nphy(pi);
19493 
19494 		if (pi->antsel_type == ANTSEL_2x3)
19495 			wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19496 					    true);
19497 
19498 		if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19499 			wlc_phy_rssi_cal_nphy(pi);
19500 
19501 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19502 				pi->nphy_cal_orig_pwr_idx[0] =
19503 					pi->nphy_txpwrindex[PHY_CORE_0]
19504 					.
19505 					index_internal;
19506 				pi->nphy_cal_orig_pwr_idx[1] =
19507 					pi->nphy_txpwrindex[PHY_CORE_1]
19508 					.
19509 					index_internal;
19510 
19511 				wlc_phy_precal_txgain_nphy(pi);
19512 				target_gain =
19513 					wlc_phy_get_tx_gain_nphy(pi);
19514 			}
19515 
19516 			if (wlc_phy_cal_txiqlo_nphy
19517 				    (pi, target_gain, true,
19518 				    false) == 0) {
19519 				if (wlc_phy_cal_rxiq_nphy
19520 					    (pi, target_gain, 2,
19521 					    false) == 0)
19522 					wlc_phy_savecal_nphy(pi);
19523 
19524 			}
19525 		} else if (pi->mphase_cal_phase_id ==
19526 			   MPHASE_CAL_STATE_IDLE) {
19527 			wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19528 					    PHY_PERICAL_PHYINIT);
19529 		}
19530 	} else {
19531 		wlc_phy_restorecal_nphy(pi);
19532 	}
19533 
19534 	wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19535 
19536 	wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19537 
19538 	wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19539 
19540 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19541 
19542 		write_phy_reg(pi, 0x70, 50);
19543 
19544 	wlc_phy_txlpfbw_nphy(pi);
19545 
19546 	wlc_phy_spurwar_nphy(pi);
19547 
19548 }
19549 
wlc_phy_resetcca_nphy(struct brcms_phy * pi)19550 static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19551 {
19552 	u16 val;
19553 
19554 	wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19555 
19556 	val = read_phy_reg(pi, 0x01);
19557 	write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19558 	udelay(1);
19559 	write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19560 
19561 	wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19562 
19563 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19564 }
19565 
wlc_phy_pa_override_nphy(struct brcms_phy * pi,bool en)19566 void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19567 {
19568 	u16 rfctrlintc_override_val;
19569 
19570 	if (!en) {
19571 
19572 		pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19573 		pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19574 
19575 		if (NREV_GE(pi->pubpi.phy_rev, 7))
19576 			rfctrlintc_override_val = 0x1480;
19577 		else if (NREV_GE(pi->pubpi.phy_rev, 3))
19578 			rfctrlintc_override_val =
19579 				CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19580 		else
19581 			rfctrlintc_override_val =
19582 				CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19583 
19584 		write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19585 		write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19586 	} else {
19587 		write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19588 		write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19589 	}
19590 
19591 }
19592 
wlc_phy_stf_chain_upd_nphy(struct brcms_phy * pi)19593 void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19594 {
19595 
19596 	u16 txrx_chain =
19597 		(NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19598 	bool CoreActv_override = false;
19599 
19600 	if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19601 		txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19602 		CoreActv_override = true;
19603 
19604 		if (NREV_LE(pi->pubpi.phy_rev, 2))
19605 			and_phy_reg(pi, 0xa0, ~0x20);
19606 	} else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19607 		txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19608 		CoreActv_override = true;
19609 
19610 		if (NREV_LE(pi->pubpi.phy_rev, 2))
19611 			or_phy_reg(pi, 0xa0, 0x20);
19612 	}
19613 
19614 	mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19615 
19616 	if (CoreActv_override) {
19617 		pi->nphy_perical = PHY_PERICAL_DISABLE;
19618 		or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19619 	} else {
19620 		pi->nphy_perical = PHY_PERICAL_MPHASE;
19621 		and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19622 	}
19623 }
19624 
wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub * pih,u8 rxcore_bitmask)19625 void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19626 {
19627 	u16 regval;
19628 	u16 tbl_buf[16];
19629 	uint i;
19630 	struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19631 	u16 tbl_opcode;
19632 	bool suspend;
19633 
19634 	pi->sh->phyrxchain = rxcore_bitmask;
19635 
19636 	if (!pi->sh->clk)
19637 		return;
19638 
19639 	suspend = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
19640 			 MCTL_EN_MAC));
19641 	if (!suspend)
19642 		wlapi_suspend_mac_and_wait(pi->sh->physhim);
19643 
19644 	if (pi->phyhang_avoid)
19645 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
19646 
19647 	regval = read_phy_reg(pi, 0xa2);
19648 	regval &= ~(0xf << 4);
19649 	regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19650 	write_phy_reg(pi, 0xa2, regval);
19651 
19652 	if ((rxcore_bitmask & 0x3) != 0x3) {
19653 
19654 		write_phy_reg(pi, 0x20e, 1);
19655 
19656 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19657 			if (pi->rx2tx_biasentry == -1) {
19658 				wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19659 							ARRAY_SIZE(tbl_buf), 80,
19660 							16, tbl_buf);
19661 
19662 				for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19663 					if (tbl_buf[i] ==
19664 					    NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19665 						pi->rx2tx_biasentry = (u8) i;
19666 						tbl_opcode =
19667 							NPHY_REV3_RFSEQ_CMD_NOP;
19668 						wlc_phy_table_write_nphy(
19669 							pi,
19670 							NPHY_TBL_ID_RFSEQ,
19671 							1, i,
19672 							16,
19673 							&tbl_opcode);
19674 						break;
19675 					} else if (tbl_buf[i] ==
19676 						   NPHY_REV3_RFSEQ_CMD_END)
19677 						break;
19678 				}
19679 			}
19680 		}
19681 	} else {
19682 
19683 		write_phy_reg(pi, 0x20e, 30);
19684 
19685 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19686 			if (pi->rx2tx_biasentry != -1) {
19687 				tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19688 				wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19689 							 1, pi->rx2tx_biasentry,
19690 							 16, &tbl_opcode);
19691 				pi->rx2tx_biasentry = -1;
19692 			}
19693 		}
19694 	}
19695 
19696 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19697 
19698 	if (pi->phyhang_avoid)
19699 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
19700 
19701 	if (!suspend)
19702 		wlapi_enable_mac(pi->sh->physhim);
19703 }
19704 
wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub * pih)19705 u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19706 {
19707 	u16 regval, rxen_bits;
19708 	struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19709 
19710 	regval = read_phy_reg(pi, 0xa2);
19711 	rxen_bits = (regval >> 4) & 0xf;
19712 
19713 	return (u8) rxen_bits;
19714 }
19715 
wlc_phy_n_txpower_ipa_ison(struct brcms_phy * pi)19716 bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19717 {
19718 	return PHY_IPA(pi);
19719 }
19720 
wlc_phy_cal_init_nphy(struct brcms_phy * pi)19721 void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19722 {
19723 }
19724 
wlc_phy_radio_preinit_205x(struct brcms_phy * pi)19725 static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19726 {
19727 
19728 	and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
19729 	and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
19730 
19731 	or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
19732 	or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
19733 
19734 }
19735 
wlc_phy_radio_init_2057(struct brcms_phy * pi)19736 static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
19737 {
19738 	struct radio_20xx_regs *regs_2057_ptr = NULL;
19739 
19740 	if (NREV_IS(pi->pubpi.phy_rev, 7)) {
19741 		regs_2057_ptr = regs_2057_rev4;
19742 	} else if (NREV_IS(pi->pubpi.phy_rev, 8)
19743 		   || NREV_IS(pi->pubpi.phy_rev, 9)) {
19744 		switch (pi->pubpi.radiorev) {
19745 		case 5:
19746 
19747 			if (NREV_IS(pi->pubpi.phy_rev, 8))
19748 				regs_2057_ptr = regs_2057_rev5;
19749 			else if (NREV_IS(pi->pubpi.phy_rev, 9))
19750 				regs_2057_ptr = regs_2057_rev5v1;
19751 			break;
19752 
19753 		case 7:
19754 
19755 			regs_2057_ptr = regs_2057_rev7;
19756 			break;
19757 
19758 		case 8:
19759 
19760 			regs_2057_ptr = regs_2057_rev8;
19761 			break;
19762 
19763 		default:
19764 			break;
19765 		}
19766 	}
19767 
19768 	wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
19769 }
19770 
wlc_phy_radio205x_rcal(struct brcms_phy * pi)19771 static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
19772 {
19773 	u16 rcal_reg = 0;
19774 	int i;
19775 
19776 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19777 
19778 		if (pi->pubpi.radiorev == 5) {
19779 
19780 			and_phy_reg(pi, 0x342, ~(0x1 << 1));
19781 
19782 			udelay(10);
19783 
19784 			mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
19785 			mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19786 				      0x1);
19787 		}
19788 		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
19789 
19790 		udelay(10);
19791 
19792 		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
19793 
19794 		for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19795 			rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
19796 			if (rcal_reg & 0x1)
19797 				break;
19798 
19799 			udelay(100);
19800 		}
19801 
19802 		if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19803 			 "HW error: radio calib2"))
19804 			return 0;
19805 
19806 		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
19807 
19808 		rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
19809 
19810 		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
19811 		if (pi->pubpi.radiorev == 5) {
19812 
19813 			mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
19814 			mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19815 				      0x0);
19816 		}
19817 
19818 		if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
19819 
19820 			mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
19821 				      rcal_reg);
19822 			mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
19823 				      rcal_reg << 2);
19824 		}
19825 
19826 	} else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19827 		u16 savereg;
19828 
19829 		savereg =
19830 			read_radio_reg(
19831 				pi,
19832 				RADIO_2056_SYN_PLL_MAST2 |
19833 				RADIO_2056_SYN);
19834 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19835 				savereg | 0x7);
19836 		udelay(10);
19837 
19838 		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19839 				0x1);
19840 		udelay(10);
19841 
19842 		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19843 				0x9);
19844 
19845 		for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19846 			rcal_reg = read_radio_reg(
19847 				pi,
19848 				RADIO_2056_SYN_RCAL_CODE_OUT |
19849 				RADIO_2056_SYN);
19850 			if (rcal_reg & 0x80)
19851 				break;
19852 
19853 			udelay(100);
19854 		}
19855 
19856 		if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19857 			 "HW error: radio calib3"))
19858 			return 0;
19859 
19860 		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19861 				0x1);
19862 
19863 		rcal_reg =
19864 			read_radio_reg(pi,
19865 				       RADIO_2056_SYN_RCAL_CODE_OUT |
19866 				       RADIO_2056_SYN);
19867 
19868 		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19869 				0x0);
19870 
19871 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19872 				savereg);
19873 
19874 		return rcal_reg & 0x1f;
19875 	}
19876 	return rcal_reg & 0x3e;
19877 }
19878 
wlc_phy_radio2057_rccal(struct brcms_phy * pi)19879 static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
19880 {
19881 	u16 rccal_valid;
19882 	int i;
19883 	bool chip43226_6362A0;
19884 
19885 	chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
19886 			    || (pi->pubpi.radiorev == 4)
19887 			    || (pi->pubpi.radiorev == 6));
19888 
19889 	rccal_valid = 0;
19890 	if (chip43226_6362A0) {
19891 		write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
19892 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
19893 	} else {
19894 		write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
19895 
19896 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
19897 	}
19898 	write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19899 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19900 
19901 	for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19902 		rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19903 		if (rccal_valid & 0x2)
19904 			break;
19905 
19906 		udelay(500);
19907 	}
19908 
19909 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19910 
19911 	rccal_valid = 0;
19912 	if (chip43226_6362A0) {
19913 		write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
19914 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
19915 	} else {
19916 		write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
19917 
19918 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
19919 	}
19920 	write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19921 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19922 
19923 	for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19924 		rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19925 		if (rccal_valid & 0x2)
19926 			break;
19927 
19928 		udelay(500);
19929 	}
19930 
19931 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19932 
19933 	rccal_valid = 0;
19934 	if (chip43226_6362A0) {
19935 		write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
19936 
19937 		write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
19938 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
19939 	} else {
19940 		write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
19941 		write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19942 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
19943 	}
19944 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19945 
19946 	for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19947 		rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19948 		if (rccal_valid & 0x2)
19949 			break;
19950 
19951 		udelay(500);
19952 	}
19953 
19954 	if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
19955 		return 0;
19956 
19957 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19958 
19959 	return rccal_valid;
19960 }
19961 
wlc_phy_radio_postinit_2057(struct brcms_phy * pi)19962 static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
19963 {
19964 
19965 	mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
19966 
19967 	mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
19968 	mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
19969 	mdelay(2);
19970 	mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
19971 	mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
19972 
19973 	if (pi->phy_init_por) {
19974 		wlc_phy_radio205x_rcal(pi);
19975 		wlc_phy_radio2057_rccal(pi);
19976 	}
19977 
19978 	mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
19979 }
19980 
wlc_phy_radio_init_2056(struct brcms_phy * pi)19981 static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
19982 {
19983 	const struct radio_regs *regs_SYN_2056_ptr = NULL;
19984 	const struct radio_regs *regs_TX_2056_ptr = NULL;
19985 	const struct radio_regs *regs_RX_2056_ptr = NULL;
19986 
19987 	if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19988 		regs_SYN_2056_ptr = regs_SYN_2056;
19989 		regs_TX_2056_ptr = regs_TX_2056;
19990 		regs_RX_2056_ptr = regs_RX_2056;
19991 	} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
19992 		regs_SYN_2056_ptr = regs_SYN_2056_A1;
19993 		regs_TX_2056_ptr = regs_TX_2056_A1;
19994 		regs_RX_2056_ptr = regs_RX_2056_A1;
19995 	} else {
19996 		switch (pi->pubpi.radiorev) {
19997 		case 5:
19998 			regs_SYN_2056_ptr = regs_SYN_2056_rev5;
19999 			regs_TX_2056_ptr = regs_TX_2056_rev5;
20000 			regs_RX_2056_ptr = regs_RX_2056_rev5;
20001 			break;
20002 
20003 		case 6:
20004 			regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20005 			regs_TX_2056_ptr = regs_TX_2056_rev6;
20006 			regs_RX_2056_ptr = regs_RX_2056_rev6;
20007 			break;
20008 
20009 		case 7:
20010 		case 9:
20011 			regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20012 			regs_TX_2056_ptr = regs_TX_2056_rev7;
20013 			regs_RX_2056_ptr = regs_RX_2056_rev7;
20014 			break;
20015 
20016 		case 8:
20017 			regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20018 			regs_TX_2056_ptr = regs_TX_2056_rev8;
20019 			regs_RX_2056_ptr = regs_RX_2056_rev8;
20020 			break;
20021 
20022 		case 11:
20023 			regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20024 			regs_TX_2056_ptr = regs_TX_2056_rev11;
20025 			regs_RX_2056_ptr = regs_RX_2056_rev11;
20026 			break;
20027 
20028 		default:
20029 			return;
20030 		}
20031 	}
20032 
20033 	wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20034 
20035 	wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20036 
20037 	wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20038 
20039 	wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20040 
20041 	wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20042 }
20043 
wlc_phy_radio_postinit_2056(struct brcms_phy * pi)20044 static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20045 {
20046 	mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20047 
20048 	mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20049 	mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20050 	udelay(1000);
20051 	mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20052 
20053 	if ((pi->sh->boardflags2 & BFL2_LEGACY)
20054 	    || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20055 		mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20056 	else
20057 		mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20058 
20059 	mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20060 
20061 	if (pi->phy_init_por)
20062 		wlc_phy_radio205x_rcal(pi);
20063 }
20064 
wlc_phy_radio_preinit_2055(struct brcms_phy * pi)20065 static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20066 {
20067 
20068 	and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20069 	or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20070 
20071 	or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20072 }
20073 
wlc_phy_radio_init_2055(struct brcms_phy * pi)20074 static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20075 {
20076 	wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20077 }
20078 
wlc_phy_radio_postinit_2055(struct brcms_phy * pi)20079 static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20080 {
20081 
20082 	and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20083 		      ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20084 
20085 	if (((pi->sh->sromrev >= 4)
20086 	     && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20087 	    || ((pi->sh->sromrev < 4))) {
20088 		and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20089 		and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20090 	}
20091 
20092 	mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20093 	write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20094 
20095 	and_radio_reg(pi, RADIO_2055_CAL_MISC,
20096 		      ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20097 
20098 	or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20099 
20100 	or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20101 
20102 	udelay(1000);
20103 
20104 	or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20105 
20106 	SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20107 		   RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20108 
20109 	if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20110 		  RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20111 		 "HW error: radio calibration1\n"))
20112 		return;
20113 
20114 	and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20115 		      ~(RADIO_2055_CAL_LPO_ENABLE));
20116 
20117 	wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20118 
20119 	write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20120 	write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20121 
20122 	write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20123 	write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20124 
20125 	mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20126 		      RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20127 	mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20128 		      RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20129 	if (pi->nphy_gain_boost) {
20130 		and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20131 			      ~(RADIO_2055_GAINBST_DISABLE));
20132 		and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20133 			      ~(RADIO_2055_GAINBST_DISABLE));
20134 	} else {
20135 		or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20136 			     RADIO_2055_GAINBST_DISABLE);
20137 		or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20138 			     RADIO_2055_GAINBST_DISABLE);
20139 	}
20140 
20141 	udelay(2);
20142 }
20143 
wlc_phy_switch_radio_nphy(struct brcms_phy * pi,bool on)20144 void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20145 {
20146 	if (on) {
20147 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20148 			if (!pi->radio_is_on) {
20149 				wlc_phy_radio_preinit_205x(pi);
20150 				wlc_phy_radio_init_2057(pi);
20151 				wlc_phy_radio_postinit_2057(pi);
20152 			}
20153 
20154 			wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20155 					     pi->radio_chanspec);
20156 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20157 			wlc_phy_radio_preinit_205x(pi);
20158 			wlc_phy_radio_init_2056(pi);
20159 			wlc_phy_radio_postinit_2056(pi);
20160 
20161 			wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20162 					     pi->radio_chanspec);
20163 		} else {
20164 			wlc_phy_radio_preinit_2055(pi);
20165 			wlc_phy_radio_init_2055(pi);
20166 			wlc_phy_radio_postinit_2055(pi);
20167 		}
20168 
20169 		pi->radio_is_on = true;
20170 
20171 	} else {
20172 
20173 		if (NREV_GE(pi->pubpi.phy_rev, 3)
20174 		    && NREV_LT(pi->pubpi.phy_rev, 7)) {
20175 			and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20176 			mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20177 
20178 			write_radio_reg(pi,
20179 					RADIO_2056_TX_PADA_BOOST_TUNE |
20180 					RADIO_2056_TX0, 0);
20181 			write_radio_reg(pi,
20182 					RADIO_2056_TX_PADG_BOOST_TUNE |
20183 					RADIO_2056_TX0, 0);
20184 			write_radio_reg(pi,
20185 					RADIO_2056_TX_PGAA_BOOST_TUNE |
20186 					RADIO_2056_TX0, 0);
20187 			write_radio_reg(pi,
20188 					RADIO_2056_TX_PGAG_BOOST_TUNE |
20189 					RADIO_2056_TX0, 0);
20190 			mod_radio_reg(pi,
20191 				      RADIO_2056_TX_MIXA_BOOST_TUNE |
20192 				      RADIO_2056_TX0, 0xf0, 0);
20193 			write_radio_reg(pi,
20194 					RADIO_2056_TX_MIXG_BOOST_TUNE |
20195 					RADIO_2056_TX0, 0);
20196 
20197 			write_radio_reg(pi,
20198 					RADIO_2056_TX_PADA_BOOST_TUNE |
20199 					RADIO_2056_TX1, 0);
20200 			write_radio_reg(pi,
20201 					RADIO_2056_TX_PADG_BOOST_TUNE |
20202 					RADIO_2056_TX1, 0);
20203 			write_radio_reg(pi,
20204 					RADIO_2056_TX_PGAA_BOOST_TUNE |
20205 					RADIO_2056_TX1, 0);
20206 			write_radio_reg(pi,
20207 					RADIO_2056_TX_PGAG_BOOST_TUNE |
20208 					RADIO_2056_TX1, 0);
20209 			mod_radio_reg(pi,
20210 				      RADIO_2056_TX_MIXA_BOOST_TUNE |
20211 				      RADIO_2056_TX1, 0xf0, 0);
20212 			write_radio_reg(pi,
20213 					RADIO_2056_TX_MIXG_BOOST_TUNE |
20214 					RADIO_2056_TX1, 0);
20215 
20216 			pi->radio_is_on = false;
20217 		}
20218 
20219 		if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20220 			and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20221 			pi->radio_is_on = false;
20222 		}
20223 
20224 	}
20225 }
20226 
20227 static bool
wlc_phy_chan2freq_nphy(struct brcms_phy * pi,uint channel,int * f,const struct chan_info_nphy_radio2057 ** t0,const struct chan_info_nphy_radio205x ** t1,const struct chan_info_nphy_radio2057_rev5 ** t2,const struct chan_info_nphy_2055 ** t3)20228 wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20229 		       const struct chan_info_nphy_radio2057 **t0,
20230 		       const struct chan_info_nphy_radio205x **t1,
20231 		       const struct chan_info_nphy_radio2057_rev5 **t2,
20232 		       const struct chan_info_nphy_2055 **t3)
20233 {
20234 	uint i;
20235 	const struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20236 	const struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20237 	const struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20238 	u32 tbl_len = 0;
20239 
20240 	int freq = 0;
20241 
20242 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20243 
20244 		if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20245 
20246 			chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20247 			tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20248 
20249 		} else if (NREV_IS(pi->pubpi.phy_rev, 8)
20250 			   || NREV_IS(pi->pubpi.phy_rev, 9)) {
20251 			switch (pi->pubpi.radiorev) {
20252 
20253 			case 5:
20254 
20255 				if (pi->pubpi.radiover == 0x0) {
20256 
20257 					chan_info_tbl_p_2 =
20258 						chan_info_nphyrev8_2057_rev5;
20259 					tbl_len = ARRAY_SIZE(
20260 						  chan_info_nphyrev8_2057_rev5);
20261 
20262 				} else if (pi->pubpi.radiover == 0x1) {
20263 
20264 					chan_info_tbl_p_2 =
20265 						chan_info_nphyrev9_2057_rev5v1;
20266 					tbl_len = ARRAY_SIZE(
20267 						chan_info_nphyrev9_2057_rev5v1);
20268 
20269 				}
20270 				break;
20271 
20272 			case 7:
20273 				chan_info_tbl_p_0 =
20274 					chan_info_nphyrev8_2057_rev7;
20275 				tbl_len = ARRAY_SIZE(
20276 						  chan_info_nphyrev8_2057_rev7);
20277 				break;
20278 
20279 			case 8:
20280 				chan_info_tbl_p_0 =
20281 					chan_info_nphyrev8_2057_rev8;
20282 				tbl_len = ARRAY_SIZE(
20283 						  chan_info_nphyrev8_2057_rev8);
20284 				break;
20285 
20286 			default:
20287 				break;
20288 			}
20289 		} else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20290 
20291 			chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20292 			tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20293 		} else {
20294 			goto fail;
20295 		}
20296 
20297 		for (i = 0; i < tbl_len; i++) {
20298 			if (pi->pubpi.radiorev == 5) {
20299 
20300 				if (chan_info_tbl_p_2[i].chan == channel)
20301 					break;
20302 			} else {
20303 
20304 				if (chan_info_tbl_p_0[i].chan == channel)
20305 					break;
20306 			}
20307 		}
20308 
20309 		if (i >= tbl_len)
20310 			goto fail;
20311 
20312 		if (pi->pubpi.radiorev == 5) {
20313 			*t2 = &chan_info_tbl_p_2[i];
20314 			freq = chan_info_tbl_p_2[i].freq;
20315 		} else {
20316 			*t0 = &chan_info_tbl_p_0[i];
20317 			freq = chan_info_tbl_p_0[i].freq;
20318 		}
20319 
20320 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20321 		if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20322 			chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20323 			tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20324 		} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20325 			chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20326 			tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20327 		} else if (NREV_IS(pi->pubpi.phy_rev, 5)
20328 			   || NREV_IS(pi->pubpi.phy_rev, 6)) {
20329 			switch (pi->pubpi.radiorev) {
20330 			case 5:
20331 				chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20332 				tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20333 				break;
20334 			case 6:
20335 				chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20336 				tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20337 				break;
20338 			case 7:
20339 			case 9:
20340 				chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20341 				tbl_len =
20342 					ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20343 				break;
20344 			case 8:
20345 				chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20346 				tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20347 				break;
20348 			case 11:
20349 				chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20350 				tbl_len = ARRAY_SIZE(
20351 						    chan_info_nphyrev6_2056v11);
20352 				break;
20353 			default:
20354 				break;
20355 			}
20356 		}
20357 
20358 		for (i = 0; i < tbl_len; i++) {
20359 			if (chan_info_tbl_p_1[i].chan == channel)
20360 				break;
20361 		}
20362 
20363 		if (i >= tbl_len)
20364 			goto fail;
20365 
20366 		*t1 = &chan_info_tbl_p_1[i];
20367 		freq = chan_info_tbl_p_1[i].freq;
20368 
20369 	} else {
20370 		for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20371 			if (chan_info_nphy_2055[i].chan == channel)
20372 				break;
20373 
20374 		if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20375 			goto fail;
20376 
20377 		*t3 = &chan_info_nphy_2055[i];
20378 		freq = chan_info_nphy_2055[i].freq;
20379 	}
20380 
20381 	*f = freq;
20382 	return true;
20383 
20384 fail:
20385 	*f = WL_CHAN_FREQ_RANGE_2G;
20386 	return false;
20387 }
20388 
wlc_phy_get_chan_freq_range_nphy(struct brcms_phy * pi,uint channel)20389 u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20390 {
20391 	int freq;
20392 	const struct chan_info_nphy_radio2057 *t0 = NULL;
20393 	const struct chan_info_nphy_radio205x *t1 = NULL;
20394 	const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20395 	const struct chan_info_nphy_2055 *t3 = NULL;
20396 
20397 	if (channel == 0)
20398 		channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20399 
20400 	wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20401 
20402 	if (CHSPEC_IS2G(pi->radio_chanspec))
20403 		return WL_CHAN_FREQ_RANGE_2G;
20404 
20405 	if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20406 		return WL_CHAN_FREQ_RANGE_5GL;
20407 	else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20408 		return WL_CHAN_FREQ_RANGE_5GM;
20409 	else
20410 		return WL_CHAN_FREQ_RANGE_5GH;
20411 }
20412 
20413 static void
wlc_phy_chanspec_radio2055_setup(struct brcms_phy * pi,const struct chan_info_nphy_2055 * ci)20414 wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20415 				 const struct chan_info_nphy_2055 *ci)
20416 {
20417 
20418 	write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20419 	write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20420 	write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20421 	write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20422 
20423 	BRCMS_PHY_WAR_PR51571(pi);
20424 
20425 	write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20426 	write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20427 	write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20428 	write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20429 
20430 	BRCMS_PHY_WAR_PR51571(pi);
20431 
20432 	write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20433 	write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20434 	write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20435 	write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20436 
20437 	BRCMS_PHY_WAR_PR51571(pi);
20438 
20439 	write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20440 			ci->RF_core1_lgbuf_a_tune);
20441 	write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20442 			ci->RF_core1_lgbuf_g_tune);
20443 	write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20444 	write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20445 			ci->RF_core1_tx_pga_pad_tn);
20446 
20447 	BRCMS_PHY_WAR_PR51571(pi);
20448 
20449 	write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20450 			ci->RF_core1_tx_mx_bgtrim);
20451 	write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20452 			ci->RF_core2_lgbuf_a_tune);
20453 	write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20454 			ci->RF_core2_lgbuf_g_tune);
20455 	write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20456 
20457 	BRCMS_PHY_WAR_PR51571(pi);
20458 
20459 	write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20460 			ci->RF_core2_tx_pga_pad_tn);
20461 	write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20462 			ci->RF_core2_tx_mx_bgtrim);
20463 
20464 	udelay(50);
20465 
20466 	write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20467 	write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20468 
20469 	BRCMS_PHY_WAR_PR51571(pi);
20470 
20471 	write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20472 
20473 	udelay(300);
20474 }
20475 
20476 static void
wlc_phy_chanspec_radio2056_setup(struct brcms_phy * pi,const struct chan_info_nphy_radio205x * ci)20477 wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20478 				 const struct chan_info_nphy_radio205x *ci)
20479 {
20480 	const struct radio_regs *regs_SYN_2056_ptr = NULL;
20481 
20482 	write_radio_reg(pi,
20483 			RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20484 			ci->RF_SYN_pll_vcocal1);
20485 	write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20486 			ci->RF_SYN_pll_vcocal2);
20487 	write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20488 			ci->RF_SYN_pll_refdiv);
20489 	write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20490 			ci->RF_SYN_pll_mmd2);
20491 	write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20492 			ci->RF_SYN_pll_mmd1);
20493 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20494 			ci->RF_SYN_pll_loopfilter1);
20495 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20496 			ci->RF_SYN_pll_loopfilter2);
20497 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20498 			ci->RF_SYN_pll_loopfilter3);
20499 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20500 			ci->RF_SYN_pll_loopfilter4);
20501 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20502 			ci->RF_SYN_pll_loopfilter5);
20503 	write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20504 			ci->RF_SYN_reserved_addr27);
20505 	write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20506 			ci->RF_SYN_reserved_addr28);
20507 	write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20508 			ci->RF_SYN_reserved_addr29);
20509 	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20510 			ci->RF_SYN_logen_VCOBUF1);
20511 	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20512 			ci->RF_SYN_logen_MIXER2);
20513 	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20514 			ci->RF_SYN_logen_BUF3);
20515 	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20516 			ci->RF_SYN_logen_BUF4);
20517 
20518 	write_radio_reg(pi,
20519 			RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20520 			ci->RF_RX0_lnaa_tune);
20521 	write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20522 			ci->RF_RX0_lnag_tune);
20523 	write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20524 			ci->RF_TX0_intpaa_boost_tune);
20525 	write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20526 			ci->RF_TX0_intpag_boost_tune);
20527 	write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20528 			ci->RF_TX0_pada_boost_tune);
20529 	write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20530 			ci->RF_TX0_padg_boost_tune);
20531 	write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20532 			ci->RF_TX0_pgaa_boost_tune);
20533 	write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20534 			ci->RF_TX0_pgag_boost_tune);
20535 	write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20536 			ci->RF_TX0_mixa_boost_tune);
20537 	write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20538 			ci->RF_TX0_mixg_boost_tune);
20539 
20540 	write_radio_reg(pi,
20541 			RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20542 			ci->RF_RX1_lnaa_tune);
20543 	write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20544 			ci->RF_RX1_lnag_tune);
20545 	write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20546 			ci->RF_TX1_intpaa_boost_tune);
20547 	write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20548 			ci->RF_TX1_intpag_boost_tune);
20549 	write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20550 			ci->RF_TX1_pada_boost_tune);
20551 	write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20552 			ci->RF_TX1_padg_boost_tune);
20553 	write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20554 			ci->RF_TX1_pgaa_boost_tune);
20555 	write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20556 			ci->RF_TX1_pgag_boost_tune);
20557 	write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20558 			ci->RF_TX1_mixa_boost_tune);
20559 	write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20560 			ci->RF_TX1_mixg_boost_tune);
20561 
20562 	if (NREV_IS(pi->pubpi.phy_rev, 3))
20563 		regs_SYN_2056_ptr = regs_SYN_2056;
20564 	else if (NREV_IS(pi->pubpi.phy_rev, 4))
20565 		regs_SYN_2056_ptr = regs_SYN_2056_A1;
20566 	else {
20567 		switch (pi->pubpi.radiorev) {
20568 		case 5:
20569 			regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20570 			break;
20571 		case 6:
20572 			regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20573 			break;
20574 		case 7:
20575 		case 9:
20576 			regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20577 			break;
20578 		case 8:
20579 			regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20580 			break;
20581 		case 11:
20582 			regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20583 			break;
20584 		}
20585 	}
20586 	if (CHSPEC_IS2G(pi->radio_chanspec))
20587 		write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20588 				RADIO_2056_SYN,
20589 				(u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20590 	else
20591 		write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20592 				RADIO_2056_SYN,
20593 				(u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20594 
20595 	if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20596 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
20597 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20598 					RADIO_2056_SYN, 0x1f);
20599 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20600 					RADIO_2056_SYN, 0x1f);
20601 
20602 			if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20603 			    (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20604 				write_radio_reg(pi,
20605 						RADIO_2056_SYN_PLL_LOOPFILTER4 |
20606 						RADIO_2056_SYN, 0x14);
20607 				write_radio_reg(pi,
20608 						RADIO_2056_SYN_PLL_CP2 |
20609 						RADIO_2056_SYN, 0x00);
20610 			} else {
20611 				write_radio_reg(pi,
20612 						RADIO_2056_SYN_PLL_LOOPFILTER4 |
20613 						RADIO_2056_SYN, 0xb);
20614 				write_radio_reg(pi,
20615 						RADIO_2056_SYN_PLL_CP2 |
20616 						RADIO_2056_SYN, 0x14);
20617 			}
20618 		}
20619 	}
20620 
20621 	if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20622 	    (CHSPEC_IS2G(pi->radio_chanspec))) {
20623 		write_radio_reg(pi,
20624 				RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20625 				0x1f);
20626 		write_radio_reg(pi,
20627 				RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20628 				0x1f);
20629 		write_radio_reg(pi,
20630 				RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20631 				0xb);
20632 		write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20633 				0x20);
20634 	}
20635 
20636 	if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20637 		if (CHSPEC_IS5G(pi->radio_chanspec)) {
20638 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20639 					RADIO_2056_SYN, 0x1f);
20640 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20641 					RADIO_2056_SYN, 0x1f);
20642 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20643 					RADIO_2056_SYN, 0x5);
20644 			write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20645 					RADIO_2056_SYN, 0xc);
20646 		}
20647 	}
20648 
20649 	if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20650 		u16 pag_boost_tune;
20651 		u16 padg_boost_tune;
20652 		u16 pgag_boost_tune;
20653 		u16 mixg_boost_tune;
20654 		u16 bias, cascbias;
20655 		uint core;
20656 
20657 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20658 
20659 			if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20660 
20661 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20662 						 PADG_IDAC, 0xcc);
20663 
20664 				if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20665 				    (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20666 					bias = 0x40;
20667 					cascbias = 0x45;
20668 					pag_boost_tune = 0x5;
20669 					pgag_boost_tune = 0x33;
20670 					padg_boost_tune = 0x77;
20671 					mixg_boost_tune = 0x55;
20672 				} else {
20673 					bias = 0x25;
20674 					cascbias = 0x20;
20675 
20676 					if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20677 					     pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20678 					    pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC) {
20679 						bias = 0x2a;
20680 						cascbias = 0x38;
20681 					}
20682 
20683 					pag_boost_tune = 0x4;
20684 					pgag_boost_tune = 0x03;
20685 					padg_boost_tune = 0x77;
20686 					mixg_boost_tune = 0x65;
20687 				}
20688 
20689 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20690 						 INTPAG_IMAIN_STAT, bias);
20691 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20692 						 INTPAG_IAUX_STAT, bias);
20693 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20694 						 INTPAG_CASCBIAS, cascbias);
20695 
20696 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20697 						 INTPAG_BOOST_TUNE,
20698 						 pag_boost_tune);
20699 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20700 						 PGAG_BOOST_TUNE,
20701 						 pgag_boost_tune);
20702 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20703 						 PADG_BOOST_TUNE,
20704 						 padg_boost_tune);
20705 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20706 						 MIXG_BOOST_TUNE,
20707 						 mixg_boost_tune);
20708 			} else {
20709 
20710 				bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20711 				       0x40 : 0x20;
20712 
20713 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20714 						 INTPAG_IMAIN_STAT, bias);
20715 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20716 						 INTPAG_IAUX_STAT, bias);
20717 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20718 						 INTPAG_CASCBIAS, 0x30);
20719 			}
20720 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20721 					 0xee);
20722 		}
20723 	}
20724 
20725 	if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20726 	    && CHSPEC_IS5G(pi->radio_chanspec)) {
20727 		u16 paa_boost_tune;
20728 		u16 pada_boost_tune;
20729 		u16 pgaa_boost_tune;
20730 		u16 mixa_boost_tune;
20731 		u16 freq, pabias, cascbias;
20732 		uint core;
20733 
20734 		freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20735 
20736 		if (freq < 5150) {
20737 
20738 			paa_boost_tune = 0xa;
20739 			pada_boost_tune = 0x77;
20740 			pgaa_boost_tune = 0xf;
20741 			mixa_boost_tune = 0xf;
20742 		} else if (freq < 5340) {
20743 
20744 			paa_boost_tune = 0x8;
20745 			pada_boost_tune = 0x77;
20746 			pgaa_boost_tune = 0xfb;
20747 			mixa_boost_tune = 0xf;
20748 		} else if (freq < 5650) {
20749 
20750 			paa_boost_tune = 0x0;
20751 			pada_boost_tune = 0x77;
20752 			pgaa_boost_tune = 0xb;
20753 			mixa_boost_tune = 0xf;
20754 		} else {
20755 
20756 			paa_boost_tune = 0x0;
20757 			pada_boost_tune = 0x77;
20758 			if (freq != 5825)
20759 				pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
20760 			else
20761 				pgaa_boost_tune = 6;
20762 
20763 			mixa_boost_tune = 0xf;
20764 		}
20765 
20766 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20767 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20768 					 INTPAA_BOOST_TUNE, paa_boost_tune);
20769 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20770 					 PADA_BOOST_TUNE, pada_boost_tune);
20771 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20772 					 PGAA_BOOST_TUNE, pgaa_boost_tune);
20773 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20774 					 MIXA_BOOST_TUNE, mixa_boost_tune);
20775 
20776 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20777 					 TXSPARE1, 0x30);
20778 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20779 					 PA_SPARE2, 0xee);
20780 
20781 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20782 					 PADA_CASCBIAS, 0x3);
20783 
20784 			cascbias = 0x30;
20785 
20786 			if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20787 			     pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20788 			    pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC)
20789 				cascbias = 0x35;
20790 
20791 			pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
20792 
20793 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20794 					 INTPAA_IAUX_STAT, pabias);
20795 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20796 					 INTPAA_IMAIN_STAT, pabias);
20797 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20798 					 INTPAA_CASCBIAS, cascbias);
20799 		}
20800 	}
20801 
20802 	udelay(50);
20803 
20804 	wlc_phy_radio205x_vcocal_nphy(pi);
20805 }
20806 
wlc_phy_radio205x_vcocal_nphy(struct brcms_phy * pi)20807 void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
20808 {
20809 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20810 		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
20811 		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
20812 		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
20813 			      (1 << 2));
20814 		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
20815 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20816 		write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
20817 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20818 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
20819 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20820 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
20821 	}
20822 
20823 	udelay(300);
20824 }
20825 
20826 static void
wlc_phy_chanspec_radio2057_setup(struct brcms_phy * pi,const struct chan_info_nphy_radio2057 * ci,const struct chan_info_nphy_radio2057_rev5 * ci2)20827 wlc_phy_chanspec_radio2057_setup(
20828 	struct brcms_phy *pi,
20829 	const struct chan_info_nphy_radio2057 *ci,
20830 	const struct chan_info_nphy_radio2057_rev5 *
20831 	ci2)
20832 {
20833 	int coreNum;
20834 	u16 txmix2g_tune_boost_pu = 0;
20835 	u16 pad2g_tune_pus = 0;
20836 
20837 	if (pi->pubpi.radiorev == 5) {
20838 
20839 		write_radio_reg(pi,
20840 				RADIO_2057_VCOCAL_COUNTVAL0,
20841 				ci2->RF_vcocal_countval0);
20842 		write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20843 				ci2->RF_vcocal_countval1);
20844 		write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20845 				ci2->RF_rfpll_refmaster_sparextalsize);
20846 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20847 				ci2->RF_rfpll_loopfilter_r1);
20848 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20849 				ci2->RF_rfpll_loopfilter_c2);
20850 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20851 				ci2->RF_rfpll_loopfilter_c1);
20852 		write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
20853 				ci2->RF_cp_kpd_idac);
20854 		write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
20855 		write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
20856 		write_radio_reg(pi,
20857 				RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
20858 		write_radio_reg(pi,
20859 				RADIO_2057_LOGEN_MX2G_TUNE,
20860 				ci2->RF_logen_mx2g_tune);
20861 		write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20862 				ci2->RF_logen_indbuf2g_tune);
20863 
20864 		write_radio_reg(pi,
20865 				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20866 				ci2->RF_txmix2g_tune_boost_pu_core0);
20867 		write_radio_reg(pi,
20868 				RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20869 				ci2->RF_pad2g_tune_pus_core0);
20870 		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20871 				ci2->RF_lna2g_tune_core0);
20872 
20873 		write_radio_reg(pi,
20874 				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20875 				ci2->RF_txmix2g_tune_boost_pu_core1);
20876 		write_radio_reg(pi,
20877 				RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20878 				ci2->RF_pad2g_tune_pus_core1);
20879 		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20880 				ci2->RF_lna2g_tune_core1);
20881 
20882 	} else {
20883 
20884 		write_radio_reg(pi,
20885 				RADIO_2057_VCOCAL_COUNTVAL0,
20886 				ci->RF_vcocal_countval0);
20887 		write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20888 				ci->RF_vcocal_countval1);
20889 		write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20890 				ci->RF_rfpll_refmaster_sparextalsize);
20891 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20892 				ci->RF_rfpll_loopfilter_r1);
20893 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20894 				ci->RF_rfpll_loopfilter_c2);
20895 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20896 				ci->RF_rfpll_loopfilter_c1);
20897 		write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
20898 		write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
20899 		write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
20900 		write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
20901 		write_radio_reg(pi,
20902 				RADIO_2057_LOGEN_MX2G_TUNE,
20903 				ci->RF_logen_mx2g_tune);
20904 		write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
20905 				ci->RF_logen_mx5g_tune);
20906 		write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20907 				ci->RF_logen_indbuf2g_tune);
20908 		write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
20909 				ci->RF_logen_indbuf5g_tune);
20910 
20911 		write_radio_reg(pi,
20912 				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20913 				ci->RF_txmix2g_tune_boost_pu_core0);
20914 		write_radio_reg(pi,
20915 				RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20916 				ci->RF_pad2g_tune_pus_core0);
20917 		write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
20918 				ci->RF_pga_boost_tune_core0);
20919 		write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
20920 				ci->RF_txmix5g_boost_tune_core0);
20921 		write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
20922 				ci->RF_pad5g_tune_misc_pus_core0);
20923 		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20924 				ci->RF_lna2g_tune_core0);
20925 		write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
20926 				ci->RF_lna5g_tune_core0);
20927 
20928 		write_radio_reg(pi,
20929 				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20930 				ci->RF_txmix2g_tune_boost_pu_core1);
20931 		write_radio_reg(pi,
20932 				RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20933 				ci->RF_pad2g_tune_pus_core1);
20934 		write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
20935 				ci->RF_pga_boost_tune_core1);
20936 		write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
20937 				ci->RF_txmix5g_boost_tune_core1);
20938 		write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
20939 				ci->RF_pad5g_tune_misc_pus_core1);
20940 		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20941 				ci->RF_lna2g_tune_core1);
20942 		write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
20943 				ci->RF_lna5g_tune_core1);
20944 	}
20945 
20946 	if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
20947 
20948 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
20949 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20950 					0x3f);
20951 			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20952 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20953 					0x8);
20954 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20955 					0x8);
20956 		} else {
20957 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20958 					0x1f);
20959 			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20960 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20961 					0x8);
20962 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20963 					0x8);
20964 		}
20965 	} else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
20966 		   (pi->pubpi.radiorev == 8)) {
20967 
20968 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
20969 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20970 					0x1b);
20971 			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
20972 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20973 					0xa);
20974 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20975 					0xa);
20976 		} else {
20977 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20978 					0x1f);
20979 			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20980 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20981 					0x8);
20982 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20983 					0x8);
20984 		}
20985 
20986 	}
20987 
20988 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
20989 		if (PHY_IPA(pi)) {
20990 			if (pi->pubpi.radiorev == 3)
20991 				txmix2g_tune_boost_pu = 0x6b;
20992 
20993 			if (pi->pubpi.radiorev == 5)
20994 				pad2g_tune_pus = 0x73;
20995 
20996 		} else {
20997 			if (pi->pubpi.radiorev != 5) {
20998 				pad2g_tune_pus = 0x3;
20999 
21000 				txmix2g_tune_boost_pu = 0x61;
21001 			}
21002 		}
21003 
21004 		for (coreNum = 0; coreNum <= 1; coreNum++) {
21005 
21006 			if (txmix2g_tune_boost_pu != 0)
21007 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21008 						 TXMIX2G_TUNE_BOOST_PU,
21009 						 txmix2g_tune_boost_pu);
21010 
21011 			if (pad2g_tune_pus != 0)
21012 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21013 						 PAD2G_TUNE_PUS,
21014 						 pad2g_tune_pus);
21015 		}
21016 	}
21017 
21018 	udelay(50);
21019 
21020 	wlc_phy_radio205x_vcocal_nphy(pi);
21021 }
21022 
21023 static void
wlc_phy_chanspec_nphy_setup(struct brcms_phy * pi,u16 chanspec,const struct nphy_sfo_cfg * ci)21024 wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21025 			    const struct nphy_sfo_cfg *ci)
21026 {
21027 	u16 val;
21028 
21029 	val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21030 	if (CHSPEC_IS5G(chanspec) && !val) {
21031 
21032 		val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21033 		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21034 		      (val | MAC_PHY_FORCE_CLK));
21035 
21036 		or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21037 			   (BBCFG_RESETCCA | BBCFG_RESETRX));
21038 
21039 		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21040 
21041 		or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21042 	} else if (!CHSPEC_IS5G(chanspec) && val) {
21043 
21044 		and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21045 
21046 		val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21047 		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21048 		      (val | MAC_PHY_FORCE_CLK));
21049 
21050 		and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21051 			    0xffff & ~(BBCFG_RESETCCA | BBCFG_RESETRX));
21052 
21053 		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21054 	}
21055 
21056 	write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21057 	write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21058 	write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21059 
21060 	write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21061 	write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21062 	write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21063 
21064 	if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21065 		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21066 
21067 		or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21068 	} else {
21069 		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21070 					NPHY_ClassifierCtrl_ofdm_en);
21071 
21072 		if (CHSPEC_IS2G(chanspec))
21073 			and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21074 	}
21075 
21076 	if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21077 		wlc_phy_txpwr_fixpower_nphy(pi);
21078 
21079 	if (NREV_LT(pi->pubpi.phy_rev, 3))
21080 		wlc_phy_adjust_lnagaintbl_nphy(pi);
21081 
21082 	wlc_phy_txlpfbw_nphy(pi);
21083 
21084 	if (NREV_GE(pi->pubpi.phy_rev, 3)
21085 	    && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21086 		u8 spuravoid = 0;
21087 
21088 		val = CHSPEC_CHANNEL(chanspec);
21089 		if (!CHSPEC_IS40(pi->radio_chanspec)) {
21090 			if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21091 				if ((val == 13) || (val == 14) || (val == 153))
21092 					spuravoid = 1;
21093 			} else if (((val >= 5) && (val <= 8)) || (val == 13)
21094 				   || (val == 14)) {
21095 				spuravoid = 1;
21096 			}
21097 		} else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21098 			if (val == 54)
21099 				spuravoid = 1;
21100 		} else if (pi->nphy_aband_spurwar_en &&
21101 		    ((val == 38) || (val == 102) || (val == 118))) {
21102 			if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716)
21103 			    && (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
21104 				spuravoid = 0;
21105 			} else {
21106 				spuravoid = 1;
21107 			}
21108 		}
21109 
21110 		if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21111 			spuravoid = 1;
21112 
21113 		if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21114 		    (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21115 			bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21116 						     spuravoid);
21117 		} else {
21118 			wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
21119 			bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21120 						     spuravoid);
21121 			wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21122 		}
21123 
21124 		if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224) ||
21125 		    (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21126 			if (spuravoid == 1) {
21127 				bcma_write16(pi->d11core,
21128 					     D11REGOFFS(tsf_clk_frac_l),
21129 					     0x5341);
21130 				bcma_write16(pi->d11core,
21131 					     D11REGOFFS(tsf_clk_frac_h), 0x8);
21132 			} else {
21133 				bcma_write16(pi->d11core,
21134 					     D11REGOFFS(tsf_clk_frac_l),
21135 					     0x8889);
21136 				bcma_write16(pi->d11core,
21137 					     D11REGOFFS(tsf_clk_frac_h), 0x8);
21138 			}
21139 		}
21140 
21141 		if (!((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21142 		      (pi->sh->chip == BCMA_CHIP_ID_BCM47162)))
21143 			wlapi_bmac_core_phypll_reset(pi->sh->physhim);
21144 
21145 		mod_phy_reg(pi, 0x01, (0x1 << 15),
21146 			    ((spuravoid > 0) ? (0x1 << 15) : 0));
21147 
21148 		wlc_phy_resetcca_nphy(pi);
21149 
21150 		pi->phy_isspuravoid = (spuravoid > 0);
21151 	}
21152 
21153 	if (NREV_LT(pi->pubpi.phy_rev, 7))
21154 		write_phy_reg(pi, 0x17e, 0x3830);
21155 
21156 	wlc_phy_spurwar_nphy(pi);
21157 }
21158 
wlc_phy_chanspec_set_nphy(struct brcms_phy * pi,u16 chanspec)21159 void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21160 {
21161 	int freq;
21162 	const struct chan_info_nphy_radio2057 *t0 = NULL;
21163 	const struct chan_info_nphy_radio205x *t1 = NULL;
21164 	const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21165 	const struct chan_info_nphy_2055 *t3 = NULL;
21166 
21167 	if (!wlc_phy_chan2freq_nphy
21168 		    (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21169 		return;
21170 
21171 	wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21172 
21173 	if (CHSPEC_BW(chanspec) != pi->bw)
21174 		wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21175 
21176 	if (CHSPEC_IS40(chanspec)) {
21177 		if (CHSPEC_SB_UPPER(chanspec)) {
21178 			or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21179 			if (NREV_GE(pi->pubpi.phy_rev, 7))
21180 				or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21181 		} else {
21182 			and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21183 			if (NREV_GE(pi->pubpi.phy_rev, 7))
21184 				and_phy_reg(pi, 0x310,
21185 					    (~PRIM_SEL_UP20 & 0xffff));
21186 		}
21187 	}
21188 
21189 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21190 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21191 
21192 			if ((pi->pubpi.radiorev <= 4)
21193 			    || (pi->pubpi.radiorev == 6)) {
21194 				mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21195 					      0x2,
21196 					      (CHSPEC_IS5G(chanspec) ? (1 << 1)
21197 					       : 0));
21198 				mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21199 					      0x2,
21200 					      (CHSPEC_IS5G(chanspec) ? (1 << 1)
21201 					       : 0));
21202 			}
21203 
21204 			wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21205 			wlc_phy_chanspec_nphy_setup(pi, chanspec,
21206 				(pi->pubpi.radiorev == 5) ?
21207 				(const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21208 				(const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21209 
21210 		} else {
21211 
21212 			mod_radio_reg(pi,
21213 				      RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21214 				      0x4,
21215 				      (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21216 			wlc_phy_chanspec_radio2056_setup(pi, t1);
21217 
21218 			wlc_phy_chanspec_nphy_setup(pi, chanspec,
21219 				(const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21220 		}
21221 
21222 	} else {
21223 
21224 		mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21225 			      (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21226 			       : (0x05 << 4)));
21227 
21228 		wlc_phy_chanspec_radio2055_setup(pi, t3);
21229 		wlc_phy_chanspec_nphy_setup(pi, chanspec,
21230 					    (const struct nphy_sfo_cfg *)
21231 					     &(t3->PHY_BW1a));
21232 	}
21233 
21234 }
21235 
wlc_phy_antsel_init(struct brcms_phy_pub * ppi,bool lut_init)21236 void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21237 {
21238 	struct brcms_phy *pi = container_of(ppi, struct brcms_phy, pubpi_ro);
21239 	u16 mask = 0xfc00;
21240 	u32 mc = 0;
21241 
21242 	if (NREV_GE(pi->pubpi.phy_rev, 7))
21243 		return;
21244 
21245 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21246 		u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21247 
21248 		if (!lut_init)
21249 			return;
21250 
21251 		if (pi->srom_fem2g.antswctrllut == 0) {
21252 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21253 						 1, 0x02, 16, &v0);
21254 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21255 						 1, 0x03, 16, &v1);
21256 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21257 						 1, 0x08, 16, &v2);
21258 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21259 						 1, 0x0C, 16, &v3);
21260 		}
21261 
21262 		if (pi->srom_fem5g.antswctrllut == 0) {
21263 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21264 						 1, 0x12, 16, &v0);
21265 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21266 						 1, 0x13, 16, &v1);
21267 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21268 						 1, 0x18, 16, &v2);
21269 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21270 						 1, 0x1C, 16, &v3);
21271 		}
21272 	} else {
21273 
21274 		write_phy_reg(pi, 0xc8, 0x0);
21275 		write_phy_reg(pi, 0xc9, 0x0);
21276 
21277 		bcma_chipco_gpio_control(&pi->d11core->bus->drv_cc, mask, mask);
21278 
21279 		mc = bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
21280 		mc &= ~MCTL_GPOUT_SEL_MASK;
21281 		bcma_write32(pi->d11core, D11REGOFFS(maccontrol), mc);
21282 
21283 		bcma_set16(pi->d11core, D11REGOFFS(psm_gpio_oe), mask);
21284 
21285 		bcma_mask16(pi->d11core, D11REGOFFS(psm_gpio_out),
21286 			    0xffff & ~mask);
21287 
21288 		if (lut_init) {
21289 			write_phy_reg(pi, 0xf8, 0x02d8);
21290 			write_phy_reg(pi, 0xf9, 0x0301);
21291 			write_phy_reg(pi, 0xfa, 0x02d8);
21292 			write_phy_reg(pi, 0xfb, 0x0301);
21293 		}
21294 	}
21295 }
21296 
wlc_phy_classifier_nphy(struct brcms_phy * pi,u16 mask,u16 val)21297 u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21298 {
21299 	u16 curr_ctl, new_ctl;
21300 	bool suspended = false;
21301 
21302 	if (D11REV_IS(pi->sh->corerev, 16)) {
21303 		suspended = (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
21304 			     MCTL_EN_MAC) ? false : true;
21305 		if (!suspended)
21306 			wlapi_suspend_mac_and_wait(pi->sh->physhim);
21307 	}
21308 
21309 	curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21310 
21311 	new_ctl = (curr_ctl & (~mask)) | (val & mask);
21312 
21313 	mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21314 
21315 	if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21316 		wlapi_enable_mac(pi->sh->physhim);
21317 
21318 	return new_ctl;
21319 }
21320 
wlc_phy_force_rfseq_nphy(struct brcms_phy * pi,u8 cmd)21321 void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21322 {
21323 	u16 trigger_mask, status_mask;
21324 	u16 orig_RfseqCoreActv;
21325 
21326 	switch (cmd) {
21327 	case NPHY_RFSEQ_RX2TX:
21328 		trigger_mask = NPHY_RfseqTrigger_rx2tx;
21329 		status_mask = NPHY_RfseqStatus_rx2tx;
21330 		break;
21331 	case NPHY_RFSEQ_TX2RX:
21332 		trigger_mask = NPHY_RfseqTrigger_tx2rx;
21333 		status_mask = NPHY_RfseqStatus_tx2rx;
21334 		break;
21335 	case NPHY_RFSEQ_RESET2RX:
21336 		trigger_mask = NPHY_RfseqTrigger_reset2rx;
21337 		status_mask = NPHY_RfseqStatus_reset2rx;
21338 		break;
21339 	case NPHY_RFSEQ_UPDATEGAINH:
21340 		trigger_mask = NPHY_RfseqTrigger_updategainh;
21341 		status_mask = NPHY_RfseqStatus_updategainh;
21342 		break;
21343 	case NPHY_RFSEQ_UPDATEGAINL:
21344 		trigger_mask = NPHY_RfseqTrigger_updategainl;
21345 		status_mask = NPHY_RfseqStatus_updategainl;
21346 		break;
21347 	case NPHY_RFSEQ_UPDATEGAINU:
21348 		trigger_mask = NPHY_RfseqTrigger_updategainu;
21349 		status_mask = NPHY_RfseqStatus_updategainu;
21350 		break;
21351 	default:
21352 		return;
21353 	}
21354 
21355 	orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21356 	or_phy_reg(pi, 0xa1,
21357 		   (NPHY_RfseqMode_CoreActv_override |
21358 		    NPHY_RfseqMode_Trigger_override));
21359 	or_phy_reg(pi, 0xa3, trigger_mask);
21360 	SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21361 	write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21362 	WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21363 }
21364 
21365 static void
wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy * pi,u16 cmd,u16 value,u8 core_mask,u8 off)21366 wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21367 				     u8 core_mask, u8 off)
21368 {
21369 	u16 rfmxgain = 0, lpfgain = 0;
21370 	u16 tgain = 0;
21371 
21372 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21373 
21374 		switch (cmd) {
21375 		case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21376 			wlc_phy_rfctrl_override_nphy_rev7(
21377 				pi, (0x1 << 5),
21378 				value, core_mask, off,
21379 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21380 			wlc_phy_rfctrl_override_nphy_rev7(
21381 				pi, (0x1 << 4), value,
21382 				core_mask, off,
21383 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21384 			wlc_phy_rfctrl_override_nphy_rev7(
21385 				pi, (0x1 << 3), value,
21386 				core_mask, off,
21387 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21388 			break;
21389 		case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21390 			wlc_phy_rfctrl_override_nphy_rev7(
21391 				pi, (0x1 << 2),
21392 				value, core_mask, off,
21393 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21394 			wlc_phy_rfctrl_override_nphy_rev7(
21395 				pi, (0x1 << 1), value,
21396 				core_mask, off,
21397 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21398 			wlc_phy_rfctrl_override_nphy_rev7(
21399 				pi, (0x1 << 0), value,
21400 				core_mask, off,
21401 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21402 			wlc_phy_rfctrl_override_nphy_rev7(
21403 				pi, (0x1 << 1), value,
21404 				core_mask, off,
21405 				NPHY_REV7_RFCTRLOVERRIDE_ID2);
21406 			wlc_phy_rfctrl_override_nphy_rev7(
21407 				pi, (0x1 << 11), 0,
21408 				core_mask, off,
21409 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21410 			break;
21411 		case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21412 			wlc_phy_rfctrl_override_nphy_rev7(
21413 				pi, (0x1 << 2),
21414 				value, core_mask, off,
21415 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21416 			wlc_phy_rfctrl_override_nphy_rev7(
21417 				pi, (0x1 << 1), value,
21418 				core_mask, off,
21419 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21420 			wlc_phy_rfctrl_override_nphy_rev7(
21421 				pi, (0x1 << 0), value,
21422 				core_mask, off,
21423 				NPHY_REV7_RFCTRLOVERRIDE_ID2);
21424 			wlc_phy_rfctrl_override_nphy_rev7(
21425 				pi, (0x1 << 2), value,
21426 				core_mask, off,
21427 				NPHY_REV7_RFCTRLOVERRIDE_ID2);
21428 			wlc_phy_rfctrl_override_nphy_rev7(
21429 				pi, (0x1 << 11), 1,
21430 				core_mask, off,
21431 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21432 			break;
21433 		case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21434 			rfmxgain = value & 0x000ff;
21435 			lpfgain = value & 0x0ff00;
21436 			lpfgain = lpfgain >> 8;
21437 
21438 			wlc_phy_rfctrl_override_nphy_rev7(
21439 				pi, (0x1 << 11),
21440 				rfmxgain, core_mask,
21441 				off,
21442 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21443 			wlc_phy_rfctrl_override_nphy_rev7(
21444 				pi, (0x3 << 13),
21445 				lpfgain, core_mask,
21446 				off,
21447 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21448 			break;
21449 		case NPHY_REV7_RfctrlOverride_cmd_txgain:
21450 			tgain = value & 0x7fff;
21451 			lpfgain = value & 0x8000;
21452 			lpfgain = lpfgain >> 14;
21453 
21454 			wlc_phy_rfctrl_override_nphy_rev7(
21455 				pi, (0x1 << 12),
21456 				tgain, core_mask, off,
21457 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21458 			wlc_phy_rfctrl_override_nphy_rev7(
21459 				pi, (0x1 << 13),
21460 				lpfgain, core_mask,
21461 				off,
21462 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21463 			break;
21464 		}
21465 	}
21466 }
21467 
21468 static void
wlc_phy_scale_offset_rssi_nphy(struct brcms_phy * pi,u16 scale,s8 offset,u8 coresel,u8 rail,u8 rssi_type)21469 wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21470 			       u8 coresel, u8 rail, u8 rssi_type)
21471 {
21472 	u16 valuetostuff;
21473 
21474 	offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21475 		 NPHY_RSSICAL_MAXREAD : offset;
21476 	offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21477 		 -NPHY_RSSICAL_MAXREAD - 1 : offset;
21478 
21479 	valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21480 
21481 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21482 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21483 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21484 		write_phy_reg(pi, 0x1a6, valuetostuff);
21485 
21486 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21487 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21488 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21489 		write_phy_reg(pi, 0x1ac, valuetostuff);
21490 
21491 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21492 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21493 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21494 		write_phy_reg(pi, 0x1b2, valuetostuff);
21495 
21496 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21497 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21498 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21499 		write_phy_reg(pi, 0x1b8, valuetostuff);
21500 
21501 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21502 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21503 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21504 		write_phy_reg(pi, 0x1a4, valuetostuff);
21505 
21506 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21507 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21508 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21509 		write_phy_reg(pi, 0x1aa, valuetostuff);
21510 
21511 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21512 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21513 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21514 		write_phy_reg(pi, 0x1b0, valuetostuff);
21515 
21516 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21517 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21518 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21519 		write_phy_reg(pi, 0x1b6, valuetostuff);
21520 
21521 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21522 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21523 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21524 		write_phy_reg(pi, 0x1a5, valuetostuff);
21525 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21526 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21527 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21528 		write_phy_reg(pi, 0x1ab, valuetostuff);
21529 
21530 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21531 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21532 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21533 		write_phy_reg(pi, 0x1b1, valuetostuff);
21534 
21535 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21536 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21537 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21538 		write_phy_reg(pi, 0x1b7, valuetostuff);
21539 
21540 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21541 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21542 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21543 		write_phy_reg(pi, 0x1a7, valuetostuff);
21544 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21545 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21546 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21547 		write_phy_reg(pi, 0x1ad, valuetostuff);
21548 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21549 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21550 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21551 		write_phy_reg(pi, 0x1b3, valuetostuff);
21552 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21553 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21554 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21555 		write_phy_reg(pi, 0x1b9, valuetostuff);
21556 
21557 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21558 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21559 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21560 		write_phy_reg(pi, 0x1a8, valuetostuff);
21561 
21562 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21563 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21564 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21565 		write_phy_reg(pi, 0x1ae, valuetostuff);
21566 
21567 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21568 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21569 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21570 		write_phy_reg(pi, 0x1b4, valuetostuff);
21571 
21572 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21573 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21574 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21575 		write_phy_reg(pi, 0x1ba, valuetostuff);
21576 
21577 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21578 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21579 	    (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21580 		write_phy_reg(pi, 0x1a9, valuetostuff);
21581 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21582 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21583 	    (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21584 		write_phy_reg(pi, 0x1b5, valuetostuff);
21585 
21586 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21587 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21588 	    (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21589 		write_phy_reg(pi, 0x1af, valuetostuff);
21590 
21591 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21592 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21593 	    (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21594 		write_phy_reg(pi, 0x1bb, valuetostuff);
21595 }
21596 
brcms_phy_wr_tx_mux(struct brcms_phy * pi,u8 core)21597 static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21598 {
21599 	if (PHY_IPA(pi)) {
21600 		if (NREV_GE(pi->pubpi.phy_rev, 7))
21601 			write_radio_reg(pi,
21602 					((core == PHY_CORE_0) ?
21603 					 RADIO_2057_TX0_TX_SSI_MUX :
21604 					 RADIO_2057_TX1_TX_SSI_MUX),
21605 					(CHSPEC_IS5G(pi->radio_chanspec) ?
21606 					0xc : 0xe));
21607 		else
21608 			write_radio_reg(pi,
21609 					RADIO_2056_TX_TX_SSI_MUX |
21610 					((core == PHY_CORE_0) ?
21611 					 RADIO_2056_TX0 : RADIO_2056_TX1),
21612 					(CHSPEC_IS5G(pi->radio_chanspec) ?
21613 					0xc : 0xe));
21614 	} else {
21615 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21616 			write_radio_reg(pi,
21617 					((core == PHY_CORE_0) ?
21618 					 RADIO_2057_TX0_TX_SSI_MUX :
21619 					 RADIO_2057_TX1_TX_SSI_MUX),
21620 					0x11);
21621 
21622 			if (pi->pubpi.radioid == BCM2057_ID)
21623 				write_radio_reg(pi,
21624 						RADIO_2057_IQTEST_SEL_PU, 0x1);
21625 
21626 		} else {
21627 			write_radio_reg(pi,
21628 					RADIO_2056_TX_TX_SSI_MUX |
21629 					((core == PHY_CORE_0) ?
21630 					 RADIO_2056_TX0 : RADIO_2056_TX1),
21631 					0x11);
21632 		}
21633 	}
21634 }
21635 
wlc_phy_rssisel_nphy(struct brcms_phy * pi,u8 core_code,u8 rssi_type)21636 void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21637 {
21638 	u16 mask, val;
21639 	u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21640 	    startseq;
21641 	u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21642 	    rfctrlovr_trigger_val;
21643 	u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21644 	u16 rfctrlcmd_val, rfctrlovr_val;
21645 	u8 core;
21646 
21647 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21648 		if (core_code == RADIO_MIMO_CORESEL_OFF) {
21649 			mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21650 			mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21651 
21652 			mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21653 			mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21654 
21655 			mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21656 			mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21657 
21658 			mask = (0x1 << 2) |
21659 			       (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21660 			mod_phy_reg(pi, 0xf9, mask, 0);
21661 			mod_phy_reg(pi, 0xfb, mask, 0);
21662 
21663 		} else {
21664 			for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21665 				if (core_code == RADIO_MIMO_CORESEL_CORE1
21666 				    && core == PHY_CORE_1)
21667 					continue;
21668 				else if (core_code == RADIO_MIMO_CORESEL_CORE2
21669 					 && core == PHY_CORE_0)
21670 					continue;
21671 
21672 				mod_phy_reg(pi, (core == PHY_CORE_0) ?
21673 					    0x8f : 0xa5, (0x1 << 9), 1 << 9);
21674 
21675 				if (rssi_type == NPHY_RSSI_SEL_W1 ||
21676 				    rssi_type == NPHY_RSSI_SEL_W2 ||
21677 				    rssi_type == NPHY_RSSI_SEL_NB) {
21678 					mod_phy_reg(pi,
21679 						    (core ==
21680 						     PHY_CORE_0) ? 0xa6 : 0xa7,
21681 						    (0x3 << 8), 0);
21682 
21683 					mask = (0x1 << 2) |
21684 					       (0x1 << 3) |
21685 					       (0x1 << 4) | (0x1 << 5);
21686 					mod_phy_reg(pi,
21687 						    (core ==
21688 						     PHY_CORE_0) ? 0xf9 : 0xfb,
21689 						    mask, 0);
21690 
21691 					if (rssi_type == NPHY_RSSI_SEL_W1) {
21692 						if (CHSPEC_IS5G(
21693 							  pi->radio_chanspec)) {
21694 							mask = (0x1 << 2);
21695 							val = 1 << 2;
21696 						} else {
21697 							mask = (0x1 << 3);
21698 							val = 1 << 3;
21699 						}
21700 					} else if (rssi_type ==
21701 						   NPHY_RSSI_SEL_W2) {
21702 						mask = (0x1 << 4);
21703 						val = 1 << 4;
21704 					} else {
21705 						mask = (0x1 << 5);
21706 						val = 1 << 5;
21707 					}
21708 					mod_phy_reg(pi,
21709 						    (core ==
21710 						     PHY_CORE_0) ? 0xf9 : 0xfb,
21711 						    mask, val);
21712 
21713 					mask = (0x1 << 5);
21714 					val = 1 << 5;
21715 					mod_phy_reg(pi, (core == PHY_CORE_0) ?
21716 						    0xe5 : 0xe6, mask, val);
21717 				} else {
21718 					if (rssi_type == NPHY_RSSI_SEL_TBD) {
21719 						mask = (0x3 << 8);
21720 						val = 1 << 8;
21721 						mod_phy_reg(pi,
21722 							    (core ==
21723 							     PHY_CORE_0) ? 0xa6
21724 							    : 0xa7, mask, val);
21725 						mask = (0x3 << 10);
21726 						val = 1 << 10;
21727 						mod_phy_reg(pi,
21728 							    (core ==
21729 							     PHY_CORE_0) ? 0xa6
21730 							    : 0xa7, mask, val);
21731 					} else if (rssi_type ==
21732 						   NPHY_RSSI_SEL_IQ) {
21733 						mask = (0x3 << 8);
21734 						val = 2 << 8;
21735 						mod_phy_reg(pi,
21736 							    (core ==
21737 							     PHY_CORE_0) ? 0xa6
21738 							    : 0xa7, mask, val);
21739 						mask = (0x3 << 10);
21740 						val = 2 << 10;
21741 						mod_phy_reg(pi,
21742 							    (core ==
21743 							     PHY_CORE_0) ? 0xa6
21744 							    : 0xa7, mask, val);
21745 					} else {
21746 						mask = (0x3 << 8);
21747 						val = 3 << 8;
21748 						mod_phy_reg(pi,
21749 							    (core ==
21750 							     PHY_CORE_0) ? 0xa6
21751 							    : 0xa7, mask, val);
21752 						mask = (0x3 << 10);
21753 						val = 3 << 10;
21754 						mod_phy_reg(pi,
21755 							    (core ==
21756 							     PHY_CORE_0) ? 0xa6
21757 							    : 0xa7, mask, val);
21758 						brcms_phy_wr_tx_mux(pi, core);
21759 						afectrlovr_rssi_val = 1 << 9;
21760 						mod_phy_reg(pi,
21761 							   (core ==
21762 							    PHY_CORE_0) ? 0x8f
21763 							   : 0xa5, (0x1 << 9),
21764 							   afectrlovr_rssi_val);
21765 					}
21766 				}
21767 			}
21768 		}
21769 	} else {
21770 
21771 		if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21772 		    (rssi_type == NPHY_RSSI_SEL_W2) ||
21773 		    (rssi_type == NPHY_RSSI_SEL_NB))
21774 			val = 0x0;
21775 		else if (rssi_type == NPHY_RSSI_SEL_TBD)
21776 			val = 0x1;
21777 		else if (rssi_type == NPHY_RSSI_SEL_IQ)
21778 			val = 0x2;
21779 		else
21780 			val = 0x3;
21781 
21782 		mask = ((0x3 << 12) | (0x3 << 14));
21783 		val = (val << 12) | (val << 14);
21784 		mod_phy_reg(pi, 0xa6, mask, val);
21785 		mod_phy_reg(pi, 0xa7, mask, val);
21786 
21787 		if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21788 		    (rssi_type == NPHY_RSSI_SEL_W2) ||
21789 		    (rssi_type == NPHY_RSSI_SEL_NB)) {
21790 			if (rssi_type == NPHY_RSSI_SEL_W1)
21791 				val = 0x1;
21792 			if (rssi_type == NPHY_RSSI_SEL_W2)
21793 				val = 0x2;
21794 			if (rssi_type == NPHY_RSSI_SEL_NB)
21795 				val = 0x3;
21796 
21797 			mask = (0x3 << 4);
21798 			val = (val << 4);
21799 			mod_phy_reg(pi, 0x7a, mask, val);
21800 			mod_phy_reg(pi, 0x7d, mask, val);
21801 		}
21802 
21803 		if (core_code == RADIO_MIMO_CORESEL_OFF) {
21804 			afectrlovr_rssi_val = 0;
21805 			rfctrlcmd_rxen_val = 0;
21806 			rfctrlcmd_coresel_val = 0;
21807 			rfctrlovr_rssi_val = 0;
21808 			rfctrlovr_rxen_val = 0;
21809 			rfctrlovr_coresel_val = 0;
21810 			rfctrlovr_trigger_val = 0;
21811 			startseq = 0;
21812 		} else {
21813 			afectrlovr_rssi_val = 1;
21814 			rfctrlcmd_rxen_val = 1;
21815 			rfctrlcmd_coresel_val = core_code;
21816 			rfctrlovr_rssi_val = 1;
21817 			rfctrlovr_rxen_val = 1;
21818 			rfctrlovr_coresel_val = 1;
21819 			rfctrlovr_trigger_val = 1;
21820 			startseq = 1;
21821 		}
21822 
21823 		afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
21824 		afectrlovr_rssi_val = (afectrlovr_rssi_val <<
21825 				       12) | (afectrlovr_rssi_val << 13);
21826 		mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
21827 			    afectrlovr_rssi_val);
21828 
21829 		if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21830 		    (rssi_type == NPHY_RSSI_SEL_W2) ||
21831 		    (rssi_type == NPHY_RSSI_SEL_NB)) {
21832 			rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
21833 			rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
21834 					(rfctrlcmd_coresel_val << 3);
21835 
21836 			rfctrlovr_mask = ((0x1 << 5) |
21837 					  (0x1 << 12) |
21838 					  (0x1 << 1) | (0x1 << 0));
21839 			rfctrlovr_val = (rfctrlovr_rssi_val <<
21840 					 5) |
21841 					(rfctrlovr_rxen_val << 12) |
21842 					(rfctrlovr_coresel_val << 1) |
21843 					(rfctrlovr_trigger_val << 0);
21844 
21845 			mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
21846 			mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
21847 
21848 			mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
21849 			udelay(20);
21850 
21851 			mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
21852 		}
21853 	}
21854 }
21855 
21856 int
wlc_phy_poll_rssi_nphy(struct brcms_phy * pi,u8 rssi_type,s32 * rssi_buf,u8 nsamps)21857 wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
21858 		       u8 nsamps)
21859 {
21860 	s16 rssi0, rssi1;
21861 	u16 afectrlCore1_save = 0;
21862 	u16 afectrlCore2_save = 0;
21863 	u16 afectrlOverride1_save = 0;
21864 	u16 afectrlOverride2_save = 0;
21865 	u16 rfctrlOverrideAux0_save = 0;
21866 	u16 rfctrlOverrideAux1_save = 0;
21867 	u16 rfctrlMiscReg1_save = 0;
21868 	u16 rfctrlMiscReg2_save = 0;
21869 	u16 rfctrlcmd_save = 0;
21870 	u16 rfctrloverride_save = 0;
21871 	u16 rfctrlrssiothers1_save = 0;
21872 	u16 rfctrlrssiothers2_save = 0;
21873 	s8 tmp_buf[4];
21874 	u8 ctr = 0, samp = 0;
21875 	s32 rssi_out_val;
21876 	u16 gpiosel_orig;
21877 
21878 	afectrlCore1_save = read_phy_reg(pi, 0xa6);
21879 	afectrlCore2_save = read_phy_reg(pi, 0xa7);
21880 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21881 		rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
21882 		rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
21883 		afectrlOverride1_save = read_phy_reg(pi, 0x8f);
21884 		afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21885 		rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
21886 		rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
21887 	} else {
21888 		afectrlOverride1_save = read_phy_reg(pi, 0xa5);
21889 		rfctrlcmd_save = read_phy_reg(pi, 0x78);
21890 		rfctrloverride_save = read_phy_reg(pi, 0xec);
21891 		rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
21892 		rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
21893 	}
21894 
21895 	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
21896 
21897 	gpiosel_orig = read_phy_reg(pi, 0xca);
21898 	if (NREV_LT(pi->pubpi.phy_rev, 2))
21899 		write_phy_reg(pi, 0xca, 5);
21900 
21901 	for (ctr = 0; ctr < 4; ctr++)
21902 		rssi_buf[ctr] = 0;
21903 
21904 	for (samp = 0; samp < nsamps; samp++) {
21905 		if (NREV_LT(pi->pubpi.phy_rev, 2)) {
21906 			rssi0 = read_phy_reg(pi, 0x1c9);
21907 			rssi1 = read_phy_reg(pi, 0x1ca);
21908 		} else {
21909 			rssi0 = read_phy_reg(pi, 0x219);
21910 			rssi1 = read_phy_reg(pi, 0x21a);
21911 		}
21912 
21913 		ctr = 0;
21914 		tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
21915 		tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
21916 		tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
21917 		tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
21918 
21919 		for (ctr = 0; ctr < 4; ctr++)
21920 			rssi_buf[ctr] += tmp_buf[ctr];
21921 
21922 	}
21923 
21924 	rssi_out_val = rssi_buf[3] & 0xff;
21925 	rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
21926 	rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
21927 	rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
21928 
21929 	if (NREV_LT(pi->pubpi.phy_rev, 2))
21930 		write_phy_reg(pi, 0xca, gpiosel_orig);
21931 
21932 	write_phy_reg(pi, 0xa6, afectrlCore1_save);
21933 	write_phy_reg(pi, 0xa7, afectrlCore2_save);
21934 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21935 		write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
21936 		write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
21937 		write_phy_reg(pi, 0x8f, afectrlOverride1_save);
21938 		write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21939 		write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
21940 		write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
21941 	} else {
21942 		write_phy_reg(pi, 0xa5, afectrlOverride1_save);
21943 		write_phy_reg(pi, 0x78, rfctrlcmd_save);
21944 		write_phy_reg(pi, 0xec, rfctrloverride_save);
21945 		write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
21946 		write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
21947 	}
21948 
21949 	return rssi_out_val;
21950 }
21951 
wlc_phy_tempsense_nphy(struct brcms_phy * pi)21952 s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
21953 {
21954 	u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
21955 	u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
21956 	u16 pwrdet_rxtx_core1_save;
21957 	u16 pwrdet_rxtx_core2_save;
21958 	u16 afectrlCore1_save;
21959 	u16 afectrlCore2_save;
21960 	u16 afectrlOverride_save;
21961 	u16 afectrlOverride2_save;
21962 	u16 pd_pll_ts_save;
21963 	u16 gpioSel_save;
21964 	s32 radio_temp[4];
21965 	s32 radio_temp2[4];
21966 	u16 syn_tempprocsense_save;
21967 	s16 offset = 0;
21968 
21969 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21970 		u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
21971 		u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
21972 		u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
21973 		s32 auxADC_Vl;
21974 		u16 RfctrlOverride5_save, RfctrlOverride6_save;
21975 		u16 RfctrlMiscReg5_save;
21976 		u16 RSSIMultCoef0QPowerDet_save;
21977 		u16 tempsense_Rcal;
21978 
21979 		syn_tempprocsense_save =
21980 			read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
21981 
21982 		afectrlCore1_save = read_phy_reg(pi, 0xa6);
21983 		afectrlCore2_save = read_phy_reg(pi, 0xa7);
21984 		afectrlOverride_save = read_phy_reg(pi, 0x8f);
21985 		afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21986 		RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
21987 		RfctrlOverride5_save = read_phy_reg(pi, 0x346);
21988 		RfctrlOverride6_save = read_phy_reg(pi, 0x347);
21989 		RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
21990 		read_phy_reg(pi, 0x345); /* RfctrlMiscReg6_save */
21991 
21992 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21993 					&auxADC_Vmid_save);
21994 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21995 					&auxADC_Av_save);
21996 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
21997 					&auxADC_rssi_ctrlL_save);
21998 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
21999 					&auxADC_rssi_ctrlH_save);
22000 
22001 		write_phy_reg(pi, 0x1ae, 0x0);
22002 
22003 		auxADC_rssi_ctrlL = 0x0;
22004 		auxADC_rssi_ctrlH = 0x20;
22005 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22006 					 &auxADC_rssi_ctrlL);
22007 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22008 					 &auxADC_rssi_ctrlH);
22009 
22010 		tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22011 
22012 		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22013 				tempsense_Rcal | 0x01);
22014 
22015 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22016 						  1, 0, 0,
22017 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
22018 		mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22019 		mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22020 		mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22021 		mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22022 
22023 		mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22024 		mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22025 		mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22026 		mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22027 		udelay(5);
22028 		mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22029 		mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22030 		mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22031 		mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22032 		mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22033 		mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22034 		mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22035 		mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22036 		mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22037 		mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22038 
22039 		auxADC_Vmid = 0xA3;
22040 		auxADC_Av = 0x0;
22041 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22042 					 &auxADC_Vmid);
22043 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22044 					 &auxADC_Av);
22045 
22046 		udelay(3);
22047 
22048 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22049 		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22050 				tempsense_Rcal | 0x03);
22051 
22052 		udelay(5);
22053 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22054 
22055 		auxADC_Av = 0x7;
22056 		if (radio_temp[1] + radio_temp2[1] < -30) {
22057 			auxADC_Vmid = 0x45;
22058 			auxADC_Vl = 263;
22059 		} else if (radio_temp[1] + radio_temp2[1] < -9) {
22060 			auxADC_Vmid = 0x200;
22061 			auxADC_Vl = 467;
22062 		} else if (radio_temp[1] + radio_temp2[1] < 11) {
22063 			auxADC_Vmid = 0x266;
22064 			auxADC_Vl = 634;
22065 		} else {
22066 			auxADC_Vmid = 0x2D5;
22067 			auxADC_Vl = 816;
22068 		}
22069 
22070 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22071 					 &auxADC_Vmid);
22072 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22073 					 &auxADC_Av);
22074 
22075 		udelay(3);
22076 
22077 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22078 		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22079 				tempsense_Rcal | 0x01);
22080 
22081 		udelay(5);
22082 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22083 
22084 		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22085 				syn_tempprocsense_save);
22086 
22087 		write_phy_reg(pi, 0xa6, afectrlCore1_save);
22088 		write_phy_reg(pi, 0xa7, afectrlCore2_save);
22089 		write_phy_reg(pi, 0x8f, afectrlOverride_save);
22090 		write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22091 		write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22092 		write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22093 		write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22094 		write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22095 		write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22096 
22097 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22098 					 &auxADC_Vmid_save);
22099 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22100 					 &auxADC_Av_save);
22101 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22102 					 &auxADC_rssi_ctrlL_save);
22103 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22104 					 &auxADC_rssi_ctrlH_save);
22105 
22106 		if (pi->sh->chip == BCMA_CHIP_ID_BCM5357) {
22107 			radio_temp[0] = (193 * (radio_temp[1] + radio_temp2[1])
22108 					 + 88 * (auxADC_Vl) - 27111 +
22109 					 128) / 256;
22110 		} else {
22111 			radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22112 					 + 82 * (auxADC_Vl) - 28861 +
22113 					 128) / 256;
22114 		}
22115 
22116 		offset = (s16) pi->phy_tempsense_offset;
22117 
22118 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22119 		syn_tempprocsense_save =
22120 			read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22121 
22122 		afectrlCore1_save = read_phy_reg(pi, 0xa6);
22123 		afectrlCore2_save = read_phy_reg(pi, 0xa7);
22124 		afectrlOverride_save = read_phy_reg(pi, 0x8f);
22125 		afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22126 		gpioSel_save = read_phy_reg(pi, 0xca);
22127 
22128 		write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22129 
22130 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22131 		if (NREV_LT(pi->pubpi.phy_rev, 7))
22132 			write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22133 
22134 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22135 		if (NREV_GE(pi->pubpi.phy_rev, 7))
22136 			write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22137 		else
22138 			write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22139 
22140 		radio_temp[0] =
22141 			(126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22142 
22143 		write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22144 				syn_tempprocsense_save);
22145 
22146 		write_phy_reg(pi, 0xca, gpioSel_save);
22147 		write_phy_reg(pi, 0xa6, afectrlCore1_save);
22148 		write_phy_reg(pi, 0xa7, afectrlCore2_save);
22149 		write_phy_reg(pi, 0x8f, afectrlOverride_save);
22150 		write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22151 
22152 		offset = (s16) pi->phy_tempsense_offset;
22153 	} else {
22154 
22155 		pwrdet_rxtx_core1_save =
22156 			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22157 		pwrdet_rxtx_core2_save =
22158 			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22159 		core1_txrf_iqcal1_save =
22160 			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22161 		core1_txrf_iqcal2_save =
22162 			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22163 		core2_txrf_iqcal1_save =
22164 			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22165 		core2_txrf_iqcal2_save =
22166 			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22167 		pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22168 
22169 		afectrlCore1_save = read_phy_reg(pi, 0xa6);
22170 		afectrlCore2_save = read_phy_reg(pi, 0xa7);
22171 		afectrlOverride_save = read_phy_reg(pi, 0xa5);
22172 		gpioSel_save = read_phy_reg(pi, 0xca);
22173 
22174 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22175 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22176 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22177 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22178 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22179 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22180 		write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22181 
22182 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22183 		xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22184 
22185 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22186 		xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22187 
22188 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22189 		xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22190 
22191 		radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22192 		radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22193 		radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22194 		radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22195 
22196 		radio_temp[0] =
22197 			(radio_temp[0] + radio_temp[1] + radio_temp[2] +
22198 			 radio_temp[3]);
22199 
22200 		radio_temp[0] =
22201 			(radio_temp[0] +
22202 			 (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22203 
22204 		radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22205 
22206 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22207 				pwrdet_rxtx_core1_save);
22208 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22209 				pwrdet_rxtx_core2_save);
22210 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22211 				core1_txrf_iqcal1_save);
22212 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22213 				core2_txrf_iqcal1_save);
22214 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22215 				core1_txrf_iqcal2_save);
22216 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22217 				core2_txrf_iqcal2_save);
22218 		write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22219 
22220 		write_phy_reg(pi, 0xca, gpioSel_save);
22221 		write_phy_reg(pi, 0xa6, afectrlCore1_save);
22222 		write_phy_reg(pi, 0xa7, afectrlCore2_save);
22223 		write_phy_reg(pi, 0xa5, afectrlOverride_save);
22224 	}
22225 
22226 	return (s16) radio_temp[0] + offset;
22227 }
22228 
22229 static void
wlc_phy_set_rssi_2055_vcm(struct brcms_phy * pi,u8 rssi_type,u8 * vcm_buf)22230 wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22231 {
22232 	u8 core;
22233 
22234 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22235 		if (rssi_type == NPHY_RSSI_SEL_NB) {
22236 			if (core == PHY_CORE_0) {
22237 				mod_radio_reg(pi,
22238 					      RADIO_2055_CORE1_B0_NBRSSI_VCM,
22239 					      RADIO_2055_NBRSSI_VCM_I_MASK,
22240 					      vcm_buf[2 *
22241 						      core] <<
22242 					      RADIO_2055_NBRSSI_VCM_I_SHIFT);
22243 				mod_radio_reg(pi,
22244 					      RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22245 					      RADIO_2055_NBRSSI_VCM_Q_MASK,
22246 					      vcm_buf[2 * core +
22247 						      1] <<
22248 					      RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22249 			} else {
22250 				mod_radio_reg(pi,
22251 					      RADIO_2055_CORE2_B0_NBRSSI_VCM,
22252 					      RADIO_2055_NBRSSI_VCM_I_MASK,
22253 					      vcm_buf[2 *
22254 						      core] <<
22255 					      RADIO_2055_NBRSSI_VCM_I_SHIFT);
22256 				mod_radio_reg(pi,
22257 					      RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22258 					      RADIO_2055_NBRSSI_VCM_Q_MASK,
22259 					      vcm_buf[2 * core +
22260 						      1] <<
22261 					      RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22262 			}
22263 		} else {
22264 			if (core == PHY_CORE_0)
22265 				mod_radio_reg(pi,
22266 					      RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22267 					      RADIO_2055_WBRSSI_VCM_IQ_MASK,
22268 					      vcm_buf[2 *
22269 						      core] <<
22270 					      RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22271 			else
22272 				mod_radio_reg(pi,
22273 					      RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22274 					      RADIO_2055_WBRSSI_VCM_IQ_MASK,
22275 					      vcm_buf[2 *
22276 						      core] <<
22277 					      RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22278 		}
22279 	}
22280 }
22281 
wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy * pi)22282 static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22283 {
22284 	u16 classif_state;
22285 	u16 clip_state[2];
22286 	u16 clip_off[] = { 0xffff, 0xffff };
22287 	s32 target_code;
22288 	u8 vcm, min_vcm;
22289 	u8 vcm_final = 0;
22290 	u8 result_idx;
22291 	s32 poll_results[8][4] = {
22292 		{0, 0, 0, 0},
22293 		{0, 0, 0, 0},
22294 		{0, 0, 0, 0},
22295 		{0, 0, 0, 0},
22296 		{0, 0, 0, 0},
22297 		{0, 0, 0, 0},
22298 		{0, 0, 0, 0},
22299 		{0, 0, 0, 0}
22300 	};
22301 	s32 poll_result_core[4] = { 0, 0, 0, 0 };
22302 	s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22303 	s32 fine_digital_offset[4];
22304 	s32 poll_results_min[4] = { 0, 0, 0, 0 };
22305 	s32 min_poll;
22306 	u8 vcm_level_max;
22307 	u8 core;
22308 	u8 wb_cnt;
22309 	u8 rssi_type;
22310 	u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22311 	u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22312 	u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22313 	u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22314 	u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22315 	u16 NPHY_RfctrlCmd_save;
22316 	u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22317 	u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22318 	u8 rxcore_state;
22319 	u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22320 	u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22321 	u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22322 	u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22323 
22324 	NPHY_REV7_RfctrlOverride3_save =
22325 		NPHY_REV7_RfctrlOverride4_save =
22326 		NPHY_REV7_RfctrlOverride5_save =
22327 		NPHY_REV7_RfctrlOverride6_save =
22328 		NPHY_REV7_RfctrlMiscReg3_save =
22329 		NPHY_REV7_RfctrlMiscReg4_save =
22330 		NPHY_REV7_RfctrlMiscReg5_save =
22331 		NPHY_REV7_RfctrlMiscReg6_save = 0;
22332 
22333 	classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22334 	wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22335 	wlc_phy_clip_det_nphy(pi, 0, clip_state);
22336 	wlc_phy_clip_det_nphy(pi, 1, clip_off);
22337 
22338 	NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22339 	NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22340 	NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22341 	NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22342 	NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22343 	NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22344 	NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22345 	NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22346 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22347 		NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22348 		NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22349 		NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22350 		NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22351 	}
22352 	NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22353 	NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22354 	NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22355 	NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22356 	NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22357 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22358 		NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22359 		NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22360 		NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22361 		NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22362 	}
22363 	NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22364 	NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22365 
22366 	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22367 					 RADIO_MIMO_CORESEL_ALLRXTX);
22368 	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22369 					 RADIO_MIMO_CORESEL_ALLRXTX);
22370 
22371 	if (NREV_GE(pi->pubpi.phy_rev, 7))
22372 		wlc_phy_rfctrl_override_1tomany_nphy(
22373 			pi,
22374 			NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22375 			0, 0, 0);
22376 	else
22377 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22378 
22379 	if (NREV_GE(pi->pubpi.phy_rev, 7))
22380 		wlc_phy_rfctrl_override_1tomany_nphy(
22381 			pi,
22382 			NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22383 			1, 0, 0);
22384 	else
22385 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22386 
22387 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22388 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22389 						  1, 0, 0,
22390 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
22391 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22392 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
22393 	} else {
22394 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22395 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22396 	}
22397 
22398 	if (CHSPEC_IS5G(pi->radio_chanspec)) {
22399 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22400 			wlc_phy_rfctrl_override_nphy_rev7(
22401 				pi, (0x1 << 5),
22402 				0, 0, 0,
22403 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22404 			wlc_phy_rfctrl_override_nphy_rev7(
22405 				pi, (0x1 << 4), 1, 0,
22406 				0,
22407 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22408 		} else {
22409 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22410 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22411 		}
22412 
22413 	} else {
22414 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22415 			wlc_phy_rfctrl_override_nphy_rev7(
22416 				pi, (0x1 << 4),
22417 				0, 0, 0,
22418 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22419 			wlc_phy_rfctrl_override_nphy_rev7(
22420 				pi, (0x1 << 5), 1, 0,
22421 				0,
22422 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22423 		} else {
22424 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22425 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22426 		}
22427 	}
22428 
22429 	rxcore_state = wlc_phy_rxcore_getstate_nphy(
22430 		(struct brcms_phy_pub *) pi);
22431 
22432 	vcm_level_max = 8;
22433 
22434 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22435 
22436 		if ((rxcore_state & (1 << core)) == 0)
22437 			continue;
22438 
22439 		wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22440 					       core ==
22441 					       PHY_CORE_0 ?
22442 					       RADIO_MIMO_CORESEL_CORE1 :
22443 					       RADIO_MIMO_CORESEL_CORE2,
22444 					       NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22445 		wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22446 					       core ==
22447 					       PHY_CORE_0 ?
22448 					       RADIO_MIMO_CORESEL_CORE1 :
22449 					       RADIO_MIMO_CORESEL_CORE2,
22450 					       NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22451 
22452 		for (vcm = 0; vcm < vcm_level_max; vcm++) {
22453 			if (NREV_GE(pi->pubpi.phy_rev, 7))
22454 				mod_radio_reg(pi, (core == PHY_CORE_0) ?
22455 					      RADIO_2057_NB_MASTER_CORE0 :
22456 					      RADIO_2057_NB_MASTER_CORE1,
22457 					      RADIO_2057_VCM_MASK, vcm);
22458 			else
22459 				mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22460 					      ((core ==
22461 						PHY_CORE_0) ? RADIO_2056_RX0 :
22462 					       RADIO_2056_RX1),
22463 					      RADIO_2056_VCM_MASK,
22464 					      vcm << RADIO_2056_RSSI_VCM_SHIFT);
22465 
22466 			wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22467 					       &poll_results[vcm][0],
22468 					       NPHY_RSSICAL_NPOLL);
22469 		}
22470 
22471 		for (result_idx = 0; result_idx < 4; result_idx++) {
22472 			if ((core == result_idx / 2) &&
22473 			    (result_idx % 2 == 0)) {
22474 
22475 				min_d = NPHY_RSSICAL_MAXD;
22476 				min_vcm = 0;
22477 				min_poll =
22478 					NPHY_RSSICAL_MAXREAD *
22479 					NPHY_RSSICAL_NPOLL + 1;
22480 				for (vcm = 0; vcm < vcm_level_max; vcm++) {
22481 					curr_d =
22482 						poll_results[vcm][result_idx] *
22483 						poll_results[vcm][result_idx] +
22484 						poll_results[vcm][result_idx +
22485 								  1] *
22486 						poll_results[vcm][result_idx +
22487 								  1];
22488 					if (curr_d < min_d) {
22489 						min_d = curr_d;
22490 						min_vcm = vcm;
22491 					}
22492 					if (poll_results[vcm][result_idx] <
22493 					    min_poll)
22494 						min_poll =
22495 							poll_results[vcm]
22496 							[result_idx];
22497 				}
22498 				vcm_final = min_vcm;
22499 				poll_results_min[result_idx] = min_poll;
22500 			}
22501 		}
22502 
22503 		if (NREV_GE(pi->pubpi.phy_rev, 7))
22504 			mod_radio_reg(pi, (core == PHY_CORE_0) ?
22505 				      RADIO_2057_NB_MASTER_CORE0 :
22506 				      RADIO_2057_NB_MASTER_CORE1,
22507 				      RADIO_2057_VCM_MASK, vcm_final);
22508 		else
22509 			mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22510 				      ((core ==
22511 					PHY_CORE_0) ? RADIO_2056_RX0 :
22512 				       RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22513 				      vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22514 
22515 		for (result_idx = 0; result_idx < 4; result_idx++) {
22516 			if (core == result_idx / 2) {
22517 				fine_digital_offset[result_idx] =
22518 					(NPHY_RSSICAL_NB_TARGET *
22519 					 NPHY_RSSICAL_NPOLL) -
22520 					poll_results[vcm_final][result_idx];
22521 				if (fine_digital_offset[result_idx] < 0) {
22522 					fine_digital_offset[result_idx] =
22523 						abs(fine_digital_offset
22524 						    [result_idx]);
22525 					fine_digital_offset[result_idx] +=
22526 						(NPHY_RSSICAL_NPOLL / 2);
22527 					fine_digital_offset[result_idx] /=
22528 						NPHY_RSSICAL_NPOLL;
22529 					fine_digital_offset[result_idx] =
22530 						-fine_digital_offset[
22531 								    result_idx];
22532 				} else {
22533 					fine_digital_offset[result_idx] +=
22534 						(NPHY_RSSICAL_NPOLL / 2);
22535 					fine_digital_offset[result_idx] /=
22536 						NPHY_RSSICAL_NPOLL;
22537 				}
22538 
22539 				if (poll_results_min[result_idx] ==
22540 				    NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22541 					fine_digital_offset[result_idx] =
22542 						(NPHY_RSSICAL_NB_TARGET -
22543 						 NPHY_RSSICAL_MAXREAD - 1);
22544 
22545 				wlc_phy_scale_offset_rssi_nphy(
22546 					pi, 0x0,
22547 					(s8)
22548 					fine_digital_offset
22549 					[result_idx],
22550 					(result_idx / 2 == 0) ?
22551 					RADIO_MIMO_CORESEL_CORE1 :
22552 					RADIO_MIMO_CORESEL_CORE2,
22553 					(result_idx % 2 == 0) ?
22554 					NPHY_RAIL_I : NPHY_RAIL_Q,
22555 					NPHY_RSSI_SEL_NB);
22556 			}
22557 		}
22558 
22559 	}
22560 
22561 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22562 
22563 		if ((rxcore_state & (1 << core)) == 0)
22564 			continue;
22565 
22566 		for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22567 			if (wb_cnt == 0) {
22568 				rssi_type = NPHY_RSSI_SEL_W1;
22569 				target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22570 			} else {
22571 				rssi_type = NPHY_RSSI_SEL_W2;
22572 				target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22573 			}
22574 
22575 			wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22576 						       core ==
22577 						       PHY_CORE_0 ?
22578 						       RADIO_MIMO_CORESEL_CORE1
22579 						       :
22580 						       RADIO_MIMO_CORESEL_CORE2,
22581 						       NPHY_RAIL_I, rssi_type);
22582 			wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22583 						       core ==
22584 						       PHY_CORE_0 ?
22585 						       RADIO_MIMO_CORESEL_CORE1
22586 						       :
22587 						       RADIO_MIMO_CORESEL_CORE2,
22588 						       NPHY_RAIL_Q, rssi_type);
22589 
22590 			wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22591 					       NPHY_RSSICAL_NPOLL);
22592 
22593 			for (result_idx = 0; result_idx < 4; result_idx++) {
22594 				if (core == result_idx / 2) {
22595 					fine_digital_offset[result_idx] =
22596 						(target_code *
22597 						 NPHY_RSSICAL_NPOLL) -
22598 						poll_result_core[result_idx];
22599 					if (fine_digital_offset[result_idx] <
22600 					    0) {
22601 						fine_digital_offset[result_idx]
22602 							= abs(
22603 							    fine_digital_offset
22604 							    [result_idx]);
22605 						fine_digital_offset[result_idx]
22606 							+= (NPHY_RSSICAL_NPOLL
22607 							    / 2);
22608 						fine_digital_offset[result_idx]
22609 							/= NPHY_RSSICAL_NPOLL;
22610 						fine_digital_offset[result_idx]
22611 							= -fine_digital_offset
22612 								[result_idx];
22613 					} else {
22614 						fine_digital_offset[result_idx]
22615 							+= (NPHY_RSSICAL_NPOLL
22616 							    / 2);
22617 						fine_digital_offset[result_idx]
22618 							/= NPHY_RSSICAL_NPOLL;
22619 					}
22620 
22621 					wlc_phy_scale_offset_rssi_nphy(
22622 						pi, 0x0,
22623 						(s8)
22624 						fine_digital_offset
22625 						[core *
22626 						 2],
22627 						(core == PHY_CORE_0) ?
22628 						RADIO_MIMO_CORESEL_CORE1 :
22629 						RADIO_MIMO_CORESEL_CORE2,
22630 						(result_idx % 2 == 0) ?
22631 						NPHY_RAIL_I :
22632 						NPHY_RAIL_Q,
22633 						rssi_type);
22634 				}
22635 			}
22636 
22637 		}
22638 	}
22639 
22640 	write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22641 	write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22642 
22643 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22644 
22645 	mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22646 	mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22647 	mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22648 
22649 	mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22650 	mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22651 	mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22652 
22653 	write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22654 	write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22655 	write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22656 	write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22657 	write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22658 	write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22659 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22660 		write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22661 		write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22662 		write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22663 		write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22664 	}
22665 	write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22666 	write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22667 	write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22668 	write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22669 	write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22670 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22671 		write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22672 		write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22673 		write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22674 		write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22675 	}
22676 	write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22677 	write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22678 
22679 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
22680 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22681 			pi->rssical_cache.rssical_radio_regs_2G[0] =
22682 				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22683 			pi->rssical_cache.rssical_radio_regs_2G[1] =
22684 				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22685 		} else {
22686 			pi->rssical_cache.rssical_radio_regs_2G[0] =
22687 				read_radio_reg(pi,
22688 					       RADIO_2056_RX_RSSI_MISC |
22689 					       RADIO_2056_RX0);
22690 			pi->rssical_cache.rssical_radio_regs_2G[1] =
22691 				read_radio_reg(pi,
22692 					       RADIO_2056_RX_RSSI_MISC |
22693 					       RADIO_2056_RX1);
22694 		}
22695 
22696 		pi->rssical_cache.rssical_phyregs_2G[0] =
22697 			read_phy_reg(pi, 0x1a6);
22698 		pi->rssical_cache.rssical_phyregs_2G[1] =
22699 			read_phy_reg(pi, 0x1ac);
22700 		pi->rssical_cache.rssical_phyregs_2G[2] =
22701 			read_phy_reg(pi, 0x1b2);
22702 		pi->rssical_cache.rssical_phyregs_2G[3] =
22703 			read_phy_reg(pi, 0x1b8);
22704 		pi->rssical_cache.rssical_phyregs_2G[4] =
22705 			read_phy_reg(pi, 0x1a4);
22706 		pi->rssical_cache.rssical_phyregs_2G[5] =
22707 			read_phy_reg(pi, 0x1aa);
22708 		pi->rssical_cache.rssical_phyregs_2G[6] =
22709 			read_phy_reg(pi, 0x1b0);
22710 		pi->rssical_cache.rssical_phyregs_2G[7] =
22711 			read_phy_reg(pi, 0x1b6);
22712 		pi->rssical_cache.rssical_phyregs_2G[8] =
22713 			read_phy_reg(pi, 0x1a5);
22714 		pi->rssical_cache.rssical_phyregs_2G[9] =
22715 			read_phy_reg(pi, 0x1ab);
22716 		pi->rssical_cache.rssical_phyregs_2G[10] =
22717 			read_phy_reg(pi, 0x1b1);
22718 		pi->rssical_cache.rssical_phyregs_2G[11] =
22719 			read_phy_reg(pi, 0x1b7);
22720 
22721 		pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22722 	} else {
22723 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22724 			pi->rssical_cache.rssical_radio_regs_5G[0] =
22725 				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22726 			pi->rssical_cache.rssical_radio_regs_5G[1] =
22727 				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22728 		} else {
22729 			pi->rssical_cache.rssical_radio_regs_5G[0] =
22730 				read_radio_reg(pi,
22731 					       RADIO_2056_RX_RSSI_MISC |
22732 					       RADIO_2056_RX0);
22733 			pi->rssical_cache.rssical_radio_regs_5G[1] =
22734 				read_radio_reg(pi,
22735 					       RADIO_2056_RX_RSSI_MISC |
22736 					       RADIO_2056_RX1);
22737 		}
22738 
22739 		pi->rssical_cache.rssical_phyregs_5G[0] =
22740 			read_phy_reg(pi, 0x1a6);
22741 		pi->rssical_cache.rssical_phyregs_5G[1] =
22742 			read_phy_reg(pi, 0x1ac);
22743 		pi->rssical_cache.rssical_phyregs_5G[2] =
22744 			read_phy_reg(pi, 0x1b2);
22745 		pi->rssical_cache.rssical_phyregs_5G[3] =
22746 			read_phy_reg(pi, 0x1b8);
22747 		pi->rssical_cache.rssical_phyregs_5G[4] =
22748 			read_phy_reg(pi, 0x1a4);
22749 		pi->rssical_cache.rssical_phyregs_5G[5] =
22750 			read_phy_reg(pi, 0x1aa);
22751 		pi->rssical_cache.rssical_phyregs_5G[6] =
22752 			read_phy_reg(pi, 0x1b0);
22753 		pi->rssical_cache.rssical_phyregs_5G[7] =
22754 			read_phy_reg(pi, 0x1b6);
22755 		pi->rssical_cache.rssical_phyregs_5G[8] =
22756 			read_phy_reg(pi, 0x1a5);
22757 		pi->rssical_cache.rssical_phyregs_5G[9] =
22758 			read_phy_reg(pi, 0x1ab);
22759 		pi->rssical_cache.rssical_phyregs_5G[10] =
22760 			read_phy_reg(pi, 0x1b1);
22761 		pi->rssical_cache.rssical_phyregs_5G[11] =
22762 			read_phy_reg(pi, 0x1b7);
22763 
22764 		pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22765 	}
22766 
22767 	wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22768 	wlc_phy_clip_det_nphy(pi, 1, clip_state);
22769 }
22770 
wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy * pi,u8 rssi_type)22771 static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
22772 {
22773 	s32 target_code;
22774 	u16 classif_state;
22775 	u16 clip_state[2];
22776 	u16 rssi_ctrl_state[2], pd_state[2];
22777 	u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
22778 	u16 rfctrlintc_override_val;
22779 	u16 clip_off[] = { 0xffff, 0xffff };
22780 	u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
22781 	u8 vcm, min_vcm, vcm_tmp[4];
22782 	u8 vcm_final[4] = { 0, 0, 0, 0 };
22783 	u8 result_idx, ctr;
22784 	s32 poll_results[4][4] = {
22785 		{0, 0, 0, 0},
22786 		{0, 0, 0, 0},
22787 		{0, 0, 0, 0},
22788 		{0, 0, 0, 0}
22789 	};
22790 	s32 poll_miniq[4][2] = {
22791 		{0, 0},
22792 		{0, 0},
22793 		{0, 0},
22794 		{0, 0}
22795 	};
22796 	s32 min_d, curr_d;
22797 	s32 fine_digital_offset[4];
22798 	s32 poll_results_min[4] = { 0, 0, 0, 0 };
22799 	s32 min_poll;
22800 
22801 	switch (rssi_type) {
22802 	case NPHY_RSSI_SEL_NB:
22803 		target_code = NPHY_RSSICAL_NB_TARGET;
22804 		break;
22805 	case NPHY_RSSI_SEL_W1:
22806 		target_code = NPHY_RSSICAL_W1_TARGET;
22807 		break;
22808 	case NPHY_RSSI_SEL_W2:
22809 		target_code = NPHY_RSSICAL_W2_TARGET;
22810 		break;
22811 	default:
22812 		return;
22813 	}
22814 
22815 	classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22816 	wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22817 	wlc_phy_clip_det_nphy(pi, 0, clip_state);
22818 	wlc_phy_clip_det_nphy(pi, 1, clip_off);
22819 
22820 	rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
22821 	rfctrlintc_override_val =
22822 		CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
22823 
22824 	rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
22825 	rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
22826 	write_phy_reg(pi, 0x91, rfctrlintc_override_val);
22827 	write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
22828 
22829 	rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
22830 	rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
22831 	write_phy_reg(pi, 0x92, rfctrlintc_override_val);
22832 	write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
22833 
22834 	pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
22835 		  RADIO_2055_WBRSSI_G2_PD;
22836 	pd_state[0] =
22837 		read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
22838 	pd_state[1] =
22839 		read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
22840 	mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
22841 	mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
22842 	rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
22843 			 RADIO_2055_WBRSSI_G2_SEL;
22844 	rssi_ctrl_state[0] =
22845 		read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
22846 	rssi_ctrl_state[1] =
22847 		read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
22848 	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22849 
22850 	wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22851 				       NPHY_RAIL_I, rssi_type);
22852 	wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22853 				       NPHY_RAIL_Q, rssi_type);
22854 
22855 	for (vcm = 0; vcm < 4; vcm++) {
22856 
22857 		vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
22858 		if (rssi_type != NPHY_RSSI_SEL_W2)
22859 			wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
22860 
22861 		wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
22862 				       NPHY_RSSICAL_NPOLL);
22863 
22864 		if ((rssi_type == NPHY_RSSI_SEL_W1)
22865 		    || (rssi_type == NPHY_RSSI_SEL_W2)) {
22866 			for (ctr = 0; ctr < 2; ctr++)
22867 				poll_miniq[vcm][ctr] =
22868 					min(poll_results[vcm][ctr * 2 + 0],
22869 					    poll_results[vcm][ctr * 2 + 1]);
22870 		}
22871 	}
22872 
22873 	for (result_idx = 0; result_idx < 4; result_idx++) {
22874 		min_d = NPHY_RSSICAL_MAXD;
22875 		min_vcm = 0;
22876 		min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
22877 		for (vcm = 0; vcm < 4; vcm++) {
22878 			curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
22879 				      poll_results[vcm][result_idx] :
22880 				      poll_miniq[vcm][result_idx / 2]) -
22881 				     (target_code * NPHY_RSSICAL_NPOLL));
22882 			if (curr_d < min_d) {
22883 				min_d = curr_d;
22884 				min_vcm = vcm;
22885 			}
22886 			if (poll_results[vcm][result_idx] < min_poll)
22887 				min_poll = poll_results[vcm][result_idx];
22888 		}
22889 		vcm_final[result_idx] = min_vcm;
22890 		poll_results_min[result_idx] = min_poll;
22891 	}
22892 
22893 	if (rssi_type != NPHY_RSSI_SEL_W2)
22894 		wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
22895 
22896 	for (result_idx = 0; result_idx < 4; result_idx++) {
22897 		fine_digital_offset[result_idx] =
22898 			(target_code * NPHY_RSSICAL_NPOLL) -
22899 			poll_results[vcm_final[result_idx]][result_idx];
22900 		if (fine_digital_offset[result_idx] < 0) {
22901 			fine_digital_offset[result_idx] =
22902 				abs(fine_digital_offset[result_idx]);
22903 			fine_digital_offset[result_idx] +=
22904 				(NPHY_RSSICAL_NPOLL / 2);
22905 			fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
22906 			fine_digital_offset[result_idx] =
22907 				-fine_digital_offset[result_idx];
22908 		} else {
22909 			fine_digital_offset[result_idx] +=
22910 				(NPHY_RSSICAL_NPOLL / 2);
22911 			fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
22912 		}
22913 
22914 		if (poll_results_min[result_idx] ==
22915 		    NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22916 			fine_digital_offset[result_idx] =
22917 				(target_code - NPHY_RSSICAL_MAXREAD - 1);
22918 
22919 		wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
22920 					       (s8)
22921 					       fine_digital_offset[result_idx],
22922 					       (result_idx / 2 ==
22923 						0) ? RADIO_MIMO_CORESEL_CORE1 :
22924 					       RADIO_MIMO_CORESEL_CORE2,
22925 					       (result_idx % 2 ==
22926 						0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
22927 					       rssi_type);
22928 	}
22929 
22930 	mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
22931 	mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
22932 	if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
22933 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22934 				     NPHY_RSSI_SEL_NB);
22935 	else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
22936 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22937 				     NPHY_RSSI_SEL_W1);
22938 	else /* RADIO_2055_WBRSSI_G2_SEL */
22939 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22940 				     NPHY_RSSI_SEL_W2);
22941 	if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
22942 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22943 				     NPHY_RSSI_SEL_NB);
22944 	else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
22945 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22946 				     NPHY_RSSI_SEL_W1);
22947 	else /* RADIO_2055_WBRSSI_G1_SEL */
22948 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22949 				     NPHY_RSSI_SEL_W2);
22950 	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
22951 
22952 	write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
22953 	write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
22954 	write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
22955 	write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
22956 
22957 	wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22958 	wlc_phy_clip_det_nphy(pi, 1, clip_state);
22959 
22960 	wlc_phy_resetcca_nphy(pi);
22961 }
22962 
wlc_phy_rssi_cal_nphy(struct brcms_phy * pi)22963 void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
22964 {
22965 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22966 		wlc_phy_rssi_cal_nphy_rev3(pi);
22967 	} else {
22968 		wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
22969 		wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
22970 		wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
22971 	}
22972 }
22973 
22974 int
wlc_phy_rssi_compute_nphy(struct brcms_phy * pi,struct d11rxhdr * rxh)22975 wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
22976 {
22977 	s16 rxpwr, rxpwr0, rxpwr1;
22978 	s16 phyRx2_l;
22979 
22980 	rxpwr = 0;
22981 	rxpwr0 = rxh->PhyRxStatus_1 & PRXS1_nphy_PWR0_MASK;
22982 	rxpwr1 = (rxh->PhyRxStatus_1 & PRXS1_nphy_PWR1_MASK) >> 8;
22983 
22984 	if (rxpwr0 > 127)
22985 		rxpwr0 -= 256;
22986 	if (rxpwr1 > 127)
22987 		rxpwr1 -= 256;
22988 
22989 	phyRx2_l = rxh->PhyRxStatus_2 & 0x00ff;
22990 	if (phyRx2_l > 127)
22991 		phyRx2_l -= 256;
22992 
22993 	if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
22994 		rxpwr0 = rxpwr1;
22995 		rxpwr1 = phyRx2_l;
22996 	}
22997 
22998 	if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
22999 		rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23000 	else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23001 		rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23002 	else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23003 		rxpwr = (rxpwr0 + rxpwr1) >> 1;
23004 
23005 	return rxpwr;
23006 }
23007 
23008 static void
wlc_phy_loadsampletable_nphy(struct brcms_phy * pi,struct cordic_iq * tone_buf,u16 num_samps)23009 wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23010 			     u16 num_samps)
23011 {
23012 	u16 t;
23013 	u32 *data_buf = NULL;
23014 
23015 	data_buf = kmalloc_array(num_samps, sizeof(u32), GFP_ATOMIC);
23016 	if (data_buf == NULL)
23017 		return;
23018 
23019 	if (pi->phyhang_avoid)
23020 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
23021 
23022 	for (t = 0; t < num_samps; t++)
23023 		data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23024 			      (((unsigned int)tone_buf[t].q) & 0x3ff);
23025 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23026 				 data_buf);
23027 
23028 	kfree(data_buf);
23029 
23030 	if (pi->phyhang_avoid)
23031 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
23032 }
23033 
23034 static u16
wlc_phy_gen_load_samples_nphy(struct brcms_phy * pi,u32 f_kHz,u16 max_val,u8 dac_test_mode)23035 wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23036 			      u8 dac_test_mode)
23037 {
23038 	u8 phy_bw, is_phybw40;
23039 	u16 num_samps, t, spur;
23040 	s32 theta = 0, rot = 0;
23041 	u32 tbl_len;
23042 	struct cordic_iq *tone_buf = NULL;
23043 
23044 	is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23045 	phy_bw = (is_phybw40 == 1) ? 40 : 20;
23046 	tbl_len = (phy_bw << 3);
23047 
23048 	if (dac_test_mode == 1) {
23049 		spur = read_phy_reg(pi, 0x01);
23050 		spur = (spur >> 15) & 1;
23051 		phy_bw = (spur == 1) ? 82 : 80;
23052 		phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23053 
23054 		tbl_len = (phy_bw << 1);
23055 	}
23056 
23057 	tone_buf = kmalloc_array(tbl_len, sizeof(struct cordic_iq),
23058 				 GFP_ATOMIC);
23059 	if (tone_buf == NULL)
23060 		return 0;
23061 
23062 	num_samps = (u16) tbl_len;
23063 	rot = ((f_kHz * 36) / phy_bw) / 100;
23064 	theta = 0;
23065 
23066 	for (t = 0; t < num_samps; t++) {
23067 
23068 		tone_buf[t] = cordic_calc_iq(theta);
23069 
23070 		theta += rot;
23071 
23072 		tone_buf[t].q = (s32)CORDIC_FLOAT(tone_buf[t].q * max_val);
23073 		tone_buf[t].i = (s32)CORDIC_FLOAT(tone_buf[t].i * max_val);
23074 	}
23075 
23076 	wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23077 
23078 	kfree(tone_buf);
23079 
23080 	return num_samps;
23081 }
23082 
23083 static void
wlc_phy_runsamples_nphy(struct brcms_phy * pi,u16 num_samps,u16 loops,u16 wait,u8 iqmode,u8 dac_test_mode,bool modify_bbmult)23084 wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23085 			u16 wait, u8 iqmode, u8 dac_test_mode,
23086 			bool modify_bbmult)
23087 {
23088 	u16 bb_mult;
23089 	u8 phy_bw, sample_cmd;
23090 	u16 orig_RfseqCoreActv;
23091 	u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4;
23092 
23093 	if (pi->phyhang_avoid)
23094 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
23095 
23096 	phy_bw = 20;
23097 	if (CHSPEC_IS40(pi->radio_chanspec))
23098 		phy_bw = 40;
23099 
23100 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23101 
23102 		lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23103 		lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23104 		if (!(lpf_bw_ctl_override3 | lpf_bw_ctl_override4)) {
23105 			wlc_phy_rfctrl_override_nphy_rev7(
23106 				pi,
23107 				(0x1 << 7),
23108 				wlc_phy_read_lpf_bw_ctl_nphy
23109 					(pi,
23110 					0), 0, 0,
23111 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
23112 
23113 			pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23114 		}
23115 		read_phy_reg(pi, 0x340); /* lpf_bw_ctl_miscreg3 */
23116 		read_phy_reg(pi, 0x341); /* lpf_bw_ctl_miscreg4 */
23117 	}
23118 
23119 	if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23120 
23121 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23122 					&bb_mult);
23123 		pi->nphy_bb_mult_save =
23124 			BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23125 	}
23126 
23127 	if (modify_bbmult) {
23128 		bb_mult = (phy_bw == 20) ? 100 : 71;
23129 		bb_mult = (bb_mult << 8) + bb_mult;
23130 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23131 					 &bb_mult);
23132 	}
23133 
23134 	if (pi->phyhang_avoid)
23135 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
23136 
23137 	write_phy_reg(pi, 0xc6, num_samps - 1);
23138 
23139 	if (loops != 0xffff)
23140 		write_phy_reg(pi, 0xc4, loops - 1);
23141 	else
23142 		write_phy_reg(pi, 0xc4, loops);
23143 
23144 	write_phy_reg(pi, 0xc5, wait);
23145 
23146 	orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23147 	or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23148 	if (iqmode) {
23149 
23150 		and_phy_reg(pi, 0xc2, 0x7FFF);
23151 
23152 		or_phy_reg(pi, 0xc2, 0x8000);
23153 	} else {
23154 
23155 		sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23156 		write_phy_reg(pi, 0xc3, sample_cmd);
23157 	}
23158 
23159 	SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23160 
23161 	write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23162 }
23163 
23164 int
wlc_phy_tx_tone_nphy(struct brcms_phy * pi,u32 f_kHz,u16 max_val,u8 iqmode,u8 dac_test_mode,bool modify_bbmult)23165 wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23166 		     u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23167 {
23168 	u16 num_samps;
23169 	u16 loops = 0xffff;
23170 	u16 wait = 0;
23171 
23172 	num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23173 						  dac_test_mode);
23174 	if (num_samps == 0)
23175 		return -EBADE;
23176 
23177 	wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23178 				dac_test_mode, modify_bbmult);
23179 
23180 	return 0;
23181 }
23182 
wlc_phy_stopplayback_nphy(struct brcms_phy * pi)23183 void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23184 {
23185 	u16 playback_status;
23186 	u16 bb_mult;
23187 
23188 	if (pi->phyhang_avoid)
23189 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
23190 
23191 	playback_status = read_phy_reg(pi, 0xc7);
23192 	if (playback_status & 0x1)
23193 		or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23194 	else if (playback_status & 0x2)
23195 		and_phy_reg(pi, 0xc2,
23196 			    0xffff & ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23197 
23198 	and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23199 
23200 	if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23201 
23202 		bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23203 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23204 					 &bb_mult);
23205 
23206 		pi->nphy_bb_mult_save = 0;
23207 	}
23208 
23209 	if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23210 		if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23211 			wlc_phy_rfctrl_override_nphy_rev7(
23212 				pi,
23213 				(0x1 << 7),
23214 				0, 0, 1,
23215 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
23216 			pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23217 		}
23218 	}
23219 
23220 	if (pi->phyhang_avoid)
23221 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
23222 }
23223 
brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy * pi)23224 static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23225 {
23226 	u32 *tx_pwrctrl_tbl = NULL;
23227 	uint phyrev = pi->pubpi.phy_rev;
23228 
23229 	if (PHY_IPA(pi)) {
23230 		tx_pwrctrl_tbl =
23231 			wlc_phy_get_ipa_gaintbl_nphy(pi);
23232 	} else {
23233 		if (CHSPEC_IS5G(pi->radio_chanspec)) {
23234 			if (NREV_IS(phyrev, 3))
23235 				tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23236 			else if (NREV_IS(phyrev, 4))
23237 				tx_pwrctrl_tbl =
23238 					(pi->srom_fem5g.extpagain == 3) ?
23239 					nphy_tpc_5GHz_txgain_HiPwrEPA :
23240 					nphy_tpc_5GHz_txgain_rev4;
23241 			else
23242 				tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23243 		} else {
23244 			if (NREV_GE(phyrev, 7)) {
23245 				if (pi->pubpi.radiorev == 3)
23246 					tx_pwrctrl_tbl =
23247 						nphy_tpc_txgain_epa_2057rev3;
23248 				else if (pi->pubpi.radiorev == 5)
23249 					tx_pwrctrl_tbl =
23250 						nphy_tpc_txgain_epa_2057rev5;
23251 			} else {
23252 				if (NREV_GE(phyrev, 5) &&
23253 				   (pi->srom_fem2g.extpagain ==	3))
23254 					tx_pwrctrl_tbl =
23255 						nphy_tpc_txgain_HiPwrEPA;
23256 				else
23257 					tx_pwrctrl_tbl =
23258 						nphy_tpc_txgain_rev3;
23259 			}
23260 		}
23261 	}
23262 	return tx_pwrctrl_tbl;
23263 }
23264 
wlc_phy_get_tx_gain_nphy(struct brcms_phy * pi)23265 struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23266 {
23267 	u16 base_idx[2], curr_gain[2];
23268 	u8 core_no;
23269 	struct nphy_txgains target_gain;
23270 	u32 *tx_pwrctrl_tbl = NULL;
23271 
23272 	if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23273 		if (pi->phyhang_avoid)
23274 			wlc_phy_stay_in_carriersearch_nphy(pi, true);
23275 
23276 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23277 					curr_gain);
23278 
23279 		if (pi->phyhang_avoid)
23280 			wlc_phy_stay_in_carriersearch_nphy(pi, false);
23281 
23282 		for (core_no = 0; core_no < 2; core_no++) {
23283 			if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23284 				target_gain.ipa[core_no] =
23285 					curr_gain[core_no] & 0x0007;
23286 				target_gain.pad[core_no] =
23287 					((curr_gain[core_no] & 0x00F8) >> 3);
23288 				target_gain.pga[core_no] =
23289 					((curr_gain[core_no] & 0x0F00) >> 8);
23290 				target_gain.txgm[core_no] =
23291 					((curr_gain[core_no] & 0x7000) >> 12);
23292 				target_gain.txlpf[core_no] =
23293 					((curr_gain[core_no] & 0x8000) >> 15);
23294 			} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23295 				target_gain.ipa[core_no] =
23296 					curr_gain[core_no] & 0x000F;
23297 				target_gain.pad[core_no] =
23298 					((curr_gain[core_no] & 0x00F0) >> 4);
23299 				target_gain.pga[core_no] =
23300 					((curr_gain[core_no] & 0x0F00) >> 8);
23301 				target_gain.txgm[core_no] =
23302 					((curr_gain[core_no] & 0x7000) >> 12);
23303 			} else {
23304 				target_gain.ipa[core_no] =
23305 					curr_gain[core_no] & 0x0003;
23306 				target_gain.pad[core_no] =
23307 					((curr_gain[core_no] & 0x000C) >> 2);
23308 				target_gain.pga[core_no] =
23309 					((curr_gain[core_no] & 0x0070) >> 4);
23310 				target_gain.txgm[core_no] =
23311 					((curr_gain[core_no] & 0x0380) >> 7);
23312 			}
23313 		}
23314 	} else {
23315 		uint phyrev = pi->pubpi.phy_rev;
23316 
23317 		base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23318 		base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23319 		for (core_no = 0; core_no < 2; core_no++) {
23320 			if (NREV_GE(phyrev, 3)) {
23321 				tx_pwrctrl_tbl =
23322 					brcms_phy_get_tx_pwrctrl_tbl(pi);
23323 				if (NREV_GE(phyrev, 7)) {
23324 					target_gain.ipa[core_no] =
23325 						(tx_pwrctrl_tbl
23326 						 [base_idx[core_no]]
23327 						 >> 16) & 0x7;
23328 					target_gain.pad[core_no] =
23329 						(tx_pwrctrl_tbl
23330 						 [base_idx[core_no]]
23331 						 >> 19) & 0x1f;
23332 					target_gain.pga[core_no] =
23333 						(tx_pwrctrl_tbl
23334 						 [base_idx[core_no]]
23335 						 >> 24) & 0xf;
23336 					target_gain.txgm[core_no] =
23337 						(tx_pwrctrl_tbl
23338 						 [base_idx[core_no]]
23339 						 >> 28) & 0x7;
23340 					target_gain.txlpf[core_no] =
23341 						(tx_pwrctrl_tbl
23342 						 [base_idx[core_no]]
23343 						 >> 31) & 0x1;
23344 				} else {
23345 					target_gain.ipa[core_no] =
23346 						(tx_pwrctrl_tbl
23347 						 [base_idx[core_no]]
23348 						 >> 16) & 0xf;
23349 					target_gain.pad[core_no] =
23350 						(tx_pwrctrl_tbl
23351 						 [base_idx[core_no]]
23352 						 >> 20) & 0xf;
23353 					target_gain.pga[core_no] =
23354 						(tx_pwrctrl_tbl
23355 						 [base_idx[core_no]]
23356 						 >> 24) & 0xf;
23357 					target_gain.txgm[core_no] =
23358 						(tx_pwrctrl_tbl
23359 						[base_idx[core_no]]
23360 						 >> 28) & 0x7;
23361 				}
23362 			} else {
23363 				target_gain.ipa[core_no] =
23364 					(nphy_tpc_txgain[base_idx[core_no]] >>
23365 					 16) & 0x3;
23366 				target_gain.pad[core_no] =
23367 					(nphy_tpc_txgain[base_idx[core_no]] >>
23368 					 18) & 0x3;
23369 				target_gain.pga[core_no] =
23370 					(nphy_tpc_txgain[base_idx[core_no]] >>
23371 					 20) & 0x7;
23372 				target_gain.txgm[core_no] =
23373 					(nphy_tpc_txgain[base_idx[core_no]] >>
23374 					 23) & 0x7;
23375 			}
23376 		}
23377 	}
23378 
23379 	return target_gain;
23380 }
23381 
23382 static void
wlc_phy_iqcal_gainparams_nphy(struct brcms_phy * pi,u16 core_no,struct nphy_txgains target_gain,struct nphy_iqcal_params * params)23383 wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23384 			      struct nphy_txgains target_gain,
23385 			      struct nphy_iqcal_params *params)
23386 {
23387 	u8 k;
23388 	u16 gain_index;
23389 	u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23390 
23391 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23392 		if (NREV_GE(pi->pubpi.phy_rev, 7))
23393 			params->txlpf = target_gain.txlpf[core_no];
23394 
23395 		params->txgm = target_gain.txgm[core_no];
23396 		params->pga = target_gain.pga[core_no];
23397 		params->pad = target_gain.pad[core_no];
23398 		params->ipa = target_gain.ipa[core_no];
23399 		if (NREV_GE(pi->pubpi.phy_rev, 7))
23400 			params->cal_gain =
23401 				((params->txlpf << 15) | (params->txgm << 12) |
23402 				 (params->pga << 8) |
23403 				 (params->pad << 3) | (params->ipa));
23404 		else
23405 			params->cal_gain =
23406 				((params->txgm << 12) | (params->pga << 8) |
23407 				 (params->pad << 4) | (params->ipa));
23408 
23409 		params->ncorr[0] = 0x79;
23410 		params->ncorr[1] = 0x79;
23411 		params->ncorr[2] = 0x79;
23412 		params->ncorr[3] = 0x79;
23413 		params->ncorr[4] = 0x79;
23414 	} else {
23415 
23416 		gain_index = ((target_gain.pad[core_no] << 0) |
23417 			      (target_gain.pga[core_no] << 4) |
23418 			      (target_gain.txgm[core_no] << 8));
23419 
23420 		for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23421 			if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23422 			    gain_index)
23423 				break;
23424 		}
23425 
23426 		params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23427 		params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23428 		params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23429 		params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23430 				    (params->pad << 2));
23431 		params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23432 		params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23433 		params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23434 		params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23435 	}
23436 }
23437 
wlc_phy_txcal_radio_setup_nphy(struct brcms_phy * pi)23438 static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23439 {
23440 	u16 jtag_core, core;
23441 
23442 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23443 
23444 		for (core = 0; core <= 1; core++) {
23445 
23446 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23447 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23448 						TX_SSI_MASTER);
23449 
23450 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23451 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23452 						IQCAL_VCM_HG);
23453 
23454 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23455 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23456 						IQCAL_IDAC);
23457 
23458 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23459 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23460 						TSSI_VCM);
23461 
23462 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23463 
23464 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23465 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23466 						TX_SSI_MUX);
23467 
23468 			if (pi->pubpi.radiorev != 5)
23469 				pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23470 					READ_RADIO_REG3(pi, RADIO_2057, TX,
23471 							core,
23472 							TSSIA);
23473 
23474 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23475 			       READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23476 
23477 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23478 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23479 						TSSI_MISC1);
23480 
23481 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
23482 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23483 						 TX_SSI_MASTER, 0x0a);
23484 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23485 						 IQCAL_VCM_HG, 0x43);
23486 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23487 						 IQCAL_IDAC, 0x55);
23488 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23489 						 TSSI_VCM, 0x00);
23490 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23491 						 TSSIG, 0x00);
23492 				if (pi->use_int_tx_iqlo_cal_nphy) {
23493 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23494 							 core, TX_SSI_MUX, 0x4);
23495 					if (!(pi->
23496 					internal_tx_iqlo_cal_tapoff_intpa_nphy))
23497 						WRITE_RADIO_REG3(pi, RADIO_2057,
23498 								 TX, core,
23499 								 TSSIA, 0x31);
23500 					else
23501 						WRITE_RADIO_REG3(pi, RADIO_2057,
23502 								 TX, core,
23503 								 TSSIA, 0x21);
23504 				}
23505 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23506 						 TSSI_MISC1, 0x00);
23507 			} else {
23508 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23509 						 TX_SSI_MASTER, 0x06);
23510 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23511 						 IQCAL_VCM_HG, 0x43);
23512 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23513 						 IQCAL_IDAC, 0x55);
23514 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23515 						 TSSI_VCM, 0x00);
23516 
23517 				if (pi->pubpi.radiorev != 5)
23518 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23519 							 core, TSSIA, 0x00);
23520 				if (pi->use_int_tx_iqlo_cal_nphy) {
23521 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23522 							 core, TX_SSI_MUX,
23523 							 0x06);
23524 					if (!(pi->
23525 					internal_tx_iqlo_cal_tapoff_intpa_nphy))
23526 						WRITE_RADIO_REG3(pi, RADIO_2057,
23527 								 TX, core,
23528 								 TSSIG, 0x31);
23529 					else
23530 						WRITE_RADIO_REG3(pi, RADIO_2057,
23531 								 TX, core,
23532 								 TSSIG, 0x21);
23533 				}
23534 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23535 						 TSSI_MISC1, 0x00);
23536 			}
23537 		}
23538 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23539 
23540 		for (core = 0; core <= 1; core++) {
23541 			jtag_core =
23542 				(core ==
23543 				 PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23544 
23545 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23546 				read_radio_reg(pi,
23547 					       RADIO_2056_TX_TX_SSI_MASTER |
23548 					       jtag_core);
23549 
23550 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23551 				read_radio_reg(pi,
23552 					       RADIO_2056_TX_IQCAL_VCM_HG |
23553 					       jtag_core);
23554 
23555 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23556 				read_radio_reg(pi,
23557 					       RADIO_2056_TX_IQCAL_IDAC |
23558 					       jtag_core);
23559 
23560 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23561 				read_radio_reg(
23562 					pi,
23563 					RADIO_2056_TX_TSSI_VCM |
23564 					jtag_core);
23565 
23566 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23567 				read_radio_reg(pi,
23568 					       RADIO_2056_TX_TX_AMP_DET |
23569 					       jtag_core);
23570 
23571 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23572 				read_radio_reg(pi,
23573 					       RADIO_2056_TX_TX_SSI_MUX |
23574 					       jtag_core);
23575 
23576 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23577 				read_radio_reg(pi,
23578 					       RADIO_2056_TX_TSSIA | jtag_core);
23579 
23580 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23581 				read_radio_reg(pi,
23582 					       RADIO_2056_TX_TSSIG | jtag_core);
23583 
23584 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23585 				read_radio_reg(pi,
23586 					       RADIO_2056_TX_TSSI_MISC1 |
23587 					       jtag_core);
23588 
23589 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23590 				read_radio_reg(pi,
23591 					       RADIO_2056_TX_TSSI_MISC2 |
23592 					       jtag_core);
23593 
23594 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23595 				read_radio_reg(pi,
23596 					       RADIO_2056_TX_TSSI_MISC3 |
23597 					       jtag_core);
23598 
23599 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
23600 				write_radio_reg(pi,
23601 						RADIO_2056_TX_TX_SSI_MASTER |
23602 						jtag_core, 0x0a);
23603 				write_radio_reg(pi,
23604 						RADIO_2056_TX_IQCAL_VCM_HG |
23605 						jtag_core, 0x40);
23606 				write_radio_reg(pi,
23607 						RADIO_2056_TX_IQCAL_IDAC |
23608 						jtag_core, 0x55);
23609 				write_radio_reg(pi,
23610 						RADIO_2056_TX_TSSI_VCM |
23611 						jtag_core, 0x00);
23612 				write_radio_reg(pi,
23613 						RADIO_2056_TX_TX_AMP_DET |
23614 						jtag_core, 0x00);
23615 
23616 				if (PHY_IPA(pi)) {
23617 					write_radio_reg(
23618 						pi,
23619 						RADIO_2056_TX_TX_SSI_MUX
23620 						| jtag_core, 0x4);
23621 					write_radio_reg(pi,
23622 							RADIO_2056_TX_TSSIA |
23623 							jtag_core, 0x1);
23624 				} else {
23625 					write_radio_reg(
23626 						pi,
23627 						RADIO_2056_TX_TX_SSI_MUX
23628 						| jtag_core, 0x00);
23629 					write_radio_reg(pi,
23630 							RADIO_2056_TX_TSSIA |
23631 							jtag_core, 0x2f);
23632 				}
23633 				write_radio_reg(pi,
23634 						RADIO_2056_TX_TSSIG | jtag_core,
23635 						0x00);
23636 				write_radio_reg(pi,
23637 						RADIO_2056_TX_TSSI_MISC1 |
23638 						jtag_core, 0x00);
23639 
23640 				write_radio_reg(pi,
23641 						RADIO_2056_TX_TSSI_MISC2 |
23642 						jtag_core, 0x00);
23643 				write_radio_reg(pi,
23644 						RADIO_2056_TX_TSSI_MISC3 |
23645 						jtag_core, 0x00);
23646 			} else {
23647 				write_radio_reg(pi,
23648 						RADIO_2056_TX_TX_SSI_MASTER |
23649 						jtag_core, 0x06);
23650 				write_radio_reg(pi,
23651 						RADIO_2056_TX_IQCAL_VCM_HG |
23652 						jtag_core, 0x40);
23653 				write_radio_reg(pi,
23654 						RADIO_2056_TX_IQCAL_IDAC |
23655 						jtag_core, 0x55);
23656 				write_radio_reg(pi,
23657 						RADIO_2056_TX_TSSI_VCM |
23658 						jtag_core, 0x00);
23659 				write_radio_reg(pi,
23660 						RADIO_2056_TX_TX_AMP_DET |
23661 						jtag_core, 0x00);
23662 				write_radio_reg(pi,
23663 						RADIO_2056_TX_TSSIA | jtag_core,
23664 						0x00);
23665 
23666 				if (PHY_IPA(pi)) {
23667 
23668 					write_radio_reg(
23669 						pi,
23670 						RADIO_2056_TX_TX_SSI_MUX
23671 						| jtag_core, 0x06);
23672 					if (NREV_LT(pi->pubpi.phy_rev, 5))
23673 						write_radio_reg(
23674 							pi,
23675 							RADIO_2056_TX_TSSIG
23676 							| jtag_core,
23677 							0x11);
23678 					else
23679 						write_radio_reg(
23680 							pi,
23681 							RADIO_2056_TX_TSSIG
23682 							| jtag_core,
23683 							0x1);
23684 				} else {
23685 					write_radio_reg(
23686 						pi,
23687 						RADIO_2056_TX_TX_SSI_MUX
23688 						| jtag_core, 0x00);
23689 					write_radio_reg(pi,
23690 							RADIO_2056_TX_TSSIG |
23691 							jtag_core, 0x20);
23692 				}
23693 
23694 				write_radio_reg(pi,
23695 						RADIO_2056_TX_TSSI_MISC1 |
23696 						jtag_core, 0x00);
23697 				write_radio_reg(pi,
23698 						RADIO_2056_TX_TSSI_MISC2 |
23699 						jtag_core, 0x00);
23700 				write_radio_reg(pi,
23701 						RADIO_2056_TX_TSSI_MISC3 |
23702 						jtag_core, 0x00);
23703 			}
23704 		}
23705 	} else {
23706 
23707 		pi->tx_rx_cal_radio_saveregs[0] =
23708 			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23709 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23710 		pi->tx_rx_cal_radio_saveregs[1] =
23711 			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23712 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23713 
23714 		pi->tx_rx_cal_radio_saveregs[2] =
23715 			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23716 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23717 		pi->tx_rx_cal_radio_saveregs[3] =
23718 			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23719 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23720 
23721 		pi->tx_rx_cal_radio_saveregs[4] =
23722 			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23723 		pi->tx_rx_cal_radio_saveregs[5] =
23724 			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23725 
23726 		if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23727 		    0) {
23728 
23729 			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23730 			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23731 		} else {
23732 
23733 			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23734 			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23735 		}
23736 
23737 		if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23738 
23739 			or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23740 			or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23741 		} else {
23742 
23743 			and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23744 			and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23745 		}
23746 	}
23747 }
23748 
wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy * pi)23749 static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
23750 {
23751 	u16 jtag_core, core;
23752 
23753 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23754 		for (core = 0; core <= 1; core++) {
23755 
23756 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23757 					 TX_SSI_MASTER,
23758 					 pi->
23759 					 tx_rx_cal_radio_saveregs[(core * 11) +
23760 								  0]);
23761 
23762 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23763 					 pi->
23764 					 tx_rx_cal_radio_saveregs[(core * 11) +
23765 								  1]);
23766 
23767 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23768 					 pi->
23769 					 tx_rx_cal_radio_saveregs[(core * 11) +
23770 								  2]);
23771 
23772 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23773 					 pi->
23774 					 tx_rx_cal_radio_saveregs[(core * 11) +
23775 								  3]);
23776 
23777 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23778 					 pi->
23779 					 tx_rx_cal_radio_saveregs[(core * 11) +
23780 								  5]);
23781 
23782 			if (pi->pubpi.radiorev != 5)
23783 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23784 						 TSSIA,
23785 						 pi->tx_rx_cal_radio_saveregs
23786 							     [(core * 11) + 6]);
23787 
23788 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23789 					 pi->
23790 					 tx_rx_cal_radio_saveregs[(core * 11) +
23791 								  7]);
23792 
23793 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23794 					 pi->
23795 					 tx_rx_cal_radio_saveregs[(core * 11) +
23796 								  8]);
23797 		}
23798 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23799 		for (core = 0; core <= 1; core++) {
23800 			jtag_core = (core == PHY_CORE_0) ?
23801 				     RADIO_2056_TX0 : RADIO_2056_TX1;
23802 
23803 			write_radio_reg(pi,
23804 					RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23805 					pi->
23806 					tx_rx_cal_radio_saveregs[(core * 11) +
23807 								 0]);
23808 
23809 			write_radio_reg(pi,
23810 					RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23811 					pi->
23812 					tx_rx_cal_radio_saveregs[(core * 11) +
23813 								 1]);
23814 
23815 			write_radio_reg(pi,
23816 					RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23817 					pi->
23818 					tx_rx_cal_radio_saveregs[(core * 11) +
23819 								 2]);
23820 
23821 			write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23822 					pi->
23823 					tx_rx_cal_radio_saveregs[(core * 11) +
23824 								 3]);
23825 
23826 			write_radio_reg(pi,
23827 					RADIO_2056_TX_TX_AMP_DET | jtag_core,
23828 					pi->
23829 					tx_rx_cal_radio_saveregs[(core * 11) +
23830 								 4]);
23831 
23832 			write_radio_reg(pi,
23833 					RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23834 					pi->
23835 					tx_rx_cal_radio_saveregs[(core * 11) +
23836 								 5]);
23837 
23838 			write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23839 					pi->
23840 					tx_rx_cal_radio_saveregs[(core * 11) +
23841 								 6]);
23842 
23843 			write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23844 					pi->
23845 					tx_rx_cal_radio_saveregs[(core * 11) +
23846 								 7]);
23847 
23848 			write_radio_reg(pi,
23849 					RADIO_2056_TX_TSSI_MISC1 | jtag_core,
23850 					pi->
23851 					tx_rx_cal_radio_saveregs[(core * 11) +
23852 								 8]);
23853 
23854 			write_radio_reg(pi,
23855 					RADIO_2056_TX_TSSI_MISC2 | jtag_core,
23856 					pi->
23857 					tx_rx_cal_radio_saveregs[(core * 11) +
23858 								 9]);
23859 
23860 			write_radio_reg(pi,
23861 					RADIO_2056_TX_TSSI_MISC3 | jtag_core,
23862 					pi->
23863 					tx_rx_cal_radio_saveregs[(core * 11) +
23864 								 10]);
23865 		}
23866 	} else {
23867 
23868 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
23869 				pi->tx_rx_cal_radio_saveregs[0]);
23870 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
23871 				pi->tx_rx_cal_radio_saveregs[1]);
23872 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
23873 				pi->tx_rx_cal_radio_saveregs[2]);
23874 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
23875 				pi->tx_rx_cal_radio_saveregs[3]);
23876 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
23877 				pi->tx_rx_cal_radio_saveregs[4]);
23878 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
23879 				pi->tx_rx_cal_radio_saveregs[5]);
23880 	}
23881 }
23882 
wlc_phy_txcal_physetup_nphy(struct brcms_phy * pi)23883 static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
23884 {
23885 	u16 val, mask;
23886 
23887 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23888 		pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23889 		pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23890 
23891 		mask = ((0x3 << 8) | (0x3 << 10));
23892 		val = (0x2 << 8);
23893 		val |= (0x2 << 10);
23894 		mod_phy_reg(pi, 0xa6, mask, val);
23895 		mod_phy_reg(pi, 0xa7, mask, val);
23896 
23897 		val = read_phy_reg(pi, 0x8f);
23898 		pi->tx_rx_cal_phy_saveregs[2] = val;
23899 		val |= ((0x1 << 9) | (0x1 << 10));
23900 		write_phy_reg(pi, 0x8f, val);
23901 
23902 		val = read_phy_reg(pi, 0xa5);
23903 		pi->tx_rx_cal_phy_saveregs[3] = val;
23904 		val |= ((0x1 << 9) | (0x1 << 10));
23905 		write_phy_reg(pi, 0xa5, val);
23906 
23907 		pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
23908 		mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23909 
23910 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23911 					&val);
23912 		pi->tx_rx_cal_phy_saveregs[5] = val;
23913 		val = 0;
23914 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23915 					 &val);
23916 
23917 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23918 					&val);
23919 		pi->tx_rx_cal_phy_saveregs[6] = val;
23920 		val = 0;
23921 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23922 					 &val);
23923 
23924 		pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
23925 		pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
23926 
23927 		if (!(pi->use_int_tx_iqlo_cal_nphy))
23928 			wlc_phy_rfctrlintc_override_nphy(
23929 				pi,
23930 				NPHY_RfctrlIntc_override_PA,
23931 				1,
23932 				RADIO_MIMO_CORESEL_CORE1
23933 				|
23934 				RADIO_MIMO_CORESEL_CORE2);
23935 		else
23936 			wlc_phy_rfctrlintc_override_nphy(
23937 				pi,
23938 				NPHY_RfctrlIntc_override_PA,
23939 				0,
23940 				RADIO_MIMO_CORESEL_CORE1
23941 				|
23942 				RADIO_MIMO_CORESEL_CORE2);
23943 
23944 		wlc_phy_rfctrlintc_override_nphy(pi,
23945 						 NPHY_RfctrlIntc_override_TRSW,
23946 						 0x2, RADIO_MIMO_CORESEL_CORE1);
23947 		wlc_phy_rfctrlintc_override_nphy(pi,
23948 						 NPHY_RfctrlIntc_override_TRSW,
23949 						 0x8, RADIO_MIMO_CORESEL_CORE2);
23950 
23951 		pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
23952 		pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
23953 		mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
23954 			    0x29b, (0x1 << 0), (0) << 0);
23955 
23956 		mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
23957 			    0x29b, (0x1 << 0), (0) << 0);
23958 
23959 		if (NREV_IS(pi->pubpi.phy_rev, 7)
23960 		    || NREV_GE(pi->pubpi.phy_rev, 8))
23961 			wlc_phy_rfctrl_override_nphy_rev7(
23962 				pi, (0x1 << 7),
23963 				wlc_phy_read_lpf_bw_ctl_nphy
23964 					(pi,
23965 					0), 0, 0,
23966 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
23967 
23968 		if (pi->use_int_tx_iqlo_cal_nphy
23969 		    && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
23970 
23971 			if (NREV_IS(pi->pubpi.phy_rev, 7)) {
23972 
23973 				mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
23974 					      1 << 4);
23975 
23976 				if (CHSPEC_IS2G(pi->radio_chanspec)) {
23977 					mod_radio_reg(
23978 						pi,
23979 						RADIO_2057_PAD2G_TUNE_PUS_CORE0,
23980 						1, 0);
23981 					mod_radio_reg(
23982 						pi,
23983 						RADIO_2057_PAD2G_TUNE_PUS_CORE1,
23984 						1, 0);
23985 				} else {
23986 					mod_radio_reg(
23987 					     pi,
23988 					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
23989 					     1, 0);
23990 					mod_radio_reg(
23991 					     pi,
23992 					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
23993 					     1, 0);
23994 				}
23995 			} else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
23996 				wlc_phy_rfctrl_override_nphy_rev7(
23997 					pi,
23998 					(0x1 << 3), 0,
23999 					0x3, 0,
24000 					NPHY_REV7_RFCTRLOVERRIDE_ID0);
24001 			}
24002 		}
24003 	} else {
24004 		pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24005 		pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24006 
24007 		mask = ((0x3 << 12) | (0x3 << 14));
24008 		val = (0x2 << 12);
24009 		val |= (0x2 << 14);
24010 		mod_phy_reg(pi, 0xa6, mask, val);
24011 		mod_phy_reg(pi, 0xa7, mask, val);
24012 
24013 		val = read_phy_reg(pi, 0xa5);
24014 		pi->tx_rx_cal_phy_saveregs[2] = val;
24015 		val |= ((0x1 << 12) | (0x1 << 13));
24016 		write_phy_reg(pi, 0xa5, val);
24017 
24018 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24019 					&val);
24020 		pi->tx_rx_cal_phy_saveregs[3] = val;
24021 		val |= 0x2000;
24022 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24023 					 &val);
24024 
24025 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24026 					&val);
24027 		pi->tx_rx_cal_phy_saveregs[4] = val;
24028 		val |= 0x2000;
24029 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24030 					 &val);
24031 
24032 		pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24033 		pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24034 		val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24035 		write_phy_reg(pi, 0x91, val);
24036 		write_phy_reg(pi, 0x92, val);
24037 	}
24038 }
24039 
wlc_phy_txcal_phycleanup_nphy(struct brcms_phy * pi)24040 static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24041 {
24042 	u16 mask;
24043 
24044 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24045 		write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24046 		write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24047 		write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24048 		write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24049 		write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24050 
24051 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24052 					 &pi->tx_rx_cal_phy_saveregs[5]);
24053 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24054 					 &pi->tx_rx_cal_phy_saveregs[6]);
24055 
24056 		write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24057 		write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24058 
24059 		write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24060 		write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24061 
24062 		if (NREV_IS(pi->pubpi.phy_rev, 7)
24063 		    || NREV_GE(pi->pubpi.phy_rev, 8))
24064 			wlc_phy_rfctrl_override_nphy_rev7(
24065 				pi, (0x1 << 7), 0, 0,
24066 				1,
24067 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
24068 
24069 		wlc_phy_resetcca_nphy(pi);
24070 
24071 		if (pi->use_int_tx_iqlo_cal_nphy
24072 		    && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24073 
24074 			if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24075 				if (CHSPEC_IS2G(pi->radio_chanspec)) {
24076 					mod_radio_reg(
24077 						pi,
24078 						RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24079 						1, 1);
24080 					mod_radio_reg(
24081 						pi,
24082 						RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24083 						1, 1);
24084 				} else {
24085 					mod_radio_reg(
24086 					     pi,
24087 					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24088 					     1, 1);
24089 					mod_radio_reg(
24090 					     pi,
24091 					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24092 					     1, 1);
24093 				}
24094 
24095 				mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24096 					      0);
24097 			} else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24098 				wlc_phy_rfctrl_override_nphy_rev7(
24099 					pi,
24100 					(0x1 << 3), 0,
24101 					0x3, 1,
24102 					NPHY_REV7_RFCTRLOVERRIDE_ID0);
24103 			}
24104 		}
24105 	} else {
24106 		mask = ((0x3 << 12) | (0x3 << 14));
24107 		mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24108 		mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24109 		write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24110 
24111 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24112 					 &pi->tx_rx_cal_phy_saveregs[3]);
24113 
24114 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24115 					 &pi->tx_rx_cal_phy_saveregs[4]);
24116 
24117 		write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24118 		write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24119 	}
24120 }
24121 
24122 void
wlc_phy_est_tonepwr_nphy(struct brcms_phy * pi,s32 * qdBm_pwrbuf,u8 num_samps)24123 wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24124 {
24125 	u16 tssi_reg;
24126 	s32 temp, pwrindex[2];
24127 	s32 idle_tssi[2];
24128 	s32 rssi_buf[4];
24129 	s32 tssival[2];
24130 	u8 tssi_type;
24131 
24132 	tssi_reg = read_phy_reg(pi, 0x1e9);
24133 
24134 	temp = (s32) (tssi_reg & 0x3f);
24135 	idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24136 
24137 	temp = (s32) ((tssi_reg >> 8) & 0x3f);
24138 	idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24139 
24140 	tssi_type =
24141 		CHSPEC_IS5G(pi->radio_chanspec) ?
24142 		(u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24143 
24144 	wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24145 
24146 	tssival[0] = rssi_buf[0] / ((s32) num_samps);
24147 	tssival[1] = rssi_buf[2] / ((s32) num_samps);
24148 
24149 	pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24150 	pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24151 
24152 	if (pwrindex[0] < 0)
24153 		pwrindex[0] = 0;
24154 	else if (pwrindex[0] > 63)
24155 		pwrindex[0] = 63;
24156 
24157 	if (pwrindex[1] < 0)
24158 		pwrindex[1] = 0;
24159 	else if (pwrindex[1] > 63)
24160 		pwrindex[1] = 63;
24161 
24162 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24163 				(u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24164 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24165 				(u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24166 }
24167 
wlc_phy_update_txcal_ladder_nphy(struct brcms_phy * pi,u16 core)24168 static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24169 {
24170 	int index;
24171 	u32 bbmult_scale;
24172 	u16 bbmult;
24173 	u16 tblentry;
24174 
24175 	static const struct nphy_txiqcal_ladder ladder_lo[] = {
24176 		{3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24177 		{25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24178 		{25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24179 	};
24180 
24181 	static const struct nphy_txiqcal_ladder ladder_iq[] = {
24182 		{3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24183 		{25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24184 		{100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24185 	};
24186 
24187 	bbmult = (core == PHY_CORE_0) ?
24188 		 ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24189 		 (pi->nphy_txcal_bbmult & 0xff);
24190 
24191 	for (index = 0; index < 18; index++) {
24192 		bbmult_scale = ladder_lo[index].percent * bbmult;
24193 		bbmult_scale /= 100;
24194 
24195 		tblentry =
24196 			((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24197 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24198 					 &tblentry);
24199 
24200 		bbmult_scale = ladder_iq[index].percent * bbmult;
24201 		bbmult_scale /= 100;
24202 
24203 		tblentry =
24204 			((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24205 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24206 					 16, &tblentry);
24207 	}
24208 }
24209 
wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy * pi,u8 core)24210 static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24211 {
24212 	u16 tmp;
24213 	tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24214 
24215 	tmp = (tmp & (0x7f << 8)) >> 8;
24216 	return (u8) tmp;
24217 }
24218 
24219 static void
wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy * pi,u8 idx0,u8 idx1)24220 wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24221 {
24222 	mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24223 
24224 	if (NREV_GT(pi->pubpi.phy_rev, 1))
24225 		mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24226 }
24227 
wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy * pi)24228 static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24229 {
24230 	u16 m0m1;
24231 
24232 	wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24233 
24234 	return m0m1;
24235 }
24236 
wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy * pi,u8 m0,u8 m1)24237 static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24238 {
24239 	u16 m0m1 = (u16) ((m0 << 8) | m1);
24240 
24241 	wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24242 	wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24243 }
24244 
24245 static void
wlc_phy_papd_cal_setup_nphy(struct brcms_phy * pi,struct nphy_papd_restore_state * state,u8 core)24246 wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24247 			    struct nphy_papd_restore_state *state, u8 core)
24248 {
24249 	s32 tone_freq;
24250 	u8 off_core;
24251 	u16 mixgain = 0;
24252 
24253 	off_core = core ^ 0x1;
24254 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24255 
24256 		if (NREV_IS(pi->pubpi.phy_rev, 7)
24257 		    || NREV_GE(pi->pubpi.phy_rev, 8))
24258 			wlc_phy_rfctrl_override_nphy_rev7(
24259 				pi, (0x1 << 7),
24260 				wlc_phy_read_lpf_bw_ctl_nphy
24261 					(pi,
24262 					0), 0, 0,
24263 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
24264 
24265 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24266 			if (pi->pubpi.radiorev == 5)
24267 				mixgain = (core == 0) ? 0x20 : 0x00;
24268 			else if ((pi->pubpi.radiorev == 7)
24269 				 || (pi->pubpi.radiorev == 8))
24270 				mixgain = 0x00;
24271 			else if ((pi->pubpi.radiorev <= 4)
24272 				 || (pi->pubpi.radiorev == 6))
24273 				mixgain = 0x00;
24274 		} else {
24275 			if ((pi->pubpi.radiorev == 4) ||
24276 			    (pi->pubpi.radiorev == 6))
24277 				mixgain = 0x50;
24278 			else if ((pi->pubpi.radiorev == 3)
24279 				 || (pi->pubpi.radiorev == 7)
24280 				 || (pi->pubpi.radiorev == 8))
24281 				mixgain = 0x0;
24282 		}
24283 
24284 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24285 						  mixgain, (1 << core), 0,
24286 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24287 
24288 		wlc_phy_rfctrl_override_1tomany_nphy(
24289 			pi,
24290 			NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24291 			1, (1 << core), 0);
24292 		wlc_phy_rfctrl_override_1tomany_nphy(
24293 			pi,
24294 			NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24295 			0, (1 << off_core), 0);
24296 
24297 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24298 						  0, 0x3, 0,
24299 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24300 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24301 						  (1 << core), 0,
24302 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24303 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24304 						  (1 << core), 0,
24305 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24306 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24307 						  (1 << core), 0,
24308 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24309 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24310 						  (1 << core), 0,
24311 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24312 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24313 						  (1 << core), 0,
24314 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24315 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24316 						  (1 << core), 0,
24317 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24318 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24319 						  (1 << core), 0,
24320 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24321 
24322 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24323 						  0, (1 << core), 0,
24324 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24325 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24326 						  (1 << core), 0,
24327 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24328 
24329 		state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24330 						    0xa6 : 0xa7);
24331 		state->afeoverride[core] =
24332 			read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24333 		state->afectrl[off_core] =
24334 			read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24335 		state->afeoverride[off_core] =
24336 			read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24337 
24338 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24339 			    (0x1 << 2), 0);
24340 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24341 				 0xa5), (0x1 << 2), (0x1 << 2));
24342 
24343 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24344 			    (0x1 << 2), (0x1 << 2));
24345 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24346 				 0x8f), (0x1 << 2), (0x1 << 2));
24347 
24348 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24349 			state->pwrup[core] =
24350 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24351 						TXRXCOUPLE_2G_PWRUP);
24352 			state->atten[core] =
24353 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24354 						TXRXCOUPLE_2G_ATTEN);
24355 			state->pwrup[off_core] =
24356 				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24357 						TXRXCOUPLE_2G_PWRUP);
24358 			state->atten[off_core] =
24359 				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24360 						TXRXCOUPLE_2G_ATTEN);
24361 
24362 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24363 					 TXRXCOUPLE_2G_PWRUP, 0xc);
24364 
24365 			if ((pi->pubpi.radiorev == 3) ||
24366 			    (pi->pubpi.radiorev == 4) ||
24367 			    (pi->pubpi.radiorev == 6))
24368 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24369 						 TXRXCOUPLE_2G_ATTEN, 0xf0);
24370 			else if (pi->pubpi.radiorev == 5)
24371 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24372 						 TXRXCOUPLE_2G_ATTEN,
24373 						 (core == 0) ? 0xf7 : 0xf2);
24374 			else if ((pi->pubpi.radiorev == 7)
24375 				 || (pi->pubpi.radiorev == 8))
24376 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24377 						 TXRXCOUPLE_2G_ATTEN, 0xf0);
24378 
24379 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24380 					 TXRXCOUPLE_2G_PWRUP, 0x0);
24381 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24382 					 TXRXCOUPLE_2G_ATTEN, 0xff);
24383 		} else {
24384 			state->pwrup[core] =
24385 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24386 						TXRXCOUPLE_5G_PWRUP);
24387 			state->atten[core] =
24388 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24389 						TXRXCOUPLE_5G_ATTEN);
24390 			state->pwrup[off_core] =
24391 				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24392 						TXRXCOUPLE_5G_PWRUP);
24393 			state->atten[off_core] =
24394 				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24395 						TXRXCOUPLE_5G_ATTEN);
24396 
24397 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24398 					 TXRXCOUPLE_5G_PWRUP, 0xc);
24399 
24400 			if ((pi->pubpi.radiorev == 7)
24401 			    || (pi->pubpi.radiorev == 8))
24402 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24403 						 TXRXCOUPLE_5G_ATTEN, 0xf4);
24404 
24405 			else
24406 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24407 						 TXRXCOUPLE_5G_ATTEN, 0xf0);
24408 
24409 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24410 					 TXRXCOUPLE_5G_PWRUP, 0x0);
24411 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24412 					 TXRXCOUPLE_5G_ATTEN, 0xff);
24413 		}
24414 
24415 		tone_freq = 4000;
24416 
24417 		wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24418 
24419 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24420 			    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24421 
24422 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24423 			    0x2a4, (0x1 << 13), (1) << 13);
24424 
24425 		mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24426 			    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24427 
24428 		mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24429 			    0x2a4, (0x1 << 13), (0) << 13);
24430 
24431 	} else {
24432 
24433 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24434 
24435 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24436 
24437 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24438 
24439 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24440 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24441 
24442 		state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24443 						    0xa6 : 0xa7);
24444 		state->afeoverride[core] =
24445 			read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24446 
24447 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24448 			    (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24449 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24450 				 0xa5),
24451 			    (0x1 << 0) |
24452 			    (0x1 << 1) |
24453 			    (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24454 
24455 		state->vga_master[core] =
24456 			READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24457 		WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24458 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24459 			state->fbmix[core] =
24460 				READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24461 						TXFBMIX_G);
24462 			state->intpa_master[core] =
24463 				READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24464 						INTPAG_MASTER);
24465 
24466 			WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24467 					 0x03);
24468 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24469 					 INTPAG_MASTER, 0x04);
24470 		} else {
24471 			state->fbmix[core] =
24472 				READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24473 						TXFBMIX_A);
24474 			state->intpa_master[core] =
24475 				READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24476 						INTPAA_MASTER);
24477 
24478 			WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24479 					 0x03);
24480 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24481 					 INTPAA_MASTER, 0x04);
24482 
24483 		}
24484 
24485 		tone_freq = 4000;
24486 
24487 		wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24488 
24489 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24490 			    0x29b, (0x1 << 0), (1) << 0);
24491 
24492 		mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24493 			    0x29b, (0x1 << 0), (0) << 0);
24494 
24495 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24496 	}
24497 }
24498 
24499 static void
wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy * pi,struct nphy_papd_restore_state * state)24500 wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24501 			      struct nphy_papd_restore_state *state)
24502 {
24503 	u8 core;
24504 
24505 	wlc_phy_stopplayback_nphy(pi);
24506 
24507 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24508 
24509 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24510 
24511 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
24512 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24513 						 TXRXCOUPLE_2G_PWRUP, 0);
24514 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24515 						 TXRXCOUPLE_2G_ATTEN,
24516 						 state->atten[core]);
24517 			} else {
24518 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24519 						 TXRXCOUPLE_5G_PWRUP, 0);
24520 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24521 						 TXRXCOUPLE_5G_ATTEN,
24522 						 state->atten[core]);
24523 			}
24524 		}
24525 
24526 		if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24527 			wlc_phy_rfctrl_override_nphy_rev7(
24528 				pi, (0x1 << 2),
24529 				1, 0x3, 0,
24530 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
24531 		else
24532 			wlc_phy_rfctrl_override_nphy_rev7(
24533 				pi, (0x1 << 2),
24534 				0, 0x3, 1,
24535 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
24536 
24537 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24538 						  0, 0x3, 1,
24539 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24540 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24541 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24542 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24543 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24544 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24545 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24546 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24547 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24548 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24549 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24550 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24551 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24552 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24553 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24554 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24555 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24556 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24557 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24558 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24559 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24560 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24561 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24562 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24563 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24564 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24565 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24566 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24567 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24568 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24569 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24570 
24571 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24572 
24573 			write_phy_reg(pi, (core == PHY_CORE_0) ?
24574 				      0xa6 : 0xa7, state->afectrl[core]);
24575 			write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24576 				      0xa5, state->afeoverride[core]);
24577 		}
24578 
24579 		wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24580 					    (state->mm & 0xff));
24581 
24582 		if (NREV_IS(pi->pubpi.phy_rev, 7)
24583 		    || NREV_GE(pi->pubpi.phy_rev, 8))
24584 			wlc_phy_rfctrl_override_nphy_rev7(
24585 				pi, (0x1 << 7), 0, 0,
24586 				1,
24587 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
24588 	} else {
24589 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24590 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24591 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24592 
24593 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24594 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24595 
24596 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24597 
24598 			WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24599 					 state->vga_master[core]);
24600 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
24601 				WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24602 						 TXFBMIX_G, state->fbmix[core]);
24603 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24604 						 INTPAG_MASTER,
24605 						 state->intpa_master[core]);
24606 			} else {
24607 				WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24608 						 TXFBMIX_A, state->fbmix[core]);
24609 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24610 						 INTPAA_MASTER,
24611 						 state->intpa_master[core]);
24612 			}
24613 
24614 			write_phy_reg(pi, (core == PHY_CORE_0) ?
24615 				      0xa6 : 0xa7, state->afectrl[core]);
24616 			write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24617 				      0xa5, state->afeoverride[core]);
24618 		}
24619 
24620 		wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24621 					    (state->mm & 0xff));
24622 
24623 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24624 	}
24625 }
24626 
24627 static void
wlc_phy_a1_nphy(struct brcms_phy * pi,u8 core,u32 winsz,u32 start,u32 end)24628 wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24629 		u32 end)
24630 {
24631 	u32 *buf, *src, *dst, sz;
24632 
24633 	sz = end - start + 1;
24634 
24635 	buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24636 	if (NULL == buf)
24637 		return;
24638 
24639 	src = buf;
24640 	dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24641 
24642 	wlc_phy_table_read_nphy(pi,
24643 				(core ==
24644 				 PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24645 				 NPHY_TBL_ID_EPSILONTBL1),
24646 				NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24647 
24648 	do {
24649 		u32 phy_a1, phy_a2;
24650 		s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24651 
24652 		phy_a1 = end - min(end, (winsz >> 1));
24653 		phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24654 			       end + (winsz >> 1));
24655 		phy_a3 = phy_a2 - phy_a1 + 1;
24656 		phy_a6 = 0;
24657 		phy_a7 = 0;
24658 
24659 		do {
24660 			wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24661 						    &phy_a5);
24662 			phy_a6 += phy_a4;
24663 			phy_a7 += phy_a5;
24664 		} while (phy_a2-- != phy_a1);
24665 
24666 		phy_a6 /= phy_a3;
24667 		phy_a7 /= phy_a3;
24668 		dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24669 	} while (end-- != start);
24670 
24671 	wlc_phy_table_write_nphy(pi,
24672 				 (core ==
24673 				  PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24674 				 NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24675 
24676 	kfree(buf);
24677 }
24678 
24679 static void
wlc_phy_a2_nphy(struct brcms_phy * pi,struct nphy_ipa_txcalgains * txgains,enum phy_cal_mode cal_mode,u8 core)24680 wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24681 		enum phy_cal_mode cal_mode, u8 core)
24682 {
24683 	u16 phy_a1, phy_a2, phy_a3;
24684 	u16 phy_a4, phy_a5;
24685 	u8 phy_a7, m[2];
24686 	u32 phy_a8 = 0;
24687 	struct nphy_txgains phy_a9;
24688 
24689 	if (NREV_LT(pi->pubpi.phy_rev, 3))
24690 		return;
24691 
24692 	phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24693 
24694 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24695 
24696 		phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24697 
24698 		if (CHSPEC_IS2G(pi->radio_chanspec))
24699 			phy_a5 = ((phy_a9.txlpf[core] << 15) |
24700 				  (phy_a9.txgm[core] << 12) |
24701 				  (phy_a9.pga[core] << 8) |
24702 				  (txgains->gains.pad[core] << 3) |
24703 				  (phy_a9.ipa[core]));
24704 		else
24705 			phy_a5 = ((phy_a9.txlpf[core] << 15) |
24706 				  (phy_a9.txgm[core] << 12) |
24707 				  (txgains->gains.pga[core] << 8) |
24708 				  (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24709 
24710 		wlc_phy_rfctrl_override_1tomany_nphy(
24711 			pi,
24712 			NPHY_REV7_RfctrlOverride_cmd_txgain,
24713 			phy_a5, (1 << core), 0);
24714 
24715 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24716 			if ((pi->pubpi.radiorev <= 4)
24717 			    || (pi->pubpi.radiorev == 6))
24718 				m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24719 					  60 : 79;
24720 			else
24721 				m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24722 					  45 : 64;
24723 		} else {
24724 			m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24725 		}
24726 
24727 		m[phy_a7] = 0;
24728 		wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24729 
24730 		phy_a2 = 63;
24731 
24732 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24733 			if ((pi->pubpi.radiorev == 4)
24734 			    || (pi->pubpi.radiorev == 6)) {
24735 				phy_a1 = 30;
24736 				phy_a3 = 30;
24737 			} else {
24738 				phy_a1 = 25;
24739 				phy_a3 = 25;
24740 			}
24741 		} else {
24742 			if ((pi->pubpi.radiorev == 5)
24743 			    || (pi->pubpi.radiorev == 7)
24744 			    || (pi->pubpi.radiorev == 8)) {
24745 				phy_a1 = 25;
24746 				phy_a3 = 25;
24747 			} else {
24748 				phy_a1 = 35;
24749 				phy_a3 = 35;
24750 			}
24751 		}
24752 
24753 		if (cal_mode == CAL_GCTRL) {
24754 			if ((pi->pubpi.radiorev == 5)
24755 			    && (CHSPEC_IS2G(pi->radio_chanspec)))
24756 				phy_a1 = 55;
24757 			else if (((pi->pubpi.radiorev == 7) &&
24758 				  (CHSPEC_IS2G(pi->radio_chanspec))) ||
24759 				 ((pi->pubpi.radiorev == 8) &&
24760 				  (CHSPEC_IS2G(pi->radio_chanspec))))
24761 				phy_a1 = 60;
24762 			else
24763 				phy_a1 = 63;
24764 
24765 		} else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
24766 
24767 			phy_a1 = 35;
24768 			phy_a3 = 35;
24769 		}
24770 
24771 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24772 			    0x29b, (0x1 << 0), (1) << 0);
24773 
24774 		mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24775 			    0x29b, (0x1 << 0), (0) << 0);
24776 
24777 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24778 			    0x2a4, (0x1 << 13), (1) << 13);
24779 
24780 		mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24781 			    0x2a4, (0x1 << 13), (0) << 13);
24782 
24783 		write_phy_reg(pi, 0x2a1, 0x80);
24784 		write_phy_reg(pi, 0x2a2, 0x100);
24785 
24786 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24787 			    0x2a4, (0x7 << 4), (11) << 4);
24788 
24789 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24790 			    0x2a4, (0x7 << 8), (11) << 8);
24791 
24792 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24793 			    0x2a4, (0x7 << 0), (0x3) << 0);
24794 
24795 		write_phy_reg(pi, 0x2e5, 0x20);
24796 
24797 		mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24798 
24799 		mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24800 
24801 		mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24802 
24803 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24804 						  1, ((core == 0) ? 1 : 2), 0,
24805 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24806 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24807 						  0, ((core == 0) ? 2 : 1), 0,
24808 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24809 
24810 		write_phy_reg(pi, 0x2be, 1);
24811 		SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24812 
24813 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24814 						  0, 0x3, 0,
24815 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24816 
24817 		wlc_phy_table_write_nphy(pi,
24818 					 (core ==
24819 					  PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24820 					 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24821 					 32, &phy_a8);
24822 
24823 		if (cal_mode != CAL_GCTRL) {
24824 			if (CHSPEC_IS5G(pi->radio_chanspec))
24825 				wlc_phy_a1_nphy(pi, core, 5, 0, 35);
24826 		}
24827 
24828 		wlc_phy_rfctrl_override_1tomany_nphy(
24829 			pi,
24830 			NPHY_REV7_RfctrlOverride_cmd_txgain,
24831 			phy_a5, (1 << core), 1);
24832 
24833 	} else {
24834 
24835 		if (txgains) {
24836 			if (txgains->useindex) {
24837 				phy_a4 = 15 - ((txgains->index) >> 3);
24838 				if (CHSPEC_IS2G(pi->radio_chanspec)) {
24839 					if (NREV_GE(pi->pubpi.phy_rev, 6) &&
24840 					    pi->sh->chip == BCMA_CHIP_ID_BCM47162) {
24841 						phy_a5 = 0x10f7 | (phy_a4 << 8);
24842 					} else if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24843 						phy_a5 = 0x00f7 | (phy_a4 << 8);
24844 					} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
24845 						phy_a5 = 0x10f7 | (phy_a4 << 8);
24846 					} else {
24847 						phy_a5 = 0x50f7 | (phy_a4 << 8);
24848 					}
24849 				} else {
24850 					phy_a5 = 0x70f7 | (phy_a4 << 8);
24851 				}
24852 				wlc_phy_rfctrl_override_nphy(pi,
24853 							     (0x1 << 13),
24854 							     phy_a5,
24855 							     (1 << core), 0);
24856 			} else {
24857 				wlc_phy_rfctrl_override_nphy(pi,
24858 							     (0x1 << 13),
24859 							     0x5bf7,
24860 							     (1 << core), 0);
24861 			}
24862 		}
24863 
24864 		if (CHSPEC_IS2G(pi->radio_chanspec))
24865 			m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
24866 		else
24867 			m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24868 
24869 		m[phy_a7] = 0;
24870 		wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24871 
24872 		phy_a2 = 63;
24873 
24874 		if (cal_mode == CAL_FULL) {
24875 			phy_a1 = 25;
24876 			phy_a3 = 25;
24877 		} else if (cal_mode == CAL_SOFT) {
24878 			phy_a1 = 25;
24879 			phy_a3 = 25;
24880 		} else if (cal_mode == CAL_GCTRL) {
24881 			phy_a1 = 63;
24882 			phy_a3 = 25;
24883 		} else {
24884 
24885 			phy_a1 = 25;
24886 			phy_a3 = 25;
24887 		}
24888 
24889 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24890 			    0x29b, (0x1 << 0), (1) << 0);
24891 
24892 		mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24893 			    0x29b, (0x1 << 0), (0) << 0);
24894 
24895 		if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24896 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24897 				    0x2a4, (0x1 << 13), (1) << 13);
24898 
24899 			mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24900 				    0x2a4, (0x1 << 13), (0) << 13);
24901 
24902 			write_phy_reg(pi, 0x2a1, 0x20);
24903 			write_phy_reg(pi, 0x2a2, 0x60);
24904 
24905 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24906 				    0x2a4, (0xf << 4), (9) << 4);
24907 
24908 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24909 				    0x2a4, (0xf << 8), (9) << 8);
24910 
24911 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24912 				    0x2a4, (0xf << 0), (0x2) << 0);
24913 
24914 			write_phy_reg(pi, 0x2e5, 0x20);
24915 		} else {
24916 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24917 				    0x2a4, (0x1 << 11), (1) << 11);
24918 
24919 			mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24920 				    0x2a4, (0x1 << 11), (0) << 11);
24921 
24922 			write_phy_reg(pi, 0x2a1, 0x80);
24923 			write_phy_reg(pi, 0x2a2, 0x600);
24924 
24925 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24926 				    0x2a4, (0x7 << 4), (0) << 4);
24927 
24928 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24929 				    0x2a4, (0x7 << 8), (0) << 8);
24930 
24931 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24932 				    0x2a4, (0x7 << 0), (0x3) << 0);
24933 
24934 			mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
24935 
24936 		}
24937 
24938 		mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24939 
24940 		mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24941 
24942 		mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24943 
24944 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
24945 
24946 		write_phy_reg(pi, 0x2be, 1);
24947 		SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24948 
24949 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24950 
24951 		wlc_phy_table_write_nphy(pi,
24952 					 (core ==
24953 					  PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24954 					 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24955 					 32, &phy_a8);
24956 
24957 		if (cal_mode != CAL_GCTRL)
24958 			wlc_phy_a1_nphy(pi, core, 5, 0, 40);
24959 	}
24960 }
24961 
wlc_phy_a3_nphy(struct brcms_phy * pi,u8 start_gain,u8 core)24962 static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
24963 {
24964 	int phy_a1;
24965 	int phy_a2;
24966 	bool phy_a3;
24967 	struct nphy_ipa_txcalgains phy_a4;
24968 	bool phy_a5 = false;
24969 	bool phy_a6 = true;
24970 	s32 phy_a7, phy_a8;
24971 	u32 phy_a9;
24972 	int phy_a10;
24973 	int phy_a12;
24974 	u8 phy_a13 = 0;
24975 	u8 phy_a14;
24976 	u8 *phy_a15 = NULL;
24977 
24978 	phy_a4.useindex = true;
24979 	phy_a12 = start_gain;
24980 
24981 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24982 
24983 		phy_a2 = 20;
24984 		phy_a1 = 1;
24985 
24986 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24987 			if (pi->pubpi.radiorev == 5) {
24988 
24989 				phy_a15 = pad_gain_codes_used_2057rev5;
24990 				phy_a13 =
24991 					ARRAY_SIZE(pad_gain_codes_used_2057rev5) - 1;
24992 
24993 			} else if ((pi->pubpi.radiorev == 7)
24994 				   || (pi->pubpi.radiorev == 8)) {
24995 
24996 				phy_a15 = pad_gain_codes_used_2057rev7;
24997 				phy_a13 =
24998 					ARRAY_SIZE(pad_gain_codes_used_2057rev7) - 1;
24999 
25000 			} else {
25001 
25002 				phy_a15 = pad_all_gain_codes_2057;
25003 				phy_a13 = ARRAY_SIZE(pad_all_gain_codes_2057) -
25004 					  1;
25005 			}
25006 
25007 		} else {
25008 
25009 			phy_a15 = pga_all_gain_codes_2057;
25010 			phy_a13 = ARRAY_SIZE(pga_all_gain_codes_2057) - 1;
25011 		}
25012 
25013 		phy_a14 = 0;
25014 
25015 		for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25016 			if (CHSPEC_IS2G(pi->radio_chanspec))
25017 				phy_a4.gains.pad[core] =
25018 					(u16) phy_a15[phy_a12];
25019 			else
25020 				phy_a4.gains.pga[core] =
25021 					(u16) phy_a15[phy_a12];
25022 
25023 			wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25024 
25025 			wlc_phy_table_read_nphy(pi,
25026 						(core ==
25027 						 PHY_CORE_0 ?
25028 						 NPHY_TBL_ID_EPSILONTBL0 :
25029 						 NPHY_TBL_ID_EPSILONTBL1), 1,
25030 						63, 32, &phy_a9);
25031 
25032 			wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25033 
25034 			phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25035 				  (phy_a8 == 4095) || (phy_a8 == -4096));
25036 
25037 			if (!phy_a6 && (phy_a3 != phy_a5)) {
25038 				if (!phy_a3)
25039 					phy_a12 -= (u8) phy_a1;
25040 				break;
25041 			}
25042 
25043 			if (phy_a3)
25044 				phy_a12 += (u8) phy_a1;
25045 			else
25046 				phy_a12 -= (u8) phy_a1;
25047 
25048 			if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25049 				if (phy_a12 < phy_a14)
25050 					phy_a12 = phy_a14;
25051 				else
25052 					phy_a12 = phy_a13;
25053 				break;
25054 			}
25055 
25056 			phy_a6 = false;
25057 			phy_a5 = phy_a3;
25058 		}
25059 
25060 	} else {
25061 		phy_a2 = 10;
25062 		phy_a1 = 8;
25063 		for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25064 			phy_a4.index = (u8) phy_a12;
25065 			wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25066 
25067 			wlc_phy_table_read_nphy(pi,
25068 						(core ==
25069 						 PHY_CORE_0 ?
25070 						 NPHY_TBL_ID_EPSILONTBL0 :
25071 						 NPHY_TBL_ID_EPSILONTBL1), 1,
25072 						63, 32, &phy_a9);
25073 
25074 			wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25075 
25076 			phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25077 				  (phy_a8 == 4095) || (phy_a8 == -4096));
25078 
25079 			if (!phy_a6 && (phy_a3 != phy_a5)) {
25080 				if (!phy_a3)
25081 					phy_a12 -= (u8) phy_a1;
25082 				break;
25083 			}
25084 
25085 			if (phy_a3)
25086 				phy_a12 += (u8) phy_a1;
25087 			else
25088 				phy_a12 -= (u8) phy_a1;
25089 
25090 			if ((phy_a12 < 0) || (phy_a12 > 127)) {
25091 				if (phy_a12 < 0)
25092 					phy_a12 = 0;
25093 				else
25094 					phy_a12 = 127;
25095 				break;
25096 			}
25097 
25098 			phy_a6 = false;
25099 			phy_a5 = phy_a3;
25100 		}
25101 
25102 	}
25103 
25104 	if (NREV_GE(pi->pubpi.phy_rev, 7))
25105 		return (u8) phy_a15[phy_a12];
25106 	else
25107 		return (u8) phy_a12;
25108 
25109 }
25110 
wlc_phy_a4(struct brcms_phy * pi,bool full_cal)25111 static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25112 {
25113 	struct nphy_ipa_txcalgains phy_b1[2];
25114 	struct nphy_papd_restore_state phy_b2;
25115 	bool phy_b3;
25116 	u8 phy_b4;
25117 	u8 phy_b5;
25118 	s16 phy_b6, phy_b7, phy_b8;
25119 	u16 phy_b9;
25120 	s16 phy_b10, phy_b11, phy_b12;
25121 
25122 	phy_b11 = 0;
25123 	phy_b12 = 0;
25124 	phy_b7 = 0;
25125 	phy_b8 = 0;
25126 	phy_b6 = 0;
25127 
25128 	if (pi->nphy_papd_skip == 1)
25129 		return;
25130 
25131 	phy_b3 = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
25132 			MCTL_EN_MAC));
25133 	if (!phy_b3)
25134 		wlapi_suspend_mac_and_wait(pi->sh->physhim);
25135 
25136 	wlc_phy_stay_in_carriersearch_nphy(pi, true);
25137 
25138 	pi->nphy_force_papd_cal = false;
25139 
25140 	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25141 		pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25142 			wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25143 
25144 	pi->nphy_papd_last_cal = pi->sh->now;
25145 	pi->nphy_papd_recal_counter++;
25146 
25147 	phy_b4 = pi->nphy_txpwrctrl;
25148 	wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25149 
25150 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25151 				 nphy_papd_scaltbl);
25152 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25153 				 nphy_papd_scaltbl);
25154 
25155 	phy_b9 = read_phy_reg(pi, 0x01);
25156 	mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25157 
25158 	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25159 		s32 i, val = 0;
25160 		for (i = 0; i < 64; i++)
25161 			wlc_phy_table_write_nphy(pi,
25162 						 ((phy_b5 ==
25163 						   PHY_CORE_0) ?
25164 						  NPHY_TBL_ID_EPSILONTBL0 :
25165 						  NPHY_TBL_ID_EPSILONTBL1), 1,
25166 						 i, 32, &val);
25167 	}
25168 
25169 	wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25170 
25171 	phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25172 	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25173 		wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25174 
25175 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25176 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25177 				if ((pi->pubpi.radiorev == 3)
25178 				    || (pi->pubpi.radiorev == 4)
25179 				    || (pi->pubpi.radiorev == 6)) {
25180 					pi->nphy_papd_cal_gain_index[phy_b5] =
25181 						23;
25182 				} else if (pi->pubpi.radiorev == 5) {
25183 					pi->nphy_papd_cal_gain_index[phy_b5] =
25184 						0;
25185 					pi->nphy_papd_cal_gain_index[phy_b5] =
25186 						wlc_phy_a3_nphy(
25187 							pi,
25188 							pi->
25189 							nphy_papd_cal_gain_index
25190 							[phy_b5],
25191 							phy_b5);
25192 
25193 				} else if ((pi->pubpi.radiorev == 7)
25194 					   || (pi->pubpi.radiorev == 8)) {
25195 
25196 					pi->nphy_papd_cal_gain_index[phy_b5] =
25197 						0;
25198 					pi->nphy_papd_cal_gain_index[phy_b5] =
25199 						wlc_phy_a3_nphy(
25200 							pi,
25201 							pi->
25202 							nphy_papd_cal_gain_index
25203 							[phy_b5],
25204 							phy_b5);
25205 
25206 				}
25207 
25208 				phy_b1[phy_b5].gains.pad[phy_b5] =
25209 					pi->nphy_papd_cal_gain_index[phy_b5];
25210 
25211 			} else {
25212 				pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25213 				pi->nphy_papd_cal_gain_index[phy_b5] =
25214 					wlc_phy_a3_nphy(
25215 						pi,
25216 						pi->
25217 						nphy_papd_cal_gain_index
25218 						[phy_b5], phy_b5);
25219 				phy_b1[phy_b5].gains.pga[phy_b5] =
25220 					pi->nphy_papd_cal_gain_index[phy_b5];
25221 			}
25222 		} else {
25223 			phy_b1[phy_b5].useindex = true;
25224 			phy_b1[phy_b5].index = 16;
25225 			phy_b1[phy_b5].index =
25226 				wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25227 						phy_b5);
25228 
25229 			pi->nphy_papd_cal_gain_index[phy_b5] =
25230 				15 - ((phy_b1[phy_b5].index) >> 3);
25231 		}
25232 
25233 		switch (pi->nphy_papd_cal_type) {
25234 		case 0:
25235 			wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25236 			break;
25237 		case 1:
25238 			wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25239 			break;
25240 		}
25241 
25242 		if (NREV_GE(pi->pubpi.phy_rev, 7))
25243 			wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25244 	}
25245 
25246 	if (NREV_LT(pi->pubpi.phy_rev, 7))
25247 		wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25248 
25249 	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25250 		int eps_offset = 0;
25251 
25252 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25253 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25254 				if (pi->pubpi.radiorev == 3)
25255 					eps_offset = -2;
25256 				else if (pi->pubpi.radiorev == 5)
25257 					eps_offset = 3;
25258 				else
25259 					eps_offset = -1;
25260 			} else {
25261 				eps_offset = 2;
25262 			}
25263 
25264 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25265 				phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25266 				phy_b10 = 0;
25267 				if ((pi->pubpi.radiorev == 3) ||
25268 				    (pi->pubpi.radiorev == 4) ||
25269 				    (pi->pubpi.radiorev == 6)) {
25270 					phy_b12 = -(
25271 					    nphy_papd_padgain_dlt_2g_2057rev3n4
25272 							     [phy_b8] + 1) / 2;
25273 					phy_b10 = -1;
25274 				} else if (pi->pubpi.radiorev == 5) {
25275 					phy_b12 = -(
25276 					    nphy_papd_padgain_dlt_2g_2057rev5
25277 							     [phy_b8] + 1) / 2;
25278 				} else if ((pi->pubpi.radiorev == 7) ||
25279 					   (pi->pubpi.radiorev == 8)) {
25280 					phy_b12 = -(
25281 					    nphy_papd_padgain_dlt_2g_2057rev7
25282 							     [phy_b8] + 1) / 2;
25283 				}
25284 			} else {
25285 				phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25286 				if ((pi->pubpi.radiorev == 3) ||
25287 				    (pi->pubpi.radiorev == 4) ||
25288 				    (pi->pubpi.radiorev == 6))
25289 					phy_b11 =
25290 						-(nphy_papd_pgagain_dlt_5g_2057
25291 						  [phy_b7]
25292 						  + 1) / 2;
25293 				else if ((pi->pubpi.radiorev == 7)
25294 					 || (pi->pubpi.radiorev == 8))
25295 					phy_b11 = -(
25296 					      nphy_papd_pgagain_dlt_5g_2057rev7
25297 							     [phy_b7] + 1) / 2;
25298 
25299 				phy_b10 = -9;
25300 			}
25301 
25302 			if (CHSPEC_IS2G(pi->radio_chanspec))
25303 				phy_b6 =
25304 					-60 + 27 + eps_offset + phy_b12 +
25305 					phy_b10;
25306 			else
25307 				phy_b6 =
25308 					-60 + 27 + eps_offset + phy_b11 +
25309 					phy_b10;
25310 
25311 			mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25312 				    0x29c, (0x1ff << 7), (phy_b6) << 7);
25313 
25314 			pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25315 		} else {
25316 			if (NREV_LT(pi->pubpi.phy_rev, 5))
25317 				eps_offset = 4;
25318 			else
25319 				eps_offset = 2;
25320 
25321 			phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25322 
25323 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25324 				phy_b11 =
25325 					-(nphy_papd_pga_gain_delta_ipa_2g[
25326 						  phy_b7] +
25327 					  1) / 2;
25328 				phy_b10 = 0;
25329 			} else {
25330 				phy_b11 =
25331 					-(nphy_papd_pga_gain_delta_ipa_5g[
25332 						  phy_b7] +
25333 					  1) / 2;
25334 				phy_b10 = -9;
25335 			}
25336 
25337 			phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25338 
25339 			mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25340 				    0x29c, (0x1ff << 7), (phy_b6) << 7);
25341 
25342 			pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25343 		}
25344 	}
25345 
25346 	mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25347 		    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25348 
25349 	mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25350 		    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25351 
25352 	if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25353 		mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25354 			    0x2a4, (0x1 << 13), (0) << 13);
25355 
25356 		mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25357 			    0x2a4, (0x1 << 13), (0) << 13);
25358 
25359 	} else {
25360 		mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25361 			    0x2a4, (0x1 << 11), (0) << 11);
25362 
25363 		mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25364 			    0x2a4, (0x1 << 11), (0) << 11);
25365 
25366 	}
25367 	pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25368 
25369 	write_phy_reg(pi, 0x01, phy_b9);
25370 
25371 	wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25372 
25373 	wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25374 	if (phy_b4 == PHY_TPC_HW_OFF) {
25375 		wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25376 					 (s8) (pi->nphy_txpwrindex[0].
25377 					       index_internal), false);
25378 		wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25379 					 (s8) (pi->nphy_txpwrindex[1].
25380 					       index_internal), false);
25381 	}
25382 
25383 	wlc_phy_stay_in_carriersearch_nphy(pi, false);
25384 
25385 	if (!phy_b3)
25386 		wlapi_enable_mac(pi->sh->physhim);
25387 }
25388 
wlc_phy_cal_perical_nphy_run(struct brcms_phy * pi,u8 caltype)25389 void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25390 {
25391 	struct nphy_txgains target_gain;
25392 	u8 tx_pwr_ctrl_state;
25393 	bool fullcal = true;
25394 	bool restore_tx_gain = false;
25395 	bool mphase;
25396 
25397 	if (PHY_MUTED(pi))
25398 		return;
25399 
25400 	if (caltype == PHY_PERICAL_AUTO)
25401 		fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25402 	else if (caltype == PHY_PERICAL_PARTIAL)
25403 		fullcal = false;
25404 
25405 	if (pi->cal_type_override != PHY_PERICAL_AUTO)
25406 		fullcal =
25407 			(pi->cal_type_override ==
25408 			 PHY_PERICAL_FULL) ? true : false;
25409 
25410 	if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT) {
25411 		if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25412 			wlc_phy_cal_perical_mphase_restart(pi);
25413 	}
25414 
25415 	if (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL)
25416 		wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25417 
25418 	wlapi_suspend_mac_and_wait(pi->sh->physhim);
25419 
25420 	wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25421 
25422 	if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25423 	    (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25424 		pi->nphy_cal_orig_pwr_idx[0] =
25425 			(u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25426 		pi->nphy_cal_orig_pwr_idx[1] =
25427 			(u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25428 
25429 		if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25430 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25431 						0x110, 16,
25432 						pi->nphy_cal_orig_tx_gain);
25433 		} else {
25434 			pi->nphy_cal_orig_tx_gain[0] = 0;
25435 			pi->nphy_cal_orig_tx_gain[1] = 0;
25436 		}
25437 	}
25438 	target_gain = wlc_phy_get_tx_gain_nphy(pi);
25439 	tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25440 	wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25441 
25442 	if (pi->antsel_type == ANTSEL_2x3)
25443 		wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25444 
25445 	mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25446 	if (!mphase) {
25447 
25448 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25449 			wlc_phy_precal_txgain_nphy(pi);
25450 			pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25451 			restore_tx_gain = true;
25452 
25453 			target_gain = pi->nphy_cal_target_gain;
25454 		}
25455 		if (0 ==
25456 		    wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25457 					    mphase)) {
25458 			if (PHY_IPA(pi))
25459 				wlc_phy_a4(pi, true);
25460 
25461 			wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25462 			wlapi_enable_mac(pi->sh->physhim);
25463 			wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25464 					     10000);
25465 			wlapi_suspend_mac_and_wait(pi->sh->physhim);
25466 			wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25467 
25468 			if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25469 					(pi->first_cal_after_assoc ||
25470 					(pi->cal_type_override ==
25471 					 PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25472 				wlc_phy_savecal_nphy(pi);
25473 
25474 				wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25475 
25476 				pi->nphy_perical_last = pi->sh->now;
25477 			}
25478 		}
25479 		if (caltype != PHY_PERICAL_AUTO)
25480 			wlc_phy_rssi_cal_nphy(pi);
25481 
25482 		if (pi->first_cal_after_assoc
25483 		    || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25484 			pi->first_cal_after_assoc = false;
25485 			wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25486 			wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25487 		}
25488 
25489 		if (NREV_GE(pi->pubpi.phy_rev, 3))
25490 			wlc_phy_radio205x_vcocal_nphy(pi);
25491 	} else {
25492 		switch (pi->mphase_cal_phase_id) {
25493 		case MPHASE_CAL_STATE_INIT:
25494 			pi->nphy_perical_last = pi->sh->now;
25495 			pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25496 
25497 			if (NREV_GE(pi->pubpi.phy_rev, 3))
25498 				wlc_phy_precal_txgain_nphy(pi);
25499 
25500 			pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25501 			pi->mphase_cal_phase_id++;
25502 			break;
25503 
25504 		case MPHASE_CAL_STATE_TXPHASE0:
25505 		case MPHASE_CAL_STATE_TXPHASE1:
25506 		case MPHASE_CAL_STATE_TXPHASE2:
25507 		case MPHASE_CAL_STATE_TXPHASE3:
25508 		case MPHASE_CAL_STATE_TXPHASE4:
25509 		case MPHASE_CAL_STATE_TXPHASE5:
25510 			if ((pi->radar_percal_mask & 0x10) != 0)
25511 				pi->nphy_rxcal_active = true;
25512 
25513 			if (wlc_phy_cal_txiqlo_nphy
25514 				    (pi, pi->nphy_cal_target_gain, fullcal,
25515 				    true) != 0) {
25516 
25517 				wlc_phy_cal_perical_mphase_reset(pi);
25518 				break;
25519 			}
25520 
25521 			if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25522 			    (pi->mphase_cal_phase_id ==
25523 			     MPHASE_CAL_STATE_TXPHASE4))
25524 				pi->mphase_cal_phase_id += 2;
25525 			else
25526 				pi->mphase_cal_phase_id++;
25527 			break;
25528 
25529 		case MPHASE_CAL_STATE_PAPDCAL:
25530 			if ((pi->radar_percal_mask & 0x2) != 0)
25531 				pi->nphy_rxcal_active = true;
25532 
25533 			if (PHY_IPA(pi))
25534 				wlc_phy_a4(pi, true);
25535 
25536 			pi->mphase_cal_phase_id++;
25537 			break;
25538 
25539 		case MPHASE_CAL_STATE_RXCAL:
25540 			if ((pi->radar_percal_mask & 0x1) != 0)
25541 				pi->nphy_rxcal_active = true;
25542 			if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25543 						  (pi->first_cal_after_assoc ||
25544 						   (pi->cal_type_override ==
25545 						    PHY_PERICAL_FULL)) ? 2 : 0,
25546 						  false) == 0)
25547 				wlc_phy_savecal_nphy(pi);
25548 
25549 			pi->mphase_cal_phase_id++;
25550 			break;
25551 
25552 		case MPHASE_CAL_STATE_RSSICAL:
25553 			if ((pi->radar_percal_mask & 0x4) != 0)
25554 				pi->nphy_rxcal_active = true;
25555 			wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25556 			wlc_phy_rssi_cal_nphy(pi);
25557 
25558 			if (NREV_GE(pi->pubpi.phy_rev, 3))
25559 				wlc_phy_radio205x_vcocal_nphy(pi);
25560 
25561 			restore_tx_gain = true;
25562 
25563 			if (pi->first_cal_after_assoc)
25564 				pi->mphase_cal_phase_id++;
25565 			else
25566 				wlc_phy_cal_perical_mphase_reset(pi);
25567 
25568 			break;
25569 
25570 		case MPHASE_CAL_STATE_IDLETSSI:
25571 			if ((pi->radar_percal_mask & 0x8) != 0)
25572 				pi->nphy_rxcal_active = true;
25573 
25574 			if (pi->first_cal_after_assoc) {
25575 				pi->first_cal_after_assoc = false;
25576 				wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25577 				wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25578 			}
25579 
25580 			wlc_phy_cal_perical_mphase_reset(pi);
25581 			break;
25582 
25583 		default:
25584 			wlc_phy_cal_perical_mphase_reset(pi);
25585 			break;
25586 		}
25587 	}
25588 
25589 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25590 		if (restore_tx_gain) {
25591 			if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25592 
25593 				wlc_phy_txpwr_index_nphy(pi, 1,
25594 							 pi->
25595 							 nphy_cal_orig_pwr_idx
25596 							 [0], false);
25597 				wlc_phy_txpwr_index_nphy(pi, 2,
25598 							 pi->
25599 							 nphy_cal_orig_pwr_idx
25600 							 [1], false);
25601 
25602 				pi->nphy_txpwrindex[0].index = -1;
25603 				pi->nphy_txpwrindex[1].index = -1;
25604 			} else {
25605 				wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25606 							 (s8) (pi->
25607 							       nphy_txpwrindex
25608 							       [0].
25609 							       index_internal),
25610 							 false);
25611 				wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25612 							 (s8) (pi->
25613 							       nphy_txpwrindex
25614 							       [1].
25615 							       index_internal),
25616 							 false);
25617 			}
25618 		}
25619 	}
25620 
25621 	wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25622 	wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25623 	wlapi_enable_mac(pi->sh->physhim);
25624 }
25625 
25626 int
wlc_phy_cal_txiqlo_nphy(struct brcms_phy * pi,struct nphy_txgains target_gain,bool fullcal,bool mphase)25627 wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25628 			bool fullcal, bool mphase)
25629 {
25630 	u16 val;
25631 	u16 tbl_buf[11];
25632 	u8 cal_cnt;
25633 	u16 cal_cmd;
25634 	u8 num_cals, max_cal_cmds;
25635 	u16 core_no, cal_type;
25636 	u16 diq_start = 0;
25637 	u8 phy_bw;
25638 	u16 max_val;
25639 	u16 tone_freq;
25640 	u16 gain_save[2];
25641 	u16 cal_gain[2];
25642 	struct nphy_iqcal_params cal_params[2];
25643 	u32 tbl_len;
25644 	const void *tbl_ptr;
25645 	bool ladder_updated[2];
25646 	u8 mphase_cal_lastphase = 0;
25647 	int bcmerror = 0;
25648 	bool phyhang_avoid_state = false;
25649 
25650 	static const u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
25651 		0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25652 		0x1902,
25653 		0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25654 		0x6407
25655 	};
25656 
25657 	static const u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
25658 		0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25659 		0x3200,
25660 		0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25661 		0x6407
25662 	};
25663 
25664 	static const u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
25665 		0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25666 		0x1202,
25667 		0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25668 		0x4707
25669 	};
25670 
25671 	static const u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
25672 		0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25673 		0x2300,
25674 		0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25675 		0x4707
25676 	};
25677 
25678 	static const u16 tbl_tx_iqlo_cal_startcoefs[] = {
25679 		0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25680 		0x0000
25681 	};
25682 
25683 	static const u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
25684 		0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25685 		0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25686 	};
25687 
25688 	static const u16 tbl_tx_iqlo_cal_cmds_recal[] = {
25689 		0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25690 		0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25691 	};
25692 
25693 	static const u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
25694 		0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25695 		0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25696 		0x0000
25697 	};
25698 
25699 	static const u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
25700 		0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25701 		0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25702 	};
25703 
25704 	static const u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
25705 		0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25706 		0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25707 	};
25708 
25709 	wlc_phy_stay_in_carriersearch_nphy(pi, true);
25710 
25711 	if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25712 		phyhang_avoid_state = pi->phyhang_avoid;
25713 		pi->phyhang_avoid = false;
25714 	}
25715 
25716 	if (CHSPEC_IS40(pi->radio_chanspec))
25717 		phy_bw = 40;
25718 	else
25719 		phy_bw = 20;
25720 
25721 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25722 
25723 	for (core_no = 0; core_no <= 1; core_no++) {
25724 		wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25725 					      &cal_params[core_no]);
25726 		cal_gain[core_no] = cal_params[core_no].cal_gain;
25727 	}
25728 
25729 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25730 
25731 	wlc_phy_txcal_radio_setup_nphy(pi);
25732 
25733 	wlc_phy_txcal_physetup_nphy(pi);
25734 
25735 	ladder_updated[0] = ladder_updated[1] = false;
25736 	if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
25737 	      (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
25738 	       && (CHSPEC_IS2G(pi->radio_chanspec))))) {
25739 
25740 		if (phy_bw == 40) {
25741 			tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
25742 			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
25743 		} else {
25744 			tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
25745 			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
25746 		}
25747 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
25748 					 16, tbl_ptr);
25749 
25750 		if (phy_bw == 40) {
25751 			tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
25752 			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
25753 		} else {
25754 			tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
25755 			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
25756 		}
25757 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
25758 					 16, tbl_ptr);
25759 	}
25760 
25761 	if (NREV_GE(pi->pubpi.phy_rev, 7))
25762 		write_phy_reg(pi, 0xc2, 0x8ad9);
25763 	else
25764 		write_phy_reg(pi, 0xc2, 0x8aa9);
25765 
25766 	max_val = 250;
25767 	tone_freq = (phy_bw == 20) ? 2500 : 5000;
25768 
25769 	if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25770 		wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
25771 		bcmerror = 0;
25772 	} else {
25773 		bcmerror =
25774 			wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
25775 					     false);
25776 	}
25777 
25778 	if (bcmerror == 0) {
25779 
25780 		if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25781 			tbl_ptr = pi->mphase_txcal_bestcoeffs;
25782 			tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25783 			if (NREV_LT(pi->pubpi.phy_rev, 3))
25784 				tbl_len -= 2;
25785 		} else {
25786 			if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
25787 
25788 				tbl_ptr = pi->nphy_txiqlocal_bestc;
25789 				tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25790 				if (NREV_LT(pi->pubpi.phy_rev, 3))
25791 					tbl_len -= 2;
25792 			} else {
25793 
25794 				fullcal = true;
25795 
25796 				if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25797 					tbl_ptr =
25798 					    tbl_tx_iqlo_cal_startcoefs_nphyrev3;
25799 					tbl_len = ARRAY_SIZE(
25800 					   tbl_tx_iqlo_cal_startcoefs_nphyrev3);
25801 				} else {
25802 					tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
25803 					tbl_len = ARRAY_SIZE(
25804 						    tbl_tx_iqlo_cal_startcoefs);
25805 				}
25806 			}
25807 		}
25808 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
25809 					 16, tbl_ptr);
25810 
25811 		if (fullcal) {
25812 			max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25813 				       ARRAY_SIZE(
25814 				tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
25815 				       ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
25816 		} else {
25817 			max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25818 				       ARRAY_SIZE(
25819 				tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
25820 				       ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
25821 		}
25822 
25823 		if (mphase) {
25824 			cal_cnt = pi->mphase_txcal_cmdidx;
25825 			if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
25826 				num_cals = cal_cnt + pi->mphase_txcal_numcmds;
25827 			else
25828 				num_cals = max_cal_cmds;
25829 		} else {
25830 			cal_cnt = 0;
25831 			num_cals = max_cal_cmds;
25832 		}
25833 
25834 		for (; cal_cnt < num_cals; cal_cnt++) {
25835 
25836 			if (fullcal) {
25837 				cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25838 					  tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
25839 					  [cal_cnt] :
25840 					  tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
25841 			} else {
25842 				cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25843 					  tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
25844 					cal_cnt]
25845 					  : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
25846 			}
25847 
25848 			core_no = ((cal_cmd & 0x3000) >> 12);
25849 			cal_type = ((cal_cmd & 0x0F00) >> 8);
25850 
25851 			if (NREV_GE(pi->pubpi.phy_rev, 6) ||
25852 			    (NREV_IS(pi->pubpi.phy_rev, 5) &&
25853 			     PHY_IPA(pi)
25854 			     && (CHSPEC_IS2G(pi->radio_chanspec)))) {
25855 				if (!ladder_updated[core_no]) {
25856 					wlc_phy_update_txcal_ladder_nphy(
25857 						pi,
25858 						core_no);
25859 					ladder_updated[core_no] = true;
25860 				}
25861 			}
25862 
25863 			val =
25864 				(cal_params[core_no].
25865 				 ncorr[cal_type] << 8) | NPHY_N_GCTL;
25866 			write_phy_reg(pi, 0xc1, val);
25867 
25868 			if ((cal_type == 1) || (cal_type == 3)
25869 			    || (cal_type == 4)) {
25870 
25871 				wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25872 							1, 69 + core_no, 16,
25873 							tbl_buf);
25874 
25875 				diq_start = tbl_buf[0];
25876 
25877 				tbl_buf[0] = 0;
25878 				wlc_phy_table_write_nphy(pi,
25879 							 NPHY_TBL_ID_IQLOCAL, 1,
25880 							 69 + core_no, 16,
25881 							 tbl_buf);
25882 			}
25883 
25884 			write_phy_reg(pi, 0xc0, cal_cmd);
25885 
25886 			SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
25887 				 20000);
25888 			if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
25889 				 "HW error: txiq calib"))
25890 				return -EIO;
25891 
25892 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25893 						tbl_len, 96, 16, tbl_buf);
25894 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25895 						 tbl_len, 64, 16, tbl_buf);
25896 
25897 			if ((cal_type == 1) || (cal_type == 3)
25898 			    || (cal_type == 4)) {
25899 
25900 				tbl_buf[0] = diq_start;
25901 
25902 			}
25903 
25904 		}
25905 
25906 		if (mphase) {
25907 			pi->mphase_txcal_cmdidx = num_cals;
25908 			if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
25909 				pi->mphase_txcal_cmdidx = 0;
25910 		}
25911 
25912 		mphase_cal_lastphase =
25913 			(NREV_LE(pi->pubpi.phy_rev, 2)) ?
25914 			MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
25915 
25916 		if (!mphase
25917 		    || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
25918 
25919 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
25920 						16, tbl_buf);
25921 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
25922 						 16, tbl_buf);
25923 
25924 			if (NREV_LT(pi->pubpi.phy_rev, 2)) {
25925 
25926 				tbl_buf[0] = 0;
25927 				tbl_buf[1] = 0;
25928 				tbl_buf[2] = 0;
25929 				tbl_buf[3] = 0;
25930 
25931 			}
25932 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
25933 						 16, tbl_buf);
25934 
25935 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
25936 						16, tbl_buf);
25937 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
25938 						 16, tbl_buf);
25939 
25940 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
25941 						 16, tbl_buf);
25942 
25943 			tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25944 			if (NREV_LT(pi->pubpi.phy_rev, 3))
25945 				tbl_len -= 2;
25946 
25947 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25948 						tbl_len, 96, 16,
25949 						pi->nphy_txiqlocal_bestc);
25950 
25951 			pi->nphy_txiqlocal_coeffsvalid = true;
25952 			pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25953 		} else {
25954 			tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25955 			if (NREV_LT(pi->pubpi.phy_rev, 3))
25956 				tbl_len -= 2;
25957 
25958 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25959 						tbl_len, 96, 16,
25960 						pi->mphase_txcal_bestcoeffs);
25961 		}
25962 
25963 		wlc_phy_stopplayback_nphy(pi);
25964 
25965 		write_phy_reg(pi, 0xc2, 0x0000);
25966 
25967 	}
25968 
25969 	wlc_phy_txcal_phycleanup_nphy(pi);
25970 
25971 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
25972 				 gain_save);
25973 
25974 	wlc_phy_txcal_radio_cleanup_nphy(pi);
25975 
25976 	if (NREV_LT(pi->pubpi.phy_rev, 2)) {
25977 		if (!mphase
25978 		    || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
25979 			wlc_phy_tx_iq_war_nphy(pi);
25980 	}
25981 
25982 	if (NREV_GE(pi->pubpi.phy_rev, 4))
25983 		pi->phyhang_avoid = phyhang_avoid_state;
25984 
25985 	wlc_phy_stay_in_carriersearch_nphy(pi, false);
25986 
25987 	return bcmerror;
25988 }
25989 
wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy * pi)25990 static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
25991 {
25992 	u16 tbl_buf[7];
25993 
25994 	if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
25995 	    (pi->nphy_txiqlocal_coeffsvalid)) {
25996 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25997 					ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
25998 
25999 		if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26000 		    (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26001 		    (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26002 		    (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26003 
26004 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26005 						 16, pi->nphy_txiqlocal_bestc);
26006 
26007 			tbl_buf[0] = 0;
26008 			tbl_buf[1] = 0;
26009 			tbl_buf[2] = 0;
26010 			tbl_buf[3] = 0;
26011 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26012 						 16, tbl_buf);
26013 
26014 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26015 						 16,
26016 						 &pi->nphy_txiqlocal_bestc[5]);
26017 
26018 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26019 						 16,
26020 						 &pi->nphy_txiqlocal_bestc[5]);
26021 		}
26022 	}
26023 }
26024 
26025 void
wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy * pi,u8 write,struct nphy_iq_comp * pcomp)26026 wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26027 			  struct nphy_iq_comp *pcomp)
26028 {
26029 	if (write) {
26030 		write_phy_reg(pi, 0x9a, pcomp->a0);
26031 		write_phy_reg(pi, 0x9b, pcomp->b0);
26032 		write_phy_reg(pi, 0x9c, pcomp->a1);
26033 		write_phy_reg(pi, 0x9d, pcomp->b1);
26034 	} else {
26035 		pcomp->a0 = read_phy_reg(pi, 0x9a);
26036 		pcomp->b0 = read_phy_reg(pi, 0x9b);
26037 		pcomp->a1 = read_phy_reg(pi, 0x9c);
26038 		pcomp->b1 = read_phy_reg(pi, 0x9d);
26039 	}
26040 }
26041 
26042 void
wlc_phy_rx_iq_est_nphy(struct brcms_phy * pi,struct phy_iq_est * est,u16 num_samps,u8 wait_time,u8 wait_for_crs)26043 wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26044 		       u16 num_samps, u8 wait_time, u8 wait_for_crs)
26045 {
26046 	u8 core;
26047 
26048 	write_phy_reg(pi, 0x12b, num_samps);
26049 	mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26050 	mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26051 		    (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26052 
26053 	mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26054 
26055 	SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26056 		 10000);
26057 	if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26058 		 "HW error: rxiq est"))
26059 		return;
26060 
26061 	if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26062 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26063 			est[core].i_pwr =
26064 				(read_phy_reg(pi,
26065 					      NPHY_IqestipwrAccHi(core)) << 16)
26066 				| read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26067 			est[core].q_pwr =
26068 				(read_phy_reg(pi,
26069 					      NPHY_IqestqpwrAccHi(core)) << 16)
26070 				| read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26071 			est[core].iq_prod =
26072 				(read_phy_reg(pi,
26073 					      NPHY_IqestIqAccHi(core)) << 16) |
26074 				read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26075 		}
26076 	}
26077 }
26078 
26079 #define CAL_RETRY_CNT 2
wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy * pi,u8 core_mask)26080 static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26081 {
26082 	u8 curr_core;
26083 	struct phy_iq_est est[PHY_CORE_MAX];
26084 	struct nphy_iq_comp old_comp, new_comp;
26085 	s32 iq = 0;
26086 	u32 ii = 0, qq = 0;
26087 	s16 iq_nbits, qq_nbits, brsh, arsh;
26088 	s32 a, b, temp;
26089 	int bcmerror = 0;
26090 	uint cal_retry = 0;
26091 
26092 	if (core_mask == 0x0)
26093 		return;
26094 
26095 	wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26096 	new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26097 	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26098 
26099 cal_try:
26100 	wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26101 
26102 	new_comp = old_comp;
26103 
26104 	for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26105 
26106 		if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26107 			iq = est[curr_core].iq_prod;
26108 			ii = est[curr_core].i_pwr;
26109 			qq = est[curr_core].q_pwr;
26110 		} else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26111 			iq = est[curr_core].iq_prod;
26112 			ii = est[curr_core].i_pwr;
26113 			qq = est[curr_core].q_pwr;
26114 		} else {
26115 			continue;
26116 		}
26117 
26118 		if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26119 			bcmerror = -EBADE;
26120 			break;
26121 		}
26122 
26123 		iq_nbits = wlc_phy_nbits(iq);
26124 		qq_nbits = wlc_phy_nbits(qq);
26125 
26126 		arsh = 10 - (30 - iq_nbits);
26127 		if (arsh >= 0) {
26128 			a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26129 			temp = (s32) (ii >> arsh);
26130 			if (temp == 0) {
26131 				bcmerror = -EBADE;
26132 				break;
26133 			}
26134 		} else {
26135 			a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26136 			temp = (s32) (ii << -arsh);
26137 			if (temp == 0) {
26138 				bcmerror = -EBADE;
26139 				break;
26140 			}
26141 		}
26142 
26143 		a /= temp;
26144 
26145 		brsh = qq_nbits - 31 + 20;
26146 		if (brsh >= 0) {
26147 			b = (qq << (31 - qq_nbits));
26148 			temp = (s32) (ii >> brsh);
26149 			if (temp == 0) {
26150 				bcmerror = -EBADE;
26151 				break;
26152 			}
26153 		} else {
26154 			b = (qq << (31 - qq_nbits));
26155 			temp = (s32) (ii << -brsh);
26156 			if (temp == 0) {
26157 				bcmerror = -EBADE;
26158 				break;
26159 			}
26160 		}
26161 		b /= temp;
26162 		b -= a * a;
26163 		b = (s32) int_sqrt((unsigned long) b);
26164 		b -= (1 << 10);
26165 
26166 		if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26167 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26168 				new_comp.a0 = (s16) a & 0x3ff;
26169 				new_comp.b0 = (s16) b & 0x3ff;
26170 			} else {
26171 
26172 				new_comp.a0 = (s16) b & 0x3ff;
26173 				new_comp.b0 = (s16) a & 0x3ff;
26174 			}
26175 		}
26176 		if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26177 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26178 				new_comp.a1 = (s16) a & 0x3ff;
26179 				new_comp.b1 = (s16) b & 0x3ff;
26180 			} else {
26181 
26182 				new_comp.a1 = (s16) b & 0x3ff;
26183 				new_comp.b1 = (s16) a & 0x3ff;
26184 			}
26185 		}
26186 	}
26187 
26188 	if (bcmerror != 0) {
26189 		pr_debug("%s: Failed, cnt = %d\n", __func__, cal_retry);
26190 
26191 		if (cal_retry < CAL_RETRY_CNT) {
26192 			cal_retry++;
26193 			goto cal_try;
26194 		}
26195 
26196 		new_comp = old_comp;
26197 	}
26198 
26199 	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26200 }
26201 
wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy * pi,u8 rx_core)26202 static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26203 {
26204 	u16 offtune_val;
26205 	u16 bias_g = 0;
26206 	u16 bias_a = 0;
26207 
26208 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26209 		if (rx_core == PHY_CORE_0) {
26210 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26211 				pi->tx_rx_cal_radio_saveregs[0] =
26212 					read_radio_reg(pi,
26213 					    RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26214 				pi->tx_rx_cal_radio_saveregs[1] =
26215 					read_radio_reg(pi,
26216 					    RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26217 
26218 				write_radio_reg(pi,
26219 					RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26220 					0x3);
26221 				write_radio_reg(pi,
26222 					RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26223 					0xaf);
26224 
26225 			} else {
26226 				pi->tx_rx_cal_radio_saveregs[0] =
26227 					read_radio_reg(pi,
26228 					    RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26229 				pi->tx_rx_cal_radio_saveregs[1] =
26230 					read_radio_reg(pi,
26231 					    RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26232 
26233 				write_radio_reg(
26234 					pi,
26235 					RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26236 					0x3);
26237 				write_radio_reg(
26238 					pi,
26239 					RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26240 					0x7f);
26241 			}
26242 
26243 		} else {
26244 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26245 				pi->tx_rx_cal_radio_saveregs[0] =
26246 					read_radio_reg(pi,
26247 					    RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26248 				pi->tx_rx_cal_radio_saveregs[1] =
26249 					read_radio_reg(pi,
26250 					    RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26251 
26252 				write_radio_reg(
26253 					pi,
26254 					RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26255 					0x3);
26256 				write_radio_reg(
26257 					pi,
26258 					RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26259 					0xaf);
26260 
26261 			} else {
26262 				pi->tx_rx_cal_radio_saveregs[0] =
26263 					read_radio_reg(pi,
26264 					    RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26265 				pi->tx_rx_cal_radio_saveregs[1] =
26266 					read_radio_reg(pi,
26267 					    RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26268 
26269 				write_radio_reg(pi,
26270 					RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26271 					0x3);
26272 				write_radio_reg(pi,
26273 					RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26274 					0x7f);
26275 			}
26276 		}
26277 
26278 	} else {
26279 		if (rx_core == PHY_CORE_0) {
26280 			pi->tx_rx_cal_radio_saveregs[0] =
26281 				read_radio_reg(pi,
26282 					       RADIO_2056_TX_RXIQCAL_TXMUX |
26283 					       RADIO_2056_TX1);
26284 			pi->tx_rx_cal_radio_saveregs[1] =
26285 				read_radio_reg(pi,
26286 					       RADIO_2056_RX_RXIQCAL_RXMUX |
26287 					       RADIO_2056_RX0);
26288 
26289 			if (pi->pubpi.radiorev >= 5) {
26290 				pi->tx_rx_cal_radio_saveregs[2] =
26291 					read_radio_reg(pi,
26292 						       RADIO_2056_RX_RXSPARE2 |
26293 						       RADIO_2056_RX0);
26294 				pi->tx_rx_cal_radio_saveregs[3] =
26295 					read_radio_reg(pi,
26296 						       RADIO_2056_TX_TXSPARE2 |
26297 						       RADIO_2056_TX1);
26298 			}
26299 
26300 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26301 
26302 				if (pi->pubpi.radiorev >= 5) {
26303 					pi->tx_rx_cal_radio_saveregs[4] =
26304 						read_radio_reg(pi,
26305 						      RADIO_2056_RX_LNAA_MASTER
26306 						      | RADIO_2056_RX0);
26307 
26308 					write_radio_reg(
26309 						pi,
26310 						RADIO_2056_RX_LNAA_MASTER
26311 						| RADIO_2056_RX0, 0x40);
26312 
26313 					write_radio_reg(pi,
26314 						RADIO_2056_TX_TXSPARE2 |
26315 						RADIO_2056_TX1, bias_a);
26316 
26317 					write_radio_reg(pi,
26318 						RADIO_2056_RX_RXSPARE2 |
26319 						RADIO_2056_RX0, bias_a);
26320 				} else {
26321 					pi->tx_rx_cal_radio_saveregs[4] =
26322 						read_radio_reg(pi,
26323 							RADIO_2056_RX_LNAA_TUNE
26324 							| RADIO_2056_RX0);
26325 
26326 					offtune_val =
26327 						(pi->tx_rx_cal_radio_saveregs
26328 						 [2] & 0xF0) >> 8;
26329 					offtune_val =
26330 						(offtune_val <= 0x7) ? 0xF : 0;
26331 
26332 					mod_radio_reg(pi,
26333 						      RADIO_2056_RX_LNAA_TUNE |
26334 						      RADIO_2056_RX0, 0xF0,
26335 						      (offtune_val << 8));
26336 				}
26337 
26338 				write_radio_reg(pi,
26339 						RADIO_2056_TX_RXIQCAL_TXMUX |
26340 						RADIO_2056_TX1, 0x9);
26341 				write_radio_reg(pi,
26342 						RADIO_2056_RX_RXIQCAL_RXMUX |
26343 						RADIO_2056_RX0, 0x9);
26344 			} else {
26345 				if (pi->pubpi.radiorev >= 5) {
26346 					pi->tx_rx_cal_radio_saveregs[4] =
26347 						read_radio_reg(
26348 						      pi,
26349 						      RADIO_2056_RX_LNAG_MASTER
26350 						    | RADIO_2056_RX0);
26351 
26352 					write_radio_reg(
26353 						pi,
26354 						RADIO_2056_RX_LNAG_MASTER
26355 						| RADIO_2056_RX0, 0x40);
26356 
26357 					write_radio_reg(
26358 						pi,
26359 						RADIO_2056_TX_TXSPARE2
26360 						|
26361 						RADIO_2056_TX1, bias_g);
26362 
26363 					write_radio_reg(
26364 						pi,
26365 						RADIO_2056_RX_RXSPARE2
26366 						|
26367 						RADIO_2056_RX0, bias_g);
26368 
26369 				} else {
26370 					pi->tx_rx_cal_radio_saveregs[4] =
26371 						read_radio_reg(
26372 							pi,
26373 							RADIO_2056_RX_LNAG_TUNE
26374 							| RADIO_2056_RX0);
26375 
26376 					offtune_val =
26377 						(pi->
26378 						 tx_rx_cal_radio_saveregs[2] &
26379 						 0xF0) >> 8;
26380 					offtune_val =
26381 						(offtune_val <= 0x7) ? 0xF : 0;
26382 
26383 					mod_radio_reg(pi,
26384 						      RADIO_2056_RX_LNAG_TUNE |
26385 						      RADIO_2056_RX0, 0xF0,
26386 						      (offtune_val << 8));
26387 				}
26388 
26389 				write_radio_reg(pi,
26390 						RADIO_2056_TX_RXIQCAL_TXMUX |
26391 						RADIO_2056_TX1, 0x6);
26392 				write_radio_reg(pi,
26393 						RADIO_2056_RX_RXIQCAL_RXMUX |
26394 						RADIO_2056_RX0, 0x6);
26395 			}
26396 
26397 		} else {
26398 			pi->tx_rx_cal_radio_saveregs[0] =
26399 				read_radio_reg(pi,
26400 					       RADIO_2056_TX_RXIQCAL_TXMUX |
26401 					       RADIO_2056_TX0);
26402 			pi->tx_rx_cal_radio_saveregs[1] =
26403 				read_radio_reg(pi,
26404 					       RADIO_2056_RX_RXIQCAL_RXMUX |
26405 					       RADIO_2056_RX1);
26406 
26407 			if (pi->pubpi.radiorev >= 5) {
26408 				pi->tx_rx_cal_radio_saveregs[2] =
26409 					read_radio_reg(pi,
26410 						       RADIO_2056_RX_RXSPARE2 |
26411 						       RADIO_2056_RX1);
26412 				pi->tx_rx_cal_radio_saveregs[3] =
26413 					read_radio_reg(pi,
26414 						       RADIO_2056_TX_TXSPARE2 |
26415 						       RADIO_2056_TX0);
26416 			}
26417 
26418 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26419 
26420 				if (pi->pubpi.radiorev >= 5) {
26421 					pi->tx_rx_cal_radio_saveregs[4] =
26422 						read_radio_reg(
26423 						       pi,
26424 						       RADIO_2056_RX_LNAA_MASTER
26425 						       | RADIO_2056_RX1);
26426 
26427 					write_radio_reg(
26428 						pi,
26429 						RADIO_2056_RX_LNAA_MASTER |
26430 						RADIO_2056_RX1, 0x40);
26431 
26432 					write_radio_reg(
26433 						pi,
26434 						RADIO_2056_TX_TXSPARE2
26435 						|
26436 						RADIO_2056_TX0, bias_a);
26437 
26438 					write_radio_reg(
26439 						pi,
26440 						RADIO_2056_RX_RXSPARE2
26441 						|
26442 						RADIO_2056_RX1, bias_a);
26443 				} else {
26444 					pi->tx_rx_cal_radio_saveregs[4] =
26445 						read_radio_reg(
26446 							pi,
26447 							RADIO_2056_RX_LNAA_TUNE
26448 							| RADIO_2056_RX1);
26449 
26450 					offtune_val =
26451 						(pi->
26452 						 tx_rx_cal_radio_saveregs[2] &
26453 						 0xF0) >> 8;
26454 					offtune_val =
26455 						(offtune_val <= 0x7) ? 0xF : 0;
26456 
26457 					mod_radio_reg(pi,
26458 						      RADIO_2056_RX_LNAA_TUNE |
26459 						      RADIO_2056_RX1, 0xF0,
26460 						      (offtune_val << 8));
26461 				}
26462 
26463 				write_radio_reg(pi,
26464 						RADIO_2056_TX_RXIQCAL_TXMUX |
26465 						RADIO_2056_TX0, 0x9);
26466 				write_radio_reg(pi,
26467 						RADIO_2056_RX_RXIQCAL_RXMUX |
26468 						RADIO_2056_RX1, 0x9);
26469 			} else {
26470 				if (pi->pubpi.radiorev >= 5) {
26471 					pi->tx_rx_cal_radio_saveregs[4] =
26472 						read_radio_reg(
26473 						      pi,
26474 						      RADIO_2056_RX_LNAG_MASTER
26475 						    | RADIO_2056_RX1);
26476 
26477 					write_radio_reg(
26478 						pi,
26479 						RADIO_2056_RX_LNAG_MASTER
26480 						| RADIO_2056_RX1, 0x40);
26481 
26482 					write_radio_reg(
26483 						pi,
26484 						RADIO_2056_TX_TXSPARE2
26485 						|
26486 						RADIO_2056_TX0, bias_g);
26487 
26488 					write_radio_reg(
26489 						pi,
26490 						RADIO_2056_RX_RXSPARE2
26491 						|
26492 						RADIO_2056_RX1, bias_g);
26493 				} else {
26494 					pi->tx_rx_cal_radio_saveregs[4] =
26495 						read_radio_reg(
26496 							pi,
26497 							RADIO_2056_RX_LNAG_TUNE
26498 							| RADIO_2056_RX1);
26499 
26500 					offtune_val =
26501 						(pi->
26502 						 tx_rx_cal_radio_saveregs[2] &
26503 						 0xF0) >> 8;
26504 					offtune_val =
26505 						(offtune_val <= 0x7) ? 0xF : 0;
26506 
26507 					mod_radio_reg(pi,
26508 						      RADIO_2056_RX_LNAG_TUNE |
26509 						      RADIO_2056_RX1, 0xF0,
26510 						      (offtune_val << 8));
26511 				}
26512 
26513 				write_radio_reg(pi,
26514 						RADIO_2056_TX_RXIQCAL_TXMUX |
26515 						RADIO_2056_TX0, 0x6);
26516 				write_radio_reg(pi,
26517 						RADIO_2056_RX_RXIQCAL_RXMUX |
26518 						RADIO_2056_RX1, 0x6);
26519 			}
26520 		}
26521 	}
26522 }
26523 
wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy * pi,u8 rx_core)26524 static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26525 {
26526 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26527 		if (rx_core == PHY_CORE_0) {
26528 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26529 				write_radio_reg(
26530 					pi,
26531 					RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26532 					pi->
26533 					tx_rx_cal_radio_saveregs[0]);
26534 				write_radio_reg(
26535 					pi,
26536 					RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26537 					pi->
26538 					tx_rx_cal_radio_saveregs[1]);
26539 
26540 			} else {
26541 				write_radio_reg(
26542 					pi,
26543 					RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26544 					pi->
26545 					tx_rx_cal_radio_saveregs[0]);
26546 				write_radio_reg(
26547 					pi,
26548 					RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26549 					pi->
26550 					tx_rx_cal_radio_saveregs[1]);
26551 			}
26552 
26553 		} else {
26554 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26555 				write_radio_reg(
26556 					pi,
26557 					RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26558 					pi->
26559 					tx_rx_cal_radio_saveregs[0]);
26560 				write_radio_reg(
26561 					pi,
26562 					RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26563 					pi->
26564 					tx_rx_cal_radio_saveregs[1]);
26565 
26566 			} else {
26567 				write_radio_reg(
26568 					pi,
26569 					RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26570 					pi->
26571 					tx_rx_cal_radio_saveregs[0]);
26572 				write_radio_reg(
26573 					pi,
26574 					RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26575 					pi->
26576 					tx_rx_cal_radio_saveregs[1]);
26577 			}
26578 		}
26579 
26580 	} else {
26581 		if (rx_core == PHY_CORE_0) {
26582 			write_radio_reg(pi,
26583 					RADIO_2056_TX_RXIQCAL_TXMUX |
26584 					RADIO_2056_TX1,
26585 					pi->tx_rx_cal_radio_saveregs[0]);
26586 
26587 			write_radio_reg(pi,
26588 					RADIO_2056_RX_RXIQCAL_RXMUX |
26589 					RADIO_2056_RX0,
26590 					pi->tx_rx_cal_radio_saveregs[1]);
26591 
26592 			if (pi->pubpi.radiorev >= 5) {
26593 				write_radio_reg(pi,
26594 						RADIO_2056_RX_RXSPARE2 |
26595 						RADIO_2056_RX0,
26596 						pi->
26597 						tx_rx_cal_radio_saveregs[2]);
26598 
26599 				write_radio_reg(pi,
26600 						RADIO_2056_TX_TXSPARE2 |
26601 						RADIO_2056_TX1,
26602 						pi->
26603 						tx_rx_cal_radio_saveregs[3]);
26604 			}
26605 
26606 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26607 				if (pi->pubpi.radiorev >= 5)
26608 					write_radio_reg(
26609 						pi,
26610 						RADIO_2056_RX_LNAA_MASTER
26611 						| RADIO_2056_RX0,
26612 						pi->
26613 						tx_rx_cal_radio_saveregs
26614 						[4]);
26615 				else
26616 					write_radio_reg(
26617 						pi,
26618 						RADIO_2056_RX_LNAA_TUNE
26619 						| RADIO_2056_RX0,
26620 						pi->
26621 						tx_rx_cal_radio_saveregs
26622 						[4]);
26623 			} else {
26624 				if (pi->pubpi.radiorev >= 5)
26625 					write_radio_reg(
26626 						pi,
26627 						RADIO_2056_RX_LNAG_MASTER
26628 						| RADIO_2056_RX0,
26629 						pi->
26630 						tx_rx_cal_radio_saveregs
26631 						[4]);
26632 				else
26633 					write_radio_reg(
26634 						pi,
26635 						RADIO_2056_RX_LNAG_TUNE
26636 						| RADIO_2056_RX0,
26637 						pi->
26638 						tx_rx_cal_radio_saveregs
26639 						[4]);
26640 			}
26641 
26642 		} else {
26643 			write_radio_reg(pi,
26644 					RADIO_2056_TX_RXIQCAL_TXMUX |
26645 					RADIO_2056_TX0,
26646 					pi->tx_rx_cal_radio_saveregs[0]);
26647 
26648 			write_radio_reg(pi,
26649 					RADIO_2056_RX_RXIQCAL_RXMUX |
26650 					RADIO_2056_RX1,
26651 					pi->tx_rx_cal_radio_saveregs[1]);
26652 
26653 			if (pi->pubpi.radiorev >= 5) {
26654 				write_radio_reg(pi,
26655 						RADIO_2056_RX_RXSPARE2 |
26656 						RADIO_2056_RX1,
26657 						pi->
26658 						tx_rx_cal_radio_saveregs[2]);
26659 
26660 				write_radio_reg(pi,
26661 						RADIO_2056_TX_TXSPARE2 |
26662 						RADIO_2056_TX0,
26663 						pi->
26664 						tx_rx_cal_radio_saveregs[3]);
26665 			}
26666 
26667 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26668 				if (pi->pubpi.radiorev >= 5)
26669 					write_radio_reg(
26670 						pi,
26671 						RADIO_2056_RX_LNAA_MASTER
26672 						| RADIO_2056_RX1,
26673 						pi->
26674 						tx_rx_cal_radio_saveregs
26675 						[4]);
26676 				else
26677 					write_radio_reg(
26678 						pi,
26679 						RADIO_2056_RX_LNAA_TUNE
26680 						| RADIO_2056_RX1,
26681 						pi->
26682 						tx_rx_cal_radio_saveregs
26683 						[4]);
26684 			} else {
26685 				if (pi->pubpi.radiorev >= 5)
26686 					write_radio_reg(
26687 						pi,
26688 						RADIO_2056_RX_LNAG_MASTER
26689 						| RADIO_2056_RX1,
26690 						pi->
26691 						tx_rx_cal_radio_saveregs
26692 						[4]);
26693 				else
26694 					write_radio_reg(
26695 						pi,
26696 						RADIO_2056_RX_LNAG_TUNE
26697 						| RADIO_2056_RX1,
26698 						pi->
26699 						tx_rx_cal_radio_saveregs
26700 						[4]);
26701 			}
26702 		}
26703 	}
26704 }
26705 
wlc_phy_rxcal_physetup_nphy(struct brcms_phy * pi,u8 rx_core)26706 static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26707 {
26708 	u8 tx_core;
26709 	u16 rx_antval, tx_antval;
26710 
26711 	if (NREV_GE(pi->pubpi.phy_rev, 7))
26712 		tx_core = rx_core;
26713 	else
26714 		tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26715 
26716 	pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26717 	pi->tx_rx_cal_phy_saveregs[1] =
26718 		read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26719 	pi->tx_rx_cal_phy_saveregs[2] =
26720 		read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
26721 	pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
26722 	pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
26723 	pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
26724 	pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
26725 	pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
26726 	pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
26727 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26728 		pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
26729 		pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
26730 		pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
26731 		pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
26732 	}
26733 
26734 	pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
26735 	pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
26736 	mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
26737 		    0x29b, (0x1 << 0), (0) << 0);
26738 
26739 	mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
26740 		    0x29b, (0x1 << 0), (0) << 0);
26741 
26742 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26743 
26744 		mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26745 
26746 		mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
26747 
26748 	} else {
26749 
26750 		mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
26751 		mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26752 		mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
26753 		mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
26754 	}
26755 
26756 	mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
26757 	mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26758 		    (0x1 << 2), (0x1 << 2));
26759 	if (NREV_LT(pi->pubpi.phy_rev, 7)) {
26760 		mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
26761 			    (0x1 << 0) | (0x1 << 1), 0);
26762 		mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
26763 			    0x8f : 0xa5,
26764 			    (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
26765 	}
26766 
26767 	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
26768 					 RADIO_MIMO_CORESEL_CORE1 |
26769 					 RADIO_MIMO_CORESEL_CORE2);
26770 
26771 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26772 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26773 						  0, 0, 0,
26774 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
26775 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
26776 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
26777 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
26778 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
26779 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
26780 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
26781 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
26782 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
26783 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
26784 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
26785 		if (CHSPEC_IS40(pi->radio_chanspec))
26786 			wlc_phy_rfctrl_override_nphy_rev7(
26787 				pi,
26788 				(0x1 << 7),
26789 				2, 0, 0,
26790 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
26791 		else
26792 			wlc_phy_rfctrl_override_nphy_rev7(
26793 				pi,
26794 				(0x1 << 7),
26795 				0, 0, 0,
26796 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
26797 
26798 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26799 						  0, 0, 0,
26800 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
26801 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
26802 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
26803 	} else {
26804 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
26805 	}
26806 
26807 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
26808 
26809 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26810 
26811 		wlc_phy_rfctrlintc_override_nphy(pi,
26812 						 NPHY_RfctrlIntc_override_TRSW,
26813 						 0x1, rx_core + 1);
26814 	} else {
26815 
26816 		if (rx_core == PHY_CORE_0) {
26817 			rx_antval = 0x1;
26818 			tx_antval = 0x8;
26819 		} else {
26820 			rx_antval = 0x4;
26821 			tx_antval = 0x2;
26822 		}
26823 
26824 		wlc_phy_rfctrlintc_override_nphy(pi,
26825 						 NPHY_RfctrlIntc_override_TRSW,
26826 						 rx_antval, rx_core + 1);
26827 		wlc_phy_rfctrlintc_override_nphy(pi,
26828 						 NPHY_RfctrlIntc_override_TRSW,
26829 						 tx_antval, tx_core + 1);
26830 	}
26831 }
26832 
wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy * pi,u8 rx_core)26833 static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26834 {
26835 
26836 	write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
26837 	write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
26838 		      pi->tx_rx_cal_phy_saveregs[1]);
26839 	write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26840 		      pi->tx_rx_cal_phy_saveregs[2]);
26841 	write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
26842 	write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
26843 
26844 	write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
26845 	write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
26846 	write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
26847 	write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
26848 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26849 		write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
26850 		write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
26851 		write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
26852 		write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
26853 	}
26854 
26855 	write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
26856 	write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
26857 }
26858 
26859 static void
wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy * pi,u8 rx_core,u16 * rxgain,u8 cal_type)26860 wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
26861 				 u16 *rxgain, u8 cal_type)
26862 {
26863 
26864 	u16 num_samps;
26865 	struct phy_iq_est est[PHY_CORE_MAX];
26866 	u8 tx_core;
26867 	struct nphy_iq_comp save_comp, zero_comp;
26868 	u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
26869 	    thresh_pwr = 10000;
26870 	s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
26871 	bool gainctrl_done = false;
26872 	u8 mix_tia_gain = 3;
26873 	s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
26874 	s8 curr_gaintbl_index = 3;
26875 	u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
26876 	const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
26877 	u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
26878 	int fine_gain_idx;
26879 	s8 txpwrindex;
26880 	u16 nphy_rxcal_txgain[2];
26881 
26882 	if (NREV_GE(pi->pubpi.phy_rev, 7))
26883 		tx_core = rx_core;
26884 	else
26885 		tx_core = 1 - rx_core;
26886 
26887 	num_samps = 1024;
26888 	desired_log2_pwr = 13;
26889 
26890 	wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
26891 	zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
26892 	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
26893 
26894 	if (CHSPEC_IS5G(pi->radio_chanspec)) {
26895 		if (NREV_GE(pi->pubpi.phy_rev, 7))
26896 			mix_tia_gain = 3;
26897 		else if (NREV_GE(pi->pubpi.phy_rev, 4))
26898 			mix_tia_gain = 4;
26899 		else
26900 			mix_tia_gain = 6;
26901 		if (NREV_GE(pi->pubpi.phy_rev, 7))
26902 			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
26903 		else
26904 			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
26905 	} else {
26906 		if (NREV_GE(pi->pubpi.phy_rev, 7))
26907 			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
26908 		else
26909 			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
26910 	}
26911 
26912 	do {
26913 
26914 		hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
26915 			0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
26916 		lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
26917 		lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
26918 		lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
26919 		lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
26920 		txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
26921 
26922 		if (NREV_GE(pi->pubpi.phy_rev, 7))
26923 			wlc_phy_rfctrl_override_1tomany_nphy(
26924 				pi,
26925 				NPHY_REV7_RfctrlOverride_cmd_rxgain,
26926 				((lpf_biq1 << 12) |
26927 				 (lpf_biq0 << 8) |
26928 				 (mix_tia_gain << 4) | (lna2 << 2)
26929 				 | lna1), 0x3, 0);
26930 		else
26931 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
26932 						     ((hpvga << 12) |
26933 						      (lpf_biq1 << 10) |
26934 						      (lpf_biq0 << 8) |
26935 						      (mix_tia_gain << 4) |
26936 						      (lna2 << 2) | lna1), 0x3,
26937 						     0);
26938 
26939 		pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
26940 
26941 		if (txpwrindex == -1) {
26942 			nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
26943 			nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
26944 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
26945 						 2, 0x110, 16,
26946 						 nphy_rxcal_txgain);
26947 		} else {
26948 			wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
26949 						 false);
26950 		}
26951 
26952 		wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
26953 				     NPHY_RXCAL_TONEFREQ_40MHz :
26954 				     NPHY_RXCAL_TONEFREQ_20MHz,
26955 				     NPHY_RXCAL_TONEAMP, 0, cal_type, false);
26956 
26957 		wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
26958 		i_pwr = DIV_ROUND_CLOSEST(est[rx_core].i_pwr, num_samps);
26959 		q_pwr = DIV_ROUND_CLOSEST(est[rx_core].q_pwr, num_samps);
26960 		curr_pwr = i_pwr + q_pwr;
26961 
26962 		switch (gainctrl_dirn) {
26963 		case NPHY_RXCAL_GAIN_INIT:
26964 			if (curr_pwr > thresh_pwr) {
26965 				gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
26966 				prev_gaintbl_index = curr_gaintbl_index;
26967 				curr_gaintbl_index--;
26968 			} else {
26969 				gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
26970 				prev_gaintbl_index = curr_gaintbl_index;
26971 				curr_gaintbl_index++;
26972 			}
26973 			break;
26974 
26975 		case NPHY_RXCAL_GAIN_UP:
26976 			if (curr_pwr > thresh_pwr) {
26977 				gainctrl_done = true;
26978 				optim_pwr = prev_pwr;
26979 				optim_gaintbl_index = prev_gaintbl_index;
26980 			} else {
26981 				prev_gaintbl_index = curr_gaintbl_index;
26982 				curr_gaintbl_index++;
26983 			}
26984 			break;
26985 
26986 		case NPHY_RXCAL_GAIN_DOWN:
26987 			if (curr_pwr > thresh_pwr) {
26988 				prev_gaintbl_index = curr_gaintbl_index;
26989 				curr_gaintbl_index--;
26990 			} else {
26991 				gainctrl_done = true;
26992 				optim_pwr = curr_pwr;
26993 				optim_gaintbl_index = curr_gaintbl_index;
26994 			}
26995 			break;
26996 
26997 		default:
26998 			break;
26999 		}
27000 
27001 		if ((curr_gaintbl_index < 0) ||
27002 		    (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27003 			gainctrl_done = true;
27004 			optim_pwr = curr_pwr;
27005 			optim_gaintbl_index = prev_gaintbl_index;
27006 		} else {
27007 			prev_pwr = curr_pwr;
27008 		}
27009 
27010 		wlc_phy_stopplayback_nphy(pi);
27011 	} while (!gainctrl_done);
27012 
27013 	hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27014 	lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27015 	lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27016 	lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27017 	lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27018 	txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27019 
27020 	actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27021 	delta_pwr = desired_log2_pwr - actual_log2_pwr;
27022 
27023 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27024 		fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27025 
27026 		if (fine_gain_idx + (int)lpf_biq0 > 10)
27027 			lpf_biq1 = 10 - lpf_biq0;
27028 		else
27029 			lpf_biq1 = (u16) max(fine_gain_idx, 0);
27030 
27031 		wlc_phy_rfctrl_override_1tomany_nphy(
27032 			pi,
27033 			NPHY_REV7_RfctrlOverride_cmd_rxgain,
27034 			((lpf_biq1 << 12) |
27035 			 (lpf_biq0 << 8) |
27036 			 (mix_tia_gain << 4) |
27037 			 (lna2 << 2) | lna1), 0x3,
27038 			0);
27039 	} else {
27040 		hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27041 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27042 					     ((hpvga << 12) |
27043 					      (lpf_biq1 << 10) |
27044 					      (lpf_biq0 << 8) |
27045 					      (mix_tia_gain << 4) |
27046 					      (lna2 << 2) |
27047 					      lna1), 0x3, 0);
27048 	}
27049 
27050 	if (rxgain != NULL) {
27051 		*rxgain++ = lna1;
27052 		*rxgain++ = lna2;
27053 		*rxgain++ = mix_tia_gain;
27054 		*rxgain++ = lpf_biq0;
27055 		*rxgain++ = lpf_biq1;
27056 		*rxgain = hpvga;
27057 	}
27058 
27059 	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27060 }
27061 
27062 static void
wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy * pi,u8 rx_core,u16 * rxgain,u8 cal_type)27063 wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27064 			    u8 cal_type)
27065 {
27066 	wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27067 }
27068 
27069 static u8
wlc_phy_rc_sweep_nphy(struct brcms_phy * pi,u8 core_idx,u8 loopback_type)27070 wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27071 {
27072 	u32 target_bws[2] = { 9500, 21000 };
27073 	u32 ref_tones[2] = { 3000, 6000 };
27074 	u32 target_bw, ref_tone;
27075 
27076 	u32 target_pwr_ratios[2] = { 28606, 18468 };
27077 	u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27078 
27079 	u16 start_rccal_ovr_val = 128;
27080 	u16 txlpf_rccal_lpc_ovr_val = 128;
27081 	u16 rxlpf_rccal_hpc_ovr_val = 159;
27082 
27083 	u16 orig_txlpf_rccal_lpc_ovr_val;
27084 	u16 orig_rxlpf_rccal_hpc_ovr_val;
27085 	u16 radio_addr_offset_rx;
27086 	u16 radio_addr_offset_tx;
27087 	u16 orig_dcBypass;
27088 	u16 orig_RxStrnFilt40Num[6];
27089 	u16 orig_RxStrnFilt40Den[4];
27090 	u16 orig_rfctrloverride[2];
27091 	u16 orig_rfctrlauxreg[2];
27092 	u16 orig_rfctrlrssiothers;
27093 	u16 tx_lpf_bw = 4;
27094 
27095 	u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27096 	u16 lpf_hpc = 7, hpvga_hpc = 7;
27097 
27098 	s8 rccal_stepsize;
27099 	u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27100 	u32 ref_iq_vals = 0, target_iq_vals = 0;
27101 	u16 num_samps, log_num_samps = 10;
27102 	struct phy_iq_est est[PHY_CORE_MAX];
27103 
27104 	if (NREV_GE(pi->pubpi.phy_rev, 7))
27105 		return 0;
27106 
27107 	num_samps = (1 << log_num_samps);
27108 
27109 	if (CHSPEC_IS40(pi->radio_chanspec)) {
27110 		target_bw = target_bws[1];
27111 		target_pwr_ratio = target_pwr_ratios[1];
27112 		ref_tone = ref_tones[1];
27113 		rx_lpf_bw = rx_lpf_bws[1];
27114 	} else {
27115 		target_bw = target_bws[0];
27116 		target_pwr_ratio = target_pwr_ratios[0];
27117 		ref_tone = ref_tones[0];
27118 		rx_lpf_bw = rx_lpf_bws[0];
27119 	}
27120 
27121 	if (core_idx == 0) {
27122 		radio_addr_offset_rx = RADIO_2056_RX0;
27123 		radio_addr_offset_tx =
27124 			(loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27125 	} else {
27126 		radio_addr_offset_rx = RADIO_2056_RX1;
27127 		radio_addr_offset_tx =
27128 			(loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27129 	}
27130 
27131 	orig_txlpf_rccal_lpc_ovr_val =
27132 		read_radio_reg(pi,
27133 			       (RADIO_2056_TX_TXLPF_RCCAL |
27134 				radio_addr_offset_tx));
27135 	orig_rxlpf_rccal_hpc_ovr_val =
27136 		read_radio_reg(pi,
27137 			       (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27138 				radio_addr_offset_rx));
27139 
27140 	orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27141 
27142 	orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27143 	orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27144 	orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27145 	orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27146 	orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27147 	orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27148 	orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27149 	orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27150 	orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27151 	orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27152 
27153 	orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27154 	orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27155 	orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27156 	orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27157 	orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27158 
27159 	write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27160 			txlpf_rccal_lpc_ovr_val);
27161 
27162 	write_radio_reg(pi,
27163 			(RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27164 			rxlpf_rccal_hpc_ovr_val);
27165 
27166 	mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27167 
27168 	write_phy_reg(pi, 0x267, 0x02d4);
27169 	write_phy_reg(pi, 0x268, 0x0000);
27170 	write_phy_reg(pi, 0x269, 0x0000);
27171 	write_phy_reg(pi, 0x26a, 0x0000);
27172 	write_phy_reg(pi, 0x26b, 0x0000);
27173 	write_phy_reg(pi, 0x26c, 0x02d4);
27174 	write_phy_reg(pi, 0x26d, 0x0000);
27175 	write_phy_reg(pi, 0x26e, 0x0000);
27176 	write_phy_reg(pi, 0x26f, 0x0000);
27177 	write_phy_reg(pi, 0x270, 0x0000);
27178 
27179 	or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27180 	or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27181 	or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27182 	or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27183 
27184 	mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27185 		    (0x7 << 10), (tx_lpf_bw << 10));
27186 	mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27187 		    (0x7 << 0), (hpvga_hpc << 0));
27188 	mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27189 		    (0x7 << 4), (lpf_hpc << 4));
27190 	mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27191 		    (0x7 << 8), (rx_lpf_bw << 8));
27192 
27193 	rccal_stepsize = 16;
27194 	rccal_val = start_rccal_ovr_val + rccal_stepsize;
27195 
27196 	while (rccal_stepsize >= 0) {
27197 		write_radio_reg(pi,
27198 				(RADIO_2056_RX_RXLPF_RCCAL_LPC |
27199 				 radio_addr_offset_rx), rccal_val);
27200 
27201 		if (rccal_stepsize == 16) {
27202 
27203 			wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27204 					     0, 1, false);
27205 			udelay(2);
27206 
27207 			wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27208 
27209 			if (core_idx == 0)
27210 				ref_iq_vals =
27211 					max_t(u32, (est[0].i_pwr +
27212 						    est[0].q_pwr) >>
27213 					      (log_num_samps + 1),
27214 					      1);
27215 			else
27216 				ref_iq_vals =
27217 					max_t(u32, (est[1].i_pwr +
27218 						    est[1].q_pwr) >>
27219 					      (log_num_samps + 1),
27220 					      1);
27221 
27222 			wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27223 					     0, 1, false);
27224 			udelay(2);
27225 		}
27226 
27227 		wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27228 
27229 		if (core_idx == 0)
27230 			target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27231 					 (log_num_samps + 1);
27232 		else
27233 			target_iq_vals =
27234 				(est[1].i_pwr +
27235 				 est[1].q_pwr) >> (log_num_samps + 1);
27236 
27237 		pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27238 
27239 		if (rccal_stepsize == 0)
27240 			rccal_stepsize--;
27241 		else if (rccal_stepsize == 1) {
27242 			last_rccal_val = rccal_val;
27243 			rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27244 			last_pwr_ratio = pwr_ratio;
27245 			rccal_stepsize--;
27246 		} else {
27247 			rccal_stepsize = (rccal_stepsize >> 1);
27248 			rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27249 				      rccal_stepsize : (-rccal_stepsize));
27250 		}
27251 
27252 		if (rccal_stepsize == -1) {
27253 			best_rccal_val =
27254 				(abs((int)last_pwr_ratio -
27255 				     (int)target_pwr_ratio) <
27256 				 abs((int)pwr_ratio -
27257 				     (int)target_pwr_ratio)) ? last_rccal_val :
27258 				rccal_val;
27259 
27260 			if (CHSPEC_IS40(pi->radio_chanspec)) {
27261 				if ((best_rccal_val > 140)
27262 				    || (best_rccal_val < 135))
27263 					best_rccal_val = 138;
27264 			} else {
27265 				if ((best_rccal_val > 142)
27266 				    || (best_rccal_val < 137))
27267 					best_rccal_val = 140;
27268 			}
27269 
27270 			write_radio_reg(pi,
27271 					(RADIO_2056_RX_RXLPF_RCCAL_LPC |
27272 					 radio_addr_offset_rx), best_rccal_val);
27273 		}
27274 	}
27275 
27276 	wlc_phy_stopplayback_nphy(pi);
27277 
27278 	write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27279 			orig_txlpf_rccal_lpc_ovr_val);
27280 	write_radio_reg(pi,
27281 			(RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27282 			orig_rxlpf_rccal_hpc_ovr_val);
27283 
27284 	mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27285 
27286 	write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27287 	write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27288 	write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27289 	write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27290 	write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27291 	write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27292 	write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27293 	write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27294 	write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27295 	write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27296 
27297 	write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27298 	write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27299 	write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27300 	write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27301 	write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27302 
27303 	pi->nphy_anarxlpf_adjusted = false;
27304 
27305 	return best_rccal_val - 0x80;
27306 }
27307 
27308 #define WAIT_FOR_SCOPE  4000
wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy * pi,struct nphy_txgains target_gain,u8 cal_type,bool debug)27309 static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27310 				      struct nphy_txgains target_gain,
27311 				      u8 cal_type, bool debug)
27312 {
27313 	u16 orig_BBConfig;
27314 	u8 core_no, rx_core;
27315 	u8 best_rccal[2];
27316 	u16 gain_save[2];
27317 	u16 cal_gain[2];
27318 	struct nphy_iqcal_params cal_params[2];
27319 	u8 rxcore_state;
27320 	s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27321 	s8 txlpf_idac;
27322 	bool phyhang_avoid_state = false;
27323 	bool skip_rxiqcal = false;
27324 
27325 	orig_BBConfig = read_phy_reg(pi, 0x01);
27326 	mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27327 
27328 	wlc_phy_stay_in_carriersearch_nphy(pi, true);
27329 
27330 	if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27331 		phyhang_avoid_state = pi->phyhang_avoid;
27332 		pi->phyhang_avoid = false;
27333 	}
27334 
27335 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27336 
27337 	for (core_no = 0; core_no <= 1; core_no++) {
27338 		wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27339 					      &cal_params[core_no]);
27340 		cal_gain[core_no] = cal_params[core_no].cal_gain;
27341 	}
27342 
27343 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27344 
27345 	rxcore_state = wlc_phy_rxcore_getstate_nphy(
27346 		(struct brcms_phy_pub *) pi);
27347 
27348 	for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27349 
27350 		skip_rxiqcal =
27351 			((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27352 
27353 		wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27354 
27355 		wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27356 
27357 		if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27358 
27359 			wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27360 
27361 			wlc_phy_tx_tone_nphy(pi,
27362 					     (CHSPEC_IS40(
27363 						      pi->radio_chanspec)) ?
27364 					     NPHY_RXCAL_TONEFREQ_40MHz :
27365 					     NPHY_RXCAL_TONEFREQ_20MHz,
27366 					     NPHY_RXCAL_TONEAMP, 0, cal_type,
27367 					     false);
27368 
27369 			if (debug)
27370 				mdelay(WAIT_FOR_SCOPE);
27371 
27372 			wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27373 			wlc_phy_stopplayback_nphy(pi);
27374 		}
27375 
27376 		if (((cal_type == 1) || (cal_type == 2))
27377 		    && NREV_LT(pi->pubpi.phy_rev, 7)) {
27378 
27379 			if (rx_core == PHY_CORE_1) {
27380 
27381 				if (rxcore_state == 1)
27382 					wlc_phy_rxcore_setstate_nphy(
27383 						(struct brcms_phy_pub *) pi, 3);
27384 
27385 				wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27386 							    1);
27387 
27388 				best_rccal[rx_core] =
27389 					wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27390 				pi->nphy_rccal_value = best_rccal[rx_core];
27391 
27392 				if (rxcore_state == 1)
27393 					wlc_phy_rxcore_setstate_nphy(
27394 						(struct brcms_phy_pub *) pi,
27395 						rxcore_state);
27396 			}
27397 		}
27398 
27399 		wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27400 
27401 		wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27402 		wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27403 	}
27404 
27405 	if ((cal_type == 1) || (cal_type == 2)) {
27406 
27407 		best_rccal[0] = best_rccal[1];
27408 		write_radio_reg(pi,
27409 				(RADIO_2056_RX_RXLPF_RCCAL_LPC |
27410 				 RADIO_2056_RX0), (best_rccal[0] | 0x80));
27411 
27412 		for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27413 			rxlpf_rccal_hpc =
27414 				(((int)best_rccal[rx_core] - 12) >> 1) + 10;
27415 			txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27416 
27417 			if (PHY_IPA(pi)) {
27418 				txlpf_rccal_lpc +=
27419 					(pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27420 				txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27421 					     0x0e : 0x13;
27422 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27423 						 TXLPF_IDAC_4, txlpf_idac);
27424 			}
27425 
27426 			rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27427 					      0);
27428 			txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27429 					      0);
27430 
27431 			write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27432 					     ((rx_core ==
27433 					       PHY_CORE_0) ? RADIO_2056_RX0 :
27434 					      RADIO_2056_RX1)),
27435 					(rxlpf_rccal_hpc | 0x80));
27436 
27437 			write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27438 					     ((rx_core ==
27439 					       PHY_CORE_0) ? RADIO_2056_TX0 :
27440 					      RADIO_2056_TX1)),
27441 					(txlpf_rccal_lpc | 0x80));
27442 		}
27443 	}
27444 
27445 	write_phy_reg(pi, 0x01, orig_BBConfig);
27446 
27447 	wlc_phy_resetcca_nphy(pi);
27448 
27449 	if (NREV_GE(pi->pubpi.phy_rev, 7))
27450 		wlc_phy_rfctrl_override_1tomany_nphy(
27451 			pi,
27452 			NPHY_REV7_RfctrlOverride_cmd_rxgain,
27453 			0, 0x3, 1);
27454 	else
27455 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27456 
27457 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27458 
27459 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27460 				 gain_save);
27461 
27462 	if (NREV_GE(pi->pubpi.phy_rev, 4))
27463 		pi->phyhang_avoid = phyhang_avoid_state;
27464 
27465 	wlc_phy_stay_in_carriersearch_nphy(pi, false);
27466 
27467 	return 0;
27468 }
27469 
27470 static int
wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy * pi,struct nphy_txgains target_gain,bool debug)27471 wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27472 			   struct nphy_txgains target_gain, bool debug)
27473 {
27474 	struct phy_iq_est est[PHY_CORE_MAX];
27475 	u8 core_num, rx_core, tx_core;
27476 	u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27477 	u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27478 	u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27479 	s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27480 	s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27481 	u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27482 	u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27483 	u16 num_samps;
27484 	u32 i_pwr, q_pwr, tot_pwr[3];
27485 	u8 gain_pass, use_hpf_num;
27486 	u16 mask, val1, val2;
27487 	u16 core_no;
27488 	u16 gain_save[2];
27489 	u16 cal_gain[2];
27490 	struct nphy_iqcal_params cal_params[2];
27491 	u8 phy_bw;
27492 	int bcmerror = 0;
27493 	bool first_playtone = true;
27494 
27495 	wlc_phy_stay_in_carriersearch_nphy(pi, true);
27496 
27497 	if (NREV_LT(pi->pubpi.phy_rev, 2))
27498 		wlc_phy_reapply_txcal_coeffs_nphy(pi);
27499 
27500 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27501 
27502 	for (core_no = 0; core_no <= 1; core_no++) {
27503 		wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27504 					      &cal_params[core_no]);
27505 		cal_gain[core_no] = cal_params[core_no].cal_gain;
27506 	}
27507 
27508 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27509 
27510 	num_samps = 1024;
27511 	desired_log2_pwr = 13;
27512 
27513 	for (core_num = 0; core_num < 2; core_num++) {
27514 
27515 		rx_core = core_num;
27516 		tx_core = 1 - core_num;
27517 
27518 		orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27519 		orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27520 						0xa6 : 0xa7);
27521 		orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27522 		orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27523 						 0x91 : 0x92);
27524 		orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27525 						 0x91 : 0x92);
27526 
27527 		mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27528 		mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27529 
27530 		or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27531 			   ((0x1 << 1) | (0x1 << 2)));
27532 		or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27533 
27534 		if (((pi->nphy_rxcalparams) & 0xff000000))
27535 			write_phy_reg(pi,
27536 				      (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27537 				      (CHSPEC_IS5G(pi->radio_chanspec) ?
27538 					0x140 : 0x110));
27539 		else
27540 			write_phy_reg(pi,
27541 				      (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27542 				      (CHSPEC_IS5G(pi->radio_chanspec) ?
27543 				       0x180 : 0x120));
27544 
27545 		write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27546 			      (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27547 			       0x114));
27548 
27549 		mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27550 		if (rx_core == PHY_CORE_0) {
27551 			val1 = RADIO_2055_COUPLE_RX_MASK;
27552 			val2 = RADIO_2055_COUPLE_TX_MASK;
27553 		} else {
27554 			val1 = RADIO_2055_COUPLE_TX_MASK;
27555 			val2 = RADIO_2055_COUPLE_RX_MASK;
27556 		}
27557 
27558 		if ((pi->nphy_rxcalparams & 0x10000)) {
27559 			mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27560 				      val1);
27561 			mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27562 				      val2);
27563 		}
27564 
27565 		for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27566 
27567 			if (debug)
27568 				mdelay(WAIT_FOR_SCOPE);
27569 
27570 			if (gain_pass < 3) {
27571 				curr_lna = lna_vals[gain_pass];
27572 				curr_hpf1 = hpf1_vals[gain_pass];
27573 				curr_hpf2 = hpf2_vals[gain_pass];
27574 			} else {
27575 
27576 				if (tot_pwr[1] > 10000) {
27577 					curr_lna = lna_vals[2];
27578 					curr_hpf1 = hpf1_vals[2];
27579 					curr_hpf2 = hpf2_vals[2];
27580 					use_hpf_num = 1;
27581 					curr_hpf = curr_hpf1;
27582 					actual_log2_pwr =
27583 						wlc_phy_nbits(tot_pwr[2]);
27584 				} else {
27585 					if (tot_pwr[0] > 10000) {
27586 						curr_lna = lna_vals[1];
27587 						curr_hpf1 = hpf1_vals[1];
27588 						curr_hpf2 = hpf2_vals[1];
27589 						use_hpf_num = 1;
27590 						curr_hpf = curr_hpf1;
27591 						actual_log2_pwr =
27592 							wlc_phy_nbits(
27593 								tot_pwr[1]);
27594 					} else {
27595 						curr_lna = lna_vals[0];
27596 						curr_hpf1 = hpf1_vals[0];
27597 						curr_hpf2 = hpf2_vals[0];
27598 						use_hpf_num = 2;
27599 						curr_hpf = curr_hpf2;
27600 						actual_log2_pwr =
27601 							wlc_phy_nbits(
27602 								tot_pwr[0]);
27603 					}
27604 				}
27605 
27606 				hpf_change = desired_log2_pwr - actual_log2_pwr;
27607 				curr_hpf += hpf_change;
27608 				curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27609 				if (use_hpf_num == 1)
27610 					curr_hpf1 = curr_hpf;
27611 				else
27612 					curr_hpf2 = curr_hpf;
27613 			}
27614 
27615 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27616 						     ((curr_hpf2 << 8) |
27617 						      (curr_hpf1 << 4) |
27618 						      (curr_lna << 2)), 0x3, 0);
27619 			wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27620 
27621 			wlc_phy_stopplayback_nphy(pi);
27622 
27623 			if (first_playtone) {
27624 				bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27625 						(u16) (pi->nphy_rxcalparams &
27626 						       0xffff), 0, 0, true);
27627 				first_playtone = false;
27628 			} else {
27629 				phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27630 					  40 : 20;
27631 				wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27632 							0, 0, 0, true);
27633 			}
27634 
27635 			if (bcmerror == 0) {
27636 				if (gain_pass < 3) {
27637 
27638 					wlc_phy_rx_iq_est_nphy(pi, est,
27639 							       num_samps, 32,
27640 							       0);
27641 					i_pwr = DIV_ROUND_CLOSEST(est[rx_core].i_pwr,
27642 									 num_samps);
27643 					q_pwr = DIV_ROUND_CLOSEST(est[rx_core].q_pwr,
27644 									 num_samps);
27645 					tot_pwr[gain_pass] = i_pwr + q_pwr;
27646 				} else {
27647 
27648 					wlc_phy_calc_rx_iq_comp_nphy(pi,
27649 								     (1 <<
27650 								      rx_core));
27651 				}
27652 
27653 				wlc_phy_stopplayback_nphy(pi);
27654 			}
27655 
27656 			if (bcmerror != 0)
27657 				break;
27658 		}
27659 
27660 		and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27661 		and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27662 
27663 		write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27664 			      0x92, orig_RfctrlIntcTx);
27665 		write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27666 			      0x92, orig_RfctrlIntcRx);
27667 		write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27668 		write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27669 			      0xa7, orig_AfectrlCore);
27670 		write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27671 
27672 		if (bcmerror != 0)
27673 			break;
27674 	}
27675 
27676 	wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27677 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27678 
27679 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27680 				 gain_save);
27681 
27682 	wlc_phy_stay_in_carriersearch_nphy(pi, false);
27683 
27684 	return bcmerror;
27685 }
27686 
27687 int
wlc_phy_cal_rxiq_nphy(struct brcms_phy * pi,struct nphy_txgains target_gain,u8 cal_type,bool debug)27688 wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27689 		      u8 cal_type, bool debug)
27690 {
27691 	if (NREV_GE(pi->pubpi.phy_rev, 7))
27692 		cal_type = 0;
27693 
27694 	if (NREV_GE(pi->pubpi.phy_rev, 3))
27695 		return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27696 						  debug);
27697 	else
27698 		return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27699 }
27700 
wlc_phy_txpwr_fixpower_nphy(struct brcms_phy * pi)27701 void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27702 {
27703 	uint core;
27704 	u32 txgain;
27705 	u16 rad_gain, dac_gain, bbmult, m1m2;
27706 	u8 txpi[2], chan_freq_range;
27707 	s32 rfpwr_offset;
27708 
27709 	if (pi->phyhang_avoid)
27710 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
27711 
27712 	if (pi->sh->sromrev < 4) {
27713 		txpi[0] = txpi[1] = 72;
27714 	} else {
27715 
27716 		chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27717 		switch (chan_freq_range) {
27718 		case WL_CHAN_FREQ_RANGE_2G:
27719 		case WL_CHAN_FREQ_RANGE_5GL:
27720 		case WL_CHAN_FREQ_RANGE_5GM:
27721 		case WL_CHAN_FREQ_RANGE_5GH:
27722 			txpi[0] = 0;
27723 			txpi[1] = 0;
27724 			break;
27725 		default:
27726 			txpi[0] = txpi[1] = 91;
27727 			break;
27728 		}
27729 	}
27730 
27731 	if (NREV_GE(pi->pubpi.phy_rev, 7))
27732 		txpi[0] = txpi[1] = 30;
27733 	else if (NREV_GE(pi->pubpi.phy_rev, 3))
27734 		txpi[0] = txpi[1] = 40;
27735 
27736 	if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27737 
27738 		if ((txpi[0] < 40) || (txpi[0] > 100) ||
27739 		    (txpi[1] < 40) || (txpi[1] > 100))
27740 			txpi[0] = txpi[1] = 91;
27741 	}
27742 
27743 	pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27744 	pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27745 	pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27746 	pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27747 
27748 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27749 		uint phyrev = pi->pubpi.phy_rev;
27750 
27751 		if (NREV_GE(phyrev, 3)) {
27752 			if (PHY_IPA(pi)) {
27753 				u32 *tx_gaintbl =
27754 					wlc_phy_get_ipa_gaintbl_nphy(pi);
27755 				txgain = tx_gaintbl[txpi[core]];
27756 			} else {
27757 				if (CHSPEC_IS5G(pi->radio_chanspec)) {
27758 					if (NREV_IS(phyrev, 3)) {
27759 						txgain =
27760 						      nphy_tpc_5GHz_txgain_rev3
27761 								   [txpi[core]];
27762 					} else if (NREV_IS(phyrev, 4)) {
27763 						txgain = (
27764 						  pi->srom_fem5g.extpagain ==
27765 						  3) ?
27766 						  nphy_tpc_5GHz_txgain_HiPwrEPA
27767 						 [txpi[core]] :
27768 						 nphy_tpc_5GHz_txgain_rev4
27769 						 [txpi[core]];
27770 					} else {
27771 						txgain =
27772 						      nphy_tpc_5GHz_txgain_rev5
27773 								   [txpi[core]];
27774 					}
27775 				} else {
27776 					if (NREV_GE(phyrev, 5) &&
27777 					    (pi->srom_fem2g.extpagain == 3)) {
27778 						txgain =
27779 							nphy_tpc_txgain_HiPwrEPA
27780 							[txpi[core]];
27781 					} else {
27782 						txgain = nphy_tpc_txgain_rev3
27783 							 [txpi[core]];
27784 					}
27785 				}
27786 			}
27787 		} else {
27788 			txgain = nphy_tpc_txgain[txpi[core]];
27789 		}
27790 
27791 		if (NREV_GE(phyrev, 3))
27792 			rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27793 		else
27794 			rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27795 
27796 		if (NREV_GE(phyrev, 7))
27797 			dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27798 		else
27799 			dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27800 
27801 		bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27802 
27803 		if (NREV_GE(phyrev, 3))
27804 			mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27805 					 0xa5), (0x1 << 8), (0x1 << 8));
27806 		else
27807 			mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27808 
27809 		write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27810 
27811 		wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27812 					 &rad_gain);
27813 
27814 		wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27815 		m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27816 		m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27817 		wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27818 
27819 		if (PHY_IPA(pi)) {
27820 			wlc_phy_table_read_nphy(pi,
27821 						(core ==
27822 						 PHY_CORE_0 ?
27823 						 NPHY_TBL_ID_CORE1TXPWRCTL :
27824 						 NPHY_TBL_ID_CORE2TXPWRCTL), 1,
27825 						576 + txpi[core], 32,
27826 						&rfpwr_offset);
27827 
27828 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27829 				    0x29b, (0x1ff << 4),
27830 				    ((s16) rfpwr_offset) << 4);
27831 
27832 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27833 				    0x29b, (0x1 << 2), (1) << 2);
27834 
27835 		}
27836 	}
27837 
27838 	and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
27839 
27840 	if (pi->phyhang_avoid)
27841 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
27842 }
27843 
27844 static void
wlc_phy_txpwr_nphy_srom_convert(u8 * srom_max,u16 * pwr_offset,u8 tmp_max_pwr,u8 rate_start,u8 rate_end)27845 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
27846 				u8 tmp_max_pwr, u8 rate_start,
27847 				u8 rate_end)
27848 {
27849 	u8 rate;
27850 	u8 word_num, nibble_num;
27851 	u8 tmp_nibble;
27852 
27853 	for (rate = rate_start; rate <= rate_end; rate++) {
27854 		word_num = (rate - rate_start) >> 2;
27855 		nibble_num = (rate - rate_start) & 0x3;
27856 		tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
27857 
27858 		srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
27859 	}
27860 }
27861 
27862 static void
wlc_phy_txpwr_nphy_po_apply(u8 * srom_max,u8 pwr_offset,u8 rate_start,u8 rate_end)27863 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
27864 			    u8 rate_start, u8 rate_end)
27865 {
27866 	u8 rate;
27867 
27868 	for (rate = rate_start; rate <= rate_end; rate++)
27869 		srom_max[rate] -= 2 * pwr_offset;
27870 }
27871 
27872 void
wlc_phy_ofdm_to_mcs_powers_nphy(u8 * power,u8 rate_mcs_start,u8 rate_mcs_end,u8 rate_ofdm_start)27873 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
27874 				u8 rate_mcs_end, u8 rate_ofdm_start)
27875 {
27876 	u8 rate1, rate2;
27877 
27878 	rate2 = rate_ofdm_start;
27879 	for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
27880 		power[rate1] = power[rate2];
27881 		rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
27882 	}
27883 	power[rate_mcs_end] = power[rate_mcs_end - 1];
27884 }
27885 
27886 void
wlc_phy_mcs_to_ofdm_powers_nphy(u8 * power,u8 rate_ofdm_start,u8 rate_ofdm_end,u8 rate_mcs_start)27887 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
27888 				u8 rate_ofdm_end, u8 rate_mcs_start)
27889 {
27890 	u8 rate1, rate2;
27891 
27892 	for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
27893 	     rate1 <= rate_ofdm_end; rate1++, rate2++) {
27894 		power[rate1] = power[rate2];
27895 		if (rate1 == rate_ofdm_start)
27896 			power[++rate1] = power[rate2];
27897 	}
27898 }
27899 
wlc_phy_txpwr_apply_nphy(struct brcms_phy * pi)27900 void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
27901 {
27902 	uint rate1, rate2, band_num;
27903 	u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
27904 	u8 tmp_max_pwr = 0;
27905 	u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
27906 	u8 *tx_srom_max_rate = NULL;
27907 
27908 	for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
27909 	     band_num++) {
27910 		switch (band_num) {
27911 		case 0:
27912 
27913 			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
27914 					  pi->nphy_pwrctrl_info[1].max_pwr_2g);
27915 
27916 			pwr_offsets1[0] = pi->cck2gpo;
27917 			wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
27918 							pwr_offsets1,
27919 							tmp_max_pwr,
27920 							TXP_FIRST_CCK,
27921 							TXP_LAST_CCK);
27922 
27923 			pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
27924 			pwr_offsets1[1] =
27925 				(u16) (pi->ofdm2gpo >> 16) & 0xffff;
27926 
27927 			pwr_offsets2 = pi->mcs2gpo;
27928 
27929 			tmp_cddpo = pi->cdd2gpo;
27930 			tmp_stbcpo = pi->stbc2gpo;
27931 			tmp_bw40po = pi->bw402gpo;
27932 
27933 			tx_srom_max_rate = pi->tx_srom_max_rate_2g;
27934 			break;
27935 		case 1:
27936 
27937 			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
27938 					  pi->nphy_pwrctrl_info[1].max_pwr_5gm);
27939 
27940 			pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
27941 			pwr_offsets1[1] =
27942 				(u16) (pi->ofdm5gpo >> 16) & 0xffff;
27943 
27944 			pwr_offsets2 = pi->mcs5gpo;
27945 
27946 			tmp_cddpo = pi->cdd5gpo;
27947 			tmp_stbcpo = pi->stbc5gpo;
27948 			tmp_bw40po = pi->bw405gpo;
27949 
27950 			tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
27951 			break;
27952 		case 2:
27953 
27954 			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
27955 					  pi->nphy_pwrctrl_info[1].max_pwr_5gl);
27956 
27957 			pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
27958 			pwr_offsets1[1] =
27959 				(u16) (pi->ofdm5glpo >> 16) & 0xffff;
27960 
27961 			pwr_offsets2 = pi->mcs5glpo;
27962 
27963 			tmp_cddpo = pi->cdd5glpo;
27964 			tmp_stbcpo = pi->stbc5glpo;
27965 			tmp_bw40po = pi->bw405glpo;
27966 
27967 			tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
27968 			break;
27969 		case 3:
27970 
27971 			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
27972 					  pi->nphy_pwrctrl_info[1].max_pwr_5gh);
27973 
27974 			pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
27975 			pwr_offsets1[1] =
27976 				(u16) (pi->ofdm5ghpo >> 16) & 0xffff;
27977 
27978 			pwr_offsets2 = pi->mcs5ghpo;
27979 
27980 			tmp_cddpo = pi->cdd5ghpo;
27981 			tmp_stbcpo = pi->stbc5ghpo;
27982 			tmp_bw40po = pi->bw405ghpo;
27983 
27984 			tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
27985 			break;
27986 		}
27987 
27988 		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
27989 						tmp_max_pwr, TXP_FIRST_OFDM,
27990 						TXP_LAST_OFDM);
27991 
27992 		wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
27993 						TXP_FIRST_MCS_20_SISO,
27994 						TXP_LAST_MCS_20_SISO,
27995 						TXP_FIRST_OFDM);
27996 
27997 		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
27998 						tmp_max_pwr,
27999 						TXP_FIRST_MCS_20_CDD,
28000 						TXP_LAST_MCS_20_CDD);
28001 
28002 		if (NREV_GE(pi->pubpi.phy_rev, 3))
28003 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28004 						    TXP_FIRST_MCS_20_CDD,
28005 						    TXP_LAST_MCS_20_CDD);
28006 
28007 		wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28008 						TXP_FIRST_OFDM_20_CDD,
28009 						TXP_LAST_OFDM_20_CDD,
28010 						TXP_FIRST_MCS_20_CDD);
28011 
28012 		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28013 						tmp_max_pwr,
28014 						TXP_FIRST_MCS_20_STBC,
28015 						TXP_LAST_MCS_20_STBC);
28016 
28017 		if (NREV_GE(pi->pubpi.phy_rev, 3))
28018 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28019 						    tmp_stbcpo,
28020 						    TXP_FIRST_MCS_20_STBC,
28021 						    TXP_LAST_MCS_20_STBC);
28022 
28023 		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28024 						&pwr_offsets2[2], tmp_max_pwr,
28025 						TXP_FIRST_MCS_20_SDM,
28026 						TXP_LAST_MCS_20_SDM);
28027 
28028 		if (NPHY_IS_SROM_REINTERPRET) {
28029 
28030 			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28031 							&pwr_offsets2[4],
28032 							tmp_max_pwr,
28033 							TXP_FIRST_MCS_40_SISO,
28034 							TXP_LAST_MCS_40_SISO);
28035 
28036 			wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28037 							TXP_FIRST_OFDM_40_SISO,
28038 							TXP_LAST_OFDM_40_SISO,
28039 							TXP_FIRST_MCS_40_SISO);
28040 
28041 			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28042 							&pwr_offsets2[4],
28043 							tmp_max_pwr,
28044 							TXP_FIRST_MCS_40_CDD,
28045 							TXP_LAST_MCS_40_CDD);
28046 
28047 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28048 						    TXP_FIRST_MCS_40_CDD,
28049 						    TXP_LAST_MCS_40_CDD);
28050 
28051 			wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28052 							TXP_FIRST_OFDM_40_CDD,
28053 							TXP_LAST_OFDM_40_CDD,
28054 							TXP_FIRST_MCS_40_CDD);
28055 
28056 			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28057 							&pwr_offsets2[4],
28058 							tmp_max_pwr,
28059 							TXP_FIRST_MCS_40_STBC,
28060 							TXP_LAST_MCS_40_STBC);
28061 
28062 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28063 						    tmp_stbcpo,
28064 						    TXP_FIRST_MCS_40_STBC,
28065 						    TXP_LAST_MCS_40_STBC);
28066 
28067 			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28068 							&pwr_offsets2[6],
28069 							tmp_max_pwr,
28070 							TXP_FIRST_MCS_40_SDM,
28071 							TXP_LAST_MCS_40_SDM);
28072 		} else {
28073 
28074 			for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28075 				     TXP_FIRST_OFDM;
28076 			     rate1 <= TXP_LAST_MCS_40_SDM;
28077 			     rate1++, rate2++)
28078 				tx_srom_max_rate[rate1] =
28079 					tx_srom_max_rate[rate2];
28080 		}
28081 
28082 		if (NREV_GE(pi->pubpi.phy_rev, 3))
28083 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28084 						    tmp_bw40po,
28085 						    TXP_FIRST_OFDM_40_SISO,
28086 						    TXP_LAST_MCS_40_SDM);
28087 
28088 		tx_srom_max_rate[TXP_MCS_32] =
28089 			tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28090 	}
28091 
28092 	return;
28093 }
28094 
wlc_phy_txpower_recalc_target_nphy(struct brcms_phy * pi)28095 void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28096 {
28097 	u8 tx_pwr_ctrl_state;
28098 	wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28099 	wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28100 
28101 	tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28102 
28103 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28104 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28105 		(void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
28106 		udelay(1);
28107 	}
28108 
28109 	wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28110 
28111 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28112 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28113 }
28114 
wlc_phy_txpwr_ison_nphy(struct brcms_phy * pi)28115 static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28116 {
28117 	return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28118 					    (0x1 << 14) | (0x1 << 13));
28119 }
28120 
wlc_phy_txpwr_idx_get_nphy(struct brcms_phy * pi)28121 u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28122 {
28123 	u16 tmp;
28124 	u16 pwr_idx[2];
28125 
28126 	if (wlc_phy_txpwr_ison_nphy(pi)) {
28127 		pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28128 		pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28129 
28130 		tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28131 	} else {
28132 		tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28133 			<< 8) |
28134 			(pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28135 	}
28136 
28137 	return tmp;
28138 }
28139 
wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy * pi)28140 void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28141 {
28142 	if (PHY_IPA(pi)
28143 	    && (pi->nphy_force_papd_cal
28144 		|| (wlc_phy_txpwr_ison_nphy(pi)
28145 		    &&
28146 		    (((u32)
28147 		      abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28148 			  pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28149 		     || ((u32)
28150 			 abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28151 			     pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28152 		wlc_phy_a4(pi, true);
28153 }
28154 
wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy * pi,u8 ctrl_type)28155 void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28156 {
28157 	u16 mask = 0, val = 0, ishw = 0;
28158 	u8 ctr;
28159 	uint core;
28160 	u32 tbl_offset;
28161 	u32 tbl_len;
28162 	u16 regval[84];
28163 
28164 	if (pi->phyhang_avoid)
28165 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
28166 
28167 	switch (ctrl_type) {
28168 	case PHY_TPC_HW_OFF:
28169 	case PHY_TPC_HW_ON:
28170 		pi->nphy_txpwrctrl = ctrl_type;
28171 		break;
28172 	default:
28173 		break;
28174 	}
28175 
28176 	if (ctrl_type == PHY_TPC_HW_OFF) {
28177 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28178 
28179 			if (wlc_phy_txpwr_ison_nphy(pi)) {
28180 				for (core = 0; core < pi->pubpi.phy_corenum;
28181 				     core++)
28182 					pi->nphy_txpwr_idx[core] =
28183 						wlc_phy_txpwr_idx_cur_get_nphy(
28184 							pi,
28185 							(u8) core);
28186 			}
28187 
28188 		}
28189 
28190 		tbl_len = 84;
28191 		tbl_offset = 64;
28192 		for (ctr = 0; ctr < tbl_len; ctr++)
28193 			regval[ctr] = 0;
28194 		wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28195 					 regval);
28196 		wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28197 					 regval);
28198 
28199 		if (NREV_GE(pi->pubpi.phy_rev, 3))
28200 			and_phy_reg(pi, 0x1e7,
28201 				    0xffff & ~((0x1 << 15) |
28202 					       (0x1 << 14) |
28203 					       (0x1 << 13)));
28204 		else
28205 			and_phy_reg(pi, 0x1e7,
28206 				    (u16) (~((0x1 << 14) | (0x1 << 13))));
28207 
28208 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28209 			or_phy_reg(pi, 0x8f, (0x1 << 8));
28210 			or_phy_reg(pi, 0xa5, (0x1 << 8));
28211 		} else {
28212 			or_phy_reg(pi, 0xa5, (0x1 << 14));
28213 		}
28214 
28215 		if (NREV_IS(pi->pubpi.phy_rev, 2))
28216 			mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28217 		else if (NREV_LT(pi->pubpi.phy_rev, 2))
28218 			mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28219 
28220 		if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28221 		    pi->bw == WL_CHANSPEC_BW_40)
28222 			wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28223 				       MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28224 
28225 	} else {
28226 
28227 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28228 					 8, pi->adj_pwr_tbl_nphy);
28229 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28230 					 8, pi->adj_pwr_tbl_nphy);
28231 
28232 		ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28233 		mask = (0x1 << 14) | (0x1 << 13);
28234 		val = (ishw << 14) | (ishw << 13);
28235 
28236 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28237 			mask |= (0x1 << 15);
28238 			val |= (ishw << 15);
28239 		}
28240 
28241 		mod_phy_reg(pi, 0x1e7, mask, val);
28242 
28243 		if (CHSPEC_IS5G(pi->radio_chanspec)) {
28244 			if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28245 				mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28246 				mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28247 			} else {
28248 				mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28249 				if (NREV_GT(pi->pubpi.phy_rev, 1))
28250 					mod_phy_reg(pi, 0x222,
28251 						    (0xff << 0), 0x64);
28252 			}
28253 		}
28254 
28255 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28256 			if ((pi->nphy_txpwr_idx[0] != 128)
28257 			    && (pi->nphy_txpwr_idx[1] != 128))
28258 				wlc_phy_txpwr_idx_cur_set_nphy(pi,
28259 							       pi->
28260 							       nphy_txpwr_idx
28261 							       [0],
28262 							       pi->
28263 							       nphy_txpwr_idx
28264 							       [1]);
28265 		}
28266 
28267 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28268 			and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28269 			and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28270 		} else {
28271 			and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28272 		}
28273 
28274 		if (NREV_IS(pi->pubpi.phy_rev, 2))
28275 			mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28276 		else if (NREV_LT(pi->pubpi.phy_rev, 2))
28277 			mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28278 
28279 		if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28280 		    pi->bw == WL_CHANSPEC_BW_40)
28281 			wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28282 				       0x0, BRCM_BAND_ALL);
28283 
28284 		if (PHY_IPA(pi)) {
28285 			mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28286 				    0x29b, (0x1 << 2), (0) << 2);
28287 
28288 			mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28289 				    0x29b, (0x1 << 2), (0) << 2);
28290 
28291 		}
28292 
28293 	}
28294 
28295 	if (pi->phyhang_avoid)
28296 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
28297 }
28298 
28299 void
wlc_phy_txpwr_index_nphy(struct brcms_phy * pi,u8 core_mask,s8 txpwrindex,bool restore_cals)28300 wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28301 			 bool restore_cals)
28302 {
28303 	u8 core, txpwrctl_tbl;
28304 	u16 tx_ind0, iq_ind0, lo_ind0;
28305 	u16 m1m2;
28306 	u32 txgain;
28307 	u16 rad_gain, dac_gain;
28308 	u8 bbmult;
28309 	u32 iqcomp;
28310 	u16 iqcomp_a, iqcomp_b;
28311 	u32 locomp;
28312 	u16 tmpval;
28313 	u8 tx_pwr_ctrl_state;
28314 	s32 rfpwr_offset;
28315 	u16 regval[2];
28316 
28317 	if (pi->phyhang_avoid)
28318 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
28319 
28320 	tx_ind0 = 192;
28321 	iq_ind0 = 320;
28322 	lo_ind0 = 448;
28323 
28324 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28325 
28326 		if ((core_mask & (1 << core)) == 0)
28327 			continue;
28328 
28329 		txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28330 
28331 		if (txpwrindex < 0) {
28332 			if (pi->nphy_txpwrindex[core].index < 0)
28333 				continue;
28334 
28335 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28336 				mod_phy_reg(pi, 0x8f,
28337 					    (0x1 << 8),
28338 					    pi->nphy_txpwrindex[core].
28339 					    AfectrlOverride);
28340 				mod_phy_reg(pi, 0xa5, (0x1 << 8),
28341 					    pi->nphy_txpwrindex[core].
28342 					    AfectrlOverride);
28343 			} else {
28344 				mod_phy_reg(pi, 0xa5,
28345 					    (0x1 << 14),
28346 					    pi->nphy_txpwrindex[core].
28347 					    AfectrlOverride);
28348 			}
28349 
28350 			write_phy_reg(pi, (core == PHY_CORE_0) ?
28351 				      0xaa : 0xab,
28352 				      pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28353 
28354 			wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28355 						 &pi->nphy_txpwrindex[core].
28356 						 rad_gain);
28357 
28358 			wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28359 			m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28360 			m1m2 |= ((core == PHY_CORE_0) ?
28361 				 (pi->nphy_txpwrindex[core].bbmult << 8) :
28362 				 (pi->nphy_txpwrindex[core].bbmult << 0));
28363 			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28364 
28365 			if (restore_cals) {
28366 				wlc_phy_table_write_nphy(
28367 					pi, 15, 2, (80 + 2 * core), 16,
28368 					&pi->nphy_txpwrindex[core].iqcomp_a);
28369 				wlc_phy_table_write_nphy(
28370 					pi, 15, 1, (85 + core), 16,
28371 					&pi->nphy_txpwrindex[core].locomp);
28372 				wlc_phy_table_write_nphy(
28373 					pi, 15, 1, (93 + core), 16,
28374 					&pi->nphy_txpwrindex[core].locomp);
28375 			}
28376 
28377 			wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28378 
28379 			pi->nphy_txpwrindex[core].index_internal =
28380 				pi->nphy_txpwrindex[core].index_internal_save;
28381 		} else {
28382 
28383 			if (pi->nphy_txpwrindex[core].index < 0) {
28384 
28385 				if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28386 					mod_phy_reg(pi, 0x8f,
28387 						    (0x1 << 8),
28388 						    pi->nphy_txpwrindex[core].
28389 						    AfectrlOverride);
28390 					mod_phy_reg(pi, 0xa5, (0x1 << 8),
28391 						    pi->nphy_txpwrindex[core].
28392 						    AfectrlOverride);
28393 				} else {
28394 					pi->nphy_txpwrindex[core].
28395 					AfectrlOverride =
28396 						read_phy_reg(pi, 0xa5);
28397 				}
28398 
28399 				pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28400 					read_phy_reg(pi, (core == PHY_CORE_0) ?
28401 							 0xaa : 0xab);
28402 
28403 				wlc_phy_table_read_nphy(pi, 7, 1,
28404 							(0x110 + core), 16,
28405 							&pi->
28406 							nphy_txpwrindex[core].
28407 							rad_gain);
28408 
28409 				wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28410 							&tmpval);
28411 				tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28412 				tmpval &= 0xff;
28413 				pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28414 
28415 				wlc_phy_table_read_nphy(pi, 15, 2,
28416 							(80 + 2 * core), 16,
28417 							&pi->
28418 							nphy_txpwrindex[core].
28419 							iqcomp_a);
28420 
28421 				wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28422 							16,
28423 							&pi->
28424 							nphy_txpwrindex[core].
28425 							locomp);
28426 
28427 				pi->nphy_txpwrindex[core].index_internal_save =
28428 					pi->nphy_txpwrindex[core].
28429 					index_internal;
28430 			}
28431 
28432 			tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28433 			wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28434 
28435 			if (NREV_IS(pi->pubpi.phy_rev, 1))
28436 				wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28437 
28438 			wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28439 						(tx_ind0 + txpwrindex), 32,
28440 						&txgain);
28441 
28442 			if (NREV_GE(pi->pubpi.phy_rev, 3))
28443 				rad_gain = (txgain >> 16) &
28444 					   ((1 << (32 - 16 + 1)) - 1);
28445 			else
28446 				rad_gain = (txgain >> 16) &
28447 					   ((1 << (28 - 16 + 1)) - 1);
28448 
28449 			dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28450 			bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28451 
28452 			if (NREV_GE(pi->pubpi.phy_rev, 3))
28453 				mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28454 						 0xa5), (0x1 << 8), (0x1 << 8));
28455 			else
28456 				mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28457 
28458 			write_phy_reg(pi, (core == PHY_CORE_0) ?
28459 				      0xaa : 0xab, dac_gain);
28460 
28461 			wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28462 						 &rad_gain);
28463 
28464 			wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28465 			m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28466 			m1m2 |= ((core == PHY_CORE_0) ?
28467 				(bbmult << 8) : (bbmult << 0));
28468 
28469 			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28470 
28471 			wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28472 						(iq_ind0 + txpwrindex), 32,
28473 						&iqcomp);
28474 			iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28475 			iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28476 
28477 			if (restore_cals) {
28478 				regval[0] = (u16) iqcomp_a;
28479 				regval[1] = (u16) iqcomp_b;
28480 				wlc_phy_table_write_nphy(pi, 15, 2,
28481 							 (80 + 2 * core), 16,
28482 							 regval);
28483 			}
28484 
28485 			wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28486 						(lo_ind0 + txpwrindex), 32,
28487 						&locomp);
28488 			if (restore_cals)
28489 				wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28490 							 16, &locomp);
28491 
28492 			if (NREV_IS(pi->pubpi.phy_rev, 1))
28493 				wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28494 
28495 			if (PHY_IPA(pi)) {
28496 				wlc_phy_table_read_nphy(pi,
28497 						(core == PHY_CORE_0 ?
28498 						 NPHY_TBL_ID_CORE1TXPWRCTL :
28499 						 NPHY_TBL_ID_CORE2TXPWRCTL),
28500 						1, 576 + txpwrindex, 32,
28501 						&rfpwr_offset);
28502 
28503 				mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28504 					    0x29b, (0x1ff << 4),
28505 					    ((s16) rfpwr_offset) << 4);
28506 
28507 				mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28508 					    0x29b, (0x1 << 2), (1) << 2);
28509 
28510 			}
28511 
28512 			wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28513 		}
28514 
28515 		pi->nphy_txpwrindex[core].index = txpwrindex;
28516 	}
28517 
28518 	if (pi->phyhang_avoid)
28519 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
28520 }
28521 
28522 void
wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy * pi,uint chan,u8 * max_pwr,u8 txp_rate_idx)28523 wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28524 				   u8 txp_rate_idx)
28525 {
28526 	u8 chan_freq_range;
28527 
28528 	chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28529 	switch (chan_freq_range) {
28530 	case WL_CHAN_FREQ_RANGE_2G:
28531 		*max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28532 		break;
28533 	case WL_CHAN_FREQ_RANGE_5GM:
28534 		*max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28535 		break;
28536 	case WL_CHAN_FREQ_RANGE_5GL:
28537 		*max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28538 		break;
28539 	case WL_CHAN_FREQ_RANGE_5GH:
28540 		*max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28541 		break;
28542 	default:
28543 		*max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28544 		break;
28545 	}
28546 
28547 	return;
28548 }
28549 
wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy * pi,bool enable)28550 void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28551 {
28552 	u16 clip_off[] = { 0xffff, 0xffff };
28553 
28554 	if (enable) {
28555 		if (pi->nphy_deaf_count == 0) {
28556 			pi->classifier_state =
28557 				wlc_phy_classifier_nphy(pi, 0, 0);
28558 			wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28559 			wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28560 			wlc_phy_clip_det_nphy(pi, 1, clip_off);
28561 		}
28562 
28563 		pi->nphy_deaf_count++;
28564 
28565 		wlc_phy_resetcca_nphy(pi);
28566 
28567 	} else {
28568 		pi->nphy_deaf_count--;
28569 
28570 		if (pi->nphy_deaf_count == 0) {
28571 			wlc_phy_classifier_nphy(pi, (0x7 << 0),
28572 						pi->classifier_state);
28573 			wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28574 		}
28575 	}
28576 }
28577 
wlc_nphy_deaf_mode(struct brcms_phy * pi,bool mode)28578 void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28579 {
28580 	wlapi_suspend_mac_and_wait(pi->sh->physhim);
28581 
28582 	if (mode) {
28583 		if (pi->nphy_deaf_count == 0)
28584 			wlc_phy_stay_in_carriersearch_nphy(pi, true);
28585 	} else if (pi->nphy_deaf_count > 0) {
28586 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
28587 	}
28588 
28589 	wlapi_enable_mac(pi->sh->physhim);
28590 }
28591