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 bool 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 	return true;
14600 }
14601 
wlc_phy_attach_nphy(struct brcms_phy * pi)14602 bool wlc_phy_attach_nphy(struct brcms_phy *pi)
14603 {
14604 	uint i;
14605 
14606 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6))
14607 		pi->phyhang_avoid = true;
14608 
14609 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14610 		pi->nphy_gband_spurwar_en = true;
14611 		if (pi->sh->boardflags2 & BFL2_SPUR_WAR)
14612 			pi->nphy_aband_spurwar_en = true;
14613 	}
14614 	if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14615 		if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR)
14616 			pi->nphy_gband_spurwar2_en = true;
14617 	}
14618 
14619 	pi->n_preamble_override = AUTO;
14620 	if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14621 		pi->n_preamble_override = BRCMS_N_PREAMBLE_MIXEDMODE;
14622 
14623 	pi->nphy_txrx_chain = AUTO;
14624 	pi->phy_scraminit = AUTO;
14625 
14626 	pi->nphy_rxcalparams = 0x010100B5;
14627 
14628 	pi->nphy_perical = PHY_PERICAL_MPHASE;
14629 	pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14630 	pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14631 
14632 	pi->nphy_gain_boost = true;
14633 	pi->nphy_elna_gain_config = false;
14634 	pi->radio_is_on = false;
14635 
14636 	for (i = 0; i < pi->pubpi.phy_corenum; i++)
14637 		pi->nphy_txpwrindex[i].index = AUTO;
14638 
14639 	wlc_phy_txpwrctrl_config_nphy(pi);
14640 	if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14641 		pi->hwpwrctrl_capable = true;
14642 
14643 	pi->pi_fptr.init = wlc_phy_init_nphy;
14644 	pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14645 	pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14646 	pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14647 
14648 	if (!wlc_phy_txpwr_srom_read_nphy(pi))
14649 		return false;
14650 
14651 	return true;
14652 }
14653 
get_rf_pwr_offset(struct brcms_phy * pi,s16 pga_gn,s16 pad_gn)14654 static s32 get_rf_pwr_offset(struct brcms_phy *pi, s16 pga_gn, s16 pad_gn)
14655 {
14656 	s32 rfpwr_offset = 0;
14657 
14658 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
14659 		if ((pi->pubpi.radiorev == 3) ||
14660 		    (pi->pubpi.radiorev == 4) ||
14661 		    (pi->pubpi.radiorev == 6))
14662 			rfpwr_offset = (s16)
14663 				       nphy_papd_padgain_dlt_2g_2057rev3n4
14664 				       [pad_gn];
14665 		else if (pi->pubpi.radiorev == 5)
14666 			rfpwr_offset = (s16)
14667 				       nphy_papd_padgain_dlt_2g_2057rev5
14668 				       [pad_gn];
14669 		else if ((pi->pubpi.radiorev == 7)
14670 			 || (pi->pubpi.radiorev ==
14671 			     8))
14672 			rfpwr_offset = (s16)
14673 				       nphy_papd_padgain_dlt_2g_2057rev7
14674 				       [pad_gn];
14675 	} else {
14676 		if ((pi->pubpi.radiorev == 3) ||
14677 		    (pi->pubpi.radiorev == 4) ||
14678 		    (pi->pubpi.radiorev == 6))
14679 			rfpwr_offset = (s16)
14680 				       nphy_papd_pgagain_dlt_5g_2057
14681 				       [pga_gn];
14682 		else if ((pi->pubpi.radiorev == 7)
14683 			 || (pi->pubpi.radiorev ==
14684 			     8))
14685 			rfpwr_offset = (s16)
14686 				       nphy_papd_pgagain_dlt_5g_2057rev7
14687 				       [pga_gn];
14688 	}
14689 	return rfpwr_offset;
14690 }
14691 
wlc_phy_update_mimoconfig_nphy(struct brcms_phy * pi,s32 preamble)14692 static void wlc_phy_update_mimoconfig_nphy(struct brcms_phy *pi, s32 preamble)
14693 {
14694 	bool gf_preamble = false;
14695 	u16 val;
14696 
14697 	if (preamble == BRCMS_N_PREAMBLE_GF)
14698 		gf_preamble = true;
14699 
14700 	val = read_phy_reg(pi, 0xed);
14701 
14702 	val |= RX_GF_MM_AUTO;
14703 	val &= ~RX_GF_OR_MM;
14704 	if (gf_preamble)
14705 		val |= RX_GF_OR_MM;
14706 
14707 	write_phy_reg(pi, 0xed, val);
14708 }
14709 
wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy * pi)14710 static void wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
14711 {
14712 	int j, type;
14713 	u16 addr_offset[] = { 0x186, 0x195, 0x2c5};
14714 
14715 	for (type = 0; type < 3; type++) {
14716 		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14717 			write_phy_reg(pi, addr_offset[type] + j,
14718 				      NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
14719 	}
14720 
14721 	if (pi->bw == WL_CHANSPEC_BW_40) {
14722 		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14723 			write_phy_reg(pi, 0x186 + j,
14724 				      NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14725 	} else {
14726 		if (CHSPEC_IS5G(pi->radio_chanspec)) {
14727 			for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14728 				write_phy_reg(pi, 0x186 + j,
14729 					NPHY_IPA_REV4_txdigi_filtcoeffs[5][j]);
14730 		}
14731 
14732 		if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
14733 			for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14734 				write_phy_reg(pi, 0x2c5 + j,
14735 					NPHY_IPA_REV4_txdigi_filtcoeffs[6][j]);
14736 		}
14737 	}
14738 }
14739 
wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy * pi)14740 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy *pi)
14741 {
14742 	int j;
14743 
14744 	if (pi->bw == WL_CHANSPEC_BW_40) {
14745 		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14746 			write_phy_reg(pi, 0x195 + j,
14747 				      NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
14748 	} else {
14749 		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14750 			write_phy_reg(pi, 0x186 + j,
14751 				      NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14752 	}
14753 }
14754 
14755 static void
wlc_phy_set_rfseq_nphy(struct brcms_phy * pi,u8 cmd,const u8 * events,const u8 * dlys,u8 len)14756 wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, const u8 *events,
14757 		       const u8 *dlys, u8 len)
14758 {
14759 	u32 t1_offset, t2_offset;
14760 	u8 ctr;
14761 	u8 end_event =
14762 		NREV_GE(pi->pubpi.phy_rev,
14763 			3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
14764 	u8 end_dly = 1;
14765 
14766 	if (pi->phyhang_avoid)
14767 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
14768 
14769 	t1_offset = cmd << 4;
14770 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
14771 				 events);
14772 	t2_offset = t1_offset + 0x080;
14773 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
14774 				 dlys);
14775 
14776 	for (ctr = len; ctr < 16; ctr++) {
14777 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14778 					 t1_offset + ctr, 8, &end_event);
14779 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14780 					 t2_offset + ctr, 8, &end_dly);
14781 	}
14782 
14783 	if (pi->phyhang_avoid)
14784 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
14785 }
14786 
wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy * pi,u16 offset)14787 static u16 wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy *pi, u16 offset)
14788 {
14789 	u16 lpf_bw_ctl_val = 0;
14790 	u16 rx2tx_lpf_rc_lut_offset = 0;
14791 
14792 	if (offset == 0) {
14793 		if (CHSPEC_IS40(pi->radio_chanspec))
14794 			rx2tx_lpf_rc_lut_offset = 0x159;
14795 		else
14796 			rx2tx_lpf_rc_lut_offset = 0x154;
14797 	} else {
14798 		rx2tx_lpf_rc_lut_offset = offset;
14799 	}
14800 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14801 				(u32) rx2tx_lpf_rc_lut_offset, 16,
14802 				&lpf_bw_ctl_val);
14803 
14804 	lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
14805 
14806 	return lpf_bw_ctl_val;
14807 }
14808 
14809 static void
wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy * pi,u16 field,u16 value,u8 core_mask,u8 off,u8 override_id)14810 wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy *pi, u16 field, u16 value,
14811 				  u8 core_mask, u8 off, u8 override_id)
14812 {
14813 	u8 core_num;
14814 	u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
14815 	u8 val_shift = 0;
14816 
14817 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14818 		en_mask = field;
14819 		for (core_num = 0; core_num < 2; core_num++) {
14820 			if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
14821 
14822 				switch (field) {
14823 				case (0x1 << 2):
14824 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14825 					val_addr = (core_num == 0) ? 0x7a :
14826 						   0x7d;
14827 					val_mask = (0x1 << 1);
14828 					val_shift = 1;
14829 					break;
14830 				case (0x1 << 3):
14831 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14832 					val_addr = (core_num == 0) ? 0x7a :
14833 						   0x7d;
14834 					val_mask = (0x1 << 2);
14835 					val_shift = 2;
14836 					break;
14837 				case (0x1 << 4):
14838 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14839 					val_addr = (core_num == 0) ? 0x7a :
14840 						   0x7d;
14841 					val_mask = (0x1 << 4);
14842 					val_shift = 4;
14843 					break;
14844 				case (0x1 << 5):
14845 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14846 					val_addr = (core_num == 0) ? 0x7a :
14847 						   0x7d;
14848 					val_mask = (0x1 << 5);
14849 					val_shift = 5;
14850 					break;
14851 				case (0x1 << 6):
14852 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14853 					val_addr = (core_num == 0) ? 0x7a :
14854 						   0x7d;
14855 					val_mask = (0x1 << 6);
14856 					val_shift = 6;
14857 					break;
14858 				case (0x1 << 7):
14859 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14860 					val_addr = (core_num == 0) ? 0x7a :
14861 						   0x7d;
14862 					val_mask = (0x1 << 7);
14863 					val_shift = 7;
14864 					break;
14865 				case (0x1 << 10):
14866 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14867 					val_addr = (core_num == 0) ? 0xf8 :
14868 						   0xfa;
14869 					val_mask = (0x7 << 4);
14870 					val_shift = 4;
14871 					break;
14872 				case (0x1 << 11):
14873 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14874 					val_addr = (core_num == 0) ? 0x7b :
14875 						   0x7e;
14876 					val_mask = (0xffff << 0);
14877 					val_shift = 0;
14878 					break;
14879 				case (0x1 << 12):
14880 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14881 					val_addr = (core_num == 0) ? 0x7c :
14882 						   0x7f;
14883 					val_mask = (0xffff << 0);
14884 					val_shift = 0;
14885 					break;
14886 				case (0x3 << 13):
14887 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14888 					val_addr = (core_num == 0) ? 0x348 :
14889 						   0x349;
14890 					val_mask = (0xff << 0);
14891 					val_shift = 0;
14892 					break;
14893 				case (0x1 << 13):
14894 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14895 					val_addr = (core_num == 0) ? 0x348 :
14896 						   0x349;
14897 					val_mask = (0xf << 0);
14898 					val_shift = 0;
14899 					break;
14900 				default:
14901 					addr = 0xffff;
14902 					break;
14903 				}
14904 			} else if (override_id ==
14905 				   NPHY_REV7_RFCTRLOVERRIDE_ID1) {
14906 
14907 				switch (field) {
14908 				case (0x1 << 1):
14909 					en_addr = (core_num == 0) ? 0x342 :
14910 						  0x343;
14911 					val_addr = (core_num == 0) ? 0x340 :
14912 						   0x341;
14913 					val_mask = (0x1 << 1);
14914 					val_shift = 1;
14915 					break;
14916 				case (0x1 << 3):
14917 					en_addr = (core_num == 0) ? 0x342 :
14918 						  0x343;
14919 					val_addr = (core_num == 0) ? 0x340 :
14920 						   0x341;
14921 					val_mask = (0x1 << 3);
14922 					val_shift = 3;
14923 					break;
14924 				case (0x1 << 5):
14925 					en_addr = (core_num == 0) ? 0x342 :
14926 						  0x343;
14927 					val_addr = (core_num == 0) ? 0x340 :
14928 						   0x341;
14929 					val_mask = (0x1 << 5);
14930 					val_shift = 5;
14931 					break;
14932 				case (0x1 << 4):
14933 					en_addr = (core_num == 0) ? 0x342 :
14934 						  0x343;
14935 					val_addr = (core_num == 0) ? 0x340 :
14936 						   0x341;
14937 					val_mask = (0x1 << 4);
14938 					val_shift = 4;
14939 					break;
14940 				case (0x1 << 2):
14941 
14942 					en_addr = (core_num == 0) ? 0x342 :
14943 						  0x343;
14944 					val_addr = (core_num == 0) ? 0x340 :
14945 						   0x341;
14946 					val_mask = (0x1 << 2);
14947 					val_shift = 2;
14948 					break;
14949 				case (0x1 << 7):
14950 
14951 					en_addr = (core_num == 0) ? 0x342 :
14952 						  0x343;
14953 					val_addr = (core_num == 0) ? 0x340 :
14954 						   0x341;
14955 					val_mask = (0x7 << 8);
14956 					val_shift = 8;
14957 					break;
14958 				case (0x1 << 11):
14959 					en_addr = (core_num == 0) ? 0x342 :
14960 						  0x343;
14961 					val_addr = (core_num == 0) ? 0x340 :
14962 						   0x341;
14963 					val_mask = (0x1 << 14);
14964 					val_shift = 14;
14965 					break;
14966 				case (0x1 << 10):
14967 					en_addr = (core_num == 0) ? 0x342 :
14968 						  0x343;
14969 					val_addr = (core_num == 0) ? 0x340 :
14970 						   0x341;
14971 					val_mask = (0x1 << 13);
14972 					val_shift = 13;
14973 					break;
14974 				case (0x1 << 9):
14975 					en_addr = (core_num == 0) ? 0x342 :
14976 						  0x343;
14977 					val_addr = (core_num == 0) ? 0x340 :
14978 						   0x341;
14979 					val_mask = (0x1 << 12);
14980 					val_shift = 12;
14981 					break;
14982 				case (0x1 << 8):
14983 					en_addr = (core_num == 0) ? 0x342 :
14984 						  0x343;
14985 					val_addr = (core_num == 0) ? 0x340 :
14986 						   0x341;
14987 					val_mask = (0x1 << 11);
14988 					val_shift = 11;
14989 					break;
14990 				case (0x1 << 6):
14991 					en_addr = (core_num == 0) ? 0x342 :
14992 						  0x343;
14993 					val_addr = (core_num == 0) ? 0x340 :
14994 						   0x341;
14995 					val_mask = (0x1 << 6);
14996 					val_shift = 6;
14997 					break;
14998 				case (0x1 << 0):
14999 					en_addr = (core_num == 0) ? 0x342 :
15000 						  0x343;
15001 					val_addr = (core_num == 0) ? 0x340 :
15002 						   0x341;
15003 					val_mask = (0x1 << 0);
15004 					val_shift = 0;
15005 					break;
15006 				default:
15007 					addr = 0xffff;
15008 					break;
15009 				}
15010 			} else if (override_id ==
15011 				   NPHY_REV7_RFCTRLOVERRIDE_ID2) {
15012 
15013 				switch (field) {
15014 				case (0x1 << 3):
15015 					en_addr = (core_num == 0) ? 0x346 :
15016 						  0x347;
15017 					val_addr = (core_num == 0) ? 0x344 :
15018 						   0x345;
15019 					val_mask = (0x1 << 3);
15020 					val_shift = 3;
15021 					break;
15022 				case (0x1 << 1):
15023 					en_addr = (core_num == 0) ? 0x346 :
15024 						  0x347;
15025 					val_addr = (core_num == 0) ? 0x344 :
15026 						   0x345;
15027 					val_mask = (0x1 << 1);
15028 					val_shift = 1;
15029 					break;
15030 				case (0x1 << 0):
15031 					en_addr = (core_num == 0) ? 0x346 :
15032 						  0x347;
15033 					val_addr = (core_num == 0) ? 0x344 :
15034 						   0x345;
15035 					val_mask = (0x1 << 0);
15036 					val_shift = 0;
15037 					break;
15038 				case (0x1 << 2):
15039 					en_addr = (core_num == 0) ? 0x346 :
15040 						  0x347;
15041 					val_addr = (core_num == 0) ? 0x344 :
15042 						   0x345;
15043 					val_mask = (0x1 << 2);
15044 					val_shift = 2;
15045 					break;
15046 				case (0x1 << 4):
15047 					en_addr = (core_num == 0) ? 0x346 :
15048 						  0x347;
15049 					val_addr = (core_num == 0) ? 0x344 :
15050 						   0x345;
15051 					val_mask = (0x1 << 4);
15052 					val_shift = 4;
15053 					break;
15054 				default:
15055 					addr = 0xffff;
15056 					break;
15057 				}
15058 			}
15059 
15060 			if (off) {
15061 				and_phy_reg(pi, en_addr, ~en_mask);
15062 				and_phy_reg(pi, val_addr, ~val_mask);
15063 			} else {
15064 
15065 				if ((core_mask == 0)
15066 				    || (core_mask & (1 << core_num))) {
15067 					or_phy_reg(pi, en_addr, en_mask);
15068 
15069 					if (addr != 0xffff)
15070 						mod_phy_reg(pi, val_addr,
15071 							    val_mask,
15072 							    (value <<
15073 							     val_shift));
15074 				}
15075 			}
15076 		}
15077 	}
15078 }
15079 
wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy * pi)15080 static void wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy *pi)
15081 {
15082 	uint core;
15083 	int ctr;
15084 	s16 gain_delta[2];
15085 	u8 curr_channel;
15086 	u16 minmax_gain[2];
15087 	u16 regval[4];
15088 
15089 	if (pi->phyhang_avoid)
15090 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
15091 
15092 	if (pi->nphy_gain_boost) {
15093 		if ((CHSPEC_IS2G(pi->radio_chanspec))) {
15094 
15095 			gain_delta[0] = 6;
15096 			gain_delta[1] = 6;
15097 		} else {
15098 
15099 			curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
15100 			gain_delta[0] =
15101 				(s16)
15102 				PHY_HW_ROUND(((nphy_lnagain_est0[0] *
15103 					       curr_channel) +
15104 					      nphy_lnagain_est0[1]), 13);
15105 			gain_delta[1] =
15106 				(s16)
15107 				PHY_HW_ROUND(((nphy_lnagain_est1[0] *
15108 					       curr_channel) +
15109 					      nphy_lnagain_est1[1]), 13);
15110 		}
15111 	} else {
15112 
15113 		gain_delta[0] = 0;
15114 		gain_delta[1] = 0;
15115 	}
15116 
15117 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
15118 		if (pi->nphy_elna_gain_config) {
15119 
15120 			regval[0] = nphy_def_lnagains[2] + gain_delta[core];
15121 			regval[1] = nphy_def_lnagains[3] + gain_delta[core];
15122 			regval[2] = nphy_def_lnagains[3] + gain_delta[core];
15123 			regval[3] = nphy_def_lnagains[3] + gain_delta[core];
15124 		} else {
15125 			for (ctr = 0; ctr < 4; ctr++)
15126 				regval[ctr] =
15127 					nphy_def_lnagains[ctr] +
15128 					gain_delta[core];
15129 		}
15130 		wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
15131 
15132 		minmax_gain[core] =
15133 			(u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
15134 	}
15135 
15136 	mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
15137 	mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
15138 
15139 	if (pi->phyhang_avoid)
15140 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
15141 }
15142 
15143 static void
wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy * pi,u8 core)15144 wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy *pi, u8 core)
15145 {
15146 	if (core == PHY_CORE_0) {
15147 		write_phy_reg(pi, 0x38, 0x4);
15148 		if (CHSPEC_IS2G(pi->radio_chanspec))
15149 			write_phy_reg(pi, 0x37, 0x0060);
15150 		else
15151 			write_phy_reg(pi, 0x37, 0x1080);
15152 	} else if (core == PHY_CORE_1) {
15153 		write_phy_reg(pi, 0x2ae, 0x4);
15154 		if (CHSPEC_IS2G(pi->radio_chanspec))
15155 			write_phy_reg(pi, 0x2ad, 0x0060);
15156 		else
15157 			write_phy_reg(pi, 0x2ad, 0x1080);
15158 	}
15159 }
15160 
wlc_phy_war_txchain_upd_nphy(struct brcms_phy * pi,u8 txchain)15161 static void wlc_phy_war_txchain_upd_nphy(struct brcms_phy *pi, u8 txchain)
15162 {
15163 	u8 txchain0, txchain1;
15164 
15165 	txchain0 = txchain & 0x1;
15166 	txchain1 = (txchain & 0x2) >> 1;
15167 	if (!txchain0)
15168 		wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15169 
15170 	if (!txchain1)
15171 		wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15172 }
15173 
wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy * pi)15174 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy *pi)
15175 {
15176 	s8 lna1_gain_db[] = { 8, 13, 17, 22 };
15177 	s8 lna2_gain_db[] = { -2, 7, 11, 15 };
15178 	s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
15179 	s8 tia_gainbits[] = {
15180 		0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15181 
15182 	mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15183 	mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15184 
15185 	mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15186 
15187 	mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
15188 	mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
15189 
15190 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
15191 				 lna1_gain_db);
15192 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
15193 				 lna1_gain_db);
15194 
15195 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
15196 				 lna2_gain_db);
15197 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
15198 				 lna2_gain_db);
15199 
15200 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15201 				 tia_gain_db);
15202 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15203 				 tia_gain_db);
15204 
15205 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15206 				 tia_gainbits);
15207 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15208 				 tia_gainbits);
15209 
15210 	write_phy_reg(pi, 0x37, 0x74);
15211 	write_phy_reg(pi, 0x2ad, 0x74);
15212 	write_phy_reg(pi, 0x38, 0x18);
15213 	write_phy_reg(pi, 0x2ae, 0x18);
15214 
15215 	write_phy_reg(pi, 0x2b, 0xe8);
15216 	write_phy_reg(pi, 0x41, 0xe8);
15217 
15218 	if (CHSPEC_IS20(pi->radio_chanspec)) {
15219 
15220 		mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
15221 		mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
15222 	} else {
15223 
15224 		mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
15225 		mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
15226 	}
15227 }
15228 
wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy * pi)15229 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
15230 {
15231 	u16 currband;
15232 	static const s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
15233 	const s8 *lna1_gain_db = NULL;
15234 	const s8 *lna1_gain_db_2 = NULL;
15235 	const s8 *lna2_gain_db = NULL;
15236 	static const s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
15237 	const s8 *tia_gain_db;
15238 	static const s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
15239 	const s8 *tia_gainbits;
15240 	static const u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
15241 	const u16 *rfseq_init_gain;
15242 	u16 init_gaincode;
15243 	u16 clip1hi_gaincode;
15244 	u16 clip1md_gaincode = 0;
15245 	u16 clip1md_gaincode_B;
15246 	u16 clip1lo_gaincode;
15247 	u16 clip1lo_gaincode_B;
15248 	u8 crsminl_th = 0;
15249 	u8 crsminu_th;
15250 	u16 nbclip_th = 0;
15251 	u8 w1clip_th;
15252 	u16 freq;
15253 	s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
15254 	u8 chg_nbclip_th = 0;
15255 
15256 	mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15257 	mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15258 
15259 	currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15260 	if (currband == 0) {
15261 
15262 		lna1_gain_db = lna1G_gain_db_rev7;
15263 
15264 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15265 					 lna1_gain_db);
15266 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15267 					 lna1_gain_db);
15268 
15269 		mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
15270 
15271 		if (CHSPEC_IS40(pi->radio_chanspec)) {
15272 			mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
15273 			mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
15274 		}
15275 
15276 		mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15277 
15278 		if (CHSPEC_IS20(pi->radio_chanspec)) {
15279 			mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
15280 			mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
15281 		}
15282 	} else {
15283 
15284 		init_gaincode = 0x9e;
15285 		clip1hi_gaincode = 0x9e;
15286 		clip1md_gaincode_B = 0x24;
15287 		clip1lo_gaincode = 0x8a;
15288 		clip1lo_gaincode_B = 8;
15289 		rfseq_init_gain = rfseqA_init_gain_rev7;
15290 
15291 		tia_gain_db = tiaA_gain_db_rev7;
15292 		tia_gainbits = tiaA_gainbits_rev7;
15293 
15294 		freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
15295 		if (CHSPEC_IS20(pi->radio_chanspec)) {
15296 
15297 			w1clip_th = 25;
15298 			clip1md_gaincode = 0x82;
15299 
15300 			if ((freq <= 5080) || (freq == 5825)) {
15301 
15302 				static const s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
15303 				static const s8 lna1A_gain_db_2_rev7[] = { 11, 17, 22, 25};
15304 				static const s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15305 
15306 				crsminu_th = 0x3e;
15307 				lna1_gain_db = lna1A_gain_db_rev7;
15308 				lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15309 				lna2_gain_db = lna2A_gain_db_rev7;
15310 			} else if ((freq >= 5500) && (freq <= 5700)) {
15311 
15312 				static const s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
15313 				static const s8 lna1A_gain_db_2_rev7[] = { 12, 18, 22, 26};
15314 				static const s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
15315 
15316 				crsminu_th = 0x45;
15317 				clip1md_gaincode_B = 0x14;
15318 				nbclip_th = 0xff;
15319 				chg_nbclip_th = 1;
15320 				lna1_gain_db = lna1A_gain_db_rev7;
15321 				lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15322 				lna2_gain_db = lna2A_gain_db_rev7;
15323 			} else {
15324 
15325 				static const s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
15326 				static const s8 lna1A_gain_db_2_rev7[] = { 12, 18, 22, 26};
15327 				static const s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15328 
15329 				crsminu_th = 0x41;
15330 				lna1_gain_db = lna1A_gain_db_rev7;
15331 				lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15332 				lna2_gain_db = lna2A_gain_db_rev7;
15333 			}
15334 
15335 			if (freq <= 4920) {
15336 				nvar_baseline_offset0 = 5;
15337 				nvar_baseline_offset1 = 5;
15338 			} else if ((freq > 4920) && (freq <= 5320)) {
15339 				nvar_baseline_offset0 = 3;
15340 				nvar_baseline_offset1 = 5;
15341 			} else if ((freq > 5320) && (freq <= 5700)) {
15342 				nvar_baseline_offset0 = 3;
15343 				nvar_baseline_offset1 = 2;
15344 			} else {
15345 				nvar_baseline_offset0 = 4;
15346 				nvar_baseline_offset1 = 0;
15347 			}
15348 		} else {
15349 
15350 			crsminu_th = 0x3a;
15351 			crsminl_th = 0x3a;
15352 			w1clip_th = 20;
15353 
15354 			if ((freq >= 4920) && (freq <= 5320)) {
15355 				nvar_baseline_offset0 = 4;
15356 				nvar_baseline_offset1 = 5;
15357 			} else if ((freq > 5320) && (freq <= 5550)) {
15358 				nvar_baseline_offset0 = 4;
15359 				nvar_baseline_offset1 = 2;
15360 			} else {
15361 				nvar_baseline_offset0 = 5;
15362 				nvar_baseline_offset1 = 3;
15363 			}
15364 		}
15365 
15366 		write_phy_reg(pi, 0x20, init_gaincode);
15367 		write_phy_reg(pi, 0x2a7, init_gaincode);
15368 
15369 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15370 					 pi->pubpi.phy_corenum, 0x106, 16,
15371 					 rfseq_init_gain);
15372 
15373 		write_phy_reg(pi, 0x22, clip1hi_gaincode);
15374 		write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15375 
15376 		write_phy_reg(pi, 0x36, clip1md_gaincode_B);
15377 		write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
15378 
15379 		write_phy_reg(pi, 0x37, clip1lo_gaincode);
15380 		write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15381 		write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
15382 		write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
15383 
15384 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15385 					 tia_gain_db);
15386 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15387 					 tia_gain_db);
15388 
15389 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15390 					 tia_gainbits);
15391 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15392 					 tia_gainbits);
15393 
15394 		mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15395 
15396 		if (chg_nbclip_th == 1) {
15397 			write_phy_reg(pi, 0x2b, nbclip_th);
15398 			write_phy_reg(pi, 0x41, nbclip_th);
15399 		}
15400 
15401 		mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
15402 		mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
15403 
15404 		mod_phy_reg(pi, 0x2e4,
15405 			    (0x3f << 0), (nvar_baseline_offset0 << 0));
15406 
15407 		mod_phy_reg(pi, 0x2e4,
15408 			    (0x3f << 6), (nvar_baseline_offset1 << 6));
15409 
15410 		if (CHSPEC_IS20(pi->radio_chanspec)) {
15411 
15412 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15413 						 lna1_gain_db);
15414 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15415 						 lna1_gain_db_2);
15416 
15417 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15418 						 8, lna2_gain_db);
15419 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15420 						 8, lna2_gain_db);
15421 
15422 			write_phy_reg(pi, 0x24, clip1md_gaincode);
15423 			write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15424 		} else {
15425 			mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15426 		}
15427 	}
15428 }
15429 
wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy * pi)15430 static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
15431 {
15432 	u16 w1th, hpf_code, currband;
15433 	int ctr;
15434 	u8 rfseq_updategainu_events[] = {
15435 		NPHY_RFSEQ_CMD_RX_GAIN,
15436 		NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15437 		NPHY_RFSEQ_CMD_SET_HPF_BW
15438 	};
15439 	static const u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
15440 	static const s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
15441 	static const s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
15442 	static const s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
15443 	static const s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
15444 	static const s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
15445 	static const s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
15446 	static const s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
15447 	static const s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
15448 	static const s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
15449 	const s8 *lna1_gain_db = NULL;
15450 	static const s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
15451 	static const s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
15452 	static const s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
15453 	static const s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
15454 	static const s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
15455 	static const s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
15456 	static const s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
15457 	static const s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
15458 	const s8 *lna2_gain_db = NULL;
15459 	static const s8 tiaG_gain_db[] = {
15460 		0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
15461 	static const s8 tiaA_gain_db[] = {
15462 		0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
15463 	static const s8 tiaA_gain_db_rev4[] = {
15464 		0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15465 	static const s8 tiaA_gain_db_rev5[] = {
15466 		0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15467 	static const s8 tiaA_gain_db_rev6[] = {
15468 		0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15469 	const s8 *tia_gain_db;
15470 	static const s8 tiaG_gainbits[] = {
15471 		0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15472 	static const s8 tiaA_gainbits[] = {
15473 		0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
15474 	static const s8 tiaA_gainbits_rev4[] = {
15475 		0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15476 	static const s8 tiaA_gainbits_rev5[] = {
15477 		0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15478 	static const s8 tiaA_gainbits_rev6[] = {
15479 		0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15480 	const s8 *tia_gainbits;
15481 	static const s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
15482 	static const s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
15483 	static const u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
15484 	static const u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
15485 	static const u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
15486 	static const u16 rfseqG_init_gain_rev5_elna[] = {
15487 		0x013f, 0x013f, 0x013f, 0x013f };
15488 	static const u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
15489 	static const u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
15490 	static const u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
15491 	static const u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
15492 	static const u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
15493 	static const u16 rfseqA_init_gain_rev4_elna[] = {
15494 		0x314f, 0x314f, 0x314f, 0x314f };
15495 	static const u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
15496 	static const u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
15497 	const u16 *rfseq_init_gain;
15498 	u16 initG_gaincode = 0x627e;
15499 	u16 initG_gaincode_rev4 = 0x527e;
15500 	u16 initG_gaincode_rev5 = 0x427e;
15501 	u16 initG_gaincode_rev5_elna = 0x027e;
15502 	u16 initG_gaincode_rev6 = 0x527e;
15503 	u16 initG_gaincode_rev6_224B0 = 0x427e;
15504 	u16 initG_gaincode_rev6_elna = 0x127e;
15505 	u16 initA_gaincode = 0x52de;
15506 	u16 initA_gaincode_rev4 = 0x629e;
15507 	u16 initA_gaincode_rev4_elna = 0x329e;
15508 	u16 initA_gaincode_rev5 = 0x729e;
15509 	u16 initA_gaincode_rev6 = 0x729e;
15510 	u16 init_gaincode;
15511 	u16 clip1hiG_gaincode = 0x107e;
15512 	u16 clip1hiG_gaincode_rev4 = 0x007e;
15513 	u16 clip1hiG_gaincode_rev5 = 0x1076;
15514 	u16 clip1hiG_gaincode_rev6 = 0x007e;
15515 	u16 clip1hiA_gaincode = 0x00de;
15516 	u16 clip1hiA_gaincode_rev4 = 0x029e;
15517 	u16 clip1hiA_gaincode_rev5 = 0x029e;
15518 	u16 clip1hiA_gaincode_rev6 = 0x029e;
15519 	u16 clip1hi_gaincode;
15520 	u16 clip1mdG_gaincode = 0x0066;
15521 	u16 clip1mdA_gaincode = 0x00ca;
15522 	u16 clip1mdA_gaincode_rev4 = 0x1084;
15523 	u16 clip1mdA_gaincode_rev5 = 0x2084;
15524 	u16 clip1mdA_gaincode_rev6 = 0x2084;
15525 	u16 clip1md_gaincode = 0;
15526 	u16 clip1loG_gaincode = 0x0074;
15527 	static const u16 clip1loG_gaincode_rev5[] = {
15528 		0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
15529 	};
15530 	static const u16 clip1loG_gaincode_rev6[] = {
15531 		0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
15532 	};
15533 	u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
15534 	u16 clip1loA_gaincode = 0x00cc;
15535 	u16 clip1loA_gaincode_rev4 = 0x0086;
15536 	u16 clip1loA_gaincode_rev5 = 0x2086;
15537 	u16 clip1loA_gaincode_rev6 = 0x2086;
15538 	u16 clip1lo_gaincode;
15539 	u8 crsminG_th = 0x18;
15540 	u8 crsminG_th_rev5 = 0x18;
15541 	u8 crsminG_th_rev6 = 0x18;
15542 	u8 crsminA_th = 0x1e;
15543 	u8 crsminA_th_rev4 = 0x24;
15544 	u8 crsminA_th_rev5 = 0x24;
15545 	u8 crsminA_th_rev6 = 0x24;
15546 	u8 crsmin_th;
15547 	u8 crsminlG_th = 0x18;
15548 	u8 crsminlG_th_rev5 = 0x18;
15549 	u8 crsminlG_th_rev6 = 0x18;
15550 	u8 crsminlA_th = 0x1e;
15551 	u8 crsminlA_th_rev4 = 0x24;
15552 	u8 crsminlA_th_rev5 = 0x24;
15553 	u8 crsminlA_th_rev6 = 0x24;
15554 	u8 crsminl_th = 0;
15555 	u8 crsminuG_th = 0x18;
15556 	u8 crsminuG_th_rev5 = 0x18;
15557 	u8 crsminuG_th_rev6 = 0x18;
15558 	u8 crsminuA_th = 0x1e;
15559 	u8 crsminuA_th_rev4 = 0x24;
15560 	u8 crsminuA_th_rev5 = 0x24;
15561 	u8 crsminuA_th_rev6 = 0x24;
15562 	u8 crsminuA_th_rev6_224B0 = 0x2d;
15563 	u8 crsminu_th;
15564 	u16 nbclipG_th = 0x20d;
15565 	u16 nbclipG_th_rev4 = 0x1a1;
15566 	u16 nbclipG_th_rev5 = 0x1d0;
15567 	u16 nbclipG_th_rev6 = 0x1d0;
15568 	u16 nbclipA_th = 0x1a1;
15569 	u16 nbclipA_th_rev4 = 0x107;
15570 	u16 nbclipA_th_rev5 = 0x0a9;
15571 	u16 nbclipA_th_rev6 = 0x0f0;
15572 	u16 nbclip_th = 0;
15573 	u8 w1clipG_th = 5;
15574 	u8 w1clipG_th_rev5 = 9;
15575 	u8 w1clipG_th_rev6 = 5;
15576 	u8 w1clipA_th = 25, w1clip_th;
15577 	u8 rssi_gain_default = 0x50;
15578 	u8 rssiG_gain_rev6_224B0 = 0x50;
15579 	u8 rssiA_gain_rev5 = 0x90;
15580 	u8 rssiA_gain_rev6 = 0x90;
15581 	u8 rssi_gain;
15582 	u16 regval[21];
15583 	u8 triso;
15584 
15585 	triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
15586 		pi->srom_fem2g.triso;
15587 
15588 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15589 		if (pi->pubpi.radiorev == 5) {
15590 			wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
15591 		} else if (pi->pubpi.radiorev == 7) {
15592 			wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15593 
15594 			mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
15595 			mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
15596 
15597 		} else if ((pi->pubpi.radiorev == 3)
15598 			   || (pi->pubpi.radiorev == 8)) {
15599 			wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15600 
15601 			if (pi->pubpi.radiorev == 8) {
15602 				mod_phy_reg(pi, 0x283,
15603 					    (0xff << 0), (0x44 << 0));
15604 				mod_phy_reg(pi, 0x280,
15605 					    (0xff << 0), (0x44 << 0));
15606 			}
15607 		} else {
15608 			wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15609 		}
15610 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15611 
15612 		mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
15613 
15614 		mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15615 		mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15616 
15617 		currband =
15618 			read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15619 		if (currband == 0) {
15620 			if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15621 				if (pi->pubpi.radiorev == 11) {
15622 					lna1_gain_db = lna1G_gain_db_rev6_224B0;
15623 					lna2_gain_db = lna2G_gain_db_rev6_224B0;
15624 					rfseq_init_gain =
15625 						rfseqG_init_gain_rev6_224B0;
15626 					init_gaincode =
15627 						initG_gaincode_rev6_224B0;
15628 					clip1hi_gaincode =
15629 						clip1hiG_gaincode_rev6;
15630 					clip1lo_gaincode =
15631 						clip1loG_gaincode_rev6_224B0;
15632 					nbclip_th = nbclipG_th_rev6;
15633 					w1clip_th = w1clipG_th_rev6;
15634 					crsmin_th = crsminG_th_rev6;
15635 					crsminl_th = crsminlG_th_rev6;
15636 					crsminu_th = crsminuG_th_rev6;
15637 					rssi_gain = rssiG_gain_rev6_224B0;
15638 				} else {
15639 					lna1_gain_db = lna1G_gain_db_rev6;
15640 					lna2_gain_db = lna2G_gain_db_rev6;
15641 					if (pi->sh->boardflags & BFL_EXTLNA) {
15642 
15643 						rfseq_init_gain =
15644 						     rfseqG_init_gain_rev6_elna;
15645 						init_gaincode =
15646 						       initG_gaincode_rev6_elna;
15647 					} else {
15648 						rfseq_init_gain =
15649 							rfseqG_init_gain_rev6;
15650 						init_gaincode =
15651 							initG_gaincode_rev6;
15652 					}
15653 					clip1hi_gaincode =
15654 						clip1hiG_gaincode_rev6;
15655 					switch (triso) {
15656 					case 0:
15657 						clip1lo_gaincode =
15658 							clip1loG_gaincode_rev6
15659 							[0];
15660 						break;
15661 					case 1:
15662 						clip1lo_gaincode =
15663 							clip1loG_gaincode_rev6
15664 							[1];
15665 						break;
15666 					case 2:
15667 						clip1lo_gaincode =
15668 							clip1loG_gaincode_rev6
15669 							[2];
15670 						break;
15671 					case 3:
15672 					default:
15673 
15674 						clip1lo_gaincode =
15675 							clip1loG_gaincode_rev6
15676 							[3];
15677 						break;
15678 					case 4:
15679 						clip1lo_gaincode =
15680 							clip1loG_gaincode_rev6
15681 							[4];
15682 						break;
15683 					case 5:
15684 						clip1lo_gaincode =
15685 							clip1loG_gaincode_rev6
15686 							[5];
15687 						break;
15688 					case 6:
15689 						clip1lo_gaincode =
15690 							clip1loG_gaincode_rev6
15691 							[6];
15692 						break;
15693 					case 7:
15694 						clip1lo_gaincode =
15695 							clip1loG_gaincode_rev6
15696 							[7];
15697 						break;
15698 					}
15699 					nbclip_th = nbclipG_th_rev6;
15700 					w1clip_th = w1clipG_th_rev6;
15701 					crsmin_th = crsminG_th_rev6;
15702 					crsminl_th = crsminlG_th_rev6;
15703 					crsminu_th = crsminuG_th_rev6;
15704 					rssi_gain = rssi_gain_default;
15705 				}
15706 			} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15707 				lna1_gain_db = lna1G_gain_db_rev5;
15708 				lna2_gain_db = lna2G_gain_db_rev5;
15709 				if (pi->sh->boardflags & BFL_EXTLNA) {
15710 
15711 					rfseq_init_gain =
15712 						rfseqG_init_gain_rev5_elna;
15713 					init_gaincode =
15714 						initG_gaincode_rev5_elna;
15715 				} else {
15716 					rfseq_init_gain = rfseqG_init_gain_rev5;
15717 					init_gaincode = initG_gaincode_rev5;
15718 				}
15719 				clip1hi_gaincode = clip1hiG_gaincode_rev5;
15720 				switch (triso) {
15721 				case 0:
15722 					clip1lo_gaincode =
15723 						clip1loG_gaincode_rev5[0];
15724 					break;
15725 				case 1:
15726 					clip1lo_gaincode =
15727 						clip1loG_gaincode_rev5[1];
15728 					break;
15729 				case 2:
15730 					clip1lo_gaincode =
15731 						clip1loG_gaincode_rev5[2];
15732 					break;
15733 				case 3:
15734 
15735 					clip1lo_gaincode =
15736 						clip1loG_gaincode_rev5[3];
15737 					break;
15738 				case 4:
15739 					clip1lo_gaincode =
15740 						clip1loG_gaincode_rev5[4];
15741 					break;
15742 				case 5:
15743 					clip1lo_gaincode =
15744 						clip1loG_gaincode_rev5[5];
15745 					break;
15746 				case 6:
15747 					clip1lo_gaincode =
15748 						clip1loG_gaincode_rev5[6];
15749 					break;
15750 				case 7:
15751 					clip1lo_gaincode =
15752 						clip1loG_gaincode_rev5[7];
15753 					break;
15754 				default:
15755 					clip1lo_gaincode =
15756 						clip1loG_gaincode_rev5[3];
15757 					break;
15758 				}
15759 				nbclip_th = nbclipG_th_rev5;
15760 				w1clip_th = w1clipG_th_rev5;
15761 				crsmin_th = crsminG_th_rev5;
15762 				crsminl_th = crsminlG_th_rev5;
15763 				crsminu_th = crsminuG_th_rev5;
15764 				rssi_gain = rssi_gain_default;
15765 			} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15766 				lna1_gain_db = lna1G_gain_db_rev4;
15767 				lna2_gain_db = lna2G_gain_db;
15768 				rfseq_init_gain = rfseqG_init_gain_rev4;
15769 				init_gaincode = initG_gaincode_rev4;
15770 				clip1hi_gaincode = clip1hiG_gaincode_rev4;
15771 				clip1lo_gaincode = clip1loG_gaincode;
15772 				nbclip_th = nbclipG_th_rev4;
15773 				w1clip_th = w1clipG_th;
15774 				crsmin_th = crsminG_th;
15775 				crsminl_th = crsminlG_th;
15776 				crsminu_th = crsminuG_th;
15777 				rssi_gain = rssi_gain_default;
15778 			} else {
15779 				lna1_gain_db = lna1G_gain_db;
15780 				lna2_gain_db = lna2G_gain_db;
15781 				rfseq_init_gain = rfseqG_init_gain;
15782 				init_gaincode = initG_gaincode;
15783 				clip1hi_gaincode = clip1hiG_gaincode;
15784 				clip1lo_gaincode = clip1loG_gaincode;
15785 				nbclip_th = nbclipG_th;
15786 				w1clip_th = w1clipG_th;
15787 				crsmin_th = crsminG_th;
15788 				crsminl_th = crsminlG_th;
15789 				crsminu_th = crsminuG_th;
15790 				rssi_gain = rssi_gain_default;
15791 			}
15792 			tia_gain_db = tiaG_gain_db;
15793 			tia_gainbits = tiaG_gainbits;
15794 			clip1md_gaincode = clip1mdG_gaincode;
15795 		} else {
15796 			if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15797 				lna1_gain_db = lna1A_gain_db_rev6;
15798 				lna2_gain_db = lna2A_gain_db_rev6;
15799 				tia_gain_db = tiaA_gain_db_rev6;
15800 				tia_gainbits = tiaA_gainbits_rev6;
15801 				rfseq_init_gain = rfseqA_init_gain_rev6;
15802 				init_gaincode = initA_gaincode_rev6;
15803 				clip1hi_gaincode = clip1hiA_gaincode_rev6;
15804 				clip1md_gaincode = clip1mdA_gaincode_rev6;
15805 				clip1lo_gaincode = clip1loA_gaincode_rev6;
15806 				crsmin_th = crsminA_th_rev6;
15807 				crsminl_th = crsminlA_th_rev6;
15808 				if ((pi->pubpi.radiorev == 11) &&
15809 				    (CHSPEC_IS40(pi->radio_chanspec) == 0))
15810 					crsminu_th = crsminuA_th_rev6_224B0;
15811 				else
15812 					crsminu_th = crsminuA_th_rev6;
15813 
15814 				nbclip_th = nbclipA_th_rev6;
15815 				rssi_gain = rssiA_gain_rev6;
15816 			} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15817 				lna1_gain_db = lna1A_gain_db_rev5;
15818 				lna2_gain_db = lna2A_gain_db_rev5;
15819 				tia_gain_db = tiaA_gain_db_rev5;
15820 				tia_gainbits = tiaA_gainbits_rev5;
15821 				rfseq_init_gain = rfseqA_init_gain_rev5;
15822 				init_gaincode = initA_gaincode_rev5;
15823 				clip1hi_gaincode = clip1hiA_gaincode_rev5;
15824 				clip1md_gaincode = clip1mdA_gaincode_rev5;
15825 				clip1lo_gaincode = clip1loA_gaincode_rev5;
15826 				crsmin_th = crsminA_th_rev5;
15827 				crsminl_th = crsminlA_th_rev5;
15828 				crsminu_th = crsminuA_th_rev5;
15829 				nbclip_th = nbclipA_th_rev5;
15830 				rssi_gain = rssiA_gain_rev5;
15831 			} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15832 				lna1_gain_db = lna1A_gain_db_rev4;
15833 				lna2_gain_db = lna2A_gain_db_rev4;
15834 				tia_gain_db = tiaA_gain_db_rev4;
15835 				tia_gainbits = tiaA_gainbits_rev4;
15836 				if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
15837 
15838 					rfseq_init_gain =
15839 						rfseqA_init_gain_rev4_elna;
15840 					init_gaincode =
15841 						initA_gaincode_rev4_elna;
15842 				} else {
15843 					rfseq_init_gain = rfseqA_init_gain_rev4;
15844 					init_gaincode = initA_gaincode_rev4;
15845 				}
15846 				clip1hi_gaincode = clip1hiA_gaincode_rev4;
15847 				clip1md_gaincode = clip1mdA_gaincode_rev4;
15848 				clip1lo_gaincode = clip1loA_gaincode_rev4;
15849 				crsmin_th = crsminA_th_rev4;
15850 				crsminl_th = crsminlA_th_rev4;
15851 				crsminu_th = crsminuA_th_rev4;
15852 				nbclip_th = nbclipA_th_rev4;
15853 				rssi_gain = rssi_gain_default;
15854 			} else {
15855 				lna1_gain_db = lna1A_gain_db;
15856 				lna2_gain_db = lna2A_gain_db;
15857 				tia_gain_db = tiaA_gain_db;
15858 				tia_gainbits = tiaA_gainbits;
15859 				rfseq_init_gain = rfseqA_init_gain;
15860 				init_gaincode = initA_gaincode;
15861 				clip1hi_gaincode = clip1hiA_gaincode;
15862 				clip1md_gaincode = clip1mdA_gaincode;
15863 				clip1lo_gaincode = clip1loA_gaincode;
15864 				crsmin_th = crsminA_th;
15865 				crsminl_th = crsminlA_th;
15866 				crsminu_th = crsminuA_th;
15867 				nbclip_th = nbclipA_th;
15868 				rssi_gain = rssi_gain_default;
15869 			}
15870 			w1clip_th = w1clipA_th;
15871 		}
15872 
15873 		write_radio_reg(pi,
15874 				(RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15875 				 RADIO_2056_RX0), 0x17);
15876 		write_radio_reg(pi,
15877 				(RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15878 				 RADIO_2056_RX1), 0x17);
15879 
15880 		write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
15881 				0xf0);
15882 		write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
15883 				0xf0);
15884 
15885 		write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
15886 				0x0);
15887 		write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
15888 				0x0);
15889 
15890 		write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
15891 				rssi_gain);
15892 		write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
15893 				rssi_gain);
15894 
15895 		write_radio_reg(pi,
15896 				(RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15897 				 RADIO_2056_RX0), 0x17);
15898 		write_radio_reg(pi,
15899 				(RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15900 				 RADIO_2056_RX1), 0x17);
15901 
15902 		write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
15903 				0xFF);
15904 		write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
15905 				0xFF);
15906 
15907 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
15908 					 8, lna1_gain_db);
15909 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
15910 					 8, lna1_gain_db);
15911 
15912 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15913 					 8, lna2_gain_db);
15914 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15915 					 8, lna2_gain_db);
15916 
15917 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
15918 					 8, tia_gain_db);
15919 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
15920 					 8, tia_gain_db);
15921 
15922 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
15923 					 8, tia_gainbits);
15924 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
15925 					 8, tia_gainbits);
15926 
15927 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
15928 					 8, &lpf_gain_db);
15929 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
15930 					 8, &lpf_gain_db);
15931 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
15932 					 8, &lpf_gainbits);
15933 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
15934 					 8, &lpf_gainbits);
15935 
15936 		write_phy_reg(pi, 0x20, init_gaincode);
15937 		write_phy_reg(pi, 0x2a7, init_gaincode);
15938 
15939 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15940 					 pi->pubpi.phy_corenum, 0x106, 16,
15941 					 rfseq_init_gain);
15942 
15943 		write_phy_reg(pi, 0x22, clip1hi_gaincode);
15944 		write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15945 
15946 		write_phy_reg(pi, 0x24, clip1md_gaincode);
15947 		write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15948 
15949 		write_phy_reg(pi, 0x37, clip1lo_gaincode);
15950 		write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15951 
15952 		mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
15953 		mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15954 		mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15955 
15956 		write_phy_reg(pi, 0x2b, nbclip_th);
15957 		write_phy_reg(pi, 0x41, nbclip_th);
15958 
15959 		mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
15960 		mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
15961 
15962 		write_phy_reg(pi, 0x150, 0x809c);
15963 
15964 	} else {
15965 
15966 		mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15967 		mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15968 
15969 		write_phy_reg(pi, 0x2b, 0x84);
15970 		write_phy_reg(pi, 0x41, 0x84);
15971 
15972 		if (CHSPEC_IS20(pi->radio_chanspec)) {
15973 			write_phy_reg(pi, 0x6b, 0x2b);
15974 			write_phy_reg(pi, 0x6c, 0x2b);
15975 			write_phy_reg(pi, 0x6d, 0x9);
15976 			write_phy_reg(pi, 0x6e, 0x9);
15977 		}
15978 
15979 		w1th = NPHY_RSSICAL_W1_TARGET - 4;
15980 		mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
15981 		mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
15982 
15983 		if (CHSPEC_IS20(pi->radio_chanspec)) {
15984 			mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
15985 			mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
15986 
15987 			mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
15988 			mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
15989 		}
15990 
15991 		write_phy_reg(pi, 0x150, 0x809c);
15992 
15993 		if (pi->nphy_gain_boost)
15994 			if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
15995 			    (CHSPEC_IS40(pi->radio_chanspec)))
15996 				hpf_code = 4;
15997 			else
15998 				hpf_code = 5;
15999 		else if (CHSPEC_IS40(pi->radio_chanspec))
16000 			hpf_code = 6;
16001 		else
16002 			hpf_code = 7;
16003 
16004 		mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16005 		mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16006 
16007 		for (ctr = 0; ctr < 4; ctr++)
16008 			regval[ctr] = (hpf_code << 8) | 0x7c;
16009 		wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16010 
16011 		wlc_phy_adjust_lnagaintbl_nphy(pi);
16012 
16013 		if (pi->nphy_elna_gain_config) {
16014 			regval[0] = 0;
16015 			regval[1] = 1;
16016 			regval[2] = 1;
16017 			regval[3] = 1;
16018 			wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16019 			wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16020 
16021 			for (ctr = 0; ctr < 4; ctr++)
16022 				regval[ctr] = (hpf_code << 8) | 0x74;
16023 			wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16024 		}
16025 
16026 		if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16027 			for (ctr = 0; ctr < 21; ctr++)
16028 				regval[ctr] = 3 * ctr;
16029 			wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16030 			wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16031 
16032 			for (ctr = 0; ctr < 21; ctr++)
16033 				regval[ctr] = (u16) ctr;
16034 			wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16035 			wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16036 		}
16037 
16038 		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16039 				       rfseq_updategainu_events,
16040 				       rfseq_updategainu_dlys,
16041 				       ARRAY_SIZE(rfseq_updategainu_events));
16042 
16043 		mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16044 
16045 		if (CHSPEC_IS2G(pi->radio_chanspec))
16046 			mod_phy_reg(pi,
16047 				    (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16048 				    0x7f, 0x4);
16049 	}
16050 }
16051 
wlc_phy_workarounds_nphy_rev7(struct brcms_phy * pi)16052 static void wlc_phy_workarounds_nphy_rev7(struct brcms_phy *pi)
16053 {
16054 	static const u8 rfseq_rx2tx_events_rev3_ipa[] = {
16055 		NPHY_REV3_RFSEQ_CMD_NOP,
16056 		NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16057 		NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16058 		NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16059 		NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16060 		NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16061 		NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16062 		NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16063 		NPHY_REV3_RFSEQ_CMD_END
16064 	};
16065 	static const u8 rfseq_rx2tx_dlys_rev3_ipa[] =
16066 		{ 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16067 	static const u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
16068 	u32 leg_data_weights;
16069 	u8 chan_freq_range = 0;
16070 	static const u16 dac_control = 0x0002;
16071 	u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
16072 	u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
16073 	u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
16074 	s32 min_nvar_val = 0x18d;
16075 	s32 min_nvar_offset_6mbps = 20;
16076 	u8 pdetrange;
16077 	u16 afectrl_adc_ctrl1_rev7 = 0x20;
16078 	u16 afectrl_adc_ctrl2_rev7 = 0x0;
16079 	u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
16080 	u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
16081 	u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
16082 	static const u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
16083 	static const u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16084 	static const u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16085 	u16 ipalvlshift_3p3_war_en = 0;
16086 	u16 rccal_bcap_val, rccal_scap_val;
16087 	u16 rccal_tx20_11b_bcap = 0;
16088 	u16 rccal_tx20_11b_scap = 0;
16089 	u16 rccal_tx20_11n_bcap = 0;
16090 	u16 rccal_tx20_11n_scap = 0;
16091 	u16 rccal_tx40_11n_bcap = 0;
16092 	u16 rccal_tx40_11n_scap = 0;
16093 	u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
16094 	u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
16095 	u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
16096 	u16 tx_lpf_bw_ofdm_20mhz = 0;
16097 	u16 tx_lpf_bw_ofdm_40mhz = 0;
16098 	u16 tx_lpf_bw_11b = 0;
16099 	u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
16100 	u16 txgm_idac_bleed = 0;
16101 	bool rccal_ovrd = false;
16102 	u16 freq;
16103 	int coreNum;
16104 
16105 
16106 	if (NREV_IS(pi->pubpi.phy_rev, 7)) {
16107 		mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
16108 
16109 		mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
16110 		mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
16111 		mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
16112 		mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
16113 		mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
16114 		mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
16115 		mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
16116 		mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
16117 		mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
16118 		mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
16119 		mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
16120 		mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
16121 		mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
16122 		mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
16123 		mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
16124 		mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
16125 	}
16126 
16127 	if (NREV_LE(pi->pubpi.phy_rev, 8)) {
16128 		write_phy_reg(pi, 0x23f, 0x1b0);
16129 		write_phy_reg(pi, 0x240, 0x1b0);
16130 	}
16131 
16132 	if (NREV_GE(pi->pubpi.phy_rev, 8))
16133 		mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
16134 
16135 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16136 				 &dac_control);
16137 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16138 				 &dac_control);
16139 
16140 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16141 				1, 0, 32, &leg_data_weights);
16142 	leg_data_weights = leg_data_weights & 0xffffff;
16143 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16144 				 1, 0, 32, &leg_data_weights);
16145 
16146 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16147 				 2, 0x15e, 16, rfseq_rx2tx_dacbufpu_rev7);
16148 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
16149 				 rfseq_rx2tx_dacbufpu_rev7);
16150 
16151 	if (PHY_IPA(pi))
16152 		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16153 				       rfseq_rx2tx_events_rev3_ipa,
16154 				       rfseq_rx2tx_dlys_rev3_ipa,
16155 				       ARRAY_SIZE
16156 				       (rfseq_rx2tx_events_rev3_ipa));
16157 
16158 	mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
16159 	mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
16160 
16161 	tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
16162 	tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
16163 	tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
16164 
16165 	if (PHY_IPA(pi)) {
16166 
16167 		if (((pi->pubpi.radiorev == 5)
16168 		     && (CHSPEC_IS40(pi->radio_chanspec) == 1))
16169 		    || (pi->pubpi.radiorev == 7)
16170 		    || (pi->pubpi.radiorev == 8)) {
16171 
16172 			rccal_bcap_val =
16173 			    read_radio_reg(pi, RADIO_2057_RCCAL_BCAP_VAL);
16174 			rccal_scap_val =
16175 			    read_radio_reg(pi, RADIO_2057_RCCAL_SCAP_VAL);
16176 
16177 			rccal_tx20_11b_bcap = rccal_bcap_val;
16178 			rccal_tx20_11b_scap = rccal_scap_val;
16179 
16180 			if ((pi->pubpi.radiorev == 5) &&
16181 			    (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
16182 
16183 				rccal_tx20_11n_bcap = rccal_bcap_val;
16184 				rccal_tx20_11n_scap = rccal_scap_val;
16185 				rccal_tx40_11n_bcap = 0xc;
16186 				rccal_tx40_11n_scap = 0xc;
16187 
16188 				rccal_ovrd = true;
16189 
16190 			} else if ((pi->pubpi.radiorev == 7)
16191 				   || (pi->pubpi.radiorev == 8)) {
16192 
16193 				tx_lpf_bw_ofdm_20mhz = 4;
16194 				tx_lpf_bw_11b = 1;
16195 
16196 				if (CHSPEC_IS2G(pi->radio_chanspec)) {
16197 					rccal_tx20_11n_bcap = 0xc;
16198 					rccal_tx20_11n_scap = 0xc;
16199 					rccal_tx40_11n_bcap = 0xa;
16200 					rccal_tx40_11n_scap = 0xa;
16201 				} else {
16202 					rccal_tx20_11n_bcap = 0x14;
16203 					rccal_tx20_11n_scap = 0x14;
16204 					rccal_tx40_11n_bcap = 0xf;
16205 					rccal_tx40_11n_scap = 0xf;
16206 				}
16207 
16208 				rccal_ovrd = true;
16209 			}
16210 		}
16211 
16212 	} else {
16213 
16214 		if (pi->pubpi.radiorev == 5) {
16215 
16216 			tx_lpf_bw_ofdm_20mhz = 1;
16217 			tx_lpf_bw_ofdm_40mhz = 3;
16218 
16219 			rccal_bcap_val =
16220 			    read_radio_reg(pi, RADIO_2057_RCCAL_BCAP_VAL);
16221 			rccal_scap_val =
16222 			    read_radio_reg(pi, RADIO_2057_RCCAL_SCAP_VAL);
16223 
16224 			rccal_tx20_11b_bcap = rccal_bcap_val;
16225 			rccal_tx20_11b_scap = rccal_scap_val;
16226 
16227 			rccal_tx20_11n_bcap = 0x13;
16228 			rccal_tx20_11n_scap = 0x11;
16229 			rccal_tx40_11n_bcap = 0x13;
16230 			rccal_tx40_11n_scap = 0x11;
16231 
16232 			rccal_ovrd = true;
16233 		}
16234 	}
16235 
16236 	if (rccal_ovrd) {
16237 
16238 		rx2tx_lpf_rc_lut_tx20_11b =
16239 		    (rccal_tx20_11b_bcap << 8) |
16240 		    (rccal_tx20_11b_scap << 3) | tx_lpf_bw_11b;
16241 		rx2tx_lpf_rc_lut_tx20_11n =
16242 		    (rccal_tx20_11n_bcap << 8) |
16243 		    (rccal_tx20_11n_scap << 3) | tx_lpf_bw_ofdm_20mhz;
16244 		rx2tx_lpf_rc_lut_tx40_11n =
16245 		    (rccal_tx40_11n_bcap << 8) |
16246 		    (rccal_tx40_11n_scap << 3) | tx_lpf_bw_ofdm_40mhz;
16247 
16248 		for (coreNum = 0; coreNum <= 1; coreNum++) {
16249 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16250 						 0x152 + coreNum * 0x10, 16,
16251 						 &rx2tx_lpf_rc_lut_tx20_11b);
16252 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16253 						 0x153 + coreNum * 0x10, 16,
16254 						 &rx2tx_lpf_rc_lut_tx20_11n);
16255 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16256 						 0x154 + coreNum * 0x10, 16,
16257 						 &rx2tx_lpf_rc_lut_tx20_11n);
16258 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16259 						 0x155 + coreNum * 0x10, 16,
16260 						 &rx2tx_lpf_rc_lut_tx40_11n);
16261 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16262 						 0x156 + coreNum * 0x10, 16,
16263 						 &rx2tx_lpf_rc_lut_tx40_11n);
16264 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16265 						 0x157 + coreNum * 0x10, 16,
16266 						 &rx2tx_lpf_rc_lut_tx40_11n);
16267 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16268 						 0x158 + coreNum * 0x10, 16,
16269 						 &rx2tx_lpf_rc_lut_tx40_11n);
16270 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16271 						 0x159 + coreNum * 0x10, 16,
16272 						 &rx2tx_lpf_rc_lut_tx40_11n);
16273 		}
16274 
16275 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 1, 0x3, 0,
16276 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
16277 	}
16278 
16279 	write_phy_reg(pi, 0x32f, 0x3);
16280 
16281 	if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
16282 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 0,
16283 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
16284 
16285 	if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
16286 	    (pi->pubpi.radiorev == 6)) {
16287 		if ((pi->sh->sromrev >= 8)
16288 		    && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
16289 			ipalvlshift_3p3_war_en = 1;
16290 
16291 		if (ipalvlshift_3p3_war_en) {
16292 			write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG, 0x5);
16293 			write_radio_reg(pi, RADIO_2057_GPAIO_SEL1, 0x30);
16294 			write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
16295 			or_radio_reg(pi, RADIO_2057_RXTXBIAS_CONFIG_CORE0, 0x1);
16296 			or_radio_reg(pi, RADIO_2057_RXTXBIAS_CONFIG_CORE1, 0x1);
16297 
16298 			ipa2g_mainbias = 0x1f;
16299 
16300 			ipa2g_casconv = 0x6f;
16301 
16302 			ipa2g_biasfilt = 0xaa;
16303 		} else {
16304 
16305 			ipa2g_mainbias = 0x2b;
16306 
16307 			ipa2g_casconv = 0x7f;
16308 
16309 			ipa2g_biasfilt = 0xee;
16310 		}
16311 
16312 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
16313 			for (coreNum = 0; coreNum <= 1; coreNum++) {
16314 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16315 						 coreNum, IPA2G_IMAIN,
16316 						 ipa2g_mainbias);
16317 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16318 						 coreNum, IPA2G_CASCONV,
16319 						 ipa2g_casconv);
16320 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16321 						 coreNum,
16322 						 IPA2G_BIAS_FILTER,
16323 						 ipa2g_biasfilt);
16324 			}
16325 		}
16326 	}
16327 
16328 	if (PHY_IPA(pi)) {
16329 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
16330 			if ((pi->pubpi.radiorev == 3)
16331 			    || (pi->pubpi.radiorev == 4)
16332 			    || (pi->pubpi.radiorev == 6))
16333 				txgm_idac_bleed = 0x7f;
16334 
16335 			for (coreNum = 0; coreNum <= 1; coreNum++) {
16336 				if (txgm_idac_bleed != 0)
16337 					WRITE_RADIO_REG4(pi, RADIO_2057,
16338 							 CORE, coreNum,
16339 							 TXGM_IDAC_BLEED,
16340 							 txgm_idac_bleed);
16341 			}
16342 
16343 			if (pi->pubpi.radiorev == 5) {
16344 				for (coreNum = 0; coreNum <= 1; coreNum++) {
16345 					WRITE_RADIO_REG4(pi, RADIO_2057,
16346 							 CORE, coreNum,
16347 							 IPA2G_CASCONV,
16348 							 0x13);
16349 					WRITE_RADIO_REG4(pi, RADIO_2057,
16350 							 CORE, coreNum,
16351 							 IPA2G_IMAIN,
16352 							 0x1f);
16353 					WRITE_RADIO_REG4(pi, RADIO_2057,
16354 							 CORE, coreNum,
16355 							 IPA2G_BIAS_FILTER,
16356 							 0xee);
16357 					WRITE_RADIO_REG4(pi, RADIO_2057,
16358 							 CORE, coreNum,
16359 							 PAD2G_IDACS,
16360 							 0x8a);
16361 					WRITE_RADIO_REG4(pi, RADIO_2057,
16362 							 CORE, coreNum,
16363 							 PAD_BIAS_FILTER_BWS,
16364 							 0x3e);
16365 				}
16366 			} else if ((pi->pubpi.radiorev == 7) ||
16367 				   (pi->pubpi.radiorev == 8)) {
16368 
16369 				if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16370 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16371 							 0, IPA2G_IMAIN, 0x14);
16372 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16373 							 1, IPA2G_IMAIN, 0x12);
16374 				} else {
16375 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16376 							 0, IPA2G_IMAIN, 0x16);
16377 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16378 							 1, IPA2G_IMAIN, 0x16);
16379 				}
16380 			}
16381 
16382 		} else {
16383 			freq =
16384 			    CHAN5G_FREQ(CHSPEC_CHANNEL
16385 					(pi->radio_chanspec));
16386 			if (((freq >= 5180) && (freq <= 5230))
16387 			    || ((freq >= 5745) && (freq <= 5805))) {
16388 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16389 						 0, IPA5G_BIAS_FILTER, 0xff);
16390 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16391 						 1, IPA5G_BIAS_FILTER, 0xff);
16392 			}
16393 		}
16394 	} else {
16395 
16396 		if (pi->pubpi.radiorev != 5) {
16397 			for (coreNum = 0; coreNum <= 1; coreNum++) {
16398 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16399 						 TXMIX2G_TUNE_BOOST_PU, 0x61);
16400 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16401 						 TXGM_IDAC_BLEED, 0x70);
16402 			}
16403 		}
16404 	}
16405 
16406 	if (pi->pubpi.radiorev == 4) {
16407 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x05, 16,
16408 					 &afectrl_adc_ctrl1_rev7);
16409 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x15, 16,
16410 					 &afectrl_adc_ctrl1_rev7);
16411 
16412 		for (coreNum = 0; coreNum <= 1; coreNum++) {
16413 			WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16414 					 AFE_VCM_CAL_MASTER, 0x0);
16415 			WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16416 					 AFE_SET_VCM_I, 0x3f);
16417 			WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16418 					 AFE_SET_VCM_Q, 0x3f);
16419 		}
16420 	} else {
16421 		mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
16422 		mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
16423 		mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
16424 		mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
16425 
16426 		mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
16427 		mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
16428 		mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
16429 		mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
16430 
16431 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x05, 16,
16432 					 &afectrl_adc_ctrl2_rev7);
16433 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x15, 16,
16434 					 &afectrl_adc_ctrl2_rev7);
16435 
16436 		mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
16437 		mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
16438 		mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
16439 		mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
16440 	}
16441 
16442 	write_phy_reg(pi, 0x6a, 0x2);
16443 
16444 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
16445 				 &min_nvar_offset_6mbps);
16446 
16447 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
16448 				 &rfseq_pktgn_lpf_hpc_rev7);
16449 
16450 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
16451 				 &rfseq_pktgn_lpf_h_hpc_rev7);
16452 
16453 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
16454 				 &rfseq_htpktgn_lpf_hpc_rev7);
16455 
16456 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
16457 				 &rfseq_cckpktgn_lpf_hpc_rev7);
16458 
16459 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
16460 				 &rfseq_tx2rx_lpf_h_hpc_rev7);
16461 
16462 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
16463 				 &rfseq_rx2tx_lpf_h_hpc_rev7);
16464 
16465 	if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16466 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16467 					 32, &min_nvar_val);
16468 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16469 					 127, 32, &min_nvar_val);
16470 	} else {
16471 		min_nvar_val = noise_var_tbl_rev7[3];
16472 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16473 					 32, &min_nvar_val);
16474 
16475 		min_nvar_val = noise_var_tbl_rev7[127];
16476 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16477 					 127, 32, &min_nvar_val);
16478 	}
16479 
16480 	wlc_phy_workarounds_nphy_gainctrl(pi);
16481 
16482 	pdetrange = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16483 		    pi->srom_fem5g.pdetrange : pi->srom_fem2g.pdetrange;
16484 
16485 	if (pdetrange == 0) {
16486 		chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16487 		if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16488 			aux_adc_vmid_rev7_core0[3] = 0x70;
16489 			aux_adc_vmid_rev7_core1[3] = 0x70;
16490 			aux_adc_gain_rev7[3] = 2;
16491 		} else {
16492 			aux_adc_vmid_rev7_core0[3] = 0x80;
16493 			aux_adc_vmid_rev7_core1[3] = 0x80;
16494 			aux_adc_gain_rev7[3] = 3;
16495 		}
16496 	} else if (pdetrange == 1) {
16497 		if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16498 			aux_adc_vmid_rev7_core0[3] = 0x7c;
16499 			aux_adc_vmid_rev7_core1[3] = 0x7c;
16500 			aux_adc_gain_rev7[3] = 2;
16501 		} else {
16502 			aux_adc_vmid_rev7_core0[3] = 0x8c;
16503 			aux_adc_vmid_rev7_core1[3] = 0x8c;
16504 			aux_adc_gain_rev7[3] = 1;
16505 		}
16506 	} else if (pdetrange == 2) {
16507 		if (pi->pubpi.radioid == BCM2057_ID) {
16508 			if ((pi->pubpi.radiorev == 5)
16509 			    || (pi->pubpi.radiorev == 7)
16510 			    || (pi->pubpi.radiorev == 8)) {
16511 				if (chan_freq_range ==
16512 				    WL_CHAN_FREQ_RANGE_2G) {
16513 					aux_adc_vmid_rev7_core0[3] = 0x8c;
16514 					aux_adc_vmid_rev7_core1[3] = 0x8c;
16515 					aux_adc_gain_rev7[3] = 0;
16516 				} else {
16517 					aux_adc_vmid_rev7_core0[3] = 0x96;
16518 					aux_adc_vmid_rev7_core1[3] = 0x96;
16519 					aux_adc_gain_rev7[3] = 0;
16520 				}
16521 			}
16522 		}
16523 
16524 	} else if (pdetrange == 3) {
16525 		if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
16526 			aux_adc_vmid_rev7_core0[3] = 0x89;
16527 			aux_adc_vmid_rev7_core1[3] = 0x89;
16528 			aux_adc_gain_rev7[3] = 0;
16529 		}
16530 
16531 	} else if (pdetrange == 5) {
16532 
16533 		if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16534 			aux_adc_vmid_rev7_core0[3] = 0x80;
16535 			aux_adc_vmid_rev7_core1[3] = 0x80;
16536 			aux_adc_gain_rev7[3] = 3;
16537 		} else {
16538 			aux_adc_vmid_rev7_core0[3] = 0x70;
16539 			aux_adc_vmid_rev7_core1[3] = 0x70;
16540 			aux_adc_gain_rev7[3] = 2;
16541 		}
16542 	}
16543 
16544 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
16545 				 &aux_adc_vmid_rev7_core0);
16546 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
16547 				 &aux_adc_vmid_rev7_core1);
16548 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
16549 				 &aux_adc_gain_rev7);
16550 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
16551 				 &aux_adc_gain_rev7);
16552 }
16553 
wlc_phy_workarounds_nphy_rev3(struct brcms_phy * pi)16554 static void wlc_phy_workarounds_nphy_rev3(struct brcms_phy *pi)
16555 {
16556 	static const u8 rfseq_tx2rx_events_rev3[] = {
16557 		NPHY_REV3_RFSEQ_CMD_EXT_PA,
16558 		NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16559 		NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16560 		NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16561 		NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16562 		NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16563 		NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16564 		NPHY_REV3_RFSEQ_CMD_END
16565 	};
16566 	static const u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
16567 	u8 rfseq_rx2tx_events_rev3[] = {
16568 		NPHY_REV3_RFSEQ_CMD_NOP,
16569 		NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16570 		NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16571 		NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16572 		NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16573 		NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16574 		NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16575 		NPHY_REV3_RFSEQ_CMD_EXT_PA,
16576 		NPHY_REV3_RFSEQ_CMD_END
16577 	};
16578 	u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
16579 	static const u8 rfseq_rx2tx_events_rev3_ipa[] = {
16580 		NPHY_REV3_RFSEQ_CMD_NOP,
16581 		NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16582 		NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16583 		NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16584 		NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16585 		NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16586 		NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16587 		NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16588 		NPHY_REV3_RFSEQ_CMD_END
16589 	};
16590 	static const u8 rfseq_rx2tx_dlys_rev3_ipa[] =
16591 	    { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16592 	s16 alpha0, alpha1, alpha2;
16593 	s16 beta0, beta1, beta2;
16594 	u32 leg_data_weights, ht_data_weights, nss1_data_weights,
16595 	    stbc_data_weights;
16596 	u8 chan_freq_range = 0;
16597 	static const u16 dac_control = 0x0002;
16598 	u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16599 	u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16600 	u16 *aux_adc_vmid;
16601 	u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
16602 	u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
16603 	u16 *aux_adc_gain;
16604 	static const u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
16605 	static const u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
16606 	s32 min_nvar_val = 0x18d;
16607 	u8 pdetrange;
16608 	u8 triso;
16609 
16610 	write_phy_reg(pi, 0x23f, 0x1f8);
16611 	write_phy_reg(pi, 0x240, 0x1f8);
16612 
16613 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16614 				1, 0, 32, &leg_data_weights);
16615 	leg_data_weights = leg_data_weights & 0xffffff;
16616 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16617 				 1, 0, 32, &leg_data_weights);
16618 
16619 	alpha0 = 293;
16620 	alpha1 = 435;
16621 	alpha2 = 261;
16622 	beta0 = 366;
16623 	beta1 = 205;
16624 	beta2 = 32;
16625 	write_phy_reg(pi, 0x145, alpha0);
16626 	write_phy_reg(pi, 0x146, alpha1);
16627 	write_phy_reg(pi, 0x147, alpha2);
16628 	write_phy_reg(pi, 0x148, beta0);
16629 	write_phy_reg(pi, 0x149, beta1);
16630 	write_phy_reg(pi, 0x14a, beta2);
16631 
16632 	write_phy_reg(pi, 0x38, 0xC);
16633 	write_phy_reg(pi, 0x2ae, 0xC);
16634 
16635 	wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
16636 			       rfseq_tx2rx_events_rev3,
16637 			       rfseq_tx2rx_dlys_rev3,
16638 			       ARRAY_SIZE(rfseq_tx2rx_events_rev3));
16639 
16640 	if (PHY_IPA(pi))
16641 		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16642 				       rfseq_rx2tx_events_rev3_ipa,
16643 				       rfseq_rx2tx_dlys_rev3_ipa,
16644 				       ARRAY_SIZE (rfseq_rx2tx_events_rev3_ipa));
16645 
16646 	if ((pi->sh->hw_phyrxchain != 0x3) &&
16647 	    (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
16648 
16649 		if (PHY_IPA(pi)) {
16650 			rfseq_rx2tx_dlys_rev3[5] = 59;
16651 			rfseq_rx2tx_dlys_rev3[6] = 1;
16652 			rfseq_rx2tx_events_rev3[7] = NPHY_REV3_RFSEQ_CMD_END;
16653 		}
16654 
16655 		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16656 				       rfseq_rx2tx_events_rev3,
16657 				       rfseq_rx2tx_dlys_rev3,
16658 				       ARRAY_SIZE (rfseq_rx2tx_events_rev3));
16659 	}
16660 
16661 	if (CHSPEC_IS2G(pi->radio_chanspec))
16662 		write_phy_reg(pi, 0x6a, 0x2);
16663 	else
16664 		write_phy_reg(pi, 0x6a, 0x9c40);
16665 
16666 	mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
16667 
16668 	if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16669 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16670 					 32, &min_nvar_val);
16671 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16672 					 127, 32, &min_nvar_val);
16673 	} else {
16674 		min_nvar_val = noise_var_tbl_rev3[3];
16675 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16676 					 32, &min_nvar_val);
16677 
16678 		min_nvar_val = noise_var_tbl_rev3[127];
16679 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16680 					 127, 32, &min_nvar_val);
16681 	}
16682 
16683 	wlc_phy_workarounds_nphy_gainctrl(pi);
16684 
16685 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16686 				 &dac_control);
16687 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16688 				 &dac_control);
16689 
16690 	pdetrange = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16691 			pi->srom_fem5g.pdetrange : pi->srom_fem2g.pdetrange;
16692 
16693 	if (pdetrange == 0) {
16694 		if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16695 			aux_adc_vmid = aux_adc_vmid_rev4;
16696 			aux_adc_gain = aux_adc_gain_rev4;
16697 		} else {
16698 			aux_adc_vmid = aux_adc_vmid_rev3;
16699 			aux_adc_gain = aux_adc_gain_rev3;
16700 		}
16701 		chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16702 		if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16703 			switch (chan_freq_range) {
16704 			case WL_CHAN_FREQ_RANGE_5GL:
16705 				aux_adc_vmid[3] = 0x89;
16706 				aux_adc_gain[3] = 0;
16707 				break;
16708 			case WL_CHAN_FREQ_RANGE_5GM:
16709 				aux_adc_vmid[3] = 0x89;
16710 				aux_adc_gain[3] = 0;
16711 				break;
16712 			case WL_CHAN_FREQ_RANGE_5GH:
16713 				aux_adc_vmid[3] = 0x89;
16714 				aux_adc_gain[3] = 0;
16715 				break;
16716 			default:
16717 				break;
16718 			}
16719 		}
16720 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16721 					 0x08, 16, aux_adc_vmid);
16722 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16723 					 0x18, 16, aux_adc_vmid);
16724 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16725 					 0x0c, 16, aux_adc_gain);
16726 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16727 					 0x1c, 16, aux_adc_gain);
16728 	} else if (pdetrange == 1) {
16729 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16730 					 0x08, 16, sk_adc_vmid);
16731 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16732 					 0x18, 16, sk_adc_vmid);
16733 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16734 					 0x0c, 16, sk_adc_gain);
16735 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16736 					 0x1c, 16, sk_adc_gain);
16737 	} else if (pdetrange == 2) {
16738 
16739 		u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16740 		u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16741 
16742 		if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16743 			chan_freq_range =
16744 			    wlc_phy_get_chan_freq_range_nphy(pi, 0);
16745 			if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16746 				bcm_adc_vmid[3] = 0x8e;
16747 				bcm_adc_gain[3] = 0x03;
16748 			} else {
16749 				bcm_adc_vmid[3] = 0x94;
16750 				bcm_adc_gain[3] = 0x03;
16751 			}
16752 		} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16753 			bcm_adc_vmid[3] = 0x84;
16754 			bcm_adc_gain[3] = 0x02;
16755 		}
16756 
16757 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16758 					 0x08, 16, bcm_adc_vmid);
16759 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16760 					 0x18, 16, bcm_adc_vmid);
16761 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16762 					 0x0c, 16, bcm_adc_gain);
16763 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16764 					 0x1c, 16, bcm_adc_gain);
16765 	} else if (pdetrange == 3) {
16766 		chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16767 		if ((NREV_GE(pi->pubpi.phy_rev, 4)) &&
16768 		    (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16769 			u16 auxadc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x270 };
16770 			u16 auxadc_gain[] = { 0x02, 0x02, 0x02, 0x00 };
16771 
16772 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16773 						 0x08, 16, auxadc_vmid);
16774 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16775 						 0x18, 16, auxadc_vmid);
16776 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16777 						 0x0c, 16, auxadc_gain);
16778 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16779 						 0x1c, 16, auxadc_gain);
16780 		}
16781 	} else if ((pdetrange == 4) || (pdetrange == 5)) {
16782 		u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
16783 		u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
16784 		u16 Vmid[2], Av[2];
16785 
16786 		chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16787 		if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16788 			Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
16789 			Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
16790 			Av[0] = (pdetrange == 4) ? 2 : 0;
16791 			Av[1] = (pdetrange == 4) ? 2 : 0;
16792 		} else {
16793 			Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
16794 			Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
16795 			Av[0] = (pdetrange == 4) ? 2 : 0;
16796 			Av[1] = (pdetrange == 4) ? 2 : 0;
16797 		}
16798 
16799 		bcm_adc_vmid[3] = Vmid[0];
16800 		bcm_adc_gain[3] = Av[0];
16801 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16802 					 0x08, 16, bcm_adc_vmid);
16803 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16804 					 0x0c, 16, bcm_adc_gain);
16805 
16806 		bcm_adc_vmid[3] = Vmid[1];
16807 		bcm_adc_gain[3] = Av[1];
16808 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16809 					 0x18, 16, bcm_adc_vmid);
16810 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16811 					 0x1c, 16, bcm_adc_gain);
16812 	}
16813 
16814 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0), 0x0);
16815 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1), 0x0);
16816 
16817 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0), 0x6);
16818 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1), 0x6);
16819 
16820 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0), 0x7);
16821 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1), 0x7);
16822 
16823 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0), 0x88);
16824 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1), 0x88);
16825 
16826 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0), 0x0);
16827 	write_radio_reg(pi, (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1), 0x0);
16828 
16829 	write_radio_reg(pi, (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0), 0x0);
16830 	write_radio_reg(pi, (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1), 0x0);
16831 
16832 	triso = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16833 		 pi->srom_fem5g.triso : pi->srom_fem2g.triso;
16834 	if (triso == 7) {
16835 		wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
16836 		wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
16837 	}
16838 
16839 	wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
16840 
16841 	if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
16842 	     (CHSPEC_IS5G(pi->radio_chanspec))) ||
16843 	    (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
16844 	      (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
16845 	     (CHSPEC_IS2G(pi->radio_chanspec)))) {
16846 		nss1_data_weights = 0x00088888;
16847 		ht_data_weights = 0x00088888;
16848 		stbc_data_weights = 0x00088888;
16849 	} else {
16850 		nss1_data_weights = 0x88888888;
16851 		ht_data_weights = 0x88888888;
16852 		stbc_data_weights = 0x88888888;
16853 	}
16854 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16855 				 1, 1, 32, &nss1_data_weights);
16856 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16857 				 1, 2, 32, &ht_data_weights);
16858 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16859 				 1, 3, 32, &stbc_data_weights);
16860 
16861 	if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16862 		if (CHSPEC_IS5G(pi->radio_chanspec)) {
16863 			write_radio_reg(pi,
16864 					RADIO_2056_TX_GMBB_IDAC |
16865 					RADIO_2056_TX0, 0x70);
16866 			write_radio_reg(pi,
16867 					RADIO_2056_TX_GMBB_IDAC |
16868 					RADIO_2056_TX1, 0x70);
16869 		}
16870 	}
16871 
16872 	if (!pi->edcrs_threshold_lock) {
16873 		write_phy_reg(pi, 0x224, 0x3eb);
16874 		write_phy_reg(pi, 0x225, 0x3eb);
16875 		write_phy_reg(pi, 0x226, 0x341);
16876 		write_phy_reg(pi, 0x227, 0x341);
16877 		write_phy_reg(pi, 0x228, 0x42b);
16878 		write_phy_reg(pi, 0x229, 0x42b);
16879 		write_phy_reg(pi, 0x22a, 0x381);
16880 		write_phy_reg(pi, 0x22b, 0x381);
16881 		write_phy_reg(pi, 0x22c, 0x42b);
16882 		write_phy_reg(pi, 0x22d, 0x42b);
16883 		write_phy_reg(pi, 0x22e, 0x381);
16884 		write_phy_reg(pi, 0x22f, 0x381);
16885 	}
16886 
16887 	if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16888 
16889 		if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)
16890 			wlapi_bmac_mhf(pi->sh->physhim, MHF4,
16891 				       MHF4_BPHY_TXCORE0,
16892 				       MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);
16893 	}
16894 }
16895 
wlc_phy_workarounds_nphy_rev1(struct brcms_phy * pi)16896 static void wlc_phy_workarounds_nphy_rev1(struct brcms_phy *pi)
16897 {
16898 	static const u8 rfseq_rx2tx_events[] = {
16899 		NPHY_RFSEQ_CMD_NOP,
16900 		NPHY_RFSEQ_CMD_RXG_FBW,
16901 		NPHY_RFSEQ_CMD_TR_SWITCH,
16902 		NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16903 		NPHY_RFSEQ_CMD_RXPD_TXPD,
16904 		NPHY_RFSEQ_CMD_TX_GAIN,
16905 		NPHY_RFSEQ_CMD_EXT_PA
16906 	};
16907 	u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
16908 	static const u8 rfseq_tx2rx_events[] = {
16909 		NPHY_RFSEQ_CMD_NOP,
16910 		NPHY_RFSEQ_CMD_EXT_PA,
16911 		NPHY_RFSEQ_CMD_TX_GAIN,
16912 		NPHY_RFSEQ_CMD_RXPD_TXPD,
16913 		NPHY_RFSEQ_CMD_TR_SWITCH,
16914 		NPHY_RFSEQ_CMD_RXG_FBW,
16915 		NPHY_RFSEQ_CMD_CLR_HIQ_DIS
16916 	};
16917 	static const u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
16918 	s16 alpha0, alpha1, alpha2;
16919 	s16 beta0, beta1, beta2;
16920 	u16 regval;
16921 
16922 	if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
16923 	    (pi->sh->boardtype == 0x8b)) {
16924 		uint i;
16925 		u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
16926 		for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
16927 			rfseq_rx2tx_dlys[i] = war_dlys[i];
16928 	}
16929 
16930 	if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
16931 		and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
16932 		and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
16933 	} else {
16934 		or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
16935 		or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
16936 	}
16937 
16938 	regval = 0x000a;
16939 	wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
16940 	wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
16941 
16942 	if (NREV_LT(pi->pubpi.phy_rev, 3)) {
16943 		regval = 0xcdaa;
16944 		wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
16945 		wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
16946 	}
16947 
16948 	if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16949 		regval = 0x0000;
16950 		wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
16951 		wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
16952 
16953 		regval = 0x7aab;
16954 		wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
16955 		wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
16956 
16957 		regval = 0x0800;
16958 		wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
16959 		wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
16960 	}
16961 
16962 	write_phy_reg(pi, 0xf8, 0x02d8);
16963 	write_phy_reg(pi, 0xf9, 0x0301);
16964 	write_phy_reg(pi, 0xfa, 0x02d8);
16965 	write_phy_reg(pi, 0xfb, 0x0301);
16966 
16967 	wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
16968 			       rfseq_rx2tx_dlys,
16969 			       ARRAY_SIZE(rfseq_rx2tx_events));
16970 
16971 	wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
16972 			       rfseq_tx2rx_dlys,
16973 			       ARRAY_SIZE(rfseq_tx2rx_events));
16974 
16975 	wlc_phy_workarounds_nphy_gainctrl(pi);
16976 
16977 	if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16978 
16979 		if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
16980 			wlapi_bmac_mhf(pi->sh->physhim, MHF3,
16981 				       MHF3_NPHY_MLADV_WAR,
16982 				       MHF3_NPHY_MLADV_WAR, BRCM_BAND_ALL);
16983 
16984 	} else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16985 		write_phy_reg(pi, 0x1e3, 0x0);
16986 		write_phy_reg(pi, 0x1e4, 0x0);
16987 	}
16988 
16989 	if (NREV_LT(pi->pubpi.phy_rev, 2))
16990 		mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
16991 
16992 	alpha0 = 293;
16993 	alpha1 = 435;
16994 	alpha2 = 261;
16995 	beta0 = 366;
16996 	beta1 = 205;
16997 	beta2 = 32;
16998 	write_phy_reg(pi, 0x145, alpha0);
16999 	write_phy_reg(pi, 0x146, alpha1);
17000 	write_phy_reg(pi, 0x147, alpha2);
17001 	write_phy_reg(pi, 0x148, beta0);
17002 	write_phy_reg(pi, 0x149, beta1);
17003 	write_phy_reg(pi, 0x14a, beta2);
17004 
17005 	if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17006 		mod_phy_reg(pi, 0x142, (0xf << 12), 0);
17007 
17008 		write_phy_reg(pi, 0x192, 0xb5);
17009 		write_phy_reg(pi, 0x193, 0xa4);
17010 		write_phy_reg(pi, 0x194, 0x0);
17011 	}
17012 
17013 	if (NREV_IS(pi->pubpi.phy_rev, 2))
17014 		mod_phy_reg(pi, 0x221,
17015 			    NPHY_FORCESIG_DECODEGATEDCLKS,
17016 			    NPHY_FORCESIG_DECODEGATEDCLKS);
17017 }
17018 
wlc_phy_workarounds_nphy(struct brcms_phy * pi)17019 static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
17020 {
17021 	if (CHSPEC_IS5G(pi->radio_chanspec))
17022 		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
17023 	else
17024 		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
17025 
17026 	if (pi->phyhang_avoid)
17027 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
17028 
17029 	or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
17030 
17031 	if (NREV_GE(pi->pubpi.phy_rev, 7))
17032 		wlc_phy_workarounds_nphy_rev7(pi);
17033 	else if (NREV_GE(pi->pubpi.phy_rev, 3))
17034 		wlc_phy_workarounds_nphy_rev3(pi);
17035 	else
17036 		wlc_phy_workarounds_nphy_rev1(pi);
17037 
17038 	if (pi->phyhang_avoid)
17039 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
17040 }
17041 
wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy * pi)17042 static void wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
17043 {
17044 	int j, type = 2;
17045 	u16 addr_offset = 0x2c5;
17046 
17047 	for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
17048 		write_phy_reg(pi, addr_offset + j,
17049 			      NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
17050 }
17051 
wlc_phy_clip_det_nphy(struct brcms_phy * pi,u8 write,u16 * vals)17052 static void wlc_phy_clip_det_nphy(struct brcms_phy *pi, u8 write, u16 *vals)
17053 {
17054 
17055 	if (write == 0) {
17056 		vals[0] = read_phy_reg(pi, 0x2c);
17057 		vals[1] = read_phy_reg(pi, 0x42);
17058 	} else {
17059 		write_phy_reg(pi, 0x2c, vals[0]);
17060 		write_phy_reg(pi, 0x42, vals[1]);
17061 	}
17062 }
17063 
wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy * pi)17064 static void wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy *pi)
17065 {
17066 	u8 core;
17067 
17068 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17069 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17070 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
17071 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17072 						 TX_SSI_MASTER, 0x5);
17073 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17074 						 TX_SSI_MUX, 0xe);
17075 
17076 				if (pi->pubpi.radiorev != 5)
17077 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17078 							 core, TSSIA, 0);
17079 
17080 				if (!NREV_IS(pi->pubpi.phy_rev, 7))
17081 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17082 							 core, TSSIG, 0x1);
17083 				else
17084 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17085 							 core, TSSIG, 0x31);
17086 			} else {
17087 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17088 						 TX_SSI_MASTER, 0x9);
17089 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17090 						 TX_SSI_MUX, 0xc);
17091 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17092 						 TSSIG, 0);
17093 
17094 				if (pi->pubpi.radiorev != 5) {
17095 					if (!NREV_IS(pi->pubpi.phy_rev, 7))
17096 						WRITE_RADIO_REG3(pi, RADIO_2057,
17097 								 TX, core,
17098 								 TSSIA, 0x1);
17099 					else
17100 						WRITE_RADIO_REG3(pi, RADIO_2057,
17101 								 TX, core,
17102 								 TSSIA, 0x31);
17103 				}
17104 			}
17105 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
17106 					 0);
17107 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
17108 					 0);
17109 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
17110 					 0x3);
17111 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
17112 					 0x0);
17113 		}
17114 	} else {
17115 		WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
17116 				(CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
17117 				0x80);
17118 		WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
17119 		WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
17120 
17121 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17122 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
17123 					 0x0);
17124 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
17125 					 0x0);
17126 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
17127 					 0x3);
17128 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
17129 					 0x0);
17130 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
17131 					 0x8);
17132 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
17133 					 0x0);
17134 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
17135 					 0x0);
17136 
17137 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
17138 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17139 						 TX_SSI_MASTER, 0x5);
17140 
17141 				if (pi->pubpi.radiorev != 5)
17142 					WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17143 							 core, TSSIA, 0x0);
17144 				if (NREV_GE(pi->pubpi.phy_rev, 5))
17145 					WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17146 							 core, TSSIG, 0x31);
17147 				else
17148 					WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17149 							 core, TSSIG, 0x11);
17150 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17151 						 TX_SSI_MUX, 0xe);
17152 			} else {
17153 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17154 						 TX_SSI_MASTER, 0x9);
17155 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17156 						 TSSIA, 0x31);
17157 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17158 						 TSSIG, 0x0);
17159 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17160 						 TX_SSI_MUX, 0xc);
17161 			}
17162 		}
17163 	}
17164 }
17165 
17166 static void
wlc_phy_rfctrl_override_nphy(struct brcms_phy * pi,u16 field,u16 value,u8 core_mask,u8 off)17167 wlc_phy_rfctrl_override_nphy(struct brcms_phy *pi, u16 field, u16 value,
17168 			     u8 core_mask, u8 off)
17169 {
17170 	u8 core_num;
17171 	u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
17172 		0, val_mask = 0;
17173 	u8 shift = 0, val_shift = 0;
17174 
17175 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
17176 
17177 		en_mask = field;
17178 		for (core_num = 0; core_num < 2; core_num++) {
17179 
17180 			switch (field) {
17181 			case (0x1 << 1):
17182 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17183 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17184 				val_mask = (0x1 << 0);
17185 				val_shift = 0;
17186 				break;
17187 			case (0x1 << 2):
17188 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17189 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17190 				val_mask = (0x1 << 1);
17191 				val_shift = 1;
17192 				break;
17193 			case (0x1 << 3):
17194 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17195 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17196 				val_mask = (0x1 << 2);
17197 				val_shift = 2;
17198 				break;
17199 			case (0x1 << 4):
17200 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17201 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17202 				val_mask = (0x1 << 4);
17203 				val_shift = 4;
17204 				break;
17205 			case (0x1 << 5):
17206 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17207 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17208 				val_mask = (0x1 << 5);
17209 				val_shift = 5;
17210 				break;
17211 			case (0x1 << 6):
17212 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17213 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17214 				val_mask = (0x1 << 6);
17215 				val_shift = 6;
17216 				break;
17217 			case (0x1 << 7):
17218 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17219 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17220 				val_mask = (0x1 << 7);
17221 				val_shift = 7;
17222 				break;
17223 			case (0x1 << 8):
17224 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17225 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17226 				val_mask = (0x7 << 8);
17227 				val_shift = 8;
17228 				break;
17229 			case (0x1 << 11):
17230 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17231 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17232 				val_mask = (0x7 << 13);
17233 				val_shift = 13;
17234 				break;
17235 
17236 			case (0x1 << 9):
17237 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17238 				val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17239 				val_mask = (0x7 << 0);
17240 				val_shift = 0;
17241 				break;
17242 
17243 			case (0x1 << 10):
17244 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17245 				val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17246 				val_mask = (0x7 << 4);
17247 				val_shift = 4;
17248 				break;
17249 
17250 			case (0x1 << 12):
17251 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17252 				val_addr = (core_num == 0) ? 0x7b : 0x7e;
17253 				val_mask = (0xffff << 0);
17254 				val_shift = 0;
17255 				break;
17256 			case (0x1 << 13):
17257 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17258 				val_addr = (core_num == 0) ? 0x7c : 0x7f;
17259 				val_mask = (0xffff << 0);
17260 				val_shift = 0;
17261 				break;
17262 			case (0x1 << 14):
17263 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17264 				val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17265 				val_mask = (0x3 << 6);
17266 				val_shift = 6;
17267 				break;
17268 			case (0x1 << 0):
17269 				en_addr = (core_num == 0) ? 0xe5 : 0xe6;
17270 				val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17271 				val_mask = (0x1 << 15);
17272 				val_shift = 15;
17273 				break;
17274 			default:
17275 				addr = 0xffff;
17276 				break;
17277 			}
17278 
17279 			if (off) {
17280 				and_phy_reg(pi, en_addr, ~en_mask);
17281 				and_phy_reg(pi, val_addr, ~val_mask);
17282 			} else {
17283 
17284 				if ((core_mask == 0)
17285 				    || (core_mask & (1 << core_num))) {
17286 					or_phy_reg(pi, en_addr, en_mask);
17287 
17288 					if (addr != 0xffff)
17289 						mod_phy_reg(pi, val_addr,
17290 							    val_mask,
17291 							    (value <<
17292 							     val_shift));
17293 				}
17294 			}
17295 		}
17296 	} else {
17297 
17298 		if (off) {
17299 			and_phy_reg(pi, 0xec, ~field);
17300 			value = 0x0;
17301 		} else {
17302 			or_phy_reg(pi, 0xec, field);
17303 		}
17304 
17305 		for (core_num = 0; core_num < 2; core_num++) {
17306 
17307 			switch (field) {
17308 			case (0x1 << 1):
17309 			case (0x1 << 9):
17310 			case (0x1 << 12):
17311 			case (0x1 << 13):
17312 			case (0x1 << 14):
17313 				addr = 0x78;
17314 
17315 				core_mask = 0x1;
17316 				break;
17317 			case (0x1 << 2):
17318 			case (0x1 << 3):
17319 			case (0x1 << 4):
17320 			case (0x1 << 5):
17321 			case (0x1 << 6):
17322 			case (0x1 << 7):
17323 			case (0x1 << 8):
17324 				addr = (core_num == 0) ? 0x7a : 0x7d;
17325 				break;
17326 			case (0x1 << 10):
17327 				addr = (core_num == 0) ? 0x7b : 0x7e;
17328 				break;
17329 			case (0x1 << 11):
17330 				addr = (core_num == 0) ? 0x7c : 0x7f;
17331 				break;
17332 			default:
17333 				addr = 0xffff;
17334 			}
17335 
17336 			switch (field) {
17337 			case (0x1 << 1):
17338 				mask = (0x7 << 3);
17339 				shift = 3;
17340 				break;
17341 			case (0x1 << 9):
17342 				mask = (0x1 << 2);
17343 				shift = 2;
17344 				break;
17345 			case (0x1 << 12):
17346 				mask = (0x1 << 8);
17347 				shift = 8;
17348 				break;
17349 			case (0x1 << 13):
17350 				mask = (0x1 << 9);
17351 				shift = 9;
17352 				break;
17353 			case (0x1 << 14):
17354 				mask = (0xf << 12);
17355 				shift = 12;
17356 				break;
17357 			case (0x1 << 2):
17358 				mask = (0x1 << 0);
17359 				shift = 0;
17360 				break;
17361 			case (0x1 << 3):
17362 				mask = (0x1 << 1);
17363 				shift = 1;
17364 				break;
17365 			case (0x1 << 4):
17366 				mask = (0x1 << 2);
17367 				shift = 2;
17368 				break;
17369 			case (0x1 << 5):
17370 				mask = (0x3 << 4);
17371 				shift = 4;
17372 				break;
17373 			case (0x1 << 6):
17374 				mask = (0x3 << 6);
17375 				shift = 6;
17376 				break;
17377 			case (0x1 << 7):
17378 				mask = (0x1 << 8);
17379 				shift = 8;
17380 				break;
17381 			case (0x1 << 8):
17382 				mask = (0x1 << 9);
17383 				shift = 9;
17384 				break;
17385 			case (0x1 << 10):
17386 				mask = 0x1fff;
17387 				shift = 0x0;
17388 				break;
17389 			case (0x1 << 11):
17390 				mask = 0x1fff;
17391 				shift = 0x0;
17392 				break;
17393 			default:
17394 				mask = 0x0;
17395 				shift = 0x0;
17396 				break;
17397 			}
17398 
17399 			if ((addr != 0xffff) && (core_mask & (1 << core_num)))
17400 				mod_phy_reg(pi, addr, mask, (value << shift));
17401 		}
17402 
17403 		or_phy_reg(pi, 0xec, (0x1 << 0));
17404 		or_phy_reg(pi, 0x78, (0x1 << 0));
17405 		udelay(1);
17406 		and_phy_reg(pi, 0xec, ~(0x1 << 0));
17407 	}
17408 }
17409 
wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy * pi)17410 static void wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy *pi)
17411 {
17412 	s32 rssi_buf[4];
17413 	s32 int_val;
17414 
17415 	if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
17416 
17417 		return;
17418 
17419 	if (PHY_IPA(pi))
17420 		wlc_phy_ipa_internal_tssi_setup_nphy(pi);
17421 
17422 	if (NREV_GE(pi->pubpi.phy_rev, 7))
17423 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17424 						  0, 0x3, 0,
17425 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
17426 	else if (NREV_GE(pi->pubpi.phy_rev, 3))
17427 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
17428 
17429 	wlc_phy_stopplayback_nphy(pi);
17430 
17431 	wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
17432 
17433 	udelay(20);
17434 	int_val =
17435 		wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
17436 				       1);
17437 	wlc_phy_stopplayback_nphy(pi);
17438 	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
17439 
17440 	if (NREV_GE(pi->pubpi.phy_rev, 7))
17441 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17442 						  0, 0x3, 1,
17443 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
17444 	else if (NREV_GE(pi->pubpi.phy_rev, 3))
17445 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
17446 
17447 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17448 
17449 		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17450 			(u8) ((int_val >> 24) & 0xff);
17451 		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17452 			(u8) ((int_val >> 24) & 0xff);
17453 
17454 		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17455 			(u8) ((int_val >> 8) & 0xff);
17456 		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17457 			(u8) ((int_val >> 8) & 0xff);
17458 	} else {
17459 		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17460 			(u8) ((int_val >> 24) & 0xff);
17461 
17462 		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17463 			(u8) ((int_val >> 8) & 0xff);
17464 
17465 		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17466 			(u8) ((int_val >> 16) & 0xff);
17467 		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17468 			(u8) ((int_val) & 0xff);
17469 	}
17470 
17471 }
17472 
wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy * pi)17473 static void wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy *pi)
17474 {
17475 	u8 idx, idx2, i, delta_ind;
17476 
17477 	for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++)
17478 		pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
17479 
17480 	for (i = 0; i < 4; i++) {
17481 		idx2 = 0;
17482 
17483 		delta_ind = 0;
17484 
17485 		switch (i) {
17486 		case 0:
17487 
17488 			if (CHSPEC_IS40(pi->radio_chanspec)
17489 			    && NPHY_IS_SROM_REINTERPRET) {
17490 				idx = TXP_FIRST_MCS_40_SISO;
17491 			} else {
17492 				idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17493 				      TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
17494 				delta_ind = 1;
17495 			}
17496 			break;
17497 
17498 		case 1:
17499 
17500 			idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17501 			      TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
17502 			break;
17503 
17504 		case 2:
17505 
17506 			idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17507 			      TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
17508 			break;
17509 
17510 		case 3:
17511 
17512 			idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17513 			      TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
17514 			break;
17515 		}
17516 
17517 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17518 			pi->tx_power_offset[idx];
17519 		idx = idx + delta_ind;
17520 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17521 			pi->tx_power_offset[idx];
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 
17527 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17528 			pi->tx_power_offset[idx++];
17529 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17530 			pi->tx_power_offset[idx];
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 
17536 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17537 			pi->tx_power_offset[idx++];
17538 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17539 			pi->tx_power_offset[idx];
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 
17545 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17546 			pi->tx_power_offset[idx];
17547 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17548 			pi->tx_power_offset[idx++];
17549 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17550 			pi->tx_power_offset[idx];
17551 		idx = idx + 1 - delta_ind;
17552 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17553 			pi->tx_power_offset[idx];
17554 
17555 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17556 			pi->tx_power_offset[idx];
17557 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17558 			pi->tx_power_offset[idx];
17559 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17560 			pi->tx_power_offset[idx];
17561 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17562 			pi->tx_power_offset[idx];
17563 	}
17564 }
17565 
wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy * pi)17566 static void wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy *pi)
17567 {
17568 	u32 idx;
17569 	s16 a1[2], b0[2], b1[2];
17570 	s8 target_pwr_qtrdbm[2];
17571 	s32 num, den, pwr_est;
17572 	u8 chan_freq_range;
17573 	u8 idle_tssi[2];
17574 	u32 tbl_id, tbl_len, tbl_offset;
17575 	u32 regval[64];
17576 	u8 core;
17577 
17578 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17579 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17580 		(void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17581 		udelay(1);
17582 	}
17583 
17584 	if (pi->phyhang_avoid)
17585 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
17586 
17587 	or_phy_reg(pi, 0x122, (0x1 << 0));
17588 
17589 	if (NREV_GE(pi->pubpi.phy_rev, 3))
17590 		and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
17591 	else
17592 		or_phy_reg(pi, 0x1e7, (0x1 << 15));
17593 
17594 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17595 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17596 
17597 	if (pi->sh->sromrev < 4) {
17598 		idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17599 		idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17600 		a1[0] = -424;
17601 		a1[1] = -424;
17602 		b0[0] = 5612;
17603 		b0[1] = 5612;
17604 		b1[1] = -1393;
17605 		b1[0] = -1393;
17606 	} else {
17607 
17608 		chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
17609 		switch (chan_freq_range) {
17610 		case WL_CHAN_FREQ_RANGE_2G:
17611 			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17612 			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17613 			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
17614 			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
17615 			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
17616 			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
17617 			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
17618 			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
17619 			break;
17620 		case WL_CHAN_FREQ_RANGE_5GL:
17621 			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17622 			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17623 			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
17624 			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
17625 			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
17626 			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
17627 			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
17628 			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
17629 			break;
17630 		case WL_CHAN_FREQ_RANGE_5GM:
17631 			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17632 			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17633 			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
17634 			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
17635 			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
17636 			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
17637 			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
17638 			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
17639 			break;
17640 		case WL_CHAN_FREQ_RANGE_5GH:
17641 			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17642 			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17643 			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
17644 			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
17645 			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
17646 			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
17647 			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
17648 			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
17649 			break;
17650 		default:
17651 			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17652 			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17653 			a1[0] = -424;
17654 			a1[1] = -424;
17655 			b0[0] = 5612;
17656 			b0[1] = 5612;
17657 			b1[1] = -1393;
17658 			b1[0] = -1393;
17659 			break;
17660 		}
17661 	}
17662 
17663 	/* use the provided transmit power */
17664 	target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
17665 	target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
17666 
17667 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17668 		if (pi->srom_fem2g.tssipos)
17669 			or_phy_reg(pi, 0x1e9, (0x1 << 14));
17670 
17671 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17672 			for (core = 0; core <= 1; core++) {
17673 				if (PHY_IPA(pi)) {
17674 					if (CHSPEC_IS2G(pi->radio_chanspec))
17675 						WRITE_RADIO_REG3(pi, RADIO_2057,
17676 								 TX, core,
17677 								 TX_SSI_MUX,
17678 								 0xe);
17679 					else
17680 						WRITE_RADIO_REG3(pi, RADIO_2057,
17681 								 TX, core,
17682 								 TX_SSI_MUX,
17683 								 0xc);
17684 				}
17685 			}
17686 		} else {
17687 			if (PHY_IPA(pi)) {
17688 
17689 				write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17690 						RADIO_2056_TX0,
17691 						(CHSPEC_IS5G
17692 						 (pi->radio_chanspec)) ?
17693 						 0xc : 0xe);
17694 				write_radio_reg(pi,
17695 						RADIO_2056_TX_TX_SSI_MUX |
17696 						RADIO_2056_TX1,
17697 						(CHSPEC_IS5G
17698 						 (pi->radio_chanspec)) ?
17699 						 0xc : 0xe);
17700 			} else {
17701 
17702 				write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17703 						RADIO_2056_TX0, 0x11);
17704 				write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17705 						RADIO_2056_TX1, 0x11);
17706 			}
17707 		}
17708 	}
17709 
17710 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17711 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17712 		(void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17713 		udelay(1);
17714 	}
17715 
17716 	if (NREV_GE(pi->pubpi.phy_rev, 7))
17717 		mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17718 			    (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17719 	else
17720 		mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17721 			    (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17722 
17723 	if (NREV_GE(pi->pubpi.phy_rev, 7))
17724 		mod_phy_reg(pi, 0x222, (0xff << 0),
17725 			    (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17726 	else if (NREV_GT(pi->pubpi.phy_rev, 1))
17727 		mod_phy_reg(pi, 0x222, (0xff << 0),
17728 			    (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17729 
17730 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17731 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17732 
17733 	write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
17734 
17735 	write_phy_reg(pi, 0x1e9,
17736 		      (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
17737 
17738 	write_phy_reg(pi, 0x1ea,
17739 		      (target_pwr_qtrdbm[0] << 0) |
17740 		      (target_pwr_qtrdbm[1] << 8));
17741 
17742 	tbl_len = 64;
17743 	tbl_offset = 0;
17744 	for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
17745 	     tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
17746 
17747 		for (idx = 0; idx < tbl_len; idx++) {
17748 			num = 8 *
17749 			      (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
17750 			den = 32768 + a1[tbl_id - 26] * idx;
17751 			pwr_est = max(DIV_ROUND_CLOSEST(4 * num, den), -8);
17752 			if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17753 				if (idx <=
17754 				    (uint) (31 - idle_tssi[tbl_id - 26] + 1))
17755 					pwr_est =
17756 						max(pwr_est,
17757 						    target_pwr_qtrdbm
17758 						    [tbl_id - 26] + 1);
17759 			}
17760 			regval[idx] = (u32) pwr_est;
17761 		}
17762 		wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
17763 					 regval);
17764 	}
17765 
17766 	wlc_phy_txpwr_limit_to_tbl_nphy(pi);
17767 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
17768 				 pi->adj_pwr_tbl_nphy);
17769 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
17770 				 pi->adj_pwr_tbl_nphy);
17771 
17772 	if (pi->phyhang_avoid)
17773 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
17774 }
17775 
wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy * pi)17776 static u32 *wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy *pi)
17777 {
17778 	u32 *tx_pwrctrl_tbl = NULL;
17779 
17780 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
17781 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17782 			if ((pi->pubpi.radiorev == 4)
17783 			    || (pi->pubpi.radiorev == 6))
17784 				tx_pwrctrl_tbl =
17785 					nphy_tpc_txgain_ipa_2g_2057rev4n6;
17786 			else if (pi->pubpi.radiorev == 3)
17787 				tx_pwrctrl_tbl =
17788 					nphy_tpc_txgain_ipa_2g_2057rev3;
17789 			else if (pi->pubpi.radiorev == 5)
17790 				tx_pwrctrl_tbl =
17791 					nphy_tpc_txgain_ipa_2g_2057rev5;
17792 			else if ((pi->pubpi.radiorev == 7)
17793 				 || (pi->pubpi.radiorev == 8))
17794 				tx_pwrctrl_tbl =
17795 					nphy_tpc_txgain_ipa_2g_2057rev7;
17796 		} else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
17797 			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
17798 			if (pi->sh->chip == BCMA_CHIP_ID_BCM47162)
17799 				tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17800 		} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
17801 			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17802 		} else {
17803 			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
17804 		}
17805 	} else {
17806 
17807 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17808 			if ((pi->pubpi.radiorev == 3) ||
17809 			    (pi->pubpi.radiorev == 4) ||
17810 			    (pi->pubpi.radiorev == 6))
17811 				tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
17812 			else if ((pi->pubpi.radiorev == 7)
17813 				 || (pi->pubpi.radiorev == 8))
17814 				tx_pwrctrl_tbl =
17815 					nphy_tpc_txgain_ipa_5g_2057rev7;
17816 		} else {
17817 			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
17818 		}
17819 	}
17820 
17821 	return tx_pwrctrl_tbl;
17822 }
17823 
wlc_phy_restore_rssical_nphy(struct brcms_phy * pi)17824 static void wlc_phy_restore_rssical_nphy(struct brcms_phy *pi)
17825 {
17826 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
17827 		if (pi->nphy_rssical_chanspec_2G == 0)
17828 			return;
17829 
17830 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17831 			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17832 				      RADIO_2057_VCM_MASK,
17833 				      pi->rssical_cache.
17834 				      rssical_radio_regs_2G[0]);
17835 			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17836 				      RADIO_2057_VCM_MASK,
17837 				      pi->rssical_cache.
17838 				      rssical_radio_regs_2G[1]);
17839 		} else {
17840 			mod_radio_reg(pi,
17841 				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17842 				      RADIO_2056_VCM_MASK,
17843 				      pi->rssical_cache.
17844 				      rssical_radio_regs_2G[0]);
17845 			mod_radio_reg(pi,
17846 				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17847 				      RADIO_2056_VCM_MASK,
17848 				      pi->rssical_cache.
17849 				      rssical_radio_regs_2G[1]);
17850 		}
17851 
17852 		write_phy_reg(pi, 0x1a6,
17853 			      pi->rssical_cache.rssical_phyregs_2G[0]);
17854 		write_phy_reg(pi, 0x1ac,
17855 			      pi->rssical_cache.rssical_phyregs_2G[1]);
17856 		write_phy_reg(pi, 0x1b2,
17857 			      pi->rssical_cache.rssical_phyregs_2G[2]);
17858 		write_phy_reg(pi, 0x1b8,
17859 			      pi->rssical_cache.rssical_phyregs_2G[3]);
17860 		write_phy_reg(pi, 0x1a4,
17861 			      pi->rssical_cache.rssical_phyregs_2G[4]);
17862 		write_phy_reg(pi, 0x1aa,
17863 			      pi->rssical_cache.rssical_phyregs_2G[5]);
17864 		write_phy_reg(pi, 0x1b0,
17865 			      pi->rssical_cache.rssical_phyregs_2G[6]);
17866 		write_phy_reg(pi, 0x1b6,
17867 			      pi->rssical_cache.rssical_phyregs_2G[7]);
17868 		write_phy_reg(pi, 0x1a5,
17869 			      pi->rssical_cache.rssical_phyregs_2G[8]);
17870 		write_phy_reg(pi, 0x1ab,
17871 			      pi->rssical_cache.rssical_phyregs_2G[9]);
17872 		write_phy_reg(pi, 0x1b1,
17873 			      pi->rssical_cache.rssical_phyregs_2G[10]);
17874 		write_phy_reg(pi, 0x1b7,
17875 			      pi->rssical_cache.rssical_phyregs_2G[11]);
17876 
17877 	} else {
17878 		if (pi->nphy_rssical_chanspec_5G == 0)
17879 			return;
17880 
17881 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17882 			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17883 				      RADIO_2057_VCM_MASK,
17884 				      pi->rssical_cache.
17885 				      rssical_radio_regs_5G[0]);
17886 			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17887 				      RADIO_2057_VCM_MASK,
17888 				      pi->rssical_cache.
17889 				      rssical_radio_regs_5G[1]);
17890 		} else {
17891 			mod_radio_reg(pi,
17892 				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17893 				      RADIO_2056_VCM_MASK,
17894 				      pi->rssical_cache.
17895 				      rssical_radio_regs_5G[0]);
17896 			mod_radio_reg(pi,
17897 				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17898 				      RADIO_2056_VCM_MASK,
17899 				      pi->rssical_cache.
17900 				      rssical_radio_regs_5G[1]);
17901 		}
17902 
17903 		write_phy_reg(pi, 0x1a6,
17904 			      pi->rssical_cache.rssical_phyregs_5G[0]);
17905 		write_phy_reg(pi, 0x1ac,
17906 			      pi->rssical_cache.rssical_phyregs_5G[1]);
17907 		write_phy_reg(pi, 0x1b2,
17908 			      pi->rssical_cache.rssical_phyregs_5G[2]);
17909 		write_phy_reg(pi, 0x1b8,
17910 			      pi->rssical_cache.rssical_phyregs_5G[3]);
17911 		write_phy_reg(pi, 0x1a4,
17912 			      pi->rssical_cache.rssical_phyregs_5G[4]);
17913 		write_phy_reg(pi, 0x1aa,
17914 			      pi->rssical_cache.rssical_phyregs_5G[5]);
17915 		write_phy_reg(pi, 0x1b0,
17916 			      pi->rssical_cache.rssical_phyregs_5G[6]);
17917 		write_phy_reg(pi, 0x1b6,
17918 			      pi->rssical_cache.rssical_phyregs_5G[7]);
17919 		write_phy_reg(pi, 0x1a5,
17920 			      pi->rssical_cache.rssical_phyregs_5G[8]);
17921 		write_phy_reg(pi, 0x1ab,
17922 			      pi->rssical_cache.rssical_phyregs_5G[9]);
17923 		write_phy_reg(pi, 0x1b1,
17924 			      pi->rssical_cache.rssical_phyregs_5G[10]);
17925 		write_phy_reg(pi, 0x1b7,
17926 			      pi->rssical_cache.rssical_phyregs_5G[11]);
17927 	}
17928 }
17929 
wlc_phy_internal_cal_txgain_nphy(struct brcms_phy * pi)17930 static void wlc_phy_internal_cal_txgain_nphy(struct brcms_phy *pi)
17931 {
17932 	u16 txcal_gain[2];
17933 
17934 	pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
17935 	pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
17936 	wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
17937 	wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
17938 
17939 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
17940 				txcal_gain);
17941 
17942 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
17943 		txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
17944 		txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
17945 	} else {
17946 		txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
17947 		txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
17948 	}
17949 
17950 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
17951 				 txcal_gain);
17952 }
17953 
wlc_phy_precal_txgain_nphy(struct brcms_phy * pi)17954 static void wlc_phy_precal_txgain_nphy(struct brcms_phy *pi)
17955 {
17956 	bool save_bbmult = false;
17957 	u8 txcal_index_2057_rev5n7 = 0;
17958 	u8 txcal_index_2057_rev3n4n6 = 10;
17959 
17960 	if (pi->use_int_tx_iqlo_cal_nphy) {
17961 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17962 			if ((pi->pubpi.radiorev == 3) ||
17963 			    (pi->pubpi.radiorev == 4) ||
17964 			    (pi->pubpi.radiorev == 6)) {
17965 
17966 				pi->nphy_txcal_pwr_idx[0] =
17967 					txcal_index_2057_rev3n4n6;
17968 				pi->nphy_txcal_pwr_idx[1] =
17969 					txcal_index_2057_rev3n4n6;
17970 				wlc_phy_txpwr_index_nphy(
17971 					pi, 3,
17972 					txcal_index_2057_rev3n4n6,
17973 					false);
17974 			} else {
17975 
17976 				pi->nphy_txcal_pwr_idx[0] =
17977 					txcal_index_2057_rev5n7;
17978 				pi->nphy_txcal_pwr_idx[1] =
17979 					txcal_index_2057_rev5n7;
17980 				wlc_phy_txpwr_index_nphy(
17981 					pi, 3,
17982 					txcal_index_2057_rev5n7,
17983 					false);
17984 			}
17985 			save_bbmult = true;
17986 
17987 		} else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
17988 			wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
17989 			if (pi->sh->hw_phytxchain != 3) {
17990 				pi->nphy_txcal_pwr_idx[1] =
17991 					pi->nphy_txcal_pwr_idx[0];
17992 				wlc_phy_txpwr_index_nphy(pi, 3,
17993 							 pi->
17994 							 nphy_txcal_pwr_idx[0],
17995 							 true);
17996 				save_bbmult = true;
17997 			}
17998 
17999 		} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18000 			if (PHY_IPA(pi)) {
18001 				if (CHSPEC_IS2G(pi->radio_chanspec)) {
18002 					wlc_phy_cal_txgainctrl_nphy(pi, 12,
18003 								    false);
18004 				} else {
18005 					pi->nphy_txcal_pwr_idx[0] = 80;
18006 					pi->nphy_txcal_pwr_idx[1] = 80;
18007 					wlc_phy_txpwr_index_nphy(pi, 3, 80,
18008 								 false);
18009 					save_bbmult = true;
18010 				}
18011 			} else {
18012 				wlc_phy_internal_cal_txgain_nphy(pi);
18013 				save_bbmult = true;
18014 			}
18015 
18016 		} else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18017 			if (PHY_IPA(pi)) {
18018 				if (CHSPEC_IS2G(pi->radio_chanspec))
18019 					wlc_phy_cal_txgainctrl_nphy(pi, 12,
18020 								    false);
18021 				else
18022 					wlc_phy_cal_txgainctrl_nphy(pi, 14,
18023 								    false);
18024 			} else {
18025 				wlc_phy_internal_cal_txgain_nphy(pi);
18026 				save_bbmult = true;
18027 			}
18028 		}
18029 
18030 	} else {
18031 		wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
18032 	}
18033 
18034 	if (save_bbmult)
18035 		wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
18036 					&pi->nphy_txcal_bbmult);
18037 }
18038 
18039 static void
wlc_phy_rfctrlintc_override_nphy(struct brcms_phy * pi,u8 field,u16 value,u8 core_code)18040 wlc_phy_rfctrlintc_override_nphy(struct brcms_phy *pi, u8 field, u16 value,
18041 				 u8 core_code)
18042 {
18043 	u16 mask;
18044 	u16 val;
18045 	u8 core;
18046 
18047 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18048 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18049 			if (core_code == RADIO_MIMO_CORESEL_CORE1
18050 			    && core == PHY_CORE_1)
18051 				continue;
18052 			else if (core_code == RADIO_MIMO_CORESEL_CORE2
18053 				 && core == PHY_CORE_0)
18054 				continue;
18055 
18056 			if (NREV_LT(pi->pubpi.phy_rev, 7)) {
18057 
18058 				mask = (0x1 << 10);
18059 				val = 1 << 10;
18060 				mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18061 					    0x92, mask, val);
18062 			}
18063 
18064 			if (field == NPHY_RfctrlIntc_override_OFF) {
18065 
18066 				write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18067 					      0x92, 0);
18068 
18069 				wlc_phy_force_rfseq_nphy(pi,
18070 							 NPHY_RFSEQ_RESET2RX);
18071 			} else if (field == NPHY_RfctrlIntc_override_TRSW) {
18072 
18073 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18074 
18075 					mask = (0x1 << 6) | (0x1 << 7);
18076 
18077 					val = value << 6;
18078 					mod_phy_reg(pi,
18079 						    (core ==
18080 						     PHY_CORE_0) ? 0x91 : 0x92,
18081 						    mask, val);
18082 
18083 					or_phy_reg(pi,
18084 						   (core ==
18085 						    PHY_CORE_0) ? 0x91 : 0x92,
18086 						   (0x1 << 10));
18087 
18088 					and_phy_reg(pi, 0x2ff, (u16)
18089 						    ~(0x3 << 14));
18090 					or_phy_reg(pi, 0x2ff, (0x1 << 13));
18091 					or_phy_reg(pi, 0x2ff, (0x1 << 0));
18092 				} else {
18093 
18094 					mask = (0x1 << 6) |
18095 					       (0x1 << 7) |
18096 					       (0x1 << 8) | (0x1 << 9);
18097 					val = value << 6;
18098 					mod_phy_reg(pi,
18099 						    (core ==
18100 						     PHY_CORE_0) ? 0x91 : 0x92,
18101 						    mask, val);
18102 
18103 					mask = (0x1 << 0);
18104 					val = 1 << 0;
18105 					mod_phy_reg(pi,
18106 						    (core ==
18107 						     PHY_CORE_0) ? 0xe7 : 0xec,
18108 						    mask, val);
18109 
18110 					mask = (core == PHY_CORE_0) ?
18111 					       (0x1 << 0) : (0x1 << 1);
18112 					val = 1 << ((core == PHY_CORE_0) ?
18113 						    0 : 1);
18114 					mod_phy_reg(pi, 0x78, mask, val);
18115 
18116 					SPINWAIT(((read_phy_reg(pi, 0x78) & val)
18117 						  != 0), 10000);
18118 					if (WARN(read_phy_reg(pi, 0x78) & val,
18119 						 "HW error: override failed"))
18120 						return;
18121 
18122 					mask = (0x1 << 0);
18123 					val = 0 << 0;
18124 					mod_phy_reg(pi,
18125 						    (core ==
18126 						     PHY_CORE_0) ? 0xe7 : 0xec,
18127 						    mask, val);
18128 				}
18129 			} else if (field == NPHY_RfctrlIntc_override_PA) {
18130 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18131 
18132 					mask = (0x1 << 4) | (0x1 << 5);
18133 
18134 					if (CHSPEC_IS5G(pi->radio_chanspec))
18135 						val = value << 5;
18136 					else
18137 						val = value << 4;
18138 
18139 					mod_phy_reg(pi,
18140 						    (core ==
18141 						     PHY_CORE_0) ? 0x91 : 0x92,
18142 						    mask, val);
18143 
18144 					or_phy_reg(pi,
18145 						   (core ==
18146 						    PHY_CORE_0) ? 0x91 : 0x92,
18147 						   (0x1 << 12));
18148 				} else {
18149 
18150 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18151 						mask = (0x1 << 5);
18152 						val = value << 5;
18153 					} else {
18154 						mask = (0x1 << 4);
18155 						val = value << 4;
18156 					}
18157 					mod_phy_reg(pi,
18158 						    (core ==
18159 						     PHY_CORE_0) ? 0x91 : 0x92,
18160 						    mask, val);
18161 				}
18162 			} else if (field ==
18163 				   NPHY_RfctrlIntc_override_EXT_LNA_PU) {
18164 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18165 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18166 
18167 						mask = (0x1 << 0);
18168 						val = value << 0;
18169 						mod_phy_reg(pi,
18170 							    (core ==
18171 							     PHY_CORE_0) ? 0x91
18172 							    : 0x92, mask, val);
18173 
18174 						mask = (0x1 << 2);
18175 						mod_phy_reg(pi,
18176 							    (core ==
18177 							     PHY_CORE_0) ? 0x91
18178 							    : 0x92, mask, 0);
18179 					} else {
18180 
18181 						mask = (0x1 << 2);
18182 						val = value << 2;
18183 						mod_phy_reg(pi,
18184 							    (core ==
18185 							     PHY_CORE_0) ? 0x91
18186 							    : 0x92, mask, val);
18187 
18188 						mask = (0x1 << 0);
18189 						mod_phy_reg(pi,
18190 							    (core ==
18191 							     PHY_CORE_0) ? 0x91
18192 							    : 0x92, mask, 0);
18193 					}
18194 
18195 					mask = (0x1 << 11);
18196 					val = 1 << 11;
18197 					mod_phy_reg(pi,
18198 						    (core ==
18199 						     PHY_CORE_0) ? 0x91 : 0x92,
18200 						    mask, val);
18201 				} else {
18202 
18203 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18204 						mask = (0x1 << 0);
18205 						val = value << 0;
18206 					} else {
18207 						mask = (0x1 << 2);
18208 						val = value << 2;
18209 					}
18210 					mod_phy_reg(pi,
18211 						    (core ==
18212 						     PHY_CORE_0) ? 0x91 : 0x92,
18213 						    mask, val);
18214 				}
18215 			} else if (field ==
18216 				   NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
18217 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18218 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18219 
18220 						mask = (0x1 << 1);
18221 						val = value << 1;
18222 						mod_phy_reg(pi,
18223 							    (core ==
18224 							     PHY_CORE_0) ? 0x91
18225 							    : 0x92, mask, val);
18226 
18227 						mask = (0x1 << 3);
18228 						mod_phy_reg(pi,
18229 							    (core ==
18230 							     PHY_CORE_0) ? 0x91
18231 							    : 0x92, mask, 0);
18232 					} else {
18233 
18234 						mask = (0x1 << 3);
18235 						val = value << 3;
18236 						mod_phy_reg(pi,
18237 							    (core ==
18238 							     PHY_CORE_0) ? 0x91
18239 							    : 0x92, mask, val);
18240 
18241 						mask = (0x1 << 1);
18242 						mod_phy_reg(pi,
18243 							    (core ==
18244 							     PHY_CORE_0) ? 0x91
18245 							    : 0x92, mask, 0);
18246 					}
18247 
18248 					mask = (0x1 << 11);
18249 					val = 1 << 11;
18250 					mod_phy_reg(pi,
18251 						    (core ==
18252 						     PHY_CORE_0) ? 0x91 : 0x92,
18253 						    mask, val);
18254 				} else {
18255 
18256 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18257 						mask = (0x1 << 1);
18258 						val = value << 1;
18259 					} else {
18260 						mask = (0x1 << 3);
18261 						val = value << 3;
18262 					}
18263 					mod_phy_reg(pi,
18264 						    (core ==
18265 						     PHY_CORE_0) ? 0x91 : 0x92,
18266 						    mask, val);
18267 				}
18268 			}
18269 		}
18270 	}
18271 }
18272 
18273 void
wlc_phy_cal_txgainctrl_nphy(struct brcms_phy * pi,s32 dBm_targetpower,bool debug)18274 wlc_phy_cal_txgainctrl_nphy(struct brcms_phy *pi, s32 dBm_targetpower,
18275 			    bool debug)
18276 {
18277 	int gainctrl_loopidx;
18278 	uint core;
18279 	u16 m0m1, curr_m0m1;
18280 	s32 delta_power;
18281 	s32 txpwrindex;
18282 	s32 qdBm_power[2];
18283 	u16 orig_BBConfig;
18284 	u16 phy_saveregs[4];
18285 	u32 freq_test;
18286 	u16 ampl_test = 250;
18287 	uint stepsize;
18288 	bool phyhang_avoid_state = false;
18289 
18290 	if (NREV_GE(pi->pubpi.phy_rev, 7))
18291 		stepsize = 2;
18292 	else
18293 		stepsize = 1;
18294 
18295 	if (CHSPEC_IS40(pi->radio_chanspec))
18296 		freq_test = 5000;
18297 	else
18298 		freq_test = 2500;
18299 
18300 	wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18301 	wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18302 
18303 	if (pi->phyhang_avoid)
18304 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
18305 
18306 	phyhang_avoid_state = pi->phyhang_avoid;
18307 	pi->phyhang_avoid = false;
18308 
18309 	phy_saveregs[0] = read_phy_reg(pi, 0x91);
18310 	phy_saveregs[1] = read_phy_reg(pi, 0x92);
18311 	phy_saveregs[2] = read_phy_reg(pi, 0xe7);
18312 	phy_saveregs[3] = read_phy_reg(pi, 0xec);
18313 	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
18314 					 RADIO_MIMO_CORESEL_CORE1 |
18315 					 RADIO_MIMO_CORESEL_CORE2);
18316 
18317 	if (!debug) {
18318 		wlc_phy_rfctrlintc_override_nphy(pi,
18319 						 NPHY_RfctrlIntc_override_TRSW,
18320 						 0x2, RADIO_MIMO_CORESEL_CORE1);
18321 		wlc_phy_rfctrlintc_override_nphy(pi,
18322 						 NPHY_RfctrlIntc_override_TRSW,
18323 						 0x8, RADIO_MIMO_CORESEL_CORE2);
18324 	} else {
18325 		wlc_phy_rfctrlintc_override_nphy(pi,
18326 						 NPHY_RfctrlIntc_override_TRSW,
18327 						 0x1, RADIO_MIMO_CORESEL_CORE1);
18328 		wlc_phy_rfctrlintc_override_nphy(pi,
18329 						 NPHY_RfctrlIntc_override_TRSW,
18330 						 0x7, RADIO_MIMO_CORESEL_CORE2);
18331 	}
18332 
18333 	orig_BBConfig = read_phy_reg(pi, 0x01);
18334 	mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
18335 
18336 	wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
18337 
18338 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18339 		txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
18340 
18341 		for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
18342 		     gainctrl_loopidx++) {
18343 			wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18344 					     false);
18345 
18346 			if (core == PHY_CORE_0)
18347 				curr_m0m1 = m0m1 & 0xff00;
18348 			else
18349 				curr_m0m1 = m0m1 & 0x00ff;
18350 
18351 			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
18352 			wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
18353 
18354 			udelay(50);
18355 
18356 			wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18357 						 NPHY_CAL_TSSISAMPS);
18358 
18359 			pi->nphy_bb_mult_save = 0;
18360 			wlc_phy_stopplayback_nphy(pi);
18361 
18362 			delta_power = (dBm_targetpower * 4) - qdBm_power[core];
18363 
18364 			txpwrindex -= stepsize * delta_power;
18365 			if (txpwrindex < 0)
18366 				txpwrindex = 0;
18367 			else if (txpwrindex > 127)
18368 				txpwrindex = 127;
18369 
18370 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
18371 				if (NREV_IS(pi->pubpi.phy_rev, 4) &&
18372 				    (pi->srom_fem5g.extpagain == 3)) {
18373 					if (txpwrindex < 30)
18374 						txpwrindex = 30;
18375 				}
18376 			} else {
18377 				if (NREV_GE(pi->pubpi.phy_rev, 5) &&
18378 				    (pi->srom_fem2g.extpagain == 3)) {
18379 					if (txpwrindex < 50)
18380 						txpwrindex = 50;
18381 				}
18382 			}
18383 
18384 			wlc_phy_txpwr_index_nphy(pi, (1 << core),
18385 						 (u8) txpwrindex, true);
18386 		}
18387 
18388 		pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
18389 
18390 		if (debug) {
18391 			u16 radio_gain;
18392 			u16 dbg_m0m1;
18393 
18394 			wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18395 
18396 			wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18397 					     false);
18398 
18399 			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18400 			wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
18401 
18402 			udelay(100);
18403 
18404 			wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18405 						 NPHY_CAL_TSSISAMPS);
18406 
18407 			wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
18408 						&radio_gain);
18409 
18410 			mdelay(4000);
18411 			pi->nphy_bb_mult_save = 0;
18412 			wlc_phy_stopplayback_nphy(pi);
18413 		}
18414 	}
18415 
18416 	wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
18417 	wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
18418 
18419 	wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
18420 
18421 	write_phy_reg(pi, 0x01, orig_BBConfig);
18422 
18423 	write_phy_reg(pi, 0x91, phy_saveregs[0]);
18424 	write_phy_reg(pi, 0x92, phy_saveregs[1]);
18425 	write_phy_reg(pi, 0xe7, phy_saveregs[2]);
18426 	write_phy_reg(pi, 0xec, phy_saveregs[3]);
18427 
18428 	pi->phyhang_avoid = phyhang_avoid_state;
18429 
18430 	if (pi->phyhang_avoid)
18431 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
18432 }
18433 
wlc_phy_savecal_nphy(struct brcms_phy * pi)18434 static void wlc_phy_savecal_nphy(struct brcms_phy *pi)
18435 {
18436 	void *tbl_ptr;
18437 	int coreNum;
18438 	u16 *txcal_radio_regs = NULL;
18439 
18440 	if (pi->phyhang_avoid)
18441 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
18442 
18443 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18444 
18445 		wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18446 					  &pi->calibration_cache.
18447 					  rxcal_coeffs_2G);
18448 
18449 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18450 			txcal_radio_regs =
18451 				pi->calibration_cache.txcal_radio_regs_2G;
18452 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18453 
18454 			pi->calibration_cache.txcal_radio_regs_2G[0] =
18455 				read_radio_reg(pi,
18456 					       RADIO_2056_TX_LOFT_FINE_I |
18457 					       RADIO_2056_TX0);
18458 			pi->calibration_cache.txcal_radio_regs_2G[1] =
18459 				read_radio_reg(pi,
18460 					       RADIO_2056_TX_LOFT_FINE_Q |
18461 					       RADIO_2056_TX0);
18462 			pi->calibration_cache.txcal_radio_regs_2G[2] =
18463 				read_radio_reg(pi,
18464 					       RADIO_2056_TX_LOFT_FINE_I |
18465 					       RADIO_2056_TX1);
18466 			pi->calibration_cache.txcal_radio_regs_2G[3] =
18467 				read_radio_reg(pi,
18468 					       RADIO_2056_TX_LOFT_FINE_Q |
18469 					       RADIO_2056_TX1);
18470 
18471 			pi->calibration_cache.txcal_radio_regs_2G[4] =
18472 				read_radio_reg(pi,
18473 					       RADIO_2056_TX_LOFT_COARSE_I |
18474 					       RADIO_2056_TX0);
18475 			pi->calibration_cache.txcal_radio_regs_2G[5] =
18476 				read_radio_reg(pi,
18477 					       RADIO_2056_TX_LOFT_COARSE_Q |
18478 					       RADIO_2056_TX0);
18479 			pi->calibration_cache.txcal_radio_regs_2G[6] =
18480 				read_radio_reg(pi,
18481 					       RADIO_2056_TX_LOFT_COARSE_I |
18482 					       RADIO_2056_TX1);
18483 			pi->calibration_cache.txcal_radio_regs_2G[7] =
18484 				read_radio_reg(pi,
18485 					       RADIO_2056_TX_LOFT_COARSE_Q |
18486 					       RADIO_2056_TX1);
18487 		} else {
18488 			pi->calibration_cache.txcal_radio_regs_2G[0] =
18489 			       read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18490 			pi->calibration_cache.txcal_radio_regs_2G[1] =
18491 			       read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18492 			pi->calibration_cache.txcal_radio_regs_2G[2] =
18493 			       read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18494 			pi->calibration_cache.txcal_radio_regs_2G[3] =
18495 			       read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18496 		}
18497 
18498 		pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
18499 		tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18500 	} else {
18501 
18502 		wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18503 					  &pi->calibration_cache.
18504 					  rxcal_coeffs_5G);
18505 
18506 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18507 			txcal_radio_regs =
18508 				pi->calibration_cache.txcal_radio_regs_5G;
18509 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18510 
18511 			pi->calibration_cache.txcal_radio_regs_5G[0] =
18512 				read_radio_reg(pi,
18513 					       RADIO_2056_TX_LOFT_FINE_I |
18514 					       RADIO_2056_TX0);
18515 			pi->calibration_cache.txcal_radio_regs_5G[1] =
18516 				read_radio_reg(pi,
18517 					       RADIO_2056_TX_LOFT_FINE_Q |
18518 					       RADIO_2056_TX0);
18519 			pi->calibration_cache.txcal_radio_regs_5G[2] =
18520 				read_radio_reg(pi,
18521 					       RADIO_2056_TX_LOFT_FINE_I |
18522 					       RADIO_2056_TX1);
18523 			pi->calibration_cache.txcal_radio_regs_5G[3] =
18524 				read_radio_reg(pi,
18525 					       RADIO_2056_TX_LOFT_FINE_Q |
18526 					       RADIO_2056_TX1);
18527 
18528 			pi->calibration_cache.txcal_radio_regs_5G[4] =
18529 				read_radio_reg(pi,
18530 					       RADIO_2056_TX_LOFT_COARSE_I |
18531 					       RADIO_2056_TX0);
18532 			pi->calibration_cache.txcal_radio_regs_5G[5] =
18533 				read_radio_reg(pi,
18534 					       RADIO_2056_TX_LOFT_COARSE_Q |
18535 					       RADIO_2056_TX0);
18536 			pi->calibration_cache.txcal_radio_regs_5G[6] =
18537 				read_radio_reg(pi,
18538 					       RADIO_2056_TX_LOFT_COARSE_I |
18539 					       RADIO_2056_TX1);
18540 			pi->calibration_cache.txcal_radio_regs_5G[7] =
18541 				read_radio_reg(pi,
18542 					       RADIO_2056_TX_LOFT_COARSE_Q |
18543 					       RADIO_2056_TX1);
18544 		} else {
18545 			pi->calibration_cache.txcal_radio_regs_5G[0] =
18546 			       read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18547 			pi->calibration_cache.txcal_radio_regs_5G[1] =
18548 			       read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18549 			pi->calibration_cache.txcal_radio_regs_5G[2] =
18550 			       read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18551 			pi->calibration_cache.txcal_radio_regs_5G[3] =
18552 			       read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18553 		}
18554 
18555 		pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
18556 		tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18557 	}
18558 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18559 		for (coreNum = 0; coreNum <= 1; coreNum++) {
18560 
18561 			txcal_radio_regs[2 * coreNum] =
18562 				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18563 						LOFT_FINE_I);
18564 			txcal_radio_regs[2 * coreNum + 1] =
18565 				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18566 						LOFT_FINE_Q);
18567 
18568 			txcal_radio_regs[2 * coreNum + 4] =
18569 				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18570 						LOFT_COARSE_I);
18571 			txcal_radio_regs[2 * coreNum + 5] =
18572 				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18573 						LOFT_COARSE_Q);
18574 		}
18575 	}
18576 
18577 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
18578 
18579 	if (pi->phyhang_avoid)
18580 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
18581 }
18582 
wlc_phy_tx_iq_war_nphy(struct brcms_phy * pi)18583 static void wlc_phy_tx_iq_war_nphy(struct brcms_phy *pi)
18584 {
18585 	struct nphy_iq_comp tx_comp;
18586 
18587 	wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, &tx_comp);
18588 
18589 	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
18590 	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
18591 	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
18592 	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
18593 }
18594 
wlc_phy_restorecal_nphy(struct brcms_phy * pi)18595 static void wlc_phy_restorecal_nphy(struct brcms_phy *pi)
18596 {
18597 	u16 *loft_comp;
18598 	u16 txcal_coeffs_bphy[4];
18599 	u16 *tbl_ptr;
18600 	int coreNum;
18601 	u16 *txcal_radio_regs = NULL;
18602 
18603 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18604 		if (pi->nphy_iqcal_chanspec_2G == 0)
18605 			return;
18606 
18607 		tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18608 		loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
18609 	} else {
18610 		if (pi->nphy_iqcal_chanspec_5G == 0)
18611 			return;
18612 
18613 		tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18614 		loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
18615 	}
18616 
18617 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16, tbl_ptr);
18618 
18619 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18620 		txcal_coeffs_bphy[0] = tbl_ptr[0];
18621 		txcal_coeffs_bphy[1] = tbl_ptr[1];
18622 		txcal_coeffs_bphy[2] = tbl_ptr[2];
18623 		txcal_coeffs_bphy[3] = tbl_ptr[3];
18624 	} else {
18625 		txcal_coeffs_bphy[0] = 0;
18626 		txcal_coeffs_bphy[1] = 0;
18627 		txcal_coeffs_bphy[2] = 0;
18628 		txcal_coeffs_bphy[3] = 0;
18629 	}
18630 
18631 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
18632 				 txcal_coeffs_bphy);
18633 
18634 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
18635 
18636 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
18637 
18638 	if (NREV_LT(pi->pubpi.phy_rev, 2))
18639 		wlc_phy_tx_iq_war_nphy(pi);
18640 
18641 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18642 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18643 			txcal_radio_regs =
18644 				pi->calibration_cache.txcal_radio_regs_2G;
18645 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18646 
18647 			write_radio_reg(pi,
18648 					RADIO_2056_TX_LOFT_FINE_I |
18649 					RADIO_2056_TX0,
18650 					pi->calibration_cache.
18651 					txcal_radio_regs_2G[0]);
18652 			write_radio_reg(pi,
18653 					RADIO_2056_TX_LOFT_FINE_Q |
18654 					RADIO_2056_TX0,
18655 					pi->calibration_cache.
18656 					txcal_radio_regs_2G[1]);
18657 			write_radio_reg(pi,
18658 					RADIO_2056_TX_LOFT_FINE_I |
18659 					RADIO_2056_TX1,
18660 					pi->calibration_cache.
18661 					txcal_radio_regs_2G[2]);
18662 			write_radio_reg(pi,
18663 					RADIO_2056_TX_LOFT_FINE_Q |
18664 					RADIO_2056_TX1,
18665 					pi->calibration_cache.
18666 					txcal_radio_regs_2G[3]);
18667 
18668 			write_radio_reg(pi,
18669 					RADIO_2056_TX_LOFT_COARSE_I |
18670 					RADIO_2056_TX0,
18671 					pi->calibration_cache.
18672 					txcal_radio_regs_2G[4]);
18673 			write_radio_reg(pi,
18674 					RADIO_2056_TX_LOFT_COARSE_Q |
18675 					RADIO_2056_TX0,
18676 					pi->calibration_cache.
18677 					txcal_radio_regs_2G[5]);
18678 			write_radio_reg(pi,
18679 					RADIO_2056_TX_LOFT_COARSE_I |
18680 					RADIO_2056_TX1,
18681 					pi->calibration_cache.
18682 					txcal_radio_regs_2G[6]);
18683 			write_radio_reg(pi,
18684 					RADIO_2056_TX_LOFT_COARSE_Q |
18685 					RADIO_2056_TX1,
18686 					pi->calibration_cache.
18687 					txcal_radio_regs_2G[7]);
18688 		} else {
18689 			write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18690 					pi->calibration_cache.
18691 					txcal_radio_regs_2G[0]);
18692 			write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18693 					pi->calibration_cache.
18694 					txcal_radio_regs_2G[1]);
18695 			write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18696 					pi->calibration_cache.
18697 					txcal_radio_regs_2G[2]);
18698 			write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18699 					pi->calibration_cache.
18700 					txcal_radio_regs_2G[3]);
18701 		}
18702 
18703 		wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18704 					  &pi->calibration_cache.
18705 					  rxcal_coeffs_2G);
18706 	} else {
18707 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18708 			txcal_radio_regs =
18709 				pi->calibration_cache.txcal_radio_regs_5G;
18710 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18711 
18712 			write_radio_reg(pi,
18713 					RADIO_2056_TX_LOFT_FINE_I |
18714 					RADIO_2056_TX0,
18715 					pi->calibration_cache.
18716 					txcal_radio_regs_5G[0]);
18717 			write_radio_reg(pi,
18718 					RADIO_2056_TX_LOFT_FINE_Q |
18719 					RADIO_2056_TX0,
18720 					pi->calibration_cache.
18721 					txcal_radio_regs_5G[1]);
18722 			write_radio_reg(pi,
18723 					RADIO_2056_TX_LOFT_FINE_I |
18724 					RADIO_2056_TX1,
18725 					pi->calibration_cache.
18726 					txcal_radio_regs_5G[2]);
18727 			write_radio_reg(pi,
18728 					RADIO_2056_TX_LOFT_FINE_Q |
18729 					RADIO_2056_TX1,
18730 					pi->calibration_cache.
18731 					txcal_radio_regs_5G[3]);
18732 
18733 			write_radio_reg(pi,
18734 					RADIO_2056_TX_LOFT_COARSE_I |
18735 					RADIO_2056_TX0,
18736 					pi->calibration_cache.
18737 					txcal_radio_regs_5G[4]);
18738 			write_radio_reg(pi,
18739 					RADIO_2056_TX_LOFT_COARSE_Q |
18740 					RADIO_2056_TX0,
18741 					pi->calibration_cache.
18742 					txcal_radio_regs_5G[5]);
18743 			write_radio_reg(pi,
18744 					RADIO_2056_TX_LOFT_COARSE_I |
18745 					RADIO_2056_TX1,
18746 					pi->calibration_cache.
18747 					txcal_radio_regs_5G[6]);
18748 			write_radio_reg(pi,
18749 					RADIO_2056_TX_LOFT_COARSE_Q |
18750 					RADIO_2056_TX1,
18751 					pi->calibration_cache.
18752 					txcal_radio_regs_5G[7]);
18753 		} else {
18754 			write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18755 					pi->calibration_cache.
18756 					txcal_radio_regs_5G[0]);
18757 			write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18758 					pi->calibration_cache.
18759 					txcal_radio_regs_5G[1]);
18760 			write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18761 					pi->calibration_cache.
18762 					txcal_radio_regs_5G[2]);
18763 			write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18764 					pi->calibration_cache.
18765 					txcal_radio_regs_5G[3]);
18766 		}
18767 
18768 		wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18769 					  &pi->calibration_cache.
18770 					  rxcal_coeffs_5G);
18771 	}
18772 
18773 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18774 		for (coreNum = 0; coreNum <= 1; coreNum++) {
18775 
18776 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18777 					 LOFT_FINE_I,
18778 					 txcal_radio_regs[2 * coreNum]);
18779 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18780 					 LOFT_FINE_Q,
18781 					 txcal_radio_regs[2 * coreNum + 1]);
18782 
18783 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18784 					 LOFT_COARSE_I,
18785 					 txcal_radio_regs[2 * coreNum + 4]);
18786 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18787 					 LOFT_COARSE_Q,
18788 					 txcal_radio_regs[2 * coreNum + 5]);
18789 		}
18790 	}
18791 }
18792 
wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy * pi)18793 static void wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy *pi)
18794 {
18795 	u32 idx;
18796 	u16 iqloCalbuf[7];
18797 	u32 iqcomp, locomp, curr_locomp;
18798 	s8 locomp_i, locomp_q;
18799 	s8 curr_locomp_i, curr_locomp_q;
18800 	u32 tbl_id, tbl_len, tbl_offset;
18801 	u32 regval[128];
18802 
18803 	if (pi->phyhang_avoid)
18804 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
18805 
18806 	wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
18807 
18808 	tbl_len = 128;
18809 	tbl_offset = 320;
18810 	for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18811 	     tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18812 		iqcomp =
18813 			(tbl_id ==
18814 			 26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
18815 			(iqloCalbuf[1] & 0x3ff)
18816 			: (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
18817 			(iqloCalbuf[3] & 0x3ff);
18818 
18819 		for (idx = 0; idx < tbl_len; idx++)
18820 			regval[idx] = iqcomp;
18821 		wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18822 					 regval);
18823 	}
18824 
18825 	tbl_offset = 448;
18826 	for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18827 	     tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18828 
18829 		locomp =
18830 			(u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
18831 		locomp_i = (s8) ((locomp >> 8) & 0xff);
18832 		locomp_q = (s8) ((locomp) & 0xff);
18833 		for (idx = 0; idx < tbl_len; idx++) {
18834 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18835 				curr_locomp_i = locomp_i;
18836 				curr_locomp_q = locomp_q;
18837 			} else {
18838 				curr_locomp_i = (s8) ((locomp_i *
18839 						       nphy_tpc_loscale[idx] +
18840 						       128) >> 8);
18841 				curr_locomp_q =
18842 					(s8) ((locomp_q *
18843 					       nphy_tpc_loscale[idx] +
18844 					       128) >> 8);
18845 			}
18846 			curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
18847 			curr_locomp |= (u32) (curr_locomp_q & 0xff);
18848 			regval[idx] = curr_locomp;
18849 		}
18850 		wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18851 					 regval);
18852 	}
18853 
18854 	if (NREV_LT(pi->pubpi.phy_rev, 2)) {
18855 
18856 		wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
18857 		wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
18858 	}
18859 
18860 	if (pi->phyhang_avoid)
18861 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
18862 }
18863 
wlc_phy_txlpfbw_nphy(struct brcms_phy * pi)18864 static void wlc_phy_txlpfbw_nphy(struct brcms_phy *pi)
18865 {
18866 	u8 tx_lpf_bw = 0;
18867 
18868 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18869 		if (CHSPEC_IS40(pi->radio_chanspec))
18870 			tx_lpf_bw = 3;
18871 		else
18872 			tx_lpf_bw = 1;
18873 
18874 		if (PHY_IPA(pi)) {
18875 			if (CHSPEC_IS40(pi->radio_chanspec))
18876 				tx_lpf_bw = 5;
18877 			else
18878 				tx_lpf_bw = 4;
18879 		}
18880 
18881 		write_phy_reg(pi, 0xe8,
18882 			      (tx_lpf_bw << 0) |
18883 			      (tx_lpf_bw << 3) |
18884 			      (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18885 
18886 		if (PHY_IPA(pi)) {
18887 
18888 			if (CHSPEC_IS40(pi->radio_chanspec))
18889 				tx_lpf_bw = 4;
18890 			else
18891 				tx_lpf_bw = 1;
18892 
18893 			write_phy_reg(pi, 0xe9,
18894 				      (tx_lpf_bw << 0) |
18895 				      (tx_lpf_bw << 3) |
18896 				      (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18897 		}
18898 	}
18899 }
18900 
18901 static void
wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy * pi,u16 reduction_factr)18902 wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy *pi, u16 reduction_factr)
18903 {
18904 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18905 		if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18906 		    CHSPEC_IS40(pi->radio_chanspec)) {
18907 			if (!pi->nphy_anarxlpf_adjusted) {
18908 				write_radio_reg(pi,
18909 						(RADIO_2056_RX_RXLPF_RCCAL_LPC |
18910 						 RADIO_2056_RX0),
18911 						((pi->nphy_rccal_value +
18912 						  reduction_factr) | 0x80));
18913 
18914 				pi->nphy_anarxlpf_adjusted = true;
18915 			}
18916 		} else {
18917 			if (pi->nphy_anarxlpf_adjusted) {
18918 				write_radio_reg(pi,
18919 						(RADIO_2056_RX_RXLPF_RCCAL_LPC |
18920 						 RADIO_2056_RX0),
18921 						(pi->nphy_rccal_value | 0x80));
18922 
18923 				pi->nphy_anarxlpf_adjusted = false;
18924 			}
18925 		}
18926 	}
18927 }
18928 
18929 static void
wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy * pi,int ntones,int * tone_id_buf,u32 * noise_var_buf)18930 wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy *pi, int ntones,
18931 				 int *tone_id_buf, u32 *noise_var_buf)
18932 {
18933 	int i;
18934 	u32 offset;
18935 	int tone_id;
18936 	int tbllen =
18937 		CHSPEC_IS40(pi->radio_chanspec) ?
18938 		NPHY_NOISEVAR_TBLLEN40 : NPHY_NOISEVAR_TBLLEN20;
18939 
18940 	if (pi->nphy_noisevars_adjusted) {
18941 		for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
18942 			tone_id = pi->nphy_saved_noisevars.tone_id[i];
18943 			offset = (tone_id >= 0) ?
18944 				 ((tone_id *
18945 				   2) + 1) : (tbllen + (tone_id * 2) + 1);
18946 			wlc_phy_table_write_nphy(
18947 				pi, NPHY_TBL_ID_NOISEVAR, 1,
18948 				offset, 32,
18949 				&pi->nphy_saved_noisevars.min_noise_vars[i]);
18950 		}
18951 
18952 		pi->nphy_saved_noisevars.bufcount = 0;
18953 		pi->nphy_noisevars_adjusted = false;
18954 	}
18955 
18956 	if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
18957 		pi->nphy_saved_noisevars.bufcount = 0;
18958 
18959 		for (i = 0; i < ntones; i++) {
18960 			tone_id = tone_id_buf[i];
18961 			offset = (tone_id >= 0) ?
18962 				 ((tone_id * 2) + 1) :
18963 				 (tbllen + (tone_id * 2) + 1);
18964 			pi->nphy_saved_noisevars.tone_id[i] = tone_id;
18965 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18966 						offset, 32,
18967 						&pi->nphy_saved_noisevars.
18968 						min_noise_vars[i]);
18969 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18970 						 offset, 32, &noise_var_buf[i]);
18971 			pi->nphy_saved_noisevars.bufcount++;
18972 		}
18973 
18974 		pi->nphy_noisevars_adjusted = true;
18975 	}
18976 }
18977 
wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy * pi,u8 minpwr)18978 static void wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy *pi, u8 minpwr)
18979 {
18980 	u16 regval;
18981 
18982 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18983 		if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18984 		    CHSPEC_IS40(pi->radio_chanspec)) {
18985 			if (!pi->nphy_crsminpwr_adjusted) {
18986 				regval = read_phy_reg(pi, 0x27d);
18987 				pi->nphy_crsminpwr[0] = regval & 0xff;
18988 				regval &= 0xff00;
18989 				regval |= (u16) minpwr;
18990 				write_phy_reg(pi, 0x27d, regval);
18991 
18992 				regval = read_phy_reg(pi, 0x280);
18993 				pi->nphy_crsminpwr[1] = regval & 0xff;
18994 				regval &= 0xff00;
18995 				regval |= (u16) minpwr;
18996 				write_phy_reg(pi, 0x280, regval);
18997 
18998 				regval = read_phy_reg(pi, 0x283);
18999 				pi->nphy_crsminpwr[2] = regval & 0xff;
19000 				regval &= 0xff00;
19001 				regval |= (u16) minpwr;
19002 				write_phy_reg(pi, 0x283, regval);
19003 
19004 				pi->nphy_crsminpwr_adjusted = true;
19005 			}
19006 		} else {
19007 			if (pi->nphy_crsminpwr_adjusted) {
19008 				regval = read_phy_reg(pi, 0x27d);
19009 				regval &= 0xff00;
19010 				regval |= pi->nphy_crsminpwr[0];
19011 				write_phy_reg(pi, 0x27d, regval);
19012 
19013 				regval = read_phy_reg(pi, 0x280);
19014 				regval &= 0xff00;
19015 				regval |= pi->nphy_crsminpwr[1];
19016 				write_phy_reg(pi, 0x280, regval);
19017 
19018 				regval = read_phy_reg(pi, 0x283);
19019 				regval &= 0xff00;
19020 				regval |= pi->nphy_crsminpwr[2];
19021 				write_phy_reg(pi, 0x283, regval);
19022 
19023 				pi->nphy_crsminpwr_adjusted = false;
19024 			}
19025 		}
19026 	}
19027 }
19028 
wlc_phy_spurwar_nphy(struct brcms_phy * pi)19029 static void wlc_phy_spurwar_nphy(struct brcms_phy *pi)
19030 {
19031 	u16 cur_channel = 0;
19032 	int nphy_adj_tone_id_buf[] = { 57, 58 };
19033 	u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
19034 	bool isAdjustNoiseVar = false;
19035 	uint numTonesAdjust = 0;
19036 
19037 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19038 		if (pi->phyhang_avoid)
19039 			wlc_phy_stay_in_carriersearch_nphy(pi, true);
19040 
19041 		cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19042 
19043 		if (pi->nphy_gband_spurwar_en) {
19044 
19045 			wlc_phy_adjust_rx_analpfbw_nphy(
19046 				pi,
19047 				NPHY_ANARXLPFBW_REDUCTIONFACT);
19048 
19049 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
19050 				if ((cur_channel == 11)
19051 				    && CHSPEC_IS40(pi->radio_chanspec))
19052 					wlc_phy_adjust_min_noisevar_nphy(
19053 						pi, 2,
19054 						nphy_adj_tone_id_buf,
19055 						nphy_adj_noise_var_buf);
19056 				else
19057 					wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19058 									 NULL,
19059 									 NULL);
19060 			}
19061 
19062 			wlc_phy_adjust_crsminpwr_nphy(pi,
19063 						     NPHY_ADJUSTED_MINCRSPOWER);
19064 		}
19065 
19066 		if ((pi->nphy_gband_spurwar2_en)
19067 		    && CHSPEC_IS2G(pi->radio_chanspec)) {
19068 
19069 			if (CHSPEC_IS40(pi->radio_chanspec)) {
19070 				switch (cur_channel) {
19071 				case 3:
19072 					nphy_adj_tone_id_buf[0] = 57;
19073 					nphy_adj_tone_id_buf[1] = 58;
19074 					nphy_adj_noise_var_buf[0] = 0x22f;
19075 					nphy_adj_noise_var_buf[1] = 0x25f;
19076 					isAdjustNoiseVar = true;
19077 					break;
19078 				case 4:
19079 					nphy_adj_tone_id_buf[0] = 41;
19080 					nphy_adj_tone_id_buf[1] = 42;
19081 					nphy_adj_noise_var_buf[0] = 0x22f;
19082 					nphy_adj_noise_var_buf[1] = 0x25f;
19083 					isAdjustNoiseVar = true;
19084 					break;
19085 				case 5:
19086 					nphy_adj_tone_id_buf[0] = 25;
19087 					nphy_adj_tone_id_buf[1] = 26;
19088 					nphy_adj_noise_var_buf[0] = 0x24f;
19089 					nphy_adj_noise_var_buf[1] = 0x25f;
19090 					isAdjustNoiseVar = true;
19091 					break;
19092 				case 6:
19093 					nphy_adj_tone_id_buf[0] = 9;
19094 					nphy_adj_tone_id_buf[1] = 10;
19095 					nphy_adj_noise_var_buf[0] = 0x22f;
19096 					nphy_adj_noise_var_buf[1] = 0x24f;
19097 					isAdjustNoiseVar = true;
19098 					break;
19099 				case 7:
19100 					nphy_adj_tone_id_buf[0] = 121;
19101 					nphy_adj_tone_id_buf[1] = 122;
19102 					nphy_adj_noise_var_buf[0] = 0x18f;
19103 					nphy_adj_noise_var_buf[1] = 0x24f;
19104 					isAdjustNoiseVar = true;
19105 					break;
19106 				case 8:
19107 					nphy_adj_tone_id_buf[0] = 105;
19108 					nphy_adj_tone_id_buf[1] = 106;
19109 					nphy_adj_noise_var_buf[0] = 0x22f;
19110 					nphy_adj_noise_var_buf[1] = 0x25f;
19111 					isAdjustNoiseVar = true;
19112 					break;
19113 				case 9:
19114 					nphy_adj_tone_id_buf[0] = 89;
19115 					nphy_adj_tone_id_buf[1] = 90;
19116 					nphy_adj_noise_var_buf[0] = 0x22f;
19117 					nphy_adj_noise_var_buf[1] = 0x24f;
19118 					isAdjustNoiseVar = true;
19119 					break;
19120 				case 10:
19121 					nphy_adj_tone_id_buf[0] = 73;
19122 					nphy_adj_tone_id_buf[1] = 74;
19123 					nphy_adj_noise_var_buf[0] = 0x22f;
19124 					nphy_adj_noise_var_buf[1] = 0x24f;
19125 					isAdjustNoiseVar = true;
19126 					break;
19127 				default:
19128 					isAdjustNoiseVar = false;
19129 					break;
19130 				}
19131 			}
19132 
19133 			if (isAdjustNoiseVar) {
19134 				numTonesAdjust = ARRAY_SIZE(nphy_adj_tone_id_buf);
19135 
19136 				wlc_phy_adjust_min_noisevar_nphy(
19137 					pi,
19138 					numTonesAdjust,
19139 					nphy_adj_tone_id_buf,
19140 					nphy_adj_noise_var_buf);
19141 			} else {
19142 				wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19143 								 NULL);
19144 			}
19145 		}
19146 
19147 		if ((pi->nphy_aband_spurwar_en) &&
19148 		    (CHSPEC_IS5G(pi->radio_chanspec))) {
19149 			switch (cur_channel) {
19150 			case 54:
19151 				nphy_adj_tone_id_buf[0] = 32;
19152 				nphy_adj_noise_var_buf[0] = 0x25f;
19153 				break;
19154 			case 38:
19155 			case 102:
19156 			case 118:
19157 				if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) &&
19158 				    (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
19159 					nphy_adj_tone_id_buf[0] = 32;
19160 					nphy_adj_noise_var_buf[0] = 0x21f;
19161 				} else {
19162 					nphy_adj_tone_id_buf[0] = 0;
19163 					nphy_adj_noise_var_buf[0] = 0x0;
19164 				}
19165 				break;
19166 			case 134:
19167 				nphy_adj_tone_id_buf[0] = 32;
19168 				nphy_adj_noise_var_buf[0] = 0x21f;
19169 				break;
19170 			case 151:
19171 				nphy_adj_tone_id_buf[0] = 16;
19172 				nphy_adj_noise_var_buf[0] = 0x23f;
19173 				break;
19174 			case 153:
19175 			case 161:
19176 				nphy_adj_tone_id_buf[0] = 48;
19177 				nphy_adj_noise_var_buf[0] = 0x23f;
19178 				break;
19179 			default:
19180 				nphy_adj_tone_id_buf[0] = 0;
19181 				nphy_adj_noise_var_buf[0] = 0x0;
19182 				break;
19183 			}
19184 
19185 			if (nphy_adj_tone_id_buf[0]
19186 			    && nphy_adj_noise_var_buf[0])
19187 				wlc_phy_adjust_min_noisevar_nphy(
19188 					pi, 1,
19189 					nphy_adj_tone_id_buf,
19190 					nphy_adj_noise_var_buf);
19191 			else
19192 				wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19193 								 NULL);
19194 		}
19195 
19196 		if (pi->phyhang_avoid)
19197 			wlc_phy_stay_in_carriersearch_nphy(pi, false);
19198 	}
19199 }
19200 
wlc_phy_init_nphy(struct brcms_phy * pi)19201 void wlc_phy_init_nphy(struct brcms_phy *pi)
19202 {
19203 	u16 val;
19204 	u16 clip1_ths[2];
19205 	struct nphy_txgains target_gain;
19206 	u8 tx_pwr_ctrl_state;
19207 	bool do_nphy_cal = false;
19208 	uint core;
19209 	u32 d11_clk_ctl_st;
19210 	bool do_rssi_cal = false;
19211 
19212 	core = 0;
19213 
19214 	if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19215 		pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19216 
19217 	if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
19218 	    ((pi->sh->chippkg == BCMA_PKG_ID_BCM4717) ||
19219 	     (pi->sh->chippkg == BCMA_PKG_ID_BCM4718))) {
19220 		if ((pi->sh->boardflags & BFL_EXTLNA) &&
19221 		    (CHSPEC_IS2G(pi->radio_chanspec)))
19222 			bcma_cc_set32(&pi->d11core->bus->drv_cc,
19223 				      BCMA_CC_CHIPCTL, 0x40);
19224 	}
19225 
19226 	if ((!PHY_IPA(pi)) && (pi->sh->chip == BCMA_CHIP_ID_BCM5357))
19227 		bcma_chipco_chipctl_maskset(&pi->d11core->bus->drv_cc, 1,
19228 					    ~CCTRL5357_EXTPA, CCTRL5357_EXTPA);
19229 
19230 	if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19231 	    CHSPEC_IS40(pi->radio_chanspec)) {
19232 
19233 		d11_clk_ctl_st = bcma_read32(pi->d11core,
19234 					     D11REGOFFS(clk_ctl_st));
19235 		bcma_mask32(pi->d11core, D11REGOFFS(clk_ctl_st),
19236 			    ~(CCS_FORCEHT | CCS_HTAREQ));
19237 
19238 		bcma_write32(pi->d11core, D11REGOFFS(clk_ctl_st),
19239 			     d11_clk_ctl_st);
19240 	}
19241 
19242 	pi->use_int_tx_iqlo_cal_nphy =
19243 		(PHY_IPA(pi) ||
19244 		 (NREV_GE(pi->pubpi.phy_rev, 7) ||
19245 		  (NREV_GE(pi->pubpi.phy_rev, 5)
19246 		   && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19247 
19248 	pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19249 
19250 	pi->nphy_deaf_count = 0;
19251 
19252 	wlc_phy_tbl_init_nphy(pi);
19253 
19254 	pi->nphy_crsminpwr_adjusted = false;
19255 	pi->nphy_noisevars_adjusted = false;
19256 
19257 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19258 		write_phy_reg(pi, 0xe7, 0);
19259 		write_phy_reg(pi, 0xec, 0);
19260 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19261 			write_phy_reg(pi, 0x342, 0);
19262 			write_phy_reg(pi, 0x343, 0);
19263 			write_phy_reg(pi, 0x346, 0);
19264 			write_phy_reg(pi, 0x347, 0);
19265 		}
19266 		write_phy_reg(pi, 0xe5, 0);
19267 		write_phy_reg(pi, 0xe6, 0);
19268 	} else {
19269 		write_phy_reg(pi, 0xec, 0);
19270 	}
19271 
19272 	write_phy_reg(pi, 0x91, 0);
19273 	write_phy_reg(pi, 0x92, 0);
19274 	if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19275 		write_phy_reg(pi, 0x93, 0);
19276 		write_phy_reg(pi, 0x94, 0);
19277 	}
19278 
19279 	and_phy_reg(pi, 0xa1, ~3);
19280 
19281 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19282 		write_phy_reg(pi, 0x8f, 0);
19283 		write_phy_reg(pi, 0xa5, 0);
19284 	} else {
19285 		write_phy_reg(pi, 0xa5, 0);
19286 	}
19287 
19288 	if (NREV_IS(pi->pubpi.phy_rev, 2))
19289 		mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19290 	else if (NREV_LT(pi->pubpi.phy_rev, 2))
19291 		mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19292 
19293 	write_phy_reg(pi, 0x203, 32);
19294 	write_phy_reg(pi, 0x201, 32);
19295 
19296 	if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19297 		write_phy_reg(pi, 0x20d, 160);
19298 	else
19299 		write_phy_reg(pi, 0x20d, 184);
19300 
19301 	write_phy_reg(pi, 0x13a, 200);
19302 
19303 	write_phy_reg(pi, 0x70, 80);
19304 
19305 	write_phy_reg(pi, 0x1ff, 48);
19306 
19307 	if (NREV_LT(pi->pubpi.phy_rev, 8))
19308 		wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19309 
19310 	wlc_phy_stf_chain_upd_nphy(pi);
19311 
19312 	if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19313 		write_phy_reg(pi, 0x180, 0xaa8);
19314 		write_phy_reg(pi, 0x181, 0x9a4);
19315 	}
19316 
19317 	if (PHY_IPA(pi)) {
19318 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19319 
19320 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19321 				    0x29b, (0x1 << 0), (1) << 0);
19322 
19323 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19324 				    0x29c, (0x1ff << 7),
19325 				    (pi->nphy_papd_epsilon_offset[core]) << 7);
19326 
19327 		}
19328 
19329 		wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19330 	} else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19331 		wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19332 	}
19333 
19334 	wlc_phy_workarounds_nphy(pi);
19335 
19336 	wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19337 
19338 	val = read_phy_reg(pi, 0x01);
19339 	write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19340 	write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19341 	wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19342 
19343 	wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19344 
19345 	wlc_phy_pa_override_nphy(pi, OFF);
19346 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19347 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19348 	wlc_phy_pa_override_nphy(pi, ON);
19349 
19350 	wlc_phy_classifier_nphy(pi, 0, 0);
19351 	wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19352 
19353 	if (CHSPEC_IS2G(pi->radio_chanspec))
19354 		wlc_phy_bphy_init_nphy(pi);
19355 
19356 	tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19357 	wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19358 
19359 	wlc_phy_txpwr_fixpower_nphy(pi);
19360 
19361 	wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19362 
19363 	wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19364 
19365 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19366 		u32 *tx_pwrctrl_tbl = NULL;
19367 		u16 idx;
19368 		s16 pga_gn = 0;
19369 		s16 pad_gn = 0;
19370 		s32 rfpwr_offset;
19371 
19372 		if (PHY_IPA(pi)) {
19373 			tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19374 		} else {
19375 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
19376 				if (NREV_IS(pi->pubpi.phy_rev, 3))
19377 					tx_pwrctrl_tbl =
19378 						nphy_tpc_5GHz_txgain_rev3;
19379 				else if (NREV_IS(pi->pubpi.phy_rev, 4))
19380 					tx_pwrctrl_tbl =
19381 						(pi->srom_fem5g.extpagain ==
19382 						 3) ?
19383 						nphy_tpc_5GHz_txgain_HiPwrEPA :
19384 						nphy_tpc_5GHz_txgain_rev4;
19385 				else
19386 					tx_pwrctrl_tbl =
19387 						nphy_tpc_5GHz_txgain_rev5;
19388 			} else {
19389 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19390 					if (pi->pubpi.radiorev == 5)
19391 						tx_pwrctrl_tbl =
19392 						   nphy_tpc_txgain_epa_2057rev5;
19393 					else if (pi->pubpi.radiorev == 3)
19394 						tx_pwrctrl_tbl =
19395 						   nphy_tpc_txgain_epa_2057rev3;
19396 				} else {
19397 					if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19398 					    (pi->srom_fem2g.extpagain == 3))
19399 						tx_pwrctrl_tbl =
19400 						       nphy_tpc_txgain_HiPwrEPA;
19401 					else
19402 						tx_pwrctrl_tbl =
19403 							nphy_tpc_txgain_rev3;
19404 				}
19405 			}
19406 		}
19407 
19408 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19409 					 192, 32, tx_pwrctrl_tbl);
19410 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19411 					 192, 32, tx_pwrctrl_tbl);
19412 
19413 		pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19414 
19415 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19416 
19417 			for (idx = 0; idx < 128; idx++) {
19418 				pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19419 				pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19420 				rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19421 								 pad_gn);
19422 				wlc_phy_table_write_nphy(
19423 					pi,
19424 					NPHY_TBL_ID_CORE1TXPWRCTL,
19425 					1, 576 + idx, 32,
19426 					&rfpwr_offset);
19427 				wlc_phy_table_write_nphy(
19428 					pi,
19429 					NPHY_TBL_ID_CORE2TXPWRCTL,
19430 					1, 576 + idx, 32,
19431 					&rfpwr_offset);
19432 			}
19433 		} else {
19434 
19435 			for (idx = 0; idx < 128; idx++) {
19436 				pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19437 				if (CHSPEC_IS2G(pi->radio_chanspec))
19438 					rfpwr_offset = (s16)
19439 						 nphy_papd_pga_gain_delta_ipa_2g
19440 								       [pga_gn];
19441 				else
19442 					rfpwr_offset = (s16)
19443 						 nphy_papd_pga_gain_delta_ipa_5g
19444 								       [pga_gn];
19445 
19446 				wlc_phy_table_write_nphy(
19447 					pi,
19448 					NPHY_TBL_ID_CORE1TXPWRCTL,
19449 					1, 576 + idx, 32,
19450 					&rfpwr_offset);
19451 				wlc_phy_table_write_nphy(
19452 					pi,
19453 					NPHY_TBL_ID_CORE2TXPWRCTL,
19454 					1, 576 + idx, 32,
19455 					&rfpwr_offset);
19456 			}
19457 
19458 		}
19459 	} else {
19460 
19461 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19462 					 192, 32, nphy_tpc_txgain);
19463 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19464 					 192, 32, nphy_tpc_txgain);
19465 	}
19466 
19467 	if (pi->sh->phyrxchain != 0x3)
19468 		wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19469 					     pi->sh->phyrxchain);
19470 
19471 	if (PHY_PERICAL_MPHASE_PENDING(pi))
19472 		wlc_phy_cal_perical_mphase_restart(pi);
19473 
19474 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19475 		do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19476 			      (pi->nphy_rssical_chanspec_2G == 0) :
19477 			      (pi->nphy_rssical_chanspec_5G == 0);
19478 
19479 		if (do_rssi_cal)
19480 			wlc_phy_rssi_cal_nphy(pi);
19481 		else
19482 			wlc_phy_restore_rssical_nphy(pi);
19483 	} else {
19484 		wlc_phy_rssi_cal_nphy(pi);
19485 	}
19486 
19487 	if (!SCAN_RM_IN_PROGRESS(pi))
19488 		do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19489 			      (pi->nphy_iqcal_chanspec_2G == 0) :
19490 			      (pi->nphy_iqcal_chanspec_5G == 0);
19491 
19492 	if (!pi->do_initcal)
19493 		do_nphy_cal = false;
19494 
19495 	if (do_nphy_cal) {
19496 
19497 		target_gain = wlc_phy_get_tx_gain_nphy(pi);
19498 
19499 		if (pi->antsel_type == ANTSEL_2x3)
19500 			wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19501 					    true);
19502 
19503 		if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19504 			wlc_phy_rssi_cal_nphy(pi);
19505 
19506 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19507 				pi->nphy_cal_orig_pwr_idx[0] =
19508 					pi->nphy_txpwrindex[PHY_CORE_0]
19509 					.
19510 					index_internal;
19511 				pi->nphy_cal_orig_pwr_idx[1] =
19512 					pi->nphy_txpwrindex[PHY_CORE_1]
19513 					.
19514 					index_internal;
19515 
19516 				wlc_phy_precal_txgain_nphy(pi);
19517 				target_gain =
19518 					wlc_phy_get_tx_gain_nphy(pi);
19519 			}
19520 
19521 			if (wlc_phy_cal_txiqlo_nphy
19522 				    (pi, target_gain, true,
19523 				    false) == 0) {
19524 				if (wlc_phy_cal_rxiq_nphy
19525 					    (pi, target_gain, 2,
19526 					    false) == 0)
19527 					wlc_phy_savecal_nphy(pi);
19528 
19529 			}
19530 		} else if (pi->mphase_cal_phase_id ==
19531 			   MPHASE_CAL_STATE_IDLE) {
19532 			wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19533 					    PHY_PERICAL_PHYINIT);
19534 		}
19535 	} else {
19536 		wlc_phy_restorecal_nphy(pi);
19537 	}
19538 
19539 	wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19540 
19541 	wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19542 
19543 	wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19544 
19545 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19546 
19547 		write_phy_reg(pi, 0x70, 50);
19548 
19549 	wlc_phy_txlpfbw_nphy(pi);
19550 
19551 	wlc_phy_spurwar_nphy(pi);
19552 
19553 }
19554 
wlc_phy_resetcca_nphy(struct brcms_phy * pi)19555 static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19556 {
19557 	u16 val;
19558 
19559 	wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19560 
19561 	val = read_phy_reg(pi, 0x01);
19562 	write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19563 	udelay(1);
19564 	write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19565 
19566 	wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19567 
19568 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19569 }
19570 
wlc_phy_pa_override_nphy(struct brcms_phy * pi,bool en)19571 void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19572 {
19573 	u16 rfctrlintc_override_val;
19574 
19575 	if (!en) {
19576 
19577 		pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19578 		pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19579 
19580 		if (NREV_GE(pi->pubpi.phy_rev, 7))
19581 			rfctrlintc_override_val = 0x1480;
19582 		else if (NREV_GE(pi->pubpi.phy_rev, 3))
19583 			rfctrlintc_override_val =
19584 				CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19585 		else
19586 			rfctrlintc_override_val =
19587 				CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19588 
19589 		write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19590 		write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19591 	} else {
19592 		write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19593 		write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19594 	}
19595 
19596 }
19597 
wlc_phy_stf_chain_upd_nphy(struct brcms_phy * pi)19598 void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19599 {
19600 
19601 	u16 txrx_chain =
19602 		(NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19603 	bool CoreActv_override = false;
19604 
19605 	if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19606 		txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19607 		CoreActv_override = true;
19608 
19609 		if (NREV_LE(pi->pubpi.phy_rev, 2))
19610 			and_phy_reg(pi, 0xa0, ~0x20);
19611 	} else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19612 		txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19613 		CoreActv_override = true;
19614 
19615 		if (NREV_LE(pi->pubpi.phy_rev, 2))
19616 			or_phy_reg(pi, 0xa0, 0x20);
19617 	}
19618 
19619 	mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19620 
19621 	if (CoreActv_override) {
19622 		pi->nphy_perical = PHY_PERICAL_DISABLE;
19623 		or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19624 	} else {
19625 		pi->nphy_perical = PHY_PERICAL_MPHASE;
19626 		and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19627 	}
19628 }
19629 
wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub * pih,u8 rxcore_bitmask)19630 void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19631 {
19632 	u16 regval;
19633 	u16 tbl_buf[16];
19634 	uint i;
19635 	struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19636 	u16 tbl_opcode;
19637 	bool suspend;
19638 
19639 	pi->sh->phyrxchain = rxcore_bitmask;
19640 
19641 	if (!pi->sh->clk)
19642 		return;
19643 
19644 	suspend = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
19645 			 MCTL_EN_MAC));
19646 	if (!suspend)
19647 		wlapi_suspend_mac_and_wait(pi->sh->physhim);
19648 
19649 	if (pi->phyhang_avoid)
19650 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
19651 
19652 	regval = read_phy_reg(pi, 0xa2);
19653 	regval &= ~(0xf << 4);
19654 	regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19655 	write_phy_reg(pi, 0xa2, regval);
19656 
19657 	if ((rxcore_bitmask & 0x3) != 0x3) {
19658 
19659 		write_phy_reg(pi, 0x20e, 1);
19660 
19661 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19662 			if (pi->rx2tx_biasentry == -1) {
19663 				wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19664 							ARRAY_SIZE(tbl_buf), 80,
19665 							16, tbl_buf);
19666 
19667 				for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19668 					if (tbl_buf[i] ==
19669 					    NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19670 						pi->rx2tx_biasentry = (u8) i;
19671 						tbl_opcode =
19672 							NPHY_REV3_RFSEQ_CMD_NOP;
19673 						wlc_phy_table_write_nphy(
19674 							pi,
19675 							NPHY_TBL_ID_RFSEQ,
19676 							1, i,
19677 							16,
19678 							&tbl_opcode);
19679 						break;
19680 					} else if (tbl_buf[i] ==
19681 						   NPHY_REV3_RFSEQ_CMD_END)
19682 						break;
19683 				}
19684 			}
19685 		}
19686 	} else {
19687 
19688 		write_phy_reg(pi, 0x20e, 30);
19689 
19690 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19691 			if (pi->rx2tx_biasentry != -1) {
19692 				tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19693 				wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19694 							 1, pi->rx2tx_biasentry,
19695 							 16, &tbl_opcode);
19696 				pi->rx2tx_biasentry = -1;
19697 			}
19698 		}
19699 	}
19700 
19701 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19702 
19703 	if (pi->phyhang_avoid)
19704 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
19705 
19706 	if (!suspend)
19707 		wlapi_enable_mac(pi->sh->physhim);
19708 }
19709 
wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub * pih)19710 u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19711 {
19712 	u16 regval, rxen_bits;
19713 	struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19714 
19715 	regval = read_phy_reg(pi, 0xa2);
19716 	rxen_bits = (regval >> 4) & 0xf;
19717 
19718 	return (u8) rxen_bits;
19719 }
19720 
wlc_phy_n_txpower_ipa_ison(struct brcms_phy * pi)19721 bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19722 {
19723 	return PHY_IPA(pi);
19724 }
19725 
wlc_phy_cal_init_nphy(struct brcms_phy * pi)19726 void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19727 {
19728 }
19729 
wlc_phy_radio_preinit_205x(struct brcms_phy * pi)19730 static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19731 {
19732 
19733 	and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
19734 	and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
19735 
19736 	or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
19737 	or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
19738 
19739 }
19740 
wlc_phy_radio_init_2057(struct brcms_phy * pi)19741 static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
19742 {
19743 	struct radio_20xx_regs *regs_2057_ptr = NULL;
19744 
19745 	if (NREV_IS(pi->pubpi.phy_rev, 7)) {
19746 		regs_2057_ptr = regs_2057_rev4;
19747 	} else if (NREV_IS(pi->pubpi.phy_rev, 8)
19748 		   || NREV_IS(pi->pubpi.phy_rev, 9)) {
19749 		switch (pi->pubpi.radiorev) {
19750 		case 5:
19751 
19752 			if (NREV_IS(pi->pubpi.phy_rev, 8))
19753 				regs_2057_ptr = regs_2057_rev5;
19754 			else if (NREV_IS(pi->pubpi.phy_rev, 9))
19755 				regs_2057_ptr = regs_2057_rev5v1;
19756 			break;
19757 
19758 		case 7:
19759 
19760 			regs_2057_ptr = regs_2057_rev7;
19761 			break;
19762 
19763 		case 8:
19764 
19765 			regs_2057_ptr = regs_2057_rev8;
19766 			break;
19767 
19768 		default:
19769 			break;
19770 		}
19771 	}
19772 
19773 	wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
19774 }
19775 
wlc_phy_radio205x_rcal(struct brcms_phy * pi)19776 static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
19777 {
19778 	u16 rcal_reg = 0;
19779 	int i;
19780 
19781 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19782 
19783 		if (pi->pubpi.radiorev == 5) {
19784 
19785 			and_phy_reg(pi, 0x342, ~(0x1 << 1));
19786 
19787 			udelay(10);
19788 
19789 			mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
19790 			mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19791 				      0x1);
19792 		}
19793 		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
19794 
19795 		udelay(10);
19796 
19797 		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
19798 
19799 		for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19800 			rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
19801 			if (rcal_reg & 0x1)
19802 				break;
19803 
19804 			udelay(100);
19805 		}
19806 
19807 		if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19808 			 "HW error: radio calib2"))
19809 			return 0;
19810 
19811 		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
19812 
19813 		rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
19814 
19815 		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
19816 		if (pi->pubpi.radiorev == 5) {
19817 
19818 			mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
19819 			mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19820 				      0x0);
19821 		}
19822 
19823 		if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
19824 
19825 			mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
19826 				      rcal_reg);
19827 			mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
19828 				      rcal_reg << 2);
19829 		}
19830 
19831 	} else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19832 		u16 savereg;
19833 
19834 		savereg =
19835 			read_radio_reg(
19836 				pi,
19837 				RADIO_2056_SYN_PLL_MAST2 |
19838 				RADIO_2056_SYN);
19839 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19840 				savereg | 0x7);
19841 		udelay(10);
19842 
19843 		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19844 				0x1);
19845 		udelay(10);
19846 
19847 		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19848 				0x9);
19849 
19850 		for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19851 			rcal_reg = read_radio_reg(
19852 				pi,
19853 				RADIO_2056_SYN_RCAL_CODE_OUT |
19854 				RADIO_2056_SYN);
19855 			if (rcal_reg & 0x80)
19856 				break;
19857 
19858 			udelay(100);
19859 		}
19860 
19861 		if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19862 			 "HW error: radio calib3"))
19863 			return 0;
19864 
19865 		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19866 				0x1);
19867 
19868 		rcal_reg =
19869 			read_radio_reg(pi,
19870 				       RADIO_2056_SYN_RCAL_CODE_OUT |
19871 				       RADIO_2056_SYN);
19872 
19873 		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19874 				0x0);
19875 
19876 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19877 				savereg);
19878 
19879 		return rcal_reg & 0x1f;
19880 	}
19881 	return rcal_reg & 0x3e;
19882 }
19883 
wlc_phy_radio2057_rccal(struct brcms_phy * pi)19884 static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
19885 {
19886 	u16 rccal_valid;
19887 	int i;
19888 	bool chip43226_6362A0;
19889 
19890 	chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
19891 			    || (pi->pubpi.radiorev == 4)
19892 			    || (pi->pubpi.radiorev == 6));
19893 
19894 	rccal_valid = 0;
19895 	if (chip43226_6362A0) {
19896 		write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
19897 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
19898 	} else {
19899 		write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
19900 
19901 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
19902 	}
19903 	write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19904 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19905 
19906 	for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19907 		rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19908 		if (rccal_valid & 0x2)
19909 			break;
19910 
19911 		udelay(500);
19912 	}
19913 
19914 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19915 
19916 	rccal_valid = 0;
19917 	if (chip43226_6362A0) {
19918 		write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
19919 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
19920 	} else {
19921 		write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
19922 
19923 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
19924 	}
19925 	write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19926 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19927 
19928 	for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19929 		rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19930 		if (rccal_valid & 0x2)
19931 			break;
19932 
19933 		udelay(500);
19934 	}
19935 
19936 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19937 
19938 	rccal_valid = 0;
19939 	if (chip43226_6362A0) {
19940 		write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
19941 
19942 		write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
19943 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
19944 	} else {
19945 		write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
19946 		write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19947 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
19948 	}
19949 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19950 
19951 	for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19952 		rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19953 		if (rccal_valid & 0x2)
19954 			break;
19955 
19956 		udelay(500);
19957 	}
19958 
19959 	if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
19960 		return 0;
19961 
19962 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19963 
19964 	return rccal_valid;
19965 }
19966 
wlc_phy_radio_postinit_2057(struct brcms_phy * pi)19967 static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
19968 {
19969 
19970 	mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
19971 
19972 	mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
19973 	mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
19974 	mdelay(2);
19975 	mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
19976 	mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
19977 
19978 	if (pi->phy_init_por) {
19979 		wlc_phy_radio205x_rcal(pi);
19980 		wlc_phy_radio2057_rccal(pi);
19981 	}
19982 
19983 	mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
19984 }
19985 
wlc_phy_radio_init_2056(struct brcms_phy * pi)19986 static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
19987 {
19988 	const struct radio_regs *regs_SYN_2056_ptr = NULL;
19989 	const struct radio_regs *regs_TX_2056_ptr = NULL;
19990 	const struct radio_regs *regs_RX_2056_ptr = NULL;
19991 
19992 	if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19993 		regs_SYN_2056_ptr = regs_SYN_2056;
19994 		regs_TX_2056_ptr = regs_TX_2056;
19995 		regs_RX_2056_ptr = regs_RX_2056;
19996 	} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
19997 		regs_SYN_2056_ptr = regs_SYN_2056_A1;
19998 		regs_TX_2056_ptr = regs_TX_2056_A1;
19999 		regs_RX_2056_ptr = regs_RX_2056_A1;
20000 	} else {
20001 		switch (pi->pubpi.radiorev) {
20002 		case 5:
20003 			regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20004 			regs_TX_2056_ptr = regs_TX_2056_rev5;
20005 			regs_RX_2056_ptr = regs_RX_2056_rev5;
20006 			break;
20007 
20008 		case 6:
20009 			regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20010 			regs_TX_2056_ptr = regs_TX_2056_rev6;
20011 			regs_RX_2056_ptr = regs_RX_2056_rev6;
20012 			break;
20013 
20014 		case 7:
20015 		case 9:
20016 			regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20017 			regs_TX_2056_ptr = regs_TX_2056_rev7;
20018 			regs_RX_2056_ptr = regs_RX_2056_rev7;
20019 			break;
20020 
20021 		case 8:
20022 			regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20023 			regs_TX_2056_ptr = regs_TX_2056_rev8;
20024 			regs_RX_2056_ptr = regs_RX_2056_rev8;
20025 			break;
20026 
20027 		case 11:
20028 			regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20029 			regs_TX_2056_ptr = regs_TX_2056_rev11;
20030 			regs_RX_2056_ptr = regs_RX_2056_rev11;
20031 			break;
20032 
20033 		default:
20034 			return;
20035 		}
20036 	}
20037 
20038 	wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20039 
20040 	wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20041 
20042 	wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20043 
20044 	wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20045 
20046 	wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20047 }
20048 
wlc_phy_radio_postinit_2056(struct brcms_phy * pi)20049 static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20050 {
20051 	mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20052 
20053 	mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20054 	mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20055 	udelay(1000);
20056 	mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20057 
20058 	if ((pi->sh->boardflags2 & BFL2_LEGACY)
20059 	    || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20060 		mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20061 	else
20062 		mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20063 
20064 	mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20065 
20066 	if (pi->phy_init_por)
20067 		wlc_phy_radio205x_rcal(pi);
20068 }
20069 
wlc_phy_radio_preinit_2055(struct brcms_phy * pi)20070 static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20071 {
20072 
20073 	and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20074 	or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20075 
20076 	or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20077 }
20078 
wlc_phy_radio_init_2055(struct brcms_phy * pi)20079 static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20080 {
20081 	wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20082 }
20083 
wlc_phy_radio_postinit_2055(struct brcms_phy * pi)20084 static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20085 {
20086 
20087 	and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20088 		      ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20089 
20090 	if (((pi->sh->sromrev >= 4)
20091 	     && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20092 	    || ((pi->sh->sromrev < 4))) {
20093 		and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20094 		and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20095 	}
20096 
20097 	mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20098 	write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20099 
20100 	and_radio_reg(pi, RADIO_2055_CAL_MISC,
20101 		      ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20102 
20103 	or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20104 
20105 	or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20106 
20107 	udelay(1000);
20108 
20109 	or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20110 
20111 	SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20112 		   RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20113 
20114 	if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20115 		  RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20116 		 "HW error: radio calibration1\n"))
20117 		return;
20118 
20119 	and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20120 		      ~(RADIO_2055_CAL_LPO_ENABLE));
20121 
20122 	wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20123 
20124 	write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20125 	write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20126 
20127 	write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20128 	write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20129 
20130 	mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20131 		      RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20132 	mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20133 		      RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20134 	if (pi->nphy_gain_boost) {
20135 		and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20136 			      ~(RADIO_2055_GAINBST_DISABLE));
20137 		and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20138 			      ~(RADIO_2055_GAINBST_DISABLE));
20139 	} else {
20140 		or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20141 			     RADIO_2055_GAINBST_DISABLE);
20142 		or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20143 			     RADIO_2055_GAINBST_DISABLE);
20144 	}
20145 
20146 	udelay(2);
20147 }
20148 
wlc_phy_switch_radio_nphy(struct brcms_phy * pi,bool on)20149 void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20150 {
20151 	if (on) {
20152 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20153 			if (!pi->radio_is_on) {
20154 				wlc_phy_radio_preinit_205x(pi);
20155 				wlc_phy_radio_init_2057(pi);
20156 				wlc_phy_radio_postinit_2057(pi);
20157 			}
20158 
20159 			wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20160 					     pi->radio_chanspec);
20161 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20162 			wlc_phy_radio_preinit_205x(pi);
20163 			wlc_phy_radio_init_2056(pi);
20164 			wlc_phy_radio_postinit_2056(pi);
20165 
20166 			wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20167 					     pi->radio_chanspec);
20168 		} else {
20169 			wlc_phy_radio_preinit_2055(pi);
20170 			wlc_phy_radio_init_2055(pi);
20171 			wlc_phy_radio_postinit_2055(pi);
20172 		}
20173 
20174 		pi->radio_is_on = true;
20175 
20176 	} else {
20177 
20178 		if (NREV_GE(pi->pubpi.phy_rev, 3)
20179 		    && NREV_LT(pi->pubpi.phy_rev, 7)) {
20180 			and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20181 			mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20182 
20183 			write_radio_reg(pi,
20184 					RADIO_2056_TX_PADA_BOOST_TUNE |
20185 					RADIO_2056_TX0, 0);
20186 			write_radio_reg(pi,
20187 					RADIO_2056_TX_PADG_BOOST_TUNE |
20188 					RADIO_2056_TX0, 0);
20189 			write_radio_reg(pi,
20190 					RADIO_2056_TX_PGAA_BOOST_TUNE |
20191 					RADIO_2056_TX0, 0);
20192 			write_radio_reg(pi,
20193 					RADIO_2056_TX_PGAG_BOOST_TUNE |
20194 					RADIO_2056_TX0, 0);
20195 			mod_radio_reg(pi,
20196 				      RADIO_2056_TX_MIXA_BOOST_TUNE |
20197 				      RADIO_2056_TX0, 0xf0, 0);
20198 			write_radio_reg(pi,
20199 					RADIO_2056_TX_MIXG_BOOST_TUNE |
20200 					RADIO_2056_TX0, 0);
20201 
20202 			write_radio_reg(pi,
20203 					RADIO_2056_TX_PADA_BOOST_TUNE |
20204 					RADIO_2056_TX1, 0);
20205 			write_radio_reg(pi,
20206 					RADIO_2056_TX_PADG_BOOST_TUNE |
20207 					RADIO_2056_TX1, 0);
20208 			write_radio_reg(pi,
20209 					RADIO_2056_TX_PGAA_BOOST_TUNE |
20210 					RADIO_2056_TX1, 0);
20211 			write_radio_reg(pi,
20212 					RADIO_2056_TX_PGAG_BOOST_TUNE |
20213 					RADIO_2056_TX1, 0);
20214 			mod_radio_reg(pi,
20215 				      RADIO_2056_TX_MIXA_BOOST_TUNE |
20216 				      RADIO_2056_TX1, 0xf0, 0);
20217 			write_radio_reg(pi,
20218 					RADIO_2056_TX_MIXG_BOOST_TUNE |
20219 					RADIO_2056_TX1, 0);
20220 
20221 			pi->radio_is_on = false;
20222 		}
20223 
20224 		if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20225 			and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20226 			pi->radio_is_on = false;
20227 		}
20228 
20229 	}
20230 }
20231 
20232 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)20233 wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20234 		       const struct chan_info_nphy_radio2057 **t0,
20235 		       const struct chan_info_nphy_radio205x **t1,
20236 		       const struct chan_info_nphy_radio2057_rev5 **t2,
20237 		       const struct chan_info_nphy_2055 **t3)
20238 {
20239 	uint i;
20240 	const struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20241 	const struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20242 	const struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20243 	u32 tbl_len = 0;
20244 
20245 	int freq = 0;
20246 
20247 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20248 
20249 		if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20250 
20251 			chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20252 			tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20253 
20254 		} else if (NREV_IS(pi->pubpi.phy_rev, 8)
20255 			   || NREV_IS(pi->pubpi.phy_rev, 9)) {
20256 			switch (pi->pubpi.radiorev) {
20257 
20258 			case 5:
20259 
20260 				if (pi->pubpi.radiover == 0x0) {
20261 
20262 					chan_info_tbl_p_2 =
20263 						chan_info_nphyrev8_2057_rev5;
20264 					tbl_len = ARRAY_SIZE(
20265 						  chan_info_nphyrev8_2057_rev5);
20266 
20267 				} else if (pi->pubpi.radiover == 0x1) {
20268 
20269 					chan_info_tbl_p_2 =
20270 						chan_info_nphyrev9_2057_rev5v1;
20271 					tbl_len = ARRAY_SIZE(
20272 						chan_info_nphyrev9_2057_rev5v1);
20273 
20274 				}
20275 				break;
20276 
20277 			case 7:
20278 				chan_info_tbl_p_0 =
20279 					chan_info_nphyrev8_2057_rev7;
20280 				tbl_len = ARRAY_SIZE(
20281 						  chan_info_nphyrev8_2057_rev7);
20282 				break;
20283 
20284 			case 8:
20285 				chan_info_tbl_p_0 =
20286 					chan_info_nphyrev8_2057_rev8;
20287 				tbl_len = ARRAY_SIZE(
20288 						  chan_info_nphyrev8_2057_rev8);
20289 				break;
20290 
20291 			default:
20292 				break;
20293 			}
20294 		} else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20295 
20296 			chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20297 			tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20298 		} else {
20299 			goto fail;
20300 		}
20301 
20302 		for (i = 0; i < tbl_len; i++) {
20303 			if (pi->pubpi.radiorev == 5) {
20304 
20305 				if (chan_info_tbl_p_2[i].chan == channel)
20306 					break;
20307 			} else {
20308 
20309 				if (chan_info_tbl_p_0[i].chan == channel)
20310 					break;
20311 			}
20312 		}
20313 
20314 		if (i >= tbl_len)
20315 			goto fail;
20316 
20317 		if (pi->pubpi.radiorev == 5) {
20318 			*t2 = &chan_info_tbl_p_2[i];
20319 			freq = chan_info_tbl_p_2[i].freq;
20320 		} else {
20321 			*t0 = &chan_info_tbl_p_0[i];
20322 			freq = chan_info_tbl_p_0[i].freq;
20323 		}
20324 
20325 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20326 		if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20327 			chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20328 			tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20329 		} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20330 			chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20331 			tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20332 		} else if (NREV_IS(pi->pubpi.phy_rev, 5)
20333 			   || NREV_IS(pi->pubpi.phy_rev, 6)) {
20334 			switch (pi->pubpi.radiorev) {
20335 			case 5:
20336 				chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20337 				tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20338 				break;
20339 			case 6:
20340 				chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20341 				tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20342 				break;
20343 			case 7:
20344 			case 9:
20345 				chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20346 				tbl_len =
20347 					ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20348 				break;
20349 			case 8:
20350 				chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20351 				tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20352 				break;
20353 			case 11:
20354 				chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20355 				tbl_len = ARRAY_SIZE(
20356 						    chan_info_nphyrev6_2056v11);
20357 				break;
20358 			default:
20359 				break;
20360 			}
20361 		}
20362 
20363 		for (i = 0; i < tbl_len; i++) {
20364 			if (chan_info_tbl_p_1[i].chan == channel)
20365 				break;
20366 		}
20367 
20368 		if (i >= tbl_len)
20369 			goto fail;
20370 
20371 		*t1 = &chan_info_tbl_p_1[i];
20372 		freq = chan_info_tbl_p_1[i].freq;
20373 
20374 	} else {
20375 		for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20376 			if (chan_info_nphy_2055[i].chan == channel)
20377 				break;
20378 
20379 		if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20380 			goto fail;
20381 
20382 		*t3 = &chan_info_nphy_2055[i];
20383 		freq = chan_info_nphy_2055[i].freq;
20384 	}
20385 
20386 	*f = freq;
20387 	return true;
20388 
20389 fail:
20390 	*f = WL_CHAN_FREQ_RANGE_2G;
20391 	return false;
20392 }
20393 
wlc_phy_get_chan_freq_range_nphy(struct brcms_phy * pi,uint channel)20394 u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20395 {
20396 	int freq;
20397 	const struct chan_info_nphy_radio2057 *t0 = NULL;
20398 	const struct chan_info_nphy_radio205x *t1 = NULL;
20399 	const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20400 	const struct chan_info_nphy_2055 *t3 = NULL;
20401 
20402 	if (channel == 0)
20403 		channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20404 
20405 	wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20406 
20407 	if (CHSPEC_IS2G(pi->radio_chanspec))
20408 		return WL_CHAN_FREQ_RANGE_2G;
20409 
20410 	if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20411 		return WL_CHAN_FREQ_RANGE_5GL;
20412 	else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20413 		return WL_CHAN_FREQ_RANGE_5GM;
20414 	else
20415 		return WL_CHAN_FREQ_RANGE_5GH;
20416 }
20417 
20418 static void
wlc_phy_chanspec_radio2055_setup(struct brcms_phy * pi,const struct chan_info_nphy_2055 * ci)20419 wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20420 				 const struct chan_info_nphy_2055 *ci)
20421 {
20422 
20423 	write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20424 	write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20425 	write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20426 	write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20427 
20428 	BRCMS_PHY_WAR_PR51571(pi);
20429 
20430 	write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20431 	write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20432 	write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20433 	write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20434 
20435 	BRCMS_PHY_WAR_PR51571(pi);
20436 
20437 	write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20438 	write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20439 	write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20440 	write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20441 
20442 	BRCMS_PHY_WAR_PR51571(pi);
20443 
20444 	write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20445 			ci->RF_core1_lgbuf_a_tune);
20446 	write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20447 			ci->RF_core1_lgbuf_g_tune);
20448 	write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20449 	write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20450 			ci->RF_core1_tx_pga_pad_tn);
20451 
20452 	BRCMS_PHY_WAR_PR51571(pi);
20453 
20454 	write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20455 			ci->RF_core1_tx_mx_bgtrim);
20456 	write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20457 			ci->RF_core2_lgbuf_a_tune);
20458 	write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20459 			ci->RF_core2_lgbuf_g_tune);
20460 	write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20461 
20462 	BRCMS_PHY_WAR_PR51571(pi);
20463 
20464 	write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20465 			ci->RF_core2_tx_pga_pad_tn);
20466 	write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20467 			ci->RF_core2_tx_mx_bgtrim);
20468 
20469 	udelay(50);
20470 
20471 	write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20472 	write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20473 
20474 	BRCMS_PHY_WAR_PR51571(pi);
20475 
20476 	write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20477 
20478 	udelay(300);
20479 }
20480 
20481 static void
wlc_phy_chanspec_radio2056_setup(struct brcms_phy * pi,const struct chan_info_nphy_radio205x * ci)20482 wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20483 				 const struct chan_info_nphy_radio205x *ci)
20484 {
20485 	const struct radio_regs *regs_SYN_2056_ptr = NULL;
20486 
20487 	write_radio_reg(pi,
20488 			RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20489 			ci->RF_SYN_pll_vcocal1);
20490 	write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20491 			ci->RF_SYN_pll_vcocal2);
20492 	write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20493 			ci->RF_SYN_pll_refdiv);
20494 	write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20495 			ci->RF_SYN_pll_mmd2);
20496 	write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20497 			ci->RF_SYN_pll_mmd1);
20498 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20499 			ci->RF_SYN_pll_loopfilter1);
20500 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20501 			ci->RF_SYN_pll_loopfilter2);
20502 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20503 			ci->RF_SYN_pll_loopfilter3);
20504 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20505 			ci->RF_SYN_pll_loopfilter4);
20506 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20507 			ci->RF_SYN_pll_loopfilter5);
20508 	write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20509 			ci->RF_SYN_reserved_addr27);
20510 	write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20511 			ci->RF_SYN_reserved_addr28);
20512 	write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20513 			ci->RF_SYN_reserved_addr29);
20514 	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20515 			ci->RF_SYN_logen_VCOBUF1);
20516 	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20517 			ci->RF_SYN_logen_MIXER2);
20518 	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20519 			ci->RF_SYN_logen_BUF3);
20520 	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20521 			ci->RF_SYN_logen_BUF4);
20522 
20523 	write_radio_reg(pi,
20524 			RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20525 			ci->RF_RX0_lnaa_tune);
20526 	write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20527 			ci->RF_RX0_lnag_tune);
20528 	write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20529 			ci->RF_TX0_intpaa_boost_tune);
20530 	write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20531 			ci->RF_TX0_intpag_boost_tune);
20532 	write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20533 			ci->RF_TX0_pada_boost_tune);
20534 	write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20535 			ci->RF_TX0_padg_boost_tune);
20536 	write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20537 			ci->RF_TX0_pgaa_boost_tune);
20538 	write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20539 			ci->RF_TX0_pgag_boost_tune);
20540 	write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20541 			ci->RF_TX0_mixa_boost_tune);
20542 	write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20543 			ci->RF_TX0_mixg_boost_tune);
20544 
20545 	write_radio_reg(pi,
20546 			RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20547 			ci->RF_RX1_lnaa_tune);
20548 	write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20549 			ci->RF_RX1_lnag_tune);
20550 	write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20551 			ci->RF_TX1_intpaa_boost_tune);
20552 	write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20553 			ci->RF_TX1_intpag_boost_tune);
20554 	write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20555 			ci->RF_TX1_pada_boost_tune);
20556 	write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20557 			ci->RF_TX1_padg_boost_tune);
20558 	write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20559 			ci->RF_TX1_pgaa_boost_tune);
20560 	write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20561 			ci->RF_TX1_pgag_boost_tune);
20562 	write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20563 			ci->RF_TX1_mixa_boost_tune);
20564 	write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20565 			ci->RF_TX1_mixg_boost_tune);
20566 
20567 	if (NREV_IS(pi->pubpi.phy_rev, 3))
20568 		regs_SYN_2056_ptr = regs_SYN_2056;
20569 	else if (NREV_IS(pi->pubpi.phy_rev, 4))
20570 		regs_SYN_2056_ptr = regs_SYN_2056_A1;
20571 	else {
20572 		switch (pi->pubpi.radiorev) {
20573 		case 5:
20574 			regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20575 			break;
20576 		case 6:
20577 			regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20578 			break;
20579 		case 7:
20580 		case 9:
20581 			regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20582 			break;
20583 		case 8:
20584 			regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20585 			break;
20586 		case 11:
20587 			regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20588 			break;
20589 		}
20590 	}
20591 	if (CHSPEC_IS2G(pi->radio_chanspec))
20592 		write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20593 				RADIO_2056_SYN,
20594 				(u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20595 	else
20596 		write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20597 				RADIO_2056_SYN,
20598 				(u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20599 
20600 	if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20601 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
20602 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20603 					RADIO_2056_SYN, 0x1f);
20604 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20605 					RADIO_2056_SYN, 0x1f);
20606 
20607 			if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20608 			    (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20609 				write_radio_reg(pi,
20610 						RADIO_2056_SYN_PLL_LOOPFILTER4 |
20611 						RADIO_2056_SYN, 0x14);
20612 				write_radio_reg(pi,
20613 						RADIO_2056_SYN_PLL_CP2 |
20614 						RADIO_2056_SYN, 0x00);
20615 			} else {
20616 				write_radio_reg(pi,
20617 						RADIO_2056_SYN_PLL_LOOPFILTER4 |
20618 						RADIO_2056_SYN, 0xb);
20619 				write_radio_reg(pi,
20620 						RADIO_2056_SYN_PLL_CP2 |
20621 						RADIO_2056_SYN, 0x14);
20622 			}
20623 		}
20624 	}
20625 
20626 	if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20627 	    (CHSPEC_IS2G(pi->radio_chanspec))) {
20628 		write_radio_reg(pi,
20629 				RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20630 				0x1f);
20631 		write_radio_reg(pi,
20632 				RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20633 				0x1f);
20634 		write_radio_reg(pi,
20635 				RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20636 				0xb);
20637 		write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20638 				0x20);
20639 	}
20640 
20641 	if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20642 		if (CHSPEC_IS5G(pi->radio_chanspec)) {
20643 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20644 					RADIO_2056_SYN, 0x1f);
20645 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20646 					RADIO_2056_SYN, 0x1f);
20647 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20648 					RADIO_2056_SYN, 0x5);
20649 			write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20650 					RADIO_2056_SYN, 0xc);
20651 		}
20652 	}
20653 
20654 	if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20655 		u16 pag_boost_tune;
20656 		u16 padg_boost_tune;
20657 		u16 pgag_boost_tune;
20658 		u16 mixg_boost_tune;
20659 		u16 bias, cascbias;
20660 		uint core;
20661 
20662 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20663 
20664 			if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20665 
20666 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20667 						 PADG_IDAC, 0xcc);
20668 
20669 				if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20670 				    (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20671 					bias = 0x40;
20672 					cascbias = 0x45;
20673 					pag_boost_tune = 0x5;
20674 					pgag_boost_tune = 0x33;
20675 					padg_boost_tune = 0x77;
20676 					mixg_boost_tune = 0x55;
20677 				} else {
20678 					bias = 0x25;
20679 					cascbias = 0x20;
20680 
20681 					if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20682 					     pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20683 					    pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC) {
20684 						bias = 0x2a;
20685 						cascbias = 0x38;
20686 					}
20687 
20688 					pag_boost_tune = 0x4;
20689 					pgag_boost_tune = 0x03;
20690 					padg_boost_tune = 0x77;
20691 					mixg_boost_tune = 0x65;
20692 				}
20693 
20694 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20695 						 INTPAG_IMAIN_STAT, bias);
20696 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20697 						 INTPAG_IAUX_STAT, bias);
20698 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20699 						 INTPAG_CASCBIAS, cascbias);
20700 
20701 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20702 						 INTPAG_BOOST_TUNE,
20703 						 pag_boost_tune);
20704 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20705 						 PGAG_BOOST_TUNE,
20706 						 pgag_boost_tune);
20707 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20708 						 PADG_BOOST_TUNE,
20709 						 padg_boost_tune);
20710 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20711 						 MIXG_BOOST_TUNE,
20712 						 mixg_boost_tune);
20713 			} else {
20714 
20715 				bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20716 				       0x40 : 0x20;
20717 
20718 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20719 						 INTPAG_IMAIN_STAT, bias);
20720 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20721 						 INTPAG_IAUX_STAT, bias);
20722 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20723 						 INTPAG_CASCBIAS, 0x30);
20724 			}
20725 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20726 					 0xee);
20727 		}
20728 	}
20729 
20730 	if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20731 	    && CHSPEC_IS5G(pi->radio_chanspec)) {
20732 		u16 paa_boost_tune;
20733 		u16 pada_boost_tune;
20734 		u16 pgaa_boost_tune;
20735 		u16 mixa_boost_tune;
20736 		u16 freq, pabias, cascbias;
20737 		uint core;
20738 
20739 		freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20740 
20741 		if (freq < 5150) {
20742 
20743 			paa_boost_tune = 0xa;
20744 			pada_boost_tune = 0x77;
20745 			pgaa_boost_tune = 0xf;
20746 			mixa_boost_tune = 0xf;
20747 		} else if (freq < 5340) {
20748 
20749 			paa_boost_tune = 0x8;
20750 			pada_boost_tune = 0x77;
20751 			pgaa_boost_tune = 0xfb;
20752 			mixa_boost_tune = 0xf;
20753 		} else if (freq < 5650) {
20754 
20755 			paa_boost_tune = 0x0;
20756 			pada_boost_tune = 0x77;
20757 			pgaa_boost_tune = 0xb;
20758 			mixa_boost_tune = 0xf;
20759 		} else {
20760 
20761 			paa_boost_tune = 0x0;
20762 			pada_boost_tune = 0x77;
20763 			if (freq != 5825)
20764 				pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
20765 			else
20766 				pgaa_boost_tune = 6;
20767 
20768 			mixa_boost_tune = 0xf;
20769 		}
20770 
20771 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20772 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20773 					 INTPAA_BOOST_TUNE, paa_boost_tune);
20774 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20775 					 PADA_BOOST_TUNE, pada_boost_tune);
20776 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20777 					 PGAA_BOOST_TUNE, pgaa_boost_tune);
20778 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20779 					 MIXA_BOOST_TUNE, mixa_boost_tune);
20780 
20781 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20782 					 TXSPARE1, 0x30);
20783 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20784 					 PA_SPARE2, 0xee);
20785 
20786 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20787 					 PADA_CASCBIAS, 0x3);
20788 
20789 			cascbias = 0x30;
20790 
20791 			if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20792 			     pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20793 			    pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC)
20794 				cascbias = 0x35;
20795 
20796 			pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
20797 
20798 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20799 					 INTPAA_IAUX_STAT, pabias);
20800 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20801 					 INTPAA_IMAIN_STAT, pabias);
20802 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20803 					 INTPAA_CASCBIAS, cascbias);
20804 		}
20805 	}
20806 
20807 	udelay(50);
20808 
20809 	wlc_phy_radio205x_vcocal_nphy(pi);
20810 }
20811 
wlc_phy_radio205x_vcocal_nphy(struct brcms_phy * pi)20812 void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
20813 {
20814 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20815 		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
20816 		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
20817 		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
20818 			      (1 << 2));
20819 		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
20820 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20821 		write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
20822 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20823 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
20824 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20825 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
20826 	}
20827 
20828 	udelay(300);
20829 }
20830 
20831 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)20832 wlc_phy_chanspec_radio2057_setup(
20833 	struct brcms_phy *pi,
20834 	const struct chan_info_nphy_radio2057 *ci,
20835 	const struct chan_info_nphy_radio2057_rev5 *
20836 	ci2)
20837 {
20838 	int coreNum;
20839 	u16 txmix2g_tune_boost_pu = 0;
20840 	u16 pad2g_tune_pus = 0;
20841 
20842 	if (pi->pubpi.radiorev == 5) {
20843 
20844 		write_radio_reg(pi,
20845 				RADIO_2057_VCOCAL_COUNTVAL0,
20846 				ci2->RF_vcocal_countval0);
20847 		write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20848 				ci2->RF_vcocal_countval1);
20849 		write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20850 				ci2->RF_rfpll_refmaster_sparextalsize);
20851 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20852 				ci2->RF_rfpll_loopfilter_r1);
20853 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20854 				ci2->RF_rfpll_loopfilter_c2);
20855 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20856 				ci2->RF_rfpll_loopfilter_c1);
20857 		write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
20858 				ci2->RF_cp_kpd_idac);
20859 		write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
20860 		write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
20861 		write_radio_reg(pi,
20862 				RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
20863 		write_radio_reg(pi,
20864 				RADIO_2057_LOGEN_MX2G_TUNE,
20865 				ci2->RF_logen_mx2g_tune);
20866 		write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20867 				ci2->RF_logen_indbuf2g_tune);
20868 
20869 		write_radio_reg(pi,
20870 				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20871 				ci2->RF_txmix2g_tune_boost_pu_core0);
20872 		write_radio_reg(pi,
20873 				RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20874 				ci2->RF_pad2g_tune_pus_core0);
20875 		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20876 				ci2->RF_lna2g_tune_core0);
20877 
20878 		write_radio_reg(pi,
20879 				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20880 				ci2->RF_txmix2g_tune_boost_pu_core1);
20881 		write_radio_reg(pi,
20882 				RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20883 				ci2->RF_pad2g_tune_pus_core1);
20884 		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20885 				ci2->RF_lna2g_tune_core1);
20886 
20887 	} else {
20888 
20889 		write_radio_reg(pi,
20890 				RADIO_2057_VCOCAL_COUNTVAL0,
20891 				ci->RF_vcocal_countval0);
20892 		write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20893 				ci->RF_vcocal_countval1);
20894 		write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20895 				ci->RF_rfpll_refmaster_sparextalsize);
20896 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20897 				ci->RF_rfpll_loopfilter_r1);
20898 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20899 				ci->RF_rfpll_loopfilter_c2);
20900 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20901 				ci->RF_rfpll_loopfilter_c1);
20902 		write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
20903 		write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
20904 		write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
20905 		write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
20906 		write_radio_reg(pi,
20907 				RADIO_2057_LOGEN_MX2G_TUNE,
20908 				ci->RF_logen_mx2g_tune);
20909 		write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
20910 				ci->RF_logen_mx5g_tune);
20911 		write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20912 				ci->RF_logen_indbuf2g_tune);
20913 		write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
20914 				ci->RF_logen_indbuf5g_tune);
20915 
20916 		write_radio_reg(pi,
20917 				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20918 				ci->RF_txmix2g_tune_boost_pu_core0);
20919 		write_radio_reg(pi,
20920 				RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20921 				ci->RF_pad2g_tune_pus_core0);
20922 		write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
20923 				ci->RF_pga_boost_tune_core0);
20924 		write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
20925 				ci->RF_txmix5g_boost_tune_core0);
20926 		write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
20927 				ci->RF_pad5g_tune_misc_pus_core0);
20928 		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20929 				ci->RF_lna2g_tune_core0);
20930 		write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
20931 				ci->RF_lna5g_tune_core0);
20932 
20933 		write_radio_reg(pi,
20934 				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20935 				ci->RF_txmix2g_tune_boost_pu_core1);
20936 		write_radio_reg(pi,
20937 				RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20938 				ci->RF_pad2g_tune_pus_core1);
20939 		write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
20940 				ci->RF_pga_boost_tune_core1);
20941 		write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
20942 				ci->RF_txmix5g_boost_tune_core1);
20943 		write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
20944 				ci->RF_pad5g_tune_misc_pus_core1);
20945 		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20946 				ci->RF_lna2g_tune_core1);
20947 		write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
20948 				ci->RF_lna5g_tune_core1);
20949 	}
20950 
20951 	if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
20952 
20953 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
20954 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20955 					0x3f);
20956 			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20957 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20958 					0x8);
20959 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20960 					0x8);
20961 		} else {
20962 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20963 					0x1f);
20964 			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20965 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20966 					0x8);
20967 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20968 					0x8);
20969 		}
20970 	} else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
20971 		   (pi->pubpi.radiorev == 8)) {
20972 
20973 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
20974 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20975 					0x1b);
20976 			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
20977 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20978 					0xa);
20979 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20980 					0xa);
20981 		} else {
20982 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20983 					0x1f);
20984 			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20985 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20986 					0x8);
20987 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20988 					0x8);
20989 		}
20990 
20991 	}
20992 
20993 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
20994 		if (PHY_IPA(pi)) {
20995 			if (pi->pubpi.radiorev == 3)
20996 				txmix2g_tune_boost_pu = 0x6b;
20997 
20998 			if (pi->pubpi.radiorev == 5)
20999 				pad2g_tune_pus = 0x73;
21000 
21001 		} else {
21002 			if (pi->pubpi.radiorev != 5) {
21003 				pad2g_tune_pus = 0x3;
21004 
21005 				txmix2g_tune_boost_pu = 0x61;
21006 			}
21007 		}
21008 
21009 		for (coreNum = 0; coreNum <= 1; coreNum++) {
21010 
21011 			if (txmix2g_tune_boost_pu != 0)
21012 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21013 						 TXMIX2G_TUNE_BOOST_PU,
21014 						 txmix2g_tune_boost_pu);
21015 
21016 			if (pad2g_tune_pus != 0)
21017 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21018 						 PAD2G_TUNE_PUS,
21019 						 pad2g_tune_pus);
21020 		}
21021 	}
21022 
21023 	udelay(50);
21024 
21025 	wlc_phy_radio205x_vcocal_nphy(pi);
21026 }
21027 
21028 static void
wlc_phy_chanspec_nphy_setup(struct brcms_phy * pi,u16 chanspec,const struct nphy_sfo_cfg * ci)21029 wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21030 			    const struct nphy_sfo_cfg *ci)
21031 {
21032 	u16 val;
21033 
21034 	val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21035 	if (CHSPEC_IS5G(chanspec) && !val) {
21036 
21037 		val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21038 		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21039 		      (val | MAC_PHY_FORCE_CLK));
21040 
21041 		or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21042 			   (BBCFG_RESETCCA | BBCFG_RESETRX));
21043 
21044 		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21045 
21046 		or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21047 	} else if (!CHSPEC_IS5G(chanspec) && val) {
21048 
21049 		and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21050 
21051 		val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21052 		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21053 		      (val | MAC_PHY_FORCE_CLK));
21054 
21055 		and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21056 			    (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
21057 
21058 		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21059 	}
21060 
21061 	write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21062 	write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21063 	write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21064 
21065 	write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21066 	write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21067 	write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21068 
21069 	if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21070 		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21071 
21072 		or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21073 	} else {
21074 		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21075 					NPHY_ClassifierCtrl_ofdm_en);
21076 
21077 		if (CHSPEC_IS2G(chanspec))
21078 			and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21079 	}
21080 
21081 	if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21082 		wlc_phy_txpwr_fixpower_nphy(pi);
21083 
21084 	if (NREV_LT(pi->pubpi.phy_rev, 3))
21085 		wlc_phy_adjust_lnagaintbl_nphy(pi);
21086 
21087 	wlc_phy_txlpfbw_nphy(pi);
21088 
21089 	if (NREV_GE(pi->pubpi.phy_rev, 3)
21090 	    && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21091 		u8 spuravoid = 0;
21092 
21093 		val = CHSPEC_CHANNEL(chanspec);
21094 		if (!CHSPEC_IS40(pi->radio_chanspec)) {
21095 			if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21096 				if ((val == 13) || (val == 14) || (val == 153))
21097 					spuravoid = 1;
21098 			} else if (((val >= 5) && (val <= 8)) || (val == 13)
21099 				   || (val == 14)) {
21100 				spuravoid = 1;
21101 			}
21102 		} else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21103 			if (val == 54)
21104 				spuravoid = 1;
21105 		} else if (pi->nphy_aband_spurwar_en &&
21106 		    ((val == 38) || (val == 102) || (val == 118))) {
21107 			if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716)
21108 			    && (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
21109 				spuravoid = 0;
21110 			} else {
21111 				spuravoid = 1;
21112 			}
21113 		}
21114 
21115 		if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21116 			spuravoid = 1;
21117 
21118 		if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21119 		    (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21120 			bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21121 						     spuravoid);
21122 		} else {
21123 			wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
21124 			bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21125 						     spuravoid);
21126 			wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21127 		}
21128 
21129 		if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224) ||
21130 		    (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21131 			if (spuravoid == 1) {
21132 				bcma_write16(pi->d11core,
21133 					     D11REGOFFS(tsf_clk_frac_l),
21134 					     0x5341);
21135 				bcma_write16(pi->d11core,
21136 					     D11REGOFFS(tsf_clk_frac_h), 0x8);
21137 			} else {
21138 				bcma_write16(pi->d11core,
21139 					     D11REGOFFS(tsf_clk_frac_l),
21140 					     0x8889);
21141 				bcma_write16(pi->d11core,
21142 					     D11REGOFFS(tsf_clk_frac_h), 0x8);
21143 			}
21144 		}
21145 
21146 		if (!((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21147 		      (pi->sh->chip == BCMA_CHIP_ID_BCM47162)))
21148 			wlapi_bmac_core_phypll_reset(pi->sh->physhim);
21149 
21150 		mod_phy_reg(pi, 0x01, (0x1 << 15),
21151 			    ((spuravoid > 0) ? (0x1 << 15) : 0));
21152 
21153 		wlc_phy_resetcca_nphy(pi);
21154 
21155 		pi->phy_isspuravoid = (spuravoid > 0);
21156 	}
21157 
21158 	if (NREV_LT(pi->pubpi.phy_rev, 7))
21159 		write_phy_reg(pi, 0x17e, 0x3830);
21160 
21161 	wlc_phy_spurwar_nphy(pi);
21162 }
21163 
wlc_phy_chanspec_set_nphy(struct brcms_phy * pi,u16 chanspec)21164 void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21165 {
21166 	int freq;
21167 	const struct chan_info_nphy_radio2057 *t0 = NULL;
21168 	const struct chan_info_nphy_radio205x *t1 = NULL;
21169 	const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21170 	const struct chan_info_nphy_2055 *t3 = NULL;
21171 
21172 	if (!wlc_phy_chan2freq_nphy
21173 		    (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21174 		return;
21175 
21176 	wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21177 
21178 	if (CHSPEC_BW(chanspec) != pi->bw)
21179 		wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21180 
21181 	if (CHSPEC_IS40(chanspec)) {
21182 		if (CHSPEC_SB_UPPER(chanspec)) {
21183 			or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21184 			if (NREV_GE(pi->pubpi.phy_rev, 7))
21185 				or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21186 		} else {
21187 			and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21188 			if (NREV_GE(pi->pubpi.phy_rev, 7))
21189 				and_phy_reg(pi, 0x310,
21190 					    (~PRIM_SEL_UP20 & 0xffff));
21191 		}
21192 	}
21193 
21194 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21195 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21196 
21197 			if ((pi->pubpi.radiorev <= 4)
21198 			    || (pi->pubpi.radiorev == 6)) {
21199 				mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21200 					      0x2,
21201 					      (CHSPEC_IS5G(chanspec) ? (1 << 1)
21202 					       : 0));
21203 				mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21204 					      0x2,
21205 					      (CHSPEC_IS5G(chanspec) ? (1 << 1)
21206 					       : 0));
21207 			}
21208 
21209 			wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21210 			wlc_phy_chanspec_nphy_setup(pi, chanspec,
21211 				(pi->pubpi.radiorev == 5) ?
21212 				(const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21213 				(const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21214 
21215 		} else {
21216 
21217 			mod_radio_reg(pi,
21218 				      RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21219 				      0x4,
21220 				      (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21221 			wlc_phy_chanspec_radio2056_setup(pi, t1);
21222 
21223 			wlc_phy_chanspec_nphy_setup(pi, chanspec,
21224 				(const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21225 		}
21226 
21227 	} else {
21228 
21229 		mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21230 			      (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21231 			       : (0x05 << 4)));
21232 
21233 		wlc_phy_chanspec_radio2055_setup(pi, t3);
21234 		wlc_phy_chanspec_nphy_setup(pi, chanspec,
21235 					    (const struct nphy_sfo_cfg *)
21236 					     &(t3->PHY_BW1a));
21237 	}
21238 
21239 }
21240 
wlc_phy_antsel_init(struct brcms_phy_pub * ppi,bool lut_init)21241 void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21242 {
21243 	struct brcms_phy *pi = container_of(ppi, struct brcms_phy, pubpi_ro);
21244 	u16 mask = 0xfc00;
21245 	u32 mc = 0;
21246 
21247 	if (NREV_GE(pi->pubpi.phy_rev, 7))
21248 		return;
21249 
21250 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21251 		u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21252 
21253 		if (!lut_init)
21254 			return;
21255 
21256 		if (pi->srom_fem2g.antswctrllut == 0) {
21257 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21258 						 1, 0x02, 16, &v0);
21259 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21260 						 1, 0x03, 16, &v1);
21261 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21262 						 1, 0x08, 16, &v2);
21263 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21264 						 1, 0x0C, 16, &v3);
21265 		}
21266 
21267 		if (pi->srom_fem5g.antswctrllut == 0) {
21268 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21269 						 1, 0x12, 16, &v0);
21270 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21271 						 1, 0x13, 16, &v1);
21272 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21273 						 1, 0x18, 16, &v2);
21274 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21275 						 1, 0x1C, 16, &v3);
21276 		}
21277 	} else {
21278 
21279 		write_phy_reg(pi, 0xc8, 0x0);
21280 		write_phy_reg(pi, 0xc9, 0x0);
21281 
21282 		bcma_chipco_gpio_control(&pi->d11core->bus->drv_cc, mask, mask);
21283 
21284 		mc = bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
21285 		mc &= ~MCTL_GPOUT_SEL_MASK;
21286 		bcma_write32(pi->d11core, D11REGOFFS(maccontrol), mc);
21287 
21288 		bcma_set16(pi->d11core, D11REGOFFS(psm_gpio_oe), mask);
21289 
21290 		bcma_mask16(pi->d11core, D11REGOFFS(psm_gpio_out), ~mask);
21291 
21292 		if (lut_init) {
21293 			write_phy_reg(pi, 0xf8, 0x02d8);
21294 			write_phy_reg(pi, 0xf9, 0x0301);
21295 			write_phy_reg(pi, 0xfa, 0x02d8);
21296 			write_phy_reg(pi, 0xfb, 0x0301);
21297 		}
21298 	}
21299 }
21300 
wlc_phy_classifier_nphy(struct brcms_phy * pi,u16 mask,u16 val)21301 u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21302 {
21303 	u16 curr_ctl, new_ctl;
21304 	bool suspended = false;
21305 
21306 	if (D11REV_IS(pi->sh->corerev, 16)) {
21307 		suspended = (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
21308 			     MCTL_EN_MAC) ? false : true;
21309 		if (!suspended)
21310 			wlapi_suspend_mac_and_wait(pi->sh->physhim);
21311 	}
21312 
21313 	curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21314 
21315 	new_ctl = (curr_ctl & (~mask)) | (val & mask);
21316 
21317 	mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21318 
21319 	if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21320 		wlapi_enable_mac(pi->sh->physhim);
21321 
21322 	return new_ctl;
21323 }
21324 
wlc_phy_force_rfseq_nphy(struct brcms_phy * pi,u8 cmd)21325 void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21326 {
21327 	u16 trigger_mask, status_mask;
21328 	u16 orig_RfseqCoreActv;
21329 
21330 	switch (cmd) {
21331 	case NPHY_RFSEQ_RX2TX:
21332 		trigger_mask = NPHY_RfseqTrigger_rx2tx;
21333 		status_mask = NPHY_RfseqStatus_rx2tx;
21334 		break;
21335 	case NPHY_RFSEQ_TX2RX:
21336 		trigger_mask = NPHY_RfseqTrigger_tx2rx;
21337 		status_mask = NPHY_RfseqStatus_tx2rx;
21338 		break;
21339 	case NPHY_RFSEQ_RESET2RX:
21340 		trigger_mask = NPHY_RfseqTrigger_reset2rx;
21341 		status_mask = NPHY_RfseqStatus_reset2rx;
21342 		break;
21343 	case NPHY_RFSEQ_UPDATEGAINH:
21344 		trigger_mask = NPHY_RfseqTrigger_updategainh;
21345 		status_mask = NPHY_RfseqStatus_updategainh;
21346 		break;
21347 	case NPHY_RFSEQ_UPDATEGAINL:
21348 		trigger_mask = NPHY_RfseqTrigger_updategainl;
21349 		status_mask = NPHY_RfseqStatus_updategainl;
21350 		break;
21351 	case NPHY_RFSEQ_UPDATEGAINU:
21352 		trigger_mask = NPHY_RfseqTrigger_updategainu;
21353 		status_mask = NPHY_RfseqStatus_updategainu;
21354 		break;
21355 	default:
21356 		return;
21357 	}
21358 
21359 	orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21360 	or_phy_reg(pi, 0xa1,
21361 		   (NPHY_RfseqMode_CoreActv_override |
21362 		    NPHY_RfseqMode_Trigger_override));
21363 	or_phy_reg(pi, 0xa3, trigger_mask);
21364 	SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21365 	write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21366 	WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21367 }
21368 
21369 static void
wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy * pi,u16 cmd,u16 value,u8 core_mask,u8 off)21370 wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21371 				     u8 core_mask, u8 off)
21372 {
21373 	u16 rfmxgain = 0, lpfgain = 0;
21374 	u16 tgain = 0;
21375 
21376 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21377 
21378 		switch (cmd) {
21379 		case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21380 			wlc_phy_rfctrl_override_nphy_rev7(
21381 				pi, (0x1 << 5),
21382 				value, core_mask, off,
21383 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21384 			wlc_phy_rfctrl_override_nphy_rev7(
21385 				pi, (0x1 << 4), value,
21386 				core_mask, off,
21387 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21388 			wlc_phy_rfctrl_override_nphy_rev7(
21389 				pi, (0x1 << 3), value,
21390 				core_mask, off,
21391 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21392 			break;
21393 		case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21394 			wlc_phy_rfctrl_override_nphy_rev7(
21395 				pi, (0x1 << 2),
21396 				value, core_mask, off,
21397 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21398 			wlc_phy_rfctrl_override_nphy_rev7(
21399 				pi, (0x1 << 1), value,
21400 				core_mask, off,
21401 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21402 			wlc_phy_rfctrl_override_nphy_rev7(
21403 				pi, (0x1 << 0), value,
21404 				core_mask, off,
21405 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21406 			wlc_phy_rfctrl_override_nphy_rev7(
21407 				pi, (0x1 << 1), value,
21408 				core_mask, off,
21409 				NPHY_REV7_RFCTRLOVERRIDE_ID2);
21410 			wlc_phy_rfctrl_override_nphy_rev7(
21411 				pi, (0x1 << 11), 0,
21412 				core_mask, off,
21413 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21414 			break;
21415 		case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21416 			wlc_phy_rfctrl_override_nphy_rev7(
21417 				pi, (0x1 << 2),
21418 				value, core_mask, off,
21419 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21420 			wlc_phy_rfctrl_override_nphy_rev7(
21421 				pi, (0x1 << 1), value,
21422 				core_mask, off,
21423 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21424 			wlc_phy_rfctrl_override_nphy_rev7(
21425 				pi, (0x1 << 0), value,
21426 				core_mask, off,
21427 				NPHY_REV7_RFCTRLOVERRIDE_ID2);
21428 			wlc_phy_rfctrl_override_nphy_rev7(
21429 				pi, (0x1 << 2), value,
21430 				core_mask, off,
21431 				NPHY_REV7_RFCTRLOVERRIDE_ID2);
21432 			wlc_phy_rfctrl_override_nphy_rev7(
21433 				pi, (0x1 << 11), 1,
21434 				core_mask, off,
21435 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21436 			break;
21437 		case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21438 			rfmxgain = value & 0x000ff;
21439 			lpfgain = value & 0x0ff00;
21440 			lpfgain = lpfgain >> 8;
21441 
21442 			wlc_phy_rfctrl_override_nphy_rev7(
21443 				pi, (0x1 << 11),
21444 				rfmxgain, core_mask,
21445 				off,
21446 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21447 			wlc_phy_rfctrl_override_nphy_rev7(
21448 				pi, (0x3 << 13),
21449 				lpfgain, core_mask,
21450 				off,
21451 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21452 			break;
21453 		case NPHY_REV7_RfctrlOverride_cmd_txgain:
21454 			tgain = value & 0x7fff;
21455 			lpfgain = value & 0x8000;
21456 			lpfgain = lpfgain >> 14;
21457 
21458 			wlc_phy_rfctrl_override_nphy_rev7(
21459 				pi, (0x1 << 12),
21460 				tgain, core_mask, off,
21461 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21462 			wlc_phy_rfctrl_override_nphy_rev7(
21463 				pi, (0x1 << 13),
21464 				lpfgain, core_mask,
21465 				off,
21466 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21467 			break;
21468 		}
21469 	}
21470 }
21471 
21472 static void
wlc_phy_scale_offset_rssi_nphy(struct brcms_phy * pi,u16 scale,s8 offset,u8 coresel,u8 rail,u8 rssi_type)21473 wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21474 			       u8 coresel, u8 rail, u8 rssi_type)
21475 {
21476 	u16 valuetostuff;
21477 
21478 	offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21479 		 NPHY_RSSICAL_MAXREAD : offset;
21480 	offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21481 		 -NPHY_RSSICAL_MAXREAD - 1 : offset;
21482 
21483 	valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21484 
21485 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21486 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21487 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21488 		write_phy_reg(pi, 0x1a6, valuetostuff);
21489 
21490 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21491 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21492 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21493 		write_phy_reg(pi, 0x1ac, valuetostuff);
21494 
21495 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21496 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21497 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21498 		write_phy_reg(pi, 0x1b2, valuetostuff);
21499 
21500 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21501 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21502 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21503 		write_phy_reg(pi, 0x1b8, valuetostuff);
21504 
21505 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21506 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21507 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21508 		write_phy_reg(pi, 0x1a4, valuetostuff);
21509 
21510 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21511 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21512 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21513 		write_phy_reg(pi, 0x1aa, valuetostuff);
21514 
21515 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21516 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21517 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21518 		write_phy_reg(pi, 0x1b0, valuetostuff);
21519 
21520 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21521 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21522 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21523 		write_phy_reg(pi, 0x1b6, valuetostuff);
21524 
21525 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21526 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21527 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21528 		write_phy_reg(pi, 0x1a5, valuetostuff);
21529 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21530 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21531 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21532 		write_phy_reg(pi, 0x1ab, valuetostuff);
21533 
21534 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21535 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21536 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21537 		write_phy_reg(pi, 0x1b1, valuetostuff);
21538 
21539 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21540 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21541 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21542 		write_phy_reg(pi, 0x1b7, valuetostuff);
21543 
21544 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21545 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21546 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21547 		write_phy_reg(pi, 0x1a7, valuetostuff);
21548 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21549 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21550 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21551 		write_phy_reg(pi, 0x1ad, valuetostuff);
21552 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21553 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21554 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21555 		write_phy_reg(pi, 0x1b3, valuetostuff);
21556 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21557 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21558 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21559 		write_phy_reg(pi, 0x1b9, valuetostuff);
21560 
21561 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21562 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21563 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21564 		write_phy_reg(pi, 0x1a8, valuetostuff);
21565 
21566 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21567 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21568 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21569 		write_phy_reg(pi, 0x1ae, valuetostuff);
21570 
21571 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21572 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21573 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21574 		write_phy_reg(pi, 0x1b4, valuetostuff);
21575 
21576 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21577 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21578 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21579 		write_phy_reg(pi, 0x1ba, valuetostuff);
21580 
21581 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21582 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21583 	    (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21584 		write_phy_reg(pi, 0x1a9, valuetostuff);
21585 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21586 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21587 	    (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21588 		write_phy_reg(pi, 0x1b5, valuetostuff);
21589 
21590 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21591 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21592 	    (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21593 		write_phy_reg(pi, 0x1af, valuetostuff);
21594 
21595 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21596 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21597 	    (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21598 		write_phy_reg(pi, 0x1bb, valuetostuff);
21599 }
21600 
brcms_phy_wr_tx_mux(struct brcms_phy * pi,u8 core)21601 static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21602 {
21603 	if (PHY_IPA(pi)) {
21604 		if (NREV_GE(pi->pubpi.phy_rev, 7))
21605 			write_radio_reg(pi,
21606 					((core == PHY_CORE_0) ?
21607 					 RADIO_2057_TX0_TX_SSI_MUX :
21608 					 RADIO_2057_TX1_TX_SSI_MUX),
21609 					(CHSPEC_IS5G(pi->radio_chanspec) ?
21610 					0xc : 0xe));
21611 		else
21612 			write_radio_reg(pi,
21613 					RADIO_2056_TX_TX_SSI_MUX |
21614 					((core == PHY_CORE_0) ?
21615 					 RADIO_2056_TX0 : RADIO_2056_TX1),
21616 					(CHSPEC_IS5G(pi->radio_chanspec) ?
21617 					0xc : 0xe));
21618 	} else {
21619 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21620 			write_radio_reg(pi,
21621 					((core == PHY_CORE_0) ?
21622 					 RADIO_2057_TX0_TX_SSI_MUX :
21623 					 RADIO_2057_TX1_TX_SSI_MUX),
21624 					0x11);
21625 
21626 			if (pi->pubpi.radioid == BCM2057_ID)
21627 				write_radio_reg(pi,
21628 						RADIO_2057_IQTEST_SEL_PU, 0x1);
21629 
21630 		} else {
21631 			write_radio_reg(pi,
21632 					RADIO_2056_TX_TX_SSI_MUX |
21633 					((core == PHY_CORE_0) ?
21634 					 RADIO_2056_TX0 : RADIO_2056_TX1),
21635 					0x11);
21636 		}
21637 	}
21638 }
21639 
wlc_phy_rssisel_nphy(struct brcms_phy * pi,u8 core_code,u8 rssi_type)21640 void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21641 {
21642 	u16 mask, val;
21643 	u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21644 	    startseq;
21645 	u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21646 	    rfctrlovr_trigger_val;
21647 	u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21648 	u16 rfctrlcmd_val, rfctrlovr_val;
21649 	u8 core;
21650 
21651 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21652 		if (core_code == RADIO_MIMO_CORESEL_OFF) {
21653 			mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21654 			mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21655 
21656 			mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21657 			mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21658 
21659 			mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21660 			mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21661 
21662 			mask = (0x1 << 2) |
21663 			       (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21664 			mod_phy_reg(pi, 0xf9, mask, 0);
21665 			mod_phy_reg(pi, 0xfb, mask, 0);
21666 
21667 		} else {
21668 			for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21669 				if (core_code == RADIO_MIMO_CORESEL_CORE1
21670 				    && core == PHY_CORE_1)
21671 					continue;
21672 				else if (core_code == RADIO_MIMO_CORESEL_CORE2
21673 					 && core == PHY_CORE_0)
21674 					continue;
21675 
21676 				mod_phy_reg(pi, (core == PHY_CORE_0) ?
21677 					    0x8f : 0xa5, (0x1 << 9), 1 << 9);
21678 
21679 				if (rssi_type == NPHY_RSSI_SEL_W1 ||
21680 				    rssi_type == NPHY_RSSI_SEL_W2 ||
21681 				    rssi_type == NPHY_RSSI_SEL_NB) {
21682 					mod_phy_reg(pi,
21683 						    (core ==
21684 						     PHY_CORE_0) ? 0xa6 : 0xa7,
21685 						    (0x3 << 8), 0);
21686 
21687 					mask = (0x1 << 2) |
21688 					       (0x1 << 3) |
21689 					       (0x1 << 4) | (0x1 << 5);
21690 					mod_phy_reg(pi,
21691 						    (core ==
21692 						     PHY_CORE_0) ? 0xf9 : 0xfb,
21693 						    mask, 0);
21694 
21695 					if (rssi_type == NPHY_RSSI_SEL_W1) {
21696 						if (CHSPEC_IS5G(
21697 							  pi->radio_chanspec)) {
21698 							mask = (0x1 << 2);
21699 							val = 1 << 2;
21700 						} else {
21701 							mask = (0x1 << 3);
21702 							val = 1 << 3;
21703 						}
21704 					} else if (rssi_type ==
21705 						   NPHY_RSSI_SEL_W2) {
21706 						mask = (0x1 << 4);
21707 						val = 1 << 4;
21708 					} else {
21709 						mask = (0x1 << 5);
21710 						val = 1 << 5;
21711 					}
21712 					mod_phy_reg(pi,
21713 						    (core ==
21714 						     PHY_CORE_0) ? 0xf9 : 0xfb,
21715 						    mask, val);
21716 
21717 					mask = (0x1 << 5);
21718 					val = 1 << 5;
21719 					mod_phy_reg(pi, (core == PHY_CORE_0) ?
21720 						    0xe5 : 0xe6, mask, val);
21721 				} else {
21722 					if (rssi_type == NPHY_RSSI_SEL_TBD) {
21723 						mask = (0x3 << 8);
21724 						val = 1 << 8;
21725 						mod_phy_reg(pi,
21726 							    (core ==
21727 							     PHY_CORE_0) ? 0xa6
21728 							    : 0xa7, mask, val);
21729 						mask = (0x3 << 10);
21730 						val = 1 << 10;
21731 						mod_phy_reg(pi,
21732 							    (core ==
21733 							     PHY_CORE_0) ? 0xa6
21734 							    : 0xa7, mask, val);
21735 					} else if (rssi_type ==
21736 						   NPHY_RSSI_SEL_IQ) {
21737 						mask = (0x3 << 8);
21738 						val = 2 << 8;
21739 						mod_phy_reg(pi,
21740 							    (core ==
21741 							     PHY_CORE_0) ? 0xa6
21742 							    : 0xa7, mask, val);
21743 						mask = (0x3 << 10);
21744 						val = 2 << 10;
21745 						mod_phy_reg(pi,
21746 							    (core ==
21747 							     PHY_CORE_0) ? 0xa6
21748 							    : 0xa7, mask, val);
21749 					} else {
21750 						mask = (0x3 << 8);
21751 						val = 3 << 8;
21752 						mod_phy_reg(pi,
21753 							    (core ==
21754 							     PHY_CORE_0) ? 0xa6
21755 							    : 0xa7, mask, val);
21756 						mask = (0x3 << 10);
21757 						val = 3 << 10;
21758 						mod_phy_reg(pi,
21759 							    (core ==
21760 							     PHY_CORE_0) ? 0xa6
21761 							    : 0xa7, mask, val);
21762 						brcms_phy_wr_tx_mux(pi, core);
21763 						afectrlovr_rssi_val = 1 << 9;
21764 						mod_phy_reg(pi,
21765 							   (core ==
21766 							    PHY_CORE_0) ? 0x8f
21767 							   : 0xa5, (0x1 << 9),
21768 							   afectrlovr_rssi_val);
21769 					}
21770 				}
21771 			}
21772 		}
21773 	} else {
21774 
21775 		if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21776 		    (rssi_type == NPHY_RSSI_SEL_W2) ||
21777 		    (rssi_type == NPHY_RSSI_SEL_NB))
21778 			val = 0x0;
21779 		else if (rssi_type == NPHY_RSSI_SEL_TBD)
21780 			val = 0x1;
21781 		else if (rssi_type == NPHY_RSSI_SEL_IQ)
21782 			val = 0x2;
21783 		else
21784 			val = 0x3;
21785 
21786 		mask = ((0x3 << 12) | (0x3 << 14));
21787 		val = (val << 12) | (val << 14);
21788 		mod_phy_reg(pi, 0xa6, mask, val);
21789 		mod_phy_reg(pi, 0xa7, mask, val);
21790 
21791 		if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21792 		    (rssi_type == NPHY_RSSI_SEL_W2) ||
21793 		    (rssi_type == NPHY_RSSI_SEL_NB)) {
21794 			if (rssi_type == NPHY_RSSI_SEL_W1)
21795 				val = 0x1;
21796 			if (rssi_type == NPHY_RSSI_SEL_W2)
21797 				val = 0x2;
21798 			if (rssi_type == NPHY_RSSI_SEL_NB)
21799 				val = 0x3;
21800 
21801 			mask = (0x3 << 4);
21802 			val = (val << 4);
21803 			mod_phy_reg(pi, 0x7a, mask, val);
21804 			mod_phy_reg(pi, 0x7d, mask, val);
21805 		}
21806 
21807 		if (core_code == RADIO_MIMO_CORESEL_OFF) {
21808 			afectrlovr_rssi_val = 0;
21809 			rfctrlcmd_rxen_val = 0;
21810 			rfctrlcmd_coresel_val = 0;
21811 			rfctrlovr_rssi_val = 0;
21812 			rfctrlovr_rxen_val = 0;
21813 			rfctrlovr_coresel_val = 0;
21814 			rfctrlovr_trigger_val = 0;
21815 			startseq = 0;
21816 		} else {
21817 			afectrlovr_rssi_val = 1;
21818 			rfctrlcmd_rxen_val = 1;
21819 			rfctrlcmd_coresel_val = core_code;
21820 			rfctrlovr_rssi_val = 1;
21821 			rfctrlovr_rxen_val = 1;
21822 			rfctrlovr_coresel_val = 1;
21823 			rfctrlovr_trigger_val = 1;
21824 			startseq = 1;
21825 		}
21826 
21827 		afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
21828 		afectrlovr_rssi_val = (afectrlovr_rssi_val <<
21829 				       12) | (afectrlovr_rssi_val << 13);
21830 		mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
21831 			    afectrlovr_rssi_val);
21832 
21833 		if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21834 		    (rssi_type == NPHY_RSSI_SEL_W2) ||
21835 		    (rssi_type == NPHY_RSSI_SEL_NB)) {
21836 			rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
21837 			rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
21838 					(rfctrlcmd_coresel_val << 3);
21839 
21840 			rfctrlovr_mask = ((0x1 << 5) |
21841 					  (0x1 << 12) |
21842 					  (0x1 << 1) | (0x1 << 0));
21843 			rfctrlovr_val = (rfctrlovr_rssi_val <<
21844 					 5) |
21845 					(rfctrlovr_rxen_val << 12) |
21846 					(rfctrlovr_coresel_val << 1) |
21847 					(rfctrlovr_trigger_val << 0);
21848 
21849 			mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
21850 			mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
21851 
21852 			mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
21853 			udelay(20);
21854 
21855 			mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
21856 		}
21857 	}
21858 }
21859 
21860 int
wlc_phy_poll_rssi_nphy(struct brcms_phy * pi,u8 rssi_type,s32 * rssi_buf,u8 nsamps)21861 wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
21862 		       u8 nsamps)
21863 {
21864 	s16 rssi0, rssi1;
21865 	u16 afectrlCore1_save = 0;
21866 	u16 afectrlCore2_save = 0;
21867 	u16 afectrlOverride1_save = 0;
21868 	u16 afectrlOverride2_save = 0;
21869 	u16 rfctrlOverrideAux0_save = 0;
21870 	u16 rfctrlOverrideAux1_save = 0;
21871 	u16 rfctrlMiscReg1_save = 0;
21872 	u16 rfctrlMiscReg2_save = 0;
21873 	u16 rfctrlcmd_save = 0;
21874 	u16 rfctrloverride_save = 0;
21875 	u16 rfctrlrssiothers1_save = 0;
21876 	u16 rfctrlrssiothers2_save = 0;
21877 	s8 tmp_buf[4];
21878 	u8 ctr = 0, samp = 0;
21879 	s32 rssi_out_val;
21880 	u16 gpiosel_orig;
21881 
21882 	afectrlCore1_save = read_phy_reg(pi, 0xa6);
21883 	afectrlCore2_save = read_phy_reg(pi, 0xa7);
21884 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21885 		rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
21886 		rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
21887 		afectrlOverride1_save = read_phy_reg(pi, 0x8f);
21888 		afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21889 		rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
21890 		rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
21891 	} else {
21892 		afectrlOverride1_save = read_phy_reg(pi, 0xa5);
21893 		rfctrlcmd_save = read_phy_reg(pi, 0x78);
21894 		rfctrloverride_save = read_phy_reg(pi, 0xec);
21895 		rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
21896 		rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
21897 	}
21898 
21899 	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
21900 
21901 	gpiosel_orig = read_phy_reg(pi, 0xca);
21902 	if (NREV_LT(pi->pubpi.phy_rev, 2))
21903 		write_phy_reg(pi, 0xca, 5);
21904 
21905 	for (ctr = 0; ctr < 4; ctr++)
21906 		rssi_buf[ctr] = 0;
21907 
21908 	for (samp = 0; samp < nsamps; samp++) {
21909 		if (NREV_LT(pi->pubpi.phy_rev, 2)) {
21910 			rssi0 = read_phy_reg(pi, 0x1c9);
21911 			rssi1 = read_phy_reg(pi, 0x1ca);
21912 		} else {
21913 			rssi0 = read_phy_reg(pi, 0x219);
21914 			rssi1 = read_phy_reg(pi, 0x21a);
21915 		}
21916 
21917 		ctr = 0;
21918 		tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
21919 		tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
21920 		tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
21921 		tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
21922 
21923 		for (ctr = 0; ctr < 4; ctr++)
21924 			rssi_buf[ctr] += tmp_buf[ctr];
21925 
21926 	}
21927 
21928 	rssi_out_val = rssi_buf[3] & 0xff;
21929 	rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
21930 	rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
21931 	rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
21932 
21933 	if (NREV_LT(pi->pubpi.phy_rev, 2))
21934 		write_phy_reg(pi, 0xca, gpiosel_orig);
21935 
21936 	write_phy_reg(pi, 0xa6, afectrlCore1_save);
21937 	write_phy_reg(pi, 0xa7, afectrlCore2_save);
21938 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21939 		write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
21940 		write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
21941 		write_phy_reg(pi, 0x8f, afectrlOverride1_save);
21942 		write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21943 		write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
21944 		write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
21945 	} else {
21946 		write_phy_reg(pi, 0xa5, afectrlOverride1_save);
21947 		write_phy_reg(pi, 0x78, rfctrlcmd_save);
21948 		write_phy_reg(pi, 0xec, rfctrloverride_save);
21949 		write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
21950 		write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
21951 	}
21952 
21953 	return rssi_out_val;
21954 }
21955 
wlc_phy_tempsense_nphy(struct brcms_phy * pi)21956 s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
21957 {
21958 	u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
21959 	u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
21960 	u16 pwrdet_rxtx_core1_save;
21961 	u16 pwrdet_rxtx_core2_save;
21962 	u16 afectrlCore1_save;
21963 	u16 afectrlCore2_save;
21964 	u16 afectrlOverride_save;
21965 	u16 afectrlOverride2_save;
21966 	u16 pd_pll_ts_save;
21967 	u16 gpioSel_save;
21968 	s32 radio_temp[4];
21969 	s32 radio_temp2[4];
21970 	u16 syn_tempprocsense_save;
21971 	s16 offset = 0;
21972 
21973 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21974 		u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
21975 		u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
21976 		u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
21977 		s32 auxADC_Vl;
21978 		u16 RfctrlOverride5_save, RfctrlOverride6_save;
21979 		u16 RfctrlMiscReg5_save;
21980 		u16 RSSIMultCoef0QPowerDet_save;
21981 		u16 tempsense_Rcal;
21982 
21983 		syn_tempprocsense_save =
21984 			read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
21985 
21986 		afectrlCore1_save = read_phy_reg(pi, 0xa6);
21987 		afectrlCore2_save = read_phy_reg(pi, 0xa7);
21988 		afectrlOverride_save = read_phy_reg(pi, 0x8f);
21989 		afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21990 		RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
21991 		RfctrlOverride5_save = read_phy_reg(pi, 0x346);
21992 		RfctrlOverride6_save = read_phy_reg(pi, 0x347);
21993 		RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
21994 		read_phy_reg(pi, 0x345); /* RfctrlMiscReg6_save */
21995 
21996 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21997 					&auxADC_Vmid_save);
21998 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21999 					&auxADC_Av_save);
22000 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22001 					&auxADC_rssi_ctrlL_save);
22002 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22003 					&auxADC_rssi_ctrlH_save);
22004 
22005 		write_phy_reg(pi, 0x1ae, 0x0);
22006 
22007 		auxADC_rssi_ctrlL = 0x0;
22008 		auxADC_rssi_ctrlH = 0x20;
22009 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22010 					 &auxADC_rssi_ctrlL);
22011 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22012 					 &auxADC_rssi_ctrlH);
22013 
22014 		tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22015 
22016 		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22017 				tempsense_Rcal | 0x01);
22018 
22019 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22020 						  1, 0, 0,
22021 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
22022 		mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22023 		mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22024 		mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22025 		mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22026 
22027 		mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22028 		mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22029 		mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22030 		mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22031 		udelay(5);
22032 		mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22033 		mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22034 		mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22035 		mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22036 		mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22037 		mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22038 		mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22039 		mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22040 		mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22041 		mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22042 
22043 		auxADC_Vmid = 0xA3;
22044 		auxADC_Av = 0x0;
22045 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22046 					 &auxADC_Vmid);
22047 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22048 					 &auxADC_Av);
22049 
22050 		udelay(3);
22051 
22052 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22053 		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22054 				tempsense_Rcal | 0x03);
22055 
22056 		udelay(5);
22057 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22058 
22059 		auxADC_Av = 0x7;
22060 		if (radio_temp[1] + radio_temp2[1] < -30) {
22061 			auxADC_Vmid = 0x45;
22062 			auxADC_Vl = 263;
22063 		} else if (radio_temp[1] + radio_temp2[1] < -9) {
22064 			auxADC_Vmid = 0x200;
22065 			auxADC_Vl = 467;
22066 		} else if (radio_temp[1] + radio_temp2[1] < 11) {
22067 			auxADC_Vmid = 0x266;
22068 			auxADC_Vl = 634;
22069 		} else {
22070 			auxADC_Vmid = 0x2D5;
22071 			auxADC_Vl = 816;
22072 		}
22073 
22074 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22075 					 &auxADC_Vmid);
22076 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22077 					 &auxADC_Av);
22078 
22079 		udelay(3);
22080 
22081 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22082 		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22083 				tempsense_Rcal | 0x01);
22084 
22085 		udelay(5);
22086 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22087 
22088 		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22089 				syn_tempprocsense_save);
22090 
22091 		write_phy_reg(pi, 0xa6, afectrlCore1_save);
22092 		write_phy_reg(pi, 0xa7, afectrlCore2_save);
22093 		write_phy_reg(pi, 0x8f, afectrlOverride_save);
22094 		write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22095 		write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22096 		write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22097 		write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22098 		write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22099 		write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22100 
22101 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22102 					 &auxADC_Vmid_save);
22103 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22104 					 &auxADC_Av_save);
22105 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22106 					 &auxADC_rssi_ctrlL_save);
22107 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22108 					 &auxADC_rssi_ctrlH_save);
22109 
22110 		if (pi->sh->chip == BCMA_CHIP_ID_BCM5357) {
22111 			radio_temp[0] = (193 * (radio_temp[1] + radio_temp2[1])
22112 					 + 88 * (auxADC_Vl) - 27111 +
22113 					 128) / 256;
22114 		} else {
22115 			radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22116 					 + 82 * (auxADC_Vl) - 28861 +
22117 					 128) / 256;
22118 		}
22119 
22120 		offset = (s16) pi->phy_tempsense_offset;
22121 
22122 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22123 		syn_tempprocsense_save =
22124 			read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22125 
22126 		afectrlCore1_save = read_phy_reg(pi, 0xa6);
22127 		afectrlCore2_save = read_phy_reg(pi, 0xa7);
22128 		afectrlOverride_save = read_phy_reg(pi, 0x8f);
22129 		afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22130 		gpioSel_save = read_phy_reg(pi, 0xca);
22131 
22132 		write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22133 
22134 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22135 		if (NREV_LT(pi->pubpi.phy_rev, 7))
22136 			write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22137 
22138 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22139 		if (NREV_GE(pi->pubpi.phy_rev, 7))
22140 			write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22141 		else
22142 			write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22143 
22144 		radio_temp[0] =
22145 			(126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22146 
22147 		write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22148 				syn_tempprocsense_save);
22149 
22150 		write_phy_reg(pi, 0xca, gpioSel_save);
22151 		write_phy_reg(pi, 0xa6, afectrlCore1_save);
22152 		write_phy_reg(pi, 0xa7, afectrlCore2_save);
22153 		write_phy_reg(pi, 0x8f, afectrlOverride_save);
22154 		write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22155 
22156 		offset = (s16) pi->phy_tempsense_offset;
22157 	} else {
22158 
22159 		pwrdet_rxtx_core1_save =
22160 			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22161 		pwrdet_rxtx_core2_save =
22162 			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22163 		core1_txrf_iqcal1_save =
22164 			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22165 		core1_txrf_iqcal2_save =
22166 			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22167 		core2_txrf_iqcal1_save =
22168 			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22169 		core2_txrf_iqcal2_save =
22170 			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22171 		pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22172 
22173 		afectrlCore1_save = read_phy_reg(pi, 0xa6);
22174 		afectrlCore2_save = read_phy_reg(pi, 0xa7);
22175 		afectrlOverride_save = read_phy_reg(pi, 0xa5);
22176 		gpioSel_save = read_phy_reg(pi, 0xca);
22177 
22178 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22179 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22180 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22181 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22182 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22183 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22184 		write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22185 
22186 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22187 		xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22188 
22189 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22190 		xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22191 
22192 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22193 		xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22194 
22195 		radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22196 		radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22197 		radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22198 		radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22199 
22200 		radio_temp[0] =
22201 			(radio_temp[0] + radio_temp[1] + radio_temp[2] +
22202 			 radio_temp[3]);
22203 
22204 		radio_temp[0] =
22205 			(radio_temp[0] +
22206 			 (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22207 
22208 		radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22209 
22210 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22211 				pwrdet_rxtx_core1_save);
22212 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22213 				pwrdet_rxtx_core2_save);
22214 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22215 				core1_txrf_iqcal1_save);
22216 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22217 				core2_txrf_iqcal1_save);
22218 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22219 				core1_txrf_iqcal2_save);
22220 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22221 				core2_txrf_iqcal2_save);
22222 		write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22223 
22224 		write_phy_reg(pi, 0xca, gpioSel_save);
22225 		write_phy_reg(pi, 0xa6, afectrlCore1_save);
22226 		write_phy_reg(pi, 0xa7, afectrlCore2_save);
22227 		write_phy_reg(pi, 0xa5, afectrlOverride_save);
22228 	}
22229 
22230 	return (s16) radio_temp[0] + offset;
22231 }
22232 
22233 static void
wlc_phy_set_rssi_2055_vcm(struct brcms_phy * pi,u8 rssi_type,u8 * vcm_buf)22234 wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22235 {
22236 	u8 core;
22237 
22238 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22239 		if (rssi_type == NPHY_RSSI_SEL_NB) {
22240 			if (core == PHY_CORE_0) {
22241 				mod_radio_reg(pi,
22242 					      RADIO_2055_CORE1_B0_NBRSSI_VCM,
22243 					      RADIO_2055_NBRSSI_VCM_I_MASK,
22244 					      vcm_buf[2 *
22245 						      core] <<
22246 					      RADIO_2055_NBRSSI_VCM_I_SHIFT);
22247 				mod_radio_reg(pi,
22248 					      RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22249 					      RADIO_2055_NBRSSI_VCM_Q_MASK,
22250 					      vcm_buf[2 * core +
22251 						      1] <<
22252 					      RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22253 			} else {
22254 				mod_radio_reg(pi,
22255 					      RADIO_2055_CORE2_B0_NBRSSI_VCM,
22256 					      RADIO_2055_NBRSSI_VCM_I_MASK,
22257 					      vcm_buf[2 *
22258 						      core] <<
22259 					      RADIO_2055_NBRSSI_VCM_I_SHIFT);
22260 				mod_radio_reg(pi,
22261 					      RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22262 					      RADIO_2055_NBRSSI_VCM_Q_MASK,
22263 					      vcm_buf[2 * core +
22264 						      1] <<
22265 					      RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22266 			}
22267 		} else {
22268 			if (core == PHY_CORE_0)
22269 				mod_radio_reg(pi,
22270 					      RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22271 					      RADIO_2055_WBRSSI_VCM_IQ_MASK,
22272 					      vcm_buf[2 *
22273 						      core] <<
22274 					      RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22275 			else
22276 				mod_radio_reg(pi,
22277 					      RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22278 					      RADIO_2055_WBRSSI_VCM_IQ_MASK,
22279 					      vcm_buf[2 *
22280 						      core] <<
22281 					      RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22282 		}
22283 	}
22284 }
22285 
wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy * pi)22286 static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22287 {
22288 	u16 classif_state;
22289 	u16 clip_state[2];
22290 	u16 clip_off[] = { 0xffff, 0xffff };
22291 	s32 target_code;
22292 	u8 vcm, min_vcm;
22293 	u8 vcm_final = 0;
22294 	u8 result_idx;
22295 	s32 poll_results[8][4] = {
22296 		{0, 0, 0, 0},
22297 		{0, 0, 0, 0},
22298 		{0, 0, 0, 0},
22299 		{0, 0, 0, 0},
22300 		{0, 0, 0, 0},
22301 		{0, 0, 0, 0},
22302 		{0, 0, 0, 0},
22303 		{0, 0, 0, 0}
22304 	};
22305 	s32 poll_result_core[4] = { 0, 0, 0, 0 };
22306 	s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22307 	s32 fine_digital_offset[4];
22308 	s32 poll_results_min[4] = { 0, 0, 0, 0 };
22309 	s32 min_poll;
22310 	u8 vcm_level_max;
22311 	u8 core;
22312 	u8 wb_cnt;
22313 	u8 rssi_type;
22314 	u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22315 	u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22316 	u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22317 	u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22318 	u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22319 	u16 NPHY_RfctrlCmd_save;
22320 	u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22321 	u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22322 	u8 rxcore_state;
22323 	u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22324 	u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22325 	u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22326 	u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22327 
22328 	NPHY_REV7_RfctrlOverride3_save =
22329 		NPHY_REV7_RfctrlOverride4_save =
22330 		NPHY_REV7_RfctrlOverride5_save =
22331 		NPHY_REV7_RfctrlOverride6_save =
22332 		NPHY_REV7_RfctrlMiscReg3_save =
22333 		NPHY_REV7_RfctrlMiscReg4_save =
22334 		NPHY_REV7_RfctrlMiscReg5_save =
22335 		NPHY_REV7_RfctrlMiscReg6_save = 0;
22336 
22337 	classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22338 	wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22339 	wlc_phy_clip_det_nphy(pi, 0, clip_state);
22340 	wlc_phy_clip_det_nphy(pi, 1, clip_off);
22341 
22342 	NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22343 	NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22344 	NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22345 	NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22346 	NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22347 	NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22348 	NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22349 	NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22350 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22351 		NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22352 		NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22353 		NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22354 		NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22355 	}
22356 	NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22357 	NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22358 	NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22359 	NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22360 	NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22361 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22362 		NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22363 		NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22364 		NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22365 		NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22366 	}
22367 	NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22368 	NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22369 
22370 	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22371 					 RADIO_MIMO_CORESEL_ALLRXTX);
22372 	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22373 					 RADIO_MIMO_CORESEL_ALLRXTX);
22374 
22375 	if (NREV_GE(pi->pubpi.phy_rev, 7))
22376 		wlc_phy_rfctrl_override_1tomany_nphy(
22377 			pi,
22378 			NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22379 			0, 0, 0);
22380 	else
22381 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22382 
22383 	if (NREV_GE(pi->pubpi.phy_rev, 7))
22384 		wlc_phy_rfctrl_override_1tomany_nphy(
22385 			pi,
22386 			NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22387 			1, 0, 0);
22388 	else
22389 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22390 
22391 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22392 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22393 						  1, 0, 0,
22394 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
22395 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22396 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
22397 	} else {
22398 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22399 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22400 	}
22401 
22402 	if (CHSPEC_IS5G(pi->radio_chanspec)) {
22403 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22404 			wlc_phy_rfctrl_override_nphy_rev7(
22405 				pi, (0x1 << 5),
22406 				0, 0, 0,
22407 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22408 			wlc_phy_rfctrl_override_nphy_rev7(
22409 				pi, (0x1 << 4), 1, 0,
22410 				0,
22411 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22412 		} else {
22413 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22414 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22415 		}
22416 
22417 	} else {
22418 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22419 			wlc_phy_rfctrl_override_nphy_rev7(
22420 				pi, (0x1 << 4),
22421 				0, 0, 0,
22422 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22423 			wlc_phy_rfctrl_override_nphy_rev7(
22424 				pi, (0x1 << 5), 1, 0,
22425 				0,
22426 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22427 		} else {
22428 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22429 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22430 		}
22431 	}
22432 
22433 	rxcore_state = wlc_phy_rxcore_getstate_nphy(
22434 		(struct brcms_phy_pub *) pi);
22435 
22436 	vcm_level_max = 8;
22437 
22438 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22439 
22440 		if ((rxcore_state & (1 << core)) == 0)
22441 			continue;
22442 
22443 		wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22444 					       core ==
22445 					       PHY_CORE_0 ?
22446 					       RADIO_MIMO_CORESEL_CORE1 :
22447 					       RADIO_MIMO_CORESEL_CORE2,
22448 					       NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22449 		wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22450 					       core ==
22451 					       PHY_CORE_0 ?
22452 					       RADIO_MIMO_CORESEL_CORE1 :
22453 					       RADIO_MIMO_CORESEL_CORE2,
22454 					       NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22455 
22456 		for (vcm = 0; vcm < vcm_level_max; vcm++) {
22457 			if (NREV_GE(pi->pubpi.phy_rev, 7))
22458 				mod_radio_reg(pi, (core == PHY_CORE_0) ?
22459 					      RADIO_2057_NB_MASTER_CORE0 :
22460 					      RADIO_2057_NB_MASTER_CORE1,
22461 					      RADIO_2057_VCM_MASK, vcm);
22462 			else
22463 				mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22464 					      ((core ==
22465 						PHY_CORE_0) ? RADIO_2056_RX0 :
22466 					       RADIO_2056_RX1),
22467 					      RADIO_2056_VCM_MASK,
22468 					      vcm << RADIO_2056_RSSI_VCM_SHIFT);
22469 
22470 			wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22471 					       &poll_results[vcm][0],
22472 					       NPHY_RSSICAL_NPOLL);
22473 		}
22474 
22475 		for (result_idx = 0; result_idx < 4; result_idx++) {
22476 			if ((core == result_idx / 2) &&
22477 			    (result_idx % 2 == 0)) {
22478 
22479 				min_d = NPHY_RSSICAL_MAXD;
22480 				min_vcm = 0;
22481 				min_poll =
22482 					NPHY_RSSICAL_MAXREAD *
22483 					NPHY_RSSICAL_NPOLL + 1;
22484 				for (vcm = 0; vcm < vcm_level_max; vcm++) {
22485 					curr_d =
22486 						poll_results[vcm][result_idx] *
22487 						poll_results[vcm][result_idx] +
22488 						poll_results[vcm][result_idx +
22489 								  1] *
22490 						poll_results[vcm][result_idx +
22491 								  1];
22492 					if (curr_d < min_d) {
22493 						min_d = curr_d;
22494 						min_vcm = vcm;
22495 					}
22496 					if (poll_results[vcm][result_idx] <
22497 					    min_poll)
22498 						min_poll =
22499 							poll_results[vcm]
22500 							[result_idx];
22501 				}
22502 				vcm_final = min_vcm;
22503 				poll_results_min[result_idx] = min_poll;
22504 			}
22505 		}
22506 
22507 		if (NREV_GE(pi->pubpi.phy_rev, 7))
22508 			mod_radio_reg(pi, (core == PHY_CORE_0) ?
22509 				      RADIO_2057_NB_MASTER_CORE0 :
22510 				      RADIO_2057_NB_MASTER_CORE1,
22511 				      RADIO_2057_VCM_MASK, vcm_final);
22512 		else
22513 			mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22514 				      ((core ==
22515 					PHY_CORE_0) ? RADIO_2056_RX0 :
22516 				       RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22517 				      vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22518 
22519 		for (result_idx = 0; result_idx < 4; result_idx++) {
22520 			if (core == result_idx / 2) {
22521 				fine_digital_offset[result_idx] =
22522 					(NPHY_RSSICAL_NB_TARGET *
22523 					 NPHY_RSSICAL_NPOLL) -
22524 					poll_results[vcm_final][result_idx];
22525 				if (fine_digital_offset[result_idx] < 0) {
22526 					fine_digital_offset[result_idx] =
22527 						abs(fine_digital_offset
22528 						    [result_idx]);
22529 					fine_digital_offset[result_idx] +=
22530 						(NPHY_RSSICAL_NPOLL / 2);
22531 					fine_digital_offset[result_idx] /=
22532 						NPHY_RSSICAL_NPOLL;
22533 					fine_digital_offset[result_idx] =
22534 						-fine_digital_offset[
22535 								    result_idx];
22536 				} else {
22537 					fine_digital_offset[result_idx] +=
22538 						(NPHY_RSSICAL_NPOLL / 2);
22539 					fine_digital_offset[result_idx] /=
22540 						NPHY_RSSICAL_NPOLL;
22541 				}
22542 
22543 				if (poll_results_min[result_idx] ==
22544 				    NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22545 					fine_digital_offset[result_idx] =
22546 						(NPHY_RSSICAL_NB_TARGET -
22547 						 NPHY_RSSICAL_MAXREAD - 1);
22548 
22549 				wlc_phy_scale_offset_rssi_nphy(
22550 					pi, 0x0,
22551 					(s8)
22552 					fine_digital_offset
22553 					[result_idx],
22554 					(result_idx / 2 == 0) ?
22555 					RADIO_MIMO_CORESEL_CORE1 :
22556 					RADIO_MIMO_CORESEL_CORE2,
22557 					(result_idx % 2 == 0) ?
22558 					NPHY_RAIL_I : NPHY_RAIL_Q,
22559 					NPHY_RSSI_SEL_NB);
22560 			}
22561 		}
22562 
22563 	}
22564 
22565 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22566 
22567 		if ((rxcore_state & (1 << core)) == 0)
22568 			continue;
22569 
22570 		for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22571 			if (wb_cnt == 0) {
22572 				rssi_type = NPHY_RSSI_SEL_W1;
22573 				target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22574 			} else {
22575 				rssi_type = NPHY_RSSI_SEL_W2;
22576 				target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22577 			}
22578 
22579 			wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22580 						       core ==
22581 						       PHY_CORE_0 ?
22582 						       RADIO_MIMO_CORESEL_CORE1
22583 						       :
22584 						       RADIO_MIMO_CORESEL_CORE2,
22585 						       NPHY_RAIL_I, rssi_type);
22586 			wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22587 						       core ==
22588 						       PHY_CORE_0 ?
22589 						       RADIO_MIMO_CORESEL_CORE1
22590 						       :
22591 						       RADIO_MIMO_CORESEL_CORE2,
22592 						       NPHY_RAIL_Q, rssi_type);
22593 
22594 			wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22595 					       NPHY_RSSICAL_NPOLL);
22596 
22597 			for (result_idx = 0; result_idx < 4; result_idx++) {
22598 				if (core == result_idx / 2) {
22599 					fine_digital_offset[result_idx] =
22600 						(target_code *
22601 						 NPHY_RSSICAL_NPOLL) -
22602 						poll_result_core[result_idx];
22603 					if (fine_digital_offset[result_idx] <
22604 					    0) {
22605 						fine_digital_offset[result_idx]
22606 							= abs(
22607 							    fine_digital_offset
22608 							    [result_idx]);
22609 						fine_digital_offset[result_idx]
22610 							+= (NPHY_RSSICAL_NPOLL
22611 							    / 2);
22612 						fine_digital_offset[result_idx]
22613 							/= NPHY_RSSICAL_NPOLL;
22614 						fine_digital_offset[result_idx]
22615 							= -fine_digital_offset
22616 								[result_idx];
22617 					} else {
22618 						fine_digital_offset[result_idx]
22619 							+= (NPHY_RSSICAL_NPOLL
22620 							    / 2);
22621 						fine_digital_offset[result_idx]
22622 							/= NPHY_RSSICAL_NPOLL;
22623 					}
22624 
22625 					wlc_phy_scale_offset_rssi_nphy(
22626 						pi, 0x0,
22627 						(s8)
22628 						fine_digital_offset
22629 						[core *
22630 						 2],
22631 						(core == PHY_CORE_0) ?
22632 						RADIO_MIMO_CORESEL_CORE1 :
22633 						RADIO_MIMO_CORESEL_CORE2,
22634 						(result_idx % 2 == 0) ?
22635 						NPHY_RAIL_I :
22636 						NPHY_RAIL_Q,
22637 						rssi_type);
22638 				}
22639 			}
22640 
22641 		}
22642 	}
22643 
22644 	write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22645 	write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22646 
22647 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22648 
22649 	mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22650 	mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22651 	mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22652 
22653 	mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22654 	mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22655 	mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22656 
22657 	write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22658 	write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22659 	write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22660 	write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22661 	write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22662 	write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22663 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22664 		write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22665 		write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22666 		write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22667 		write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22668 	}
22669 	write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22670 	write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22671 	write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22672 	write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22673 	write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22674 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22675 		write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22676 		write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22677 		write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22678 		write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22679 	}
22680 	write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22681 	write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22682 
22683 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
22684 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22685 			pi->rssical_cache.rssical_radio_regs_2G[0] =
22686 				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22687 			pi->rssical_cache.rssical_radio_regs_2G[1] =
22688 				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22689 		} else {
22690 			pi->rssical_cache.rssical_radio_regs_2G[0] =
22691 				read_radio_reg(pi,
22692 					       RADIO_2056_RX_RSSI_MISC |
22693 					       RADIO_2056_RX0);
22694 			pi->rssical_cache.rssical_radio_regs_2G[1] =
22695 				read_radio_reg(pi,
22696 					       RADIO_2056_RX_RSSI_MISC |
22697 					       RADIO_2056_RX1);
22698 		}
22699 
22700 		pi->rssical_cache.rssical_phyregs_2G[0] =
22701 			read_phy_reg(pi, 0x1a6);
22702 		pi->rssical_cache.rssical_phyregs_2G[1] =
22703 			read_phy_reg(pi, 0x1ac);
22704 		pi->rssical_cache.rssical_phyregs_2G[2] =
22705 			read_phy_reg(pi, 0x1b2);
22706 		pi->rssical_cache.rssical_phyregs_2G[3] =
22707 			read_phy_reg(pi, 0x1b8);
22708 		pi->rssical_cache.rssical_phyregs_2G[4] =
22709 			read_phy_reg(pi, 0x1a4);
22710 		pi->rssical_cache.rssical_phyregs_2G[5] =
22711 			read_phy_reg(pi, 0x1aa);
22712 		pi->rssical_cache.rssical_phyregs_2G[6] =
22713 			read_phy_reg(pi, 0x1b0);
22714 		pi->rssical_cache.rssical_phyregs_2G[7] =
22715 			read_phy_reg(pi, 0x1b6);
22716 		pi->rssical_cache.rssical_phyregs_2G[8] =
22717 			read_phy_reg(pi, 0x1a5);
22718 		pi->rssical_cache.rssical_phyregs_2G[9] =
22719 			read_phy_reg(pi, 0x1ab);
22720 		pi->rssical_cache.rssical_phyregs_2G[10] =
22721 			read_phy_reg(pi, 0x1b1);
22722 		pi->rssical_cache.rssical_phyregs_2G[11] =
22723 			read_phy_reg(pi, 0x1b7);
22724 
22725 		pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22726 	} else {
22727 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22728 			pi->rssical_cache.rssical_radio_regs_5G[0] =
22729 				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22730 			pi->rssical_cache.rssical_radio_regs_5G[1] =
22731 				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22732 		} else {
22733 			pi->rssical_cache.rssical_radio_regs_5G[0] =
22734 				read_radio_reg(pi,
22735 					       RADIO_2056_RX_RSSI_MISC |
22736 					       RADIO_2056_RX0);
22737 			pi->rssical_cache.rssical_radio_regs_5G[1] =
22738 				read_radio_reg(pi,
22739 					       RADIO_2056_RX_RSSI_MISC |
22740 					       RADIO_2056_RX1);
22741 		}
22742 
22743 		pi->rssical_cache.rssical_phyregs_5G[0] =
22744 			read_phy_reg(pi, 0x1a6);
22745 		pi->rssical_cache.rssical_phyregs_5G[1] =
22746 			read_phy_reg(pi, 0x1ac);
22747 		pi->rssical_cache.rssical_phyregs_5G[2] =
22748 			read_phy_reg(pi, 0x1b2);
22749 		pi->rssical_cache.rssical_phyregs_5G[3] =
22750 			read_phy_reg(pi, 0x1b8);
22751 		pi->rssical_cache.rssical_phyregs_5G[4] =
22752 			read_phy_reg(pi, 0x1a4);
22753 		pi->rssical_cache.rssical_phyregs_5G[5] =
22754 			read_phy_reg(pi, 0x1aa);
22755 		pi->rssical_cache.rssical_phyregs_5G[6] =
22756 			read_phy_reg(pi, 0x1b0);
22757 		pi->rssical_cache.rssical_phyregs_5G[7] =
22758 			read_phy_reg(pi, 0x1b6);
22759 		pi->rssical_cache.rssical_phyregs_5G[8] =
22760 			read_phy_reg(pi, 0x1a5);
22761 		pi->rssical_cache.rssical_phyregs_5G[9] =
22762 			read_phy_reg(pi, 0x1ab);
22763 		pi->rssical_cache.rssical_phyregs_5G[10] =
22764 			read_phy_reg(pi, 0x1b1);
22765 		pi->rssical_cache.rssical_phyregs_5G[11] =
22766 			read_phy_reg(pi, 0x1b7);
22767 
22768 		pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22769 	}
22770 
22771 	wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22772 	wlc_phy_clip_det_nphy(pi, 1, clip_state);
22773 }
22774 
wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy * pi,u8 rssi_type)22775 static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
22776 {
22777 	s32 target_code;
22778 	u16 classif_state;
22779 	u16 clip_state[2];
22780 	u16 rssi_ctrl_state[2], pd_state[2];
22781 	u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
22782 	u16 rfctrlintc_override_val;
22783 	u16 clip_off[] = { 0xffff, 0xffff };
22784 	u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
22785 	u8 vcm, min_vcm, vcm_tmp[4];
22786 	u8 vcm_final[4] = { 0, 0, 0, 0 };
22787 	u8 result_idx, ctr;
22788 	s32 poll_results[4][4] = {
22789 		{0, 0, 0, 0},
22790 		{0, 0, 0, 0},
22791 		{0, 0, 0, 0},
22792 		{0, 0, 0, 0}
22793 	};
22794 	s32 poll_miniq[4][2] = {
22795 		{0, 0},
22796 		{0, 0},
22797 		{0, 0},
22798 		{0, 0}
22799 	};
22800 	s32 min_d, curr_d;
22801 	s32 fine_digital_offset[4];
22802 	s32 poll_results_min[4] = { 0, 0, 0, 0 };
22803 	s32 min_poll;
22804 
22805 	switch (rssi_type) {
22806 	case NPHY_RSSI_SEL_NB:
22807 		target_code = NPHY_RSSICAL_NB_TARGET;
22808 		break;
22809 	case NPHY_RSSI_SEL_W1:
22810 		target_code = NPHY_RSSICAL_W1_TARGET;
22811 		break;
22812 	case NPHY_RSSI_SEL_W2:
22813 		target_code = NPHY_RSSICAL_W2_TARGET;
22814 		break;
22815 	default:
22816 		return;
22817 	}
22818 
22819 	classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22820 	wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22821 	wlc_phy_clip_det_nphy(pi, 0, clip_state);
22822 	wlc_phy_clip_det_nphy(pi, 1, clip_off);
22823 
22824 	rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
22825 	rfctrlintc_override_val =
22826 		CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
22827 
22828 	rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
22829 	rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
22830 	write_phy_reg(pi, 0x91, rfctrlintc_override_val);
22831 	write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
22832 
22833 	rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
22834 	rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
22835 	write_phy_reg(pi, 0x92, rfctrlintc_override_val);
22836 	write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
22837 
22838 	pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
22839 		  RADIO_2055_WBRSSI_G2_PD;
22840 	pd_state[0] =
22841 		read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
22842 	pd_state[1] =
22843 		read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
22844 	mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
22845 	mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
22846 	rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
22847 			 RADIO_2055_WBRSSI_G2_SEL;
22848 	rssi_ctrl_state[0] =
22849 		read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
22850 	rssi_ctrl_state[1] =
22851 		read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
22852 	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22853 
22854 	wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22855 				       NPHY_RAIL_I, rssi_type);
22856 	wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22857 				       NPHY_RAIL_Q, rssi_type);
22858 
22859 	for (vcm = 0; vcm < 4; vcm++) {
22860 
22861 		vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
22862 		if (rssi_type != NPHY_RSSI_SEL_W2)
22863 			wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
22864 
22865 		wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
22866 				       NPHY_RSSICAL_NPOLL);
22867 
22868 		if ((rssi_type == NPHY_RSSI_SEL_W1)
22869 		    || (rssi_type == NPHY_RSSI_SEL_W2)) {
22870 			for (ctr = 0; ctr < 2; ctr++)
22871 				poll_miniq[vcm][ctr] =
22872 					min(poll_results[vcm][ctr * 2 + 0],
22873 					    poll_results[vcm][ctr * 2 + 1]);
22874 		}
22875 	}
22876 
22877 	for (result_idx = 0; result_idx < 4; result_idx++) {
22878 		min_d = NPHY_RSSICAL_MAXD;
22879 		min_vcm = 0;
22880 		min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
22881 		for (vcm = 0; vcm < 4; vcm++) {
22882 			curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
22883 				      poll_results[vcm][result_idx] :
22884 				      poll_miniq[vcm][result_idx / 2]) -
22885 				     (target_code * NPHY_RSSICAL_NPOLL));
22886 			if (curr_d < min_d) {
22887 				min_d = curr_d;
22888 				min_vcm = vcm;
22889 			}
22890 			if (poll_results[vcm][result_idx] < min_poll)
22891 				min_poll = poll_results[vcm][result_idx];
22892 		}
22893 		vcm_final[result_idx] = min_vcm;
22894 		poll_results_min[result_idx] = min_poll;
22895 	}
22896 
22897 	if (rssi_type != NPHY_RSSI_SEL_W2)
22898 		wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
22899 
22900 	for (result_idx = 0; result_idx < 4; result_idx++) {
22901 		fine_digital_offset[result_idx] =
22902 			(target_code * NPHY_RSSICAL_NPOLL) -
22903 			poll_results[vcm_final[result_idx]][result_idx];
22904 		if (fine_digital_offset[result_idx] < 0) {
22905 			fine_digital_offset[result_idx] =
22906 				abs(fine_digital_offset[result_idx]);
22907 			fine_digital_offset[result_idx] +=
22908 				(NPHY_RSSICAL_NPOLL / 2);
22909 			fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
22910 			fine_digital_offset[result_idx] =
22911 				-fine_digital_offset[result_idx];
22912 		} else {
22913 			fine_digital_offset[result_idx] +=
22914 				(NPHY_RSSICAL_NPOLL / 2);
22915 			fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
22916 		}
22917 
22918 		if (poll_results_min[result_idx] ==
22919 		    NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22920 			fine_digital_offset[result_idx] =
22921 				(target_code - NPHY_RSSICAL_MAXREAD - 1);
22922 
22923 		wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
22924 					       (s8)
22925 					       fine_digital_offset[result_idx],
22926 					       (result_idx / 2 ==
22927 						0) ? RADIO_MIMO_CORESEL_CORE1 :
22928 					       RADIO_MIMO_CORESEL_CORE2,
22929 					       (result_idx % 2 ==
22930 						0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
22931 					       rssi_type);
22932 	}
22933 
22934 	mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
22935 	mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
22936 	if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
22937 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22938 				     NPHY_RSSI_SEL_NB);
22939 	else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
22940 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22941 				     NPHY_RSSI_SEL_W1);
22942 	else /* RADIO_2055_WBRSSI_G2_SEL */
22943 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22944 				     NPHY_RSSI_SEL_W2);
22945 	if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
22946 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22947 				     NPHY_RSSI_SEL_NB);
22948 	else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
22949 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22950 				     NPHY_RSSI_SEL_W1);
22951 	else /* RADIO_2055_WBRSSI_G1_SEL */
22952 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22953 				     NPHY_RSSI_SEL_W2);
22954 	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
22955 
22956 	write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
22957 	write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
22958 	write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
22959 	write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
22960 
22961 	wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22962 	wlc_phy_clip_det_nphy(pi, 1, clip_state);
22963 
22964 	wlc_phy_resetcca_nphy(pi);
22965 }
22966 
wlc_phy_rssi_cal_nphy(struct brcms_phy * pi)22967 void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
22968 {
22969 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22970 		wlc_phy_rssi_cal_nphy_rev3(pi);
22971 	} else {
22972 		wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
22973 		wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
22974 		wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
22975 	}
22976 }
22977 
22978 int
wlc_phy_rssi_compute_nphy(struct brcms_phy * pi,struct d11rxhdr * rxh)22979 wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
22980 {
22981 	s16 rxpwr, rxpwr0, rxpwr1;
22982 	s16 phyRx2_l;
22983 
22984 	rxpwr = 0;
22985 	rxpwr0 = rxh->PhyRxStatus_1 & PRXS1_nphy_PWR0_MASK;
22986 	rxpwr1 = (rxh->PhyRxStatus_1 & PRXS1_nphy_PWR1_MASK) >> 8;
22987 
22988 	if (rxpwr0 > 127)
22989 		rxpwr0 -= 256;
22990 	if (rxpwr1 > 127)
22991 		rxpwr1 -= 256;
22992 
22993 	phyRx2_l = rxh->PhyRxStatus_2 & 0x00ff;
22994 	if (phyRx2_l > 127)
22995 		phyRx2_l -= 256;
22996 
22997 	if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
22998 		rxpwr0 = rxpwr1;
22999 		rxpwr1 = phyRx2_l;
23000 	}
23001 
23002 	if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
23003 		rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23004 	else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23005 		rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23006 	else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23007 		rxpwr = (rxpwr0 + rxpwr1) >> 1;
23008 
23009 	return rxpwr;
23010 }
23011 
23012 static void
wlc_phy_loadsampletable_nphy(struct brcms_phy * pi,struct cordic_iq * tone_buf,u16 num_samps)23013 wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23014 			     u16 num_samps)
23015 {
23016 	u16 t;
23017 	u32 *data_buf = NULL;
23018 
23019 	data_buf = kmalloc_array(num_samps, sizeof(u32), GFP_ATOMIC);
23020 	if (data_buf == NULL)
23021 		return;
23022 
23023 	if (pi->phyhang_avoid)
23024 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
23025 
23026 	for (t = 0; t < num_samps; t++)
23027 		data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23028 			      (((unsigned int)tone_buf[t].q) & 0x3ff);
23029 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23030 				 data_buf);
23031 
23032 	kfree(data_buf);
23033 
23034 	if (pi->phyhang_avoid)
23035 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
23036 }
23037 
23038 static u16
wlc_phy_gen_load_samples_nphy(struct brcms_phy * pi,u32 f_kHz,u16 max_val,u8 dac_test_mode)23039 wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23040 			      u8 dac_test_mode)
23041 {
23042 	u8 phy_bw, is_phybw40;
23043 	u16 num_samps, t, spur;
23044 	s32 theta = 0, rot = 0;
23045 	u32 tbl_len;
23046 	struct cordic_iq *tone_buf = NULL;
23047 
23048 	is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23049 	phy_bw = (is_phybw40 == 1) ? 40 : 20;
23050 	tbl_len = (phy_bw << 3);
23051 
23052 	if (dac_test_mode == 1) {
23053 		spur = read_phy_reg(pi, 0x01);
23054 		spur = (spur >> 15) & 1;
23055 		phy_bw = (spur == 1) ? 82 : 80;
23056 		phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23057 
23058 		tbl_len = (phy_bw << 1);
23059 	}
23060 
23061 	tone_buf = kmalloc_array(tbl_len, sizeof(struct cordic_iq),
23062 				 GFP_ATOMIC);
23063 	if (tone_buf == NULL)
23064 		return 0;
23065 
23066 	num_samps = (u16) tbl_len;
23067 	rot = ((f_kHz * 36) / phy_bw) / 100;
23068 	theta = 0;
23069 
23070 	for (t = 0; t < num_samps; t++) {
23071 
23072 		tone_buf[t] = cordic_calc_iq(theta);
23073 
23074 		theta += rot;
23075 
23076 		tone_buf[t].q = (s32)CORDIC_FLOAT(tone_buf[t].q * max_val);
23077 		tone_buf[t].i = (s32)CORDIC_FLOAT(tone_buf[t].i * max_val);
23078 	}
23079 
23080 	wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23081 
23082 	kfree(tone_buf);
23083 
23084 	return num_samps;
23085 }
23086 
23087 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)23088 wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23089 			u16 wait, u8 iqmode, u8 dac_test_mode,
23090 			bool modify_bbmult)
23091 {
23092 	u16 bb_mult;
23093 	u8 phy_bw, sample_cmd;
23094 	u16 orig_RfseqCoreActv;
23095 	u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4;
23096 
23097 	if (pi->phyhang_avoid)
23098 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
23099 
23100 	phy_bw = 20;
23101 	if (CHSPEC_IS40(pi->radio_chanspec))
23102 		phy_bw = 40;
23103 
23104 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23105 
23106 		lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23107 		lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23108 		if (!(lpf_bw_ctl_override3 | lpf_bw_ctl_override4)) {
23109 			wlc_phy_rfctrl_override_nphy_rev7(
23110 				pi,
23111 				(0x1 << 7),
23112 				wlc_phy_read_lpf_bw_ctl_nphy
23113 					(pi,
23114 					0), 0, 0,
23115 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
23116 
23117 			pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23118 		}
23119 		read_phy_reg(pi, 0x340); /* lpf_bw_ctl_miscreg3 */
23120 		read_phy_reg(pi, 0x341); /* lpf_bw_ctl_miscreg4 */
23121 	}
23122 
23123 	if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23124 
23125 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23126 					&bb_mult);
23127 		pi->nphy_bb_mult_save =
23128 			BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23129 	}
23130 
23131 	if (modify_bbmult) {
23132 		bb_mult = (phy_bw == 20) ? 100 : 71;
23133 		bb_mult = (bb_mult << 8) + bb_mult;
23134 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23135 					 &bb_mult);
23136 	}
23137 
23138 	if (pi->phyhang_avoid)
23139 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
23140 
23141 	write_phy_reg(pi, 0xc6, num_samps - 1);
23142 
23143 	if (loops != 0xffff)
23144 		write_phy_reg(pi, 0xc4, loops - 1);
23145 	else
23146 		write_phy_reg(pi, 0xc4, loops);
23147 
23148 	write_phy_reg(pi, 0xc5, wait);
23149 
23150 	orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23151 	or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23152 	if (iqmode) {
23153 
23154 		and_phy_reg(pi, 0xc2, 0x7FFF);
23155 
23156 		or_phy_reg(pi, 0xc2, 0x8000);
23157 	} else {
23158 
23159 		sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23160 		write_phy_reg(pi, 0xc3, sample_cmd);
23161 	}
23162 
23163 	SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23164 
23165 	write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23166 }
23167 
23168 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)23169 wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23170 		     u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23171 {
23172 	u16 num_samps;
23173 	u16 loops = 0xffff;
23174 	u16 wait = 0;
23175 
23176 	num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23177 						  dac_test_mode);
23178 	if (num_samps == 0)
23179 		return -EBADE;
23180 
23181 	wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23182 				dac_test_mode, modify_bbmult);
23183 
23184 	return 0;
23185 }
23186 
wlc_phy_stopplayback_nphy(struct brcms_phy * pi)23187 void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23188 {
23189 	u16 playback_status;
23190 	u16 bb_mult;
23191 
23192 	if (pi->phyhang_avoid)
23193 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
23194 
23195 	playback_status = read_phy_reg(pi, 0xc7);
23196 	if (playback_status & 0x1)
23197 		or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23198 	else if (playback_status & 0x2)
23199 		and_phy_reg(pi, 0xc2,
23200 			    (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23201 
23202 	and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23203 
23204 	if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23205 
23206 		bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23207 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23208 					 &bb_mult);
23209 
23210 		pi->nphy_bb_mult_save = 0;
23211 	}
23212 
23213 	if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23214 		if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23215 			wlc_phy_rfctrl_override_nphy_rev7(
23216 				pi,
23217 				(0x1 << 7),
23218 				0, 0, 1,
23219 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
23220 			pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23221 		}
23222 	}
23223 
23224 	if (pi->phyhang_avoid)
23225 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
23226 }
23227 
brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy * pi)23228 static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23229 {
23230 	u32 *tx_pwrctrl_tbl = NULL;
23231 	uint phyrev = pi->pubpi.phy_rev;
23232 
23233 	if (PHY_IPA(pi)) {
23234 		tx_pwrctrl_tbl =
23235 			wlc_phy_get_ipa_gaintbl_nphy(pi);
23236 	} else {
23237 		if (CHSPEC_IS5G(pi->radio_chanspec)) {
23238 			if (NREV_IS(phyrev, 3))
23239 				tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23240 			else if (NREV_IS(phyrev, 4))
23241 				tx_pwrctrl_tbl =
23242 					(pi->srom_fem5g.extpagain == 3) ?
23243 					nphy_tpc_5GHz_txgain_HiPwrEPA :
23244 					nphy_tpc_5GHz_txgain_rev4;
23245 			else
23246 				tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23247 		} else {
23248 			if (NREV_GE(phyrev, 7)) {
23249 				if (pi->pubpi.radiorev == 3)
23250 					tx_pwrctrl_tbl =
23251 						nphy_tpc_txgain_epa_2057rev3;
23252 				else if (pi->pubpi.radiorev == 5)
23253 					tx_pwrctrl_tbl =
23254 						nphy_tpc_txgain_epa_2057rev5;
23255 			} else {
23256 				if (NREV_GE(phyrev, 5) &&
23257 				   (pi->srom_fem2g.extpagain ==	3))
23258 					tx_pwrctrl_tbl =
23259 						nphy_tpc_txgain_HiPwrEPA;
23260 				else
23261 					tx_pwrctrl_tbl =
23262 						nphy_tpc_txgain_rev3;
23263 			}
23264 		}
23265 	}
23266 	return tx_pwrctrl_tbl;
23267 }
23268 
wlc_phy_get_tx_gain_nphy(struct brcms_phy * pi)23269 struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23270 {
23271 	u16 base_idx[2], curr_gain[2];
23272 	u8 core_no;
23273 	struct nphy_txgains target_gain;
23274 	u32 *tx_pwrctrl_tbl = NULL;
23275 
23276 	if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23277 		if (pi->phyhang_avoid)
23278 			wlc_phy_stay_in_carriersearch_nphy(pi, true);
23279 
23280 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23281 					curr_gain);
23282 
23283 		if (pi->phyhang_avoid)
23284 			wlc_phy_stay_in_carriersearch_nphy(pi, false);
23285 
23286 		for (core_no = 0; core_no < 2; core_no++) {
23287 			if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23288 				target_gain.ipa[core_no] =
23289 					curr_gain[core_no] & 0x0007;
23290 				target_gain.pad[core_no] =
23291 					((curr_gain[core_no] & 0x00F8) >> 3);
23292 				target_gain.pga[core_no] =
23293 					((curr_gain[core_no] & 0x0F00) >> 8);
23294 				target_gain.txgm[core_no] =
23295 					((curr_gain[core_no] & 0x7000) >> 12);
23296 				target_gain.txlpf[core_no] =
23297 					((curr_gain[core_no] & 0x8000) >> 15);
23298 			} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23299 				target_gain.ipa[core_no] =
23300 					curr_gain[core_no] & 0x000F;
23301 				target_gain.pad[core_no] =
23302 					((curr_gain[core_no] & 0x00F0) >> 4);
23303 				target_gain.pga[core_no] =
23304 					((curr_gain[core_no] & 0x0F00) >> 8);
23305 				target_gain.txgm[core_no] =
23306 					((curr_gain[core_no] & 0x7000) >> 12);
23307 			} else {
23308 				target_gain.ipa[core_no] =
23309 					curr_gain[core_no] & 0x0003;
23310 				target_gain.pad[core_no] =
23311 					((curr_gain[core_no] & 0x000C) >> 2);
23312 				target_gain.pga[core_no] =
23313 					((curr_gain[core_no] & 0x0070) >> 4);
23314 				target_gain.txgm[core_no] =
23315 					((curr_gain[core_no] & 0x0380) >> 7);
23316 			}
23317 		}
23318 	} else {
23319 		uint phyrev = pi->pubpi.phy_rev;
23320 
23321 		base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23322 		base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23323 		for (core_no = 0; core_no < 2; core_no++) {
23324 			if (NREV_GE(phyrev, 3)) {
23325 				tx_pwrctrl_tbl =
23326 					brcms_phy_get_tx_pwrctrl_tbl(pi);
23327 				if (NREV_GE(phyrev, 7)) {
23328 					target_gain.ipa[core_no] =
23329 						(tx_pwrctrl_tbl
23330 						 [base_idx[core_no]]
23331 						 >> 16) & 0x7;
23332 					target_gain.pad[core_no] =
23333 						(tx_pwrctrl_tbl
23334 						 [base_idx[core_no]]
23335 						 >> 19) & 0x1f;
23336 					target_gain.pga[core_no] =
23337 						(tx_pwrctrl_tbl
23338 						 [base_idx[core_no]]
23339 						 >> 24) & 0xf;
23340 					target_gain.txgm[core_no] =
23341 						(tx_pwrctrl_tbl
23342 						 [base_idx[core_no]]
23343 						 >> 28) & 0x7;
23344 					target_gain.txlpf[core_no] =
23345 						(tx_pwrctrl_tbl
23346 						 [base_idx[core_no]]
23347 						 >> 31) & 0x1;
23348 				} else {
23349 					target_gain.ipa[core_no] =
23350 						(tx_pwrctrl_tbl
23351 						 [base_idx[core_no]]
23352 						 >> 16) & 0xf;
23353 					target_gain.pad[core_no] =
23354 						(tx_pwrctrl_tbl
23355 						 [base_idx[core_no]]
23356 						 >> 20) & 0xf;
23357 					target_gain.pga[core_no] =
23358 						(tx_pwrctrl_tbl
23359 						 [base_idx[core_no]]
23360 						 >> 24) & 0xf;
23361 					target_gain.txgm[core_no] =
23362 						(tx_pwrctrl_tbl
23363 						[base_idx[core_no]]
23364 						 >> 28) & 0x7;
23365 				}
23366 			} else {
23367 				target_gain.ipa[core_no] =
23368 					(nphy_tpc_txgain[base_idx[core_no]] >>
23369 					 16) & 0x3;
23370 				target_gain.pad[core_no] =
23371 					(nphy_tpc_txgain[base_idx[core_no]] >>
23372 					 18) & 0x3;
23373 				target_gain.pga[core_no] =
23374 					(nphy_tpc_txgain[base_idx[core_no]] >>
23375 					 20) & 0x7;
23376 				target_gain.txgm[core_no] =
23377 					(nphy_tpc_txgain[base_idx[core_no]] >>
23378 					 23) & 0x7;
23379 			}
23380 		}
23381 	}
23382 
23383 	return target_gain;
23384 }
23385 
23386 static void
wlc_phy_iqcal_gainparams_nphy(struct brcms_phy * pi,u16 core_no,struct nphy_txgains target_gain,struct nphy_iqcal_params * params)23387 wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23388 			      struct nphy_txgains target_gain,
23389 			      struct nphy_iqcal_params *params)
23390 {
23391 	u8 k;
23392 	u16 gain_index;
23393 	u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23394 
23395 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23396 		if (NREV_GE(pi->pubpi.phy_rev, 7))
23397 			params->txlpf = target_gain.txlpf[core_no];
23398 
23399 		params->txgm = target_gain.txgm[core_no];
23400 		params->pga = target_gain.pga[core_no];
23401 		params->pad = target_gain.pad[core_no];
23402 		params->ipa = target_gain.ipa[core_no];
23403 		if (NREV_GE(pi->pubpi.phy_rev, 7))
23404 			params->cal_gain =
23405 				((params->txlpf << 15) | (params->txgm << 12) |
23406 				 (params->pga << 8) |
23407 				 (params->pad << 3) | (params->ipa));
23408 		else
23409 			params->cal_gain =
23410 				((params->txgm << 12) | (params->pga << 8) |
23411 				 (params->pad << 4) | (params->ipa));
23412 
23413 		params->ncorr[0] = 0x79;
23414 		params->ncorr[1] = 0x79;
23415 		params->ncorr[2] = 0x79;
23416 		params->ncorr[3] = 0x79;
23417 		params->ncorr[4] = 0x79;
23418 	} else {
23419 
23420 		gain_index = ((target_gain.pad[core_no] << 0) |
23421 			      (target_gain.pga[core_no] << 4) |
23422 			      (target_gain.txgm[core_no] << 8));
23423 
23424 		for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23425 			if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23426 			    gain_index)
23427 				break;
23428 		}
23429 
23430 		params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23431 		params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23432 		params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23433 		params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23434 				    (params->pad << 2));
23435 		params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23436 		params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23437 		params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23438 		params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23439 	}
23440 }
23441 
wlc_phy_txcal_radio_setup_nphy(struct brcms_phy * pi)23442 static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23443 {
23444 	u16 jtag_core, core;
23445 
23446 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23447 
23448 		for (core = 0; core <= 1; core++) {
23449 
23450 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23451 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23452 						TX_SSI_MASTER);
23453 
23454 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23455 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23456 						IQCAL_VCM_HG);
23457 
23458 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23459 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23460 						IQCAL_IDAC);
23461 
23462 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23463 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23464 						TSSI_VCM);
23465 
23466 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23467 
23468 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23469 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23470 						TX_SSI_MUX);
23471 
23472 			if (pi->pubpi.radiorev != 5)
23473 				pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23474 					READ_RADIO_REG3(pi, RADIO_2057, TX,
23475 							core,
23476 							TSSIA);
23477 
23478 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23479 			       READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23480 
23481 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23482 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23483 						TSSI_MISC1);
23484 
23485 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
23486 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23487 						 TX_SSI_MASTER, 0x0a);
23488 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23489 						 IQCAL_VCM_HG, 0x43);
23490 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23491 						 IQCAL_IDAC, 0x55);
23492 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23493 						 TSSI_VCM, 0x00);
23494 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23495 						 TSSIG, 0x00);
23496 				if (pi->use_int_tx_iqlo_cal_nphy) {
23497 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23498 							 core, TX_SSI_MUX, 0x4);
23499 					if (!(pi->
23500 					internal_tx_iqlo_cal_tapoff_intpa_nphy))
23501 						WRITE_RADIO_REG3(pi, RADIO_2057,
23502 								 TX, core,
23503 								 TSSIA, 0x31);
23504 					else
23505 						WRITE_RADIO_REG3(pi, RADIO_2057,
23506 								 TX, core,
23507 								 TSSIA, 0x21);
23508 				}
23509 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23510 						 TSSI_MISC1, 0x00);
23511 			} else {
23512 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23513 						 TX_SSI_MASTER, 0x06);
23514 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23515 						 IQCAL_VCM_HG, 0x43);
23516 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23517 						 IQCAL_IDAC, 0x55);
23518 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23519 						 TSSI_VCM, 0x00);
23520 
23521 				if (pi->pubpi.radiorev != 5)
23522 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23523 							 core, TSSIA, 0x00);
23524 				if (pi->use_int_tx_iqlo_cal_nphy) {
23525 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23526 							 core, TX_SSI_MUX,
23527 							 0x06);
23528 					if (!(pi->
23529 					internal_tx_iqlo_cal_tapoff_intpa_nphy))
23530 						WRITE_RADIO_REG3(pi, RADIO_2057,
23531 								 TX, core,
23532 								 TSSIG, 0x31);
23533 					else
23534 						WRITE_RADIO_REG3(pi, RADIO_2057,
23535 								 TX, core,
23536 								 TSSIG, 0x21);
23537 				}
23538 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23539 						 TSSI_MISC1, 0x00);
23540 			}
23541 		}
23542 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23543 
23544 		for (core = 0; core <= 1; core++) {
23545 			jtag_core =
23546 				(core ==
23547 				 PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23548 
23549 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23550 				read_radio_reg(pi,
23551 					       RADIO_2056_TX_TX_SSI_MASTER |
23552 					       jtag_core);
23553 
23554 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23555 				read_radio_reg(pi,
23556 					       RADIO_2056_TX_IQCAL_VCM_HG |
23557 					       jtag_core);
23558 
23559 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23560 				read_radio_reg(pi,
23561 					       RADIO_2056_TX_IQCAL_IDAC |
23562 					       jtag_core);
23563 
23564 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23565 				read_radio_reg(
23566 					pi,
23567 					RADIO_2056_TX_TSSI_VCM |
23568 					jtag_core);
23569 
23570 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23571 				read_radio_reg(pi,
23572 					       RADIO_2056_TX_TX_AMP_DET |
23573 					       jtag_core);
23574 
23575 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23576 				read_radio_reg(pi,
23577 					       RADIO_2056_TX_TX_SSI_MUX |
23578 					       jtag_core);
23579 
23580 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23581 				read_radio_reg(pi,
23582 					       RADIO_2056_TX_TSSIA | jtag_core);
23583 
23584 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23585 				read_radio_reg(pi,
23586 					       RADIO_2056_TX_TSSIG | jtag_core);
23587 
23588 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23589 				read_radio_reg(pi,
23590 					       RADIO_2056_TX_TSSI_MISC1 |
23591 					       jtag_core);
23592 
23593 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23594 				read_radio_reg(pi,
23595 					       RADIO_2056_TX_TSSI_MISC2 |
23596 					       jtag_core);
23597 
23598 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23599 				read_radio_reg(pi,
23600 					       RADIO_2056_TX_TSSI_MISC3 |
23601 					       jtag_core);
23602 
23603 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
23604 				write_radio_reg(pi,
23605 						RADIO_2056_TX_TX_SSI_MASTER |
23606 						jtag_core, 0x0a);
23607 				write_radio_reg(pi,
23608 						RADIO_2056_TX_IQCAL_VCM_HG |
23609 						jtag_core, 0x40);
23610 				write_radio_reg(pi,
23611 						RADIO_2056_TX_IQCAL_IDAC |
23612 						jtag_core, 0x55);
23613 				write_radio_reg(pi,
23614 						RADIO_2056_TX_TSSI_VCM |
23615 						jtag_core, 0x00);
23616 				write_radio_reg(pi,
23617 						RADIO_2056_TX_TX_AMP_DET |
23618 						jtag_core, 0x00);
23619 
23620 				if (PHY_IPA(pi)) {
23621 					write_radio_reg(
23622 						pi,
23623 						RADIO_2056_TX_TX_SSI_MUX
23624 						| jtag_core, 0x4);
23625 					write_radio_reg(pi,
23626 							RADIO_2056_TX_TSSIA |
23627 							jtag_core, 0x1);
23628 				} else {
23629 					write_radio_reg(
23630 						pi,
23631 						RADIO_2056_TX_TX_SSI_MUX
23632 						| jtag_core, 0x00);
23633 					write_radio_reg(pi,
23634 							RADIO_2056_TX_TSSIA |
23635 							jtag_core, 0x2f);
23636 				}
23637 				write_radio_reg(pi,
23638 						RADIO_2056_TX_TSSIG | jtag_core,
23639 						0x00);
23640 				write_radio_reg(pi,
23641 						RADIO_2056_TX_TSSI_MISC1 |
23642 						jtag_core, 0x00);
23643 
23644 				write_radio_reg(pi,
23645 						RADIO_2056_TX_TSSI_MISC2 |
23646 						jtag_core, 0x00);
23647 				write_radio_reg(pi,
23648 						RADIO_2056_TX_TSSI_MISC3 |
23649 						jtag_core, 0x00);
23650 			} else {
23651 				write_radio_reg(pi,
23652 						RADIO_2056_TX_TX_SSI_MASTER |
23653 						jtag_core, 0x06);
23654 				write_radio_reg(pi,
23655 						RADIO_2056_TX_IQCAL_VCM_HG |
23656 						jtag_core, 0x40);
23657 				write_radio_reg(pi,
23658 						RADIO_2056_TX_IQCAL_IDAC |
23659 						jtag_core, 0x55);
23660 				write_radio_reg(pi,
23661 						RADIO_2056_TX_TSSI_VCM |
23662 						jtag_core, 0x00);
23663 				write_radio_reg(pi,
23664 						RADIO_2056_TX_TX_AMP_DET |
23665 						jtag_core, 0x00);
23666 				write_radio_reg(pi,
23667 						RADIO_2056_TX_TSSIA | jtag_core,
23668 						0x00);
23669 
23670 				if (PHY_IPA(pi)) {
23671 
23672 					write_radio_reg(
23673 						pi,
23674 						RADIO_2056_TX_TX_SSI_MUX
23675 						| jtag_core, 0x06);
23676 					if (NREV_LT(pi->pubpi.phy_rev, 5))
23677 						write_radio_reg(
23678 							pi,
23679 							RADIO_2056_TX_TSSIG
23680 							| jtag_core,
23681 							0x11);
23682 					else
23683 						write_radio_reg(
23684 							pi,
23685 							RADIO_2056_TX_TSSIG
23686 							| jtag_core,
23687 							0x1);
23688 				} else {
23689 					write_radio_reg(
23690 						pi,
23691 						RADIO_2056_TX_TX_SSI_MUX
23692 						| jtag_core, 0x00);
23693 					write_radio_reg(pi,
23694 							RADIO_2056_TX_TSSIG |
23695 							jtag_core, 0x20);
23696 				}
23697 
23698 				write_radio_reg(pi,
23699 						RADIO_2056_TX_TSSI_MISC1 |
23700 						jtag_core, 0x00);
23701 				write_radio_reg(pi,
23702 						RADIO_2056_TX_TSSI_MISC2 |
23703 						jtag_core, 0x00);
23704 				write_radio_reg(pi,
23705 						RADIO_2056_TX_TSSI_MISC3 |
23706 						jtag_core, 0x00);
23707 			}
23708 		}
23709 	} else {
23710 
23711 		pi->tx_rx_cal_radio_saveregs[0] =
23712 			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23713 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23714 		pi->tx_rx_cal_radio_saveregs[1] =
23715 			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23716 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23717 
23718 		pi->tx_rx_cal_radio_saveregs[2] =
23719 			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23720 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23721 		pi->tx_rx_cal_radio_saveregs[3] =
23722 			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23723 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23724 
23725 		pi->tx_rx_cal_radio_saveregs[4] =
23726 			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23727 		pi->tx_rx_cal_radio_saveregs[5] =
23728 			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23729 
23730 		if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23731 		    0) {
23732 
23733 			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23734 			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23735 		} else {
23736 
23737 			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23738 			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23739 		}
23740 
23741 		if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23742 
23743 			or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23744 			or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23745 		} else {
23746 
23747 			and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23748 			and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23749 		}
23750 	}
23751 }
23752 
wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy * pi)23753 static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
23754 {
23755 	u16 jtag_core, core;
23756 
23757 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23758 		for (core = 0; core <= 1; core++) {
23759 
23760 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23761 					 TX_SSI_MASTER,
23762 					 pi->
23763 					 tx_rx_cal_radio_saveregs[(core * 11) +
23764 								  0]);
23765 
23766 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23767 					 pi->
23768 					 tx_rx_cal_radio_saveregs[(core * 11) +
23769 								  1]);
23770 
23771 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23772 					 pi->
23773 					 tx_rx_cal_radio_saveregs[(core * 11) +
23774 								  2]);
23775 
23776 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23777 					 pi->
23778 					 tx_rx_cal_radio_saveregs[(core * 11) +
23779 								  3]);
23780 
23781 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23782 					 pi->
23783 					 tx_rx_cal_radio_saveregs[(core * 11) +
23784 								  5]);
23785 
23786 			if (pi->pubpi.radiorev != 5)
23787 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23788 						 TSSIA,
23789 						 pi->tx_rx_cal_radio_saveregs
23790 							     [(core * 11) + 6]);
23791 
23792 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23793 					 pi->
23794 					 tx_rx_cal_radio_saveregs[(core * 11) +
23795 								  7]);
23796 
23797 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23798 					 pi->
23799 					 tx_rx_cal_radio_saveregs[(core * 11) +
23800 								  8]);
23801 		}
23802 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23803 		for (core = 0; core <= 1; core++) {
23804 			jtag_core = (core == PHY_CORE_0) ?
23805 				     RADIO_2056_TX0 : RADIO_2056_TX1;
23806 
23807 			write_radio_reg(pi,
23808 					RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23809 					pi->
23810 					tx_rx_cal_radio_saveregs[(core * 11) +
23811 								 0]);
23812 
23813 			write_radio_reg(pi,
23814 					RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23815 					pi->
23816 					tx_rx_cal_radio_saveregs[(core * 11) +
23817 								 1]);
23818 
23819 			write_radio_reg(pi,
23820 					RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23821 					pi->
23822 					tx_rx_cal_radio_saveregs[(core * 11) +
23823 								 2]);
23824 
23825 			write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23826 					pi->
23827 					tx_rx_cal_radio_saveregs[(core * 11) +
23828 								 3]);
23829 
23830 			write_radio_reg(pi,
23831 					RADIO_2056_TX_TX_AMP_DET | jtag_core,
23832 					pi->
23833 					tx_rx_cal_radio_saveregs[(core * 11) +
23834 								 4]);
23835 
23836 			write_radio_reg(pi,
23837 					RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23838 					pi->
23839 					tx_rx_cal_radio_saveregs[(core * 11) +
23840 								 5]);
23841 
23842 			write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23843 					pi->
23844 					tx_rx_cal_radio_saveregs[(core * 11) +
23845 								 6]);
23846 
23847 			write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23848 					pi->
23849 					tx_rx_cal_radio_saveregs[(core * 11) +
23850 								 7]);
23851 
23852 			write_radio_reg(pi,
23853 					RADIO_2056_TX_TSSI_MISC1 | jtag_core,
23854 					pi->
23855 					tx_rx_cal_radio_saveregs[(core * 11) +
23856 								 8]);
23857 
23858 			write_radio_reg(pi,
23859 					RADIO_2056_TX_TSSI_MISC2 | jtag_core,
23860 					pi->
23861 					tx_rx_cal_radio_saveregs[(core * 11) +
23862 								 9]);
23863 
23864 			write_radio_reg(pi,
23865 					RADIO_2056_TX_TSSI_MISC3 | jtag_core,
23866 					pi->
23867 					tx_rx_cal_radio_saveregs[(core * 11) +
23868 								 10]);
23869 		}
23870 	} else {
23871 
23872 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
23873 				pi->tx_rx_cal_radio_saveregs[0]);
23874 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
23875 				pi->tx_rx_cal_radio_saveregs[1]);
23876 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
23877 				pi->tx_rx_cal_radio_saveregs[2]);
23878 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
23879 				pi->tx_rx_cal_radio_saveregs[3]);
23880 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
23881 				pi->tx_rx_cal_radio_saveregs[4]);
23882 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
23883 				pi->tx_rx_cal_radio_saveregs[5]);
23884 	}
23885 }
23886 
wlc_phy_txcal_physetup_nphy(struct brcms_phy * pi)23887 static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
23888 {
23889 	u16 val, mask;
23890 
23891 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23892 		pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23893 		pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23894 
23895 		mask = ((0x3 << 8) | (0x3 << 10));
23896 		val = (0x2 << 8);
23897 		val |= (0x2 << 10);
23898 		mod_phy_reg(pi, 0xa6, mask, val);
23899 		mod_phy_reg(pi, 0xa7, mask, val);
23900 
23901 		val = read_phy_reg(pi, 0x8f);
23902 		pi->tx_rx_cal_phy_saveregs[2] = val;
23903 		val |= ((0x1 << 9) | (0x1 << 10));
23904 		write_phy_reg(pi, 0x8f, val);
23905 
23906 		val = read_phy_reg(pi, 0xa5);
23907 		pi->tx_rx_cal_phy_saveregs[3] = val;
23908 		val |= ((0x1 << 9) | (0x1 << 10));
23909 		write_phy_reg(pi, 0xa5, val);
23910 
23911 		pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
23912 		mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23913 
23914 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23915 					&val);
23916 		pi->tx_rx_cal_phy_saveregs[5] = val;
23917 		val = 0;
23918 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23919 					 &val);
23920 
23921 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23922 					&val);
23923 		pi->tx_rx_cal_phy_saveregs[6] = val;
23924 		val = 0;
23925 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23926 					 &val);
23927 
23928 		pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
23929 		pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
23930 
23931 		if (!(pi->use_int_tx_iqlo_cal_nphy))
23932 			wlc_phy_rfctrlintc_override_nphy(
23933 				pi,
23934 				NPHY_RfctrlIntc_override_PA,
23935 				1,
23936 				RADIO_MIMO_CORESEL_CORE1
23937 				|
23938 				RADIO_MIMO_CORESEL_CORE2);
23939 		else
23940 			wlc_phy_rfctrlintc_override_nphy(
23941 				pi,
23942 				NPHY_RfctrlIntc_override_PA,
23943 				0,
23944 				RADIO_MIMO_CORESEL_CORE1
23945 				|
23946 				RADIO_MIMO_CORESEL_CORE2);
23947 
23948 		wlc_phy_rfctrlintc_override_nphy(pi,
23949 						 NPHY_RfctrlIntc_override_TRSW,
23950 						 0x2, RADIO_MIMO_CORESEL_CORE1);
23951 		wlc_phy_rfctrlintc_override_nphy(pi,
23952 						 NPHY_RfctrlIntc_override_TRSW,
23953 						 0x8, RADIO_MIMO_CORESEL_CORE2);
23954 
23955 		pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
23956 		pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
23957 		mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
23958 			    0x29b, (0x1 << 0), (0) << 0);
23959 
23960 		mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
23961 			    0x29b, (0x1 << 0), (0) << 0);
23962 
23963 		if (NREV_IS(pi->pubpi.phy_rev, 7)
23964 		    || NREV_GE(pi->pubpi.phy_rev, 8))
23965 			wlc_phy_rfctrl_override_nphy_rev7(
23966 				pi, (0x1 << 7),
23967 				wlc_phy_read_lpf_bw_ctl_nphy
23968 					(pi,
23969 					0), 0, 0,
23970 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
23971 
23972 		if (pi->use_int_tx_iqlo_cal_nphy
23973 		    && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
23974 
23975 			if (NREV_IS(pi->pubpi.phy_rev, 7)) {
23976 
23977 				mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
23978 					      1 << 4);
23979 
23980 				if (CHSPEC_IS2G(pi->radio_chanspec)) {
23981 					mod_radio_reg(
23982 						pi,
23983 						RADIO_2057_PAD2G_TUNE_PUS_CORE0,
23984 						1, 0);
23985 					mod_radio_reg(
23986 						pi,
23987 						RADIO_2057_PAD2G_TUNE_PUS_CORE1,
23988 						1, 0);
23989 				} else {
23990 					mod_radio_reg(
23991 					     pi,
23992 					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
23993 					     1, 0);
23994 					mod_radio_reg(
23995 					     pi,
23996 					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
23997 					     1, 0);
23998 				}
23999 			} else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24000 				wlc_phy_rfctrl_override_nphy_rev7(
24001 					pi,
24002 					(0x1 << 3), 0,
24003 					0x3, 0,
24004 					NPHY_REV7_RFCTRLOVERRIDE_ID0);
24005 			}
24006 		}
24007 	} else {
24008 		pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24009 		pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24010 
24011 		mask = ((0x3 << 12) | (0x3 << 14));
24012 		val = (0x2 << 12);
24013 		val |= (0x2 << 14);
24014 		mod_phy_reg(pi, 0xa6, mask, val);
24015 		mod_phy_reg(pi, 0xa7, mask, val);
24016 
24017 		val = read_phy_reg(pi, 0xa5);
24018 		pi->tx_rx_cal_phy_saveregs[2] = val;
24019 		val |= ((0x1 << 12) | (0x1 << 13));
24020 		write_phy_reg(pi, 0xa5, val);
24021 
24022 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24023 					&val);
24024 		pi->tx_rx_cal_phy_saveregs[3] = val;
24025 		val |= 0x2000;
24026 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24027 					 &val);
24028 
24029 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24030 					&val);
24031 		pi->tx_rx_cal_phy_saveregs[4] = val;
24032 		val |= 0x2000;
24033 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24034 					 &val);
24035 
24036 		pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24037 		pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24038 		val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24039 		write_phy_reg(pi, 0x91, val);
24040 		write_phy_reg(pi, 0x92, val);
24041 	}
24042 }
24043 
wlc_phy_txcal_phycleanup_nphy(struct brcms_phy * pi)24044 static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24045 {
24046 	u16 mask;
24047 
24048 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24049 		write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24050 		write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24051 		write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24052 		write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24053 		write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24054 
24055 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24056 					 &pi->tx_rx_cal_phy_saveregs[5]);
24057 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24058 					 &pi->tx_rx_cal_phy_saveregs[6]);
24059 
24060 		write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24061 		write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24062 
24063 		write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24064 		write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24065 
24066 		if (NREV_IS(pi->pubpi.phy_rev, 7)
24067 		    || NREV_GE(pi->pubpi.phy_rev, 8))
24068 			wlc_phy_rfctrl_override_nphy_rev7(
24069 				pi, (0x1 << 7), 0, 0,
24070 				1,
24071 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
24072 
24073 		wlc_phy_resetcca_nphy(pi);
24074 
24075 		if (pi->use_int_tx_iqlo_cal_nphy
24076 		    && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24077 
24078 			if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24079 				if (CHSPEC_IS2G(pi->radio_chanspec)) {
24080 					mod_radio_reg(
24081 						pi,
24082 						RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24083 						1, 1);
24084 					mod_radio_reg(
24085 						pi,
24086 						RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24087 						1, 1);
24088 				} else {
24089 					mod_radio_reg(
24090 					     pi,
24091 					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24092 					     1, 1);
24093 					mod_radio_reg(
24094 					     pi,
24095 					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24096 					     1, 1);
24097 				}
24098 
24099 				mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24100 					      0);
24101 			} else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24102 				wlc_phy_rfctrl_override_nphy_rev7(
24103 					pi,
24104 					(0x1 << 3), 0,
24105 					0x3, 1,
24106 					NPHY_REV7_RFCTRLOVERRIDE_ID0);
24107 			}
24108 		}
24109 	} else {
24110 		mask = ((0x3 << 12) | (0x3 << 14));
24111 		mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24112 		mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24113 		write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24114 
24115 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24116 					 &pi->tx_rx_cal_phy_saveregs[3]);
24117 
24118 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24119 					 &pi->tx_rx_cal_phy_saveregs[4]);
24120 
24121 		write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24122 		write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24123 	}
24124 }
24125 
24126 void
wlc_phy_est_tonepwr_nphy(struct brcms_phy * pi,s32 * qdBm_pwrbuf,u8 num_samps)24127 wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24128 {
24129 	u16 tssi_reg;
24130 	s32 temp, pwrindex[2];
24131 	s32 idle_tssi[2];
24132 	s32 rssi_buf[4];
24133 	s32 tssival[2];
24134 	u8 tssi_type;
24135 
24136 	tssi_reg = read_phy_reg(pi, 0x1e9);
24137 
24138 	temp = (s32) (tssi_reg & 0x3f);
24139 	idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24140 
24141 	temp = (s32) ((tssi_reg >> 8) & 0x3f);
24142 	idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24143 
24144 	tssi_type =
24145 		CHSPEC_IS5G(pi->radio_chanspec) ?
24146 		(u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24147 
24148 	wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24149 
24150 	tssival[0] = rssi_buf[0] / ((s32) num_samps);
24151 	tssival[1] = rssi_buf[2] / ((s32) num_samps);
24152 
24153 	pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24154 	pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24155 
24156 	if (pwrindex[0] < 0)
24157 		pwrindex[0] = 0;
24158 	else if (pwrindex[0] > 63)
24159 		pwrindex[0] = 63;
24160 
24161 	if (pwrindex[1] < 0)
24162 		pwrindex[1] = 0;
24163 	else if (pwrindex[1] > 63)
24164 		pwrindex[1] = 63;
24165 
24166 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24167 				(u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24168 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24169 				(u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24170 }
24171 
wlc_phy_update_txcal_ladder_nphy(struct brcms_phy * pi,u16 core)24172 static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24173 {
24174 	int index;
24175 	u32 bbmult_scale;
24176 	u16 bbmult;
24177 	u16 tblentry;
24178 
24179 	static const struct nphy_txiqcal_ladder ladder_lo[] = {
24180 		{3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24181 		{25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24182 		{25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24183 	};
24184 
24185 	static const struct nphy_txiqcal_ladder ladder_iq[] = {
24186 		{3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24187 		{25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24188 		{100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24189 	};
24190 
24191 	bbmult = (core == PHY_CORE_0) ?
24192 		 ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24193 		 (pi->nphy_txcal_bbmult & 0xff);
24194 
24195 	for (index = 0; index < 18; index++) {
24196 		bbmult_scale = ladder_lo[index].percent * bbmult;
24197 		bbmult_scale /= 100;
24198 
24199 		tblentry =
24200 			((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24201 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24202 					 &tblentry);
24203 
24204 		bbmult_scale = ladder_iq[index].percent * bbmult;
24205 		bbmult_scale /= 100;
24206 
24207 		tblentry =
24208 			((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24209 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24210 					 16, &tblentry);
24211 	}
24212 }
24213 
wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy * pi,u8 core)24214 static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24215 {
24216 	u16 tmp;
24217 	tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24218 
24219 	tmp = (tmp & (0x7f << 8)) >> 8;
24220 	return (u8) tmp;
24221 }
24222 
24223 static void
wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy * pi,u8 idx0,u8 idx1)24224 wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24225 {
24226 	mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24227 
24228 	if (NREV_GT(pi->pubpi.phy_rev, 1))
24229 		mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24230 }
24231 
wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy * pi)24232 static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24233 {
24234 	u16 m0m1;
24235 
24236 	wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24237 
24238 	return m0m1;
24239 }
24240 
wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy * pi,u8 m0,u8 m1)24241 static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24242 {
24243 	u16 m0m1 = (u16) ((m0 << 8) | m1);
24244 
24245 	wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24246 	wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24247 }
24248 
24249 static void
wlc_phy_papd_cal_setup_nphy(struct brcms_phy * pi,struct nphy_papd_restore_state * state,u8 core)24250 wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24251 			    struct nphy_papd_restore_state *state, u8 core)
24252 {
24253 	s32 tone_freq;
24254 	u8 off_core;
24255 	u16 mixgain = 0;
24256 
24257 	off_core = core ^ 0x1;
24258 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24259 
24260 		if (NREV_IS(pi->pubpi.phy_rev, 7)
24261 		    || NREV_GE(pi->pubpi.phy_rev, 8))
24262 			wlc_phy_rfctrl_override_nphy_rev7(
24263 				pi, (0x1 << 7),
24264 				wlc_phy_read_lpf_bw_ctl_nphy
24265 					(pi,
24266 					0), 0, 0,
24267 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
24268 
24269 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24270 			if (pi->pubpi.radiorev == 5)
24271 				mixgain = (core == 0) ? 0x20 : 0x00;
24272 			else if ((pi->pubpi.radiorev == 7)
24273 				 || (pi->pubpi.radiorev == 8))
24274 				mixgain = 0x00;
24275 			else if ((pi->pubpi.radiorev <= 4)
24276 				 || (pi->pubpi.radiorev == 6))
24277 				mixgain = 0x00;
24278 		} else {
24279 			if ((pi->pubpi.radiorev == 4) ||
24280 			    (pi->pubpi.radiorev == 6))
24281 				mixgain = 0x50;
24282 			else if ((pi->pubpi.radiorev == 3)
24283 				 || (pi->pubpi.radiorev == 7)
24284 				 || (pi->pubpi.radiorev == 8))
24285 				mixgain = 0x0;
24286 		}
24287 
24288 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24289 						  mixgain, (1 << core), 0,
24290 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24291 
24292 		wlc_phy_rfctrl_override_1tomany_nphy(
24293 			pi,
24294 			NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24295 			1, (1 << core), 0);
24296 		wlc_phy_rfctrl_override_1tomany_nphy(
24297 			pi,
24298 			NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24299 			0, (1 << off_core), 0);
24300 
24301 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24302 						  0, 0x3, 0,
24303 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24304 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24305 						  (1 << core), 0,
24306 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24307 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24308 						  (1 << core), 0,
24309 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24310 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24311 						  (1 << core), 0,
24312 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24313 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24314 						  (1 << core), 0,
24315 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24316 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24317 						  (1 << core), 0,
24318 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24319 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24320 						  (1 << core), 0,
24321 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24322 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24323 						  (1 << core), 0,
24324 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24325 
24326 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24327 						  0, (1 << core), 0,
24328 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24329 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24330 						  (1 << core), 0,
24331 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24332 
24333 		state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24334 						    0xa6 : 0xa7);
24335 		state->afeoverride[core] =
24336 			read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24337 		state->afectrl[off_core] =
24338 			read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24339 		state->afeoverride[off_core] =
24340 			read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24341 
24342 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24343 			    (0x1 << 2), 0);
24344 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24345 				 0xa5), (0x1 << 2), (0x1 << 2));
24346 
24347 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24348 			    (0x1 << 2), (0x1 << 2));
24349 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24350 				 0x8f), (0x1 << 2), (0x1 << 2));
24351 
24352 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24353 			state->pwrup[core] =
24354 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24355 						TXRXCOUPLE_2G_PWRUP);
24356 			state->atten[core] =
24357 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24358 						TXRXCOUPLE_2G_ATTEN);
24359 			state->pwrup[off_core] =
24360 				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24361 						TXRXCOUPLE_2G_PWRUP);
24362 			state->atten[off_core] =
24363 				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24364 						TXRXCOUPLE_2G_ATTEN);
24365 
24366 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24367 					 TXRXCOUPLE_2G_PWRUP, 0xc);
24368 
24369 			if ((pi->pubpi.radiorev == 3) ||
24370 			    (pi->pubpi.radiorev == 4) ||
24371 			    (pi->pubpi.radiorev == 6))
24372 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24373 						 TXRXCOUPLE_2G_ATTEN, 0xf0);
24374 			else if (pi->pubpi.radiorev == 5)
24375 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24376 						 TXRXCOUPLE_2G_ATTEN,
24377 						 (core == 0) ? 0xf7 : 0xf2);
24378 			else if ((pi->pubpi.radiorev == 7)
24379 				 || (pi->pubpi.radiorev == 8))
24380 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24381 						 TXRXCOUPLE_2G_ATTEN, 0xf0);
24382 
24383 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24384 					 TXRXCOUPLE_2G_PWRUP, 0x0);
24385 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24386 					 TXRXCOUPLE_2G_ATTEN, 0xff);
24387 		} else {
24388 			state->pwrup[core] =
24389 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24390 						TXRXCOUPLE_5G_PWRUP);
24391 			state->atten[core] =
24392 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24393 						TXRXCOUPLE_5G_ATTEN);
24394 			state->pwrup[off_core] =
24395 				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24396 						TXRXCOUPLE_5G_PWRUP);
24397 			state->atten[off_core] =
24398 				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24399 						TXRXCOUPLE_5G_ATTEN);
24400 
24401 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24402 					 TXRXCOUPLE_5G_PWRUP, 0xc);
24403 
24404 			if ((pi->pubpi.radiorev == 7)
24405 			    || (pi->pubpi.radiorev == 8))
24406 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24407 						 TXRXCOUPLE_5G_ATTEN, 0xf4);
24408 
24409 			else
24410 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24411 						 TXRXCOUPLE_5G_ATTEN, 0xf0);
24412 
24413 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24414 					 TXRXCOUPLE_5G_PWRUP, 0x0);
24415 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24416 					 TXRXCOUPLE_5G_ATTEN, 0xff);
24417 		}
24418 
24419 		tone_freq = 4000;
24420 
24421 		wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24422 
24423 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24424 			    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24425 
24426 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24427 			    0x2a4, (0x1 << 13), (1) << 13);
24428 
24429 		mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24430 			    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24431 
24432 		mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24433 			    0x2a4, (0x1 << 13), (0) << 13);
24434 
24435 	} else {
24436 
24437 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24438 
24439 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24440 
24441 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24442 
24443 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24444 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24445 
24446 		state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24447 						    0xa6 : 0xa7);
24448 		state->afeoverride[core] =
24449 			read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24450 
24451 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24452 			    (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24453 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24454 				 0xa5),
24455 			    (0x1 << 0) |
24456 			    (0x1 << 1) |
24457 			    (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24458 
24459 		state->vga_master[core] =
24460 			READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24461 		WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24462 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24463 			state->fbmix[core] =
24464 				READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24465 						TXFBMIX_G);
24466 			state->intpa_master[core] =
24467 				READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24468 						INTPAG_MASTER);
24469 
24470 			WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24471 					 0x03);
24472 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24473 					 INTPAG_MASTER, 0x04);
24474 		} else {
24475 			state->fbmix[core] =
24476 				READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24477 						TXFBMIX_A);
24478 			state->intpa_master[core] =
24479 				READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24480 						INTPAA_MASTER);
24481 
24482 			WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24483 					 0x03);
24484 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24485 					 INTPAA_MASTER, 0x04);
24486 
24487 		}
24488 
24489 		tone_freq = 4000;
24490 
24491 		wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24492 
24493 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24494 			    0x29b, (0x1 << 0), (1) << 0);
24495 
24496 		mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24497 			    0x29b, (0x1 << 0), (0) << 0);
24498 
24499 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24500 	}
24501 }
24502 
24503 static void
wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy * pi,struct nphy_papd_restore_state * state)24504 wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24505 			      struct nphy_papd_restore_state *state)
24506 {
24507 	u8 core;
24508 
24509 	wlc_phy_stopplayback_nphy(pi);
24510 
24511 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24512 
24513 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24514 
24515 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
24516 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24517 						 TXRXCOUPLE_2G_PWRUP, 0);
24518 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24519 						 TXRXCOUPLE_2G_ATTEN,
24520 						 state->atten[core]);
24521 			} else {
24522 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24523 						 TXRXCOUPLE_5G_PWRUP, 0);
24524 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24525 						 TXRXCOUPLE_5G_ATTEN,
24526 						 state->atten[core]);
24527 			}
24528 		}
24529 
24530 		if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24531 			wlc_phy_rfctrl_override_nphy_rev7(
24532 				pi, (0x1 << 2),
24533 				1, 0x3, 0,
24534 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
24535 		else
24536 			wlc_phy_rfctrl_override_nphy_rev7(
24537 				pi, (0x1 << 2),
24538 				0, 0x3, 1,
24539 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
24540 
24541 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24542 						  0, 0x3, 1,
24543 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24544 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24545 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24546 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24547 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24548 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24549 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24550 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24551 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24552 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24553 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24554 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24555 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24556 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24557 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24558 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24559 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24560 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24561 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24562 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24563 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24564 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24565 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24566 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24567 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24568 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24569 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24570 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24571 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24572 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24573 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24574 
24575 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24576 
24577 			write_phy_reg(pi, (core == PHY_CORE_0) ?
24578 				      0xa6 : 0xa7, state->afectrl[core]);
24579 			write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24580 				      0xa5, state->afeoverride[core]);
24581 		}
24582 
24583 		wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24584 					    (state->mm & 0xff));
24585 
24586 		if (NREV_IS(pi->pubpi.phy_rev, 7)
24587 		    || NREV_GE(pi->pubpi.phy_rev, 8))
24588 			wlc_phy_rfctrl_override_nphy_rev7(
24589 				pi, (0x1 << 7), 0, 0,
24590 				1,
24591 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
24592 	} else {
24593 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24594 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24595 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24596 
24597 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24598 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24599 
24600 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24601 
24602 			WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24603 					 state->vga_master[core]);
24604 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
24605 				WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24606 						 TXFBMIX_G, state->fbmix[core]);
24607 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24608 						 INTPAG_MASTER,
24609 						 state->intpa_master[core]);
24610 			} else {
24611 				WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24612 						 TXFBMIX_A, state->fbmix[core]);
24613 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24614 						 INTPAA_MASTER,
24615 						 state->intpa_master[core]);
24616 			}
24617 
24618 			write_phy_reg(pi, (core == PHY_CORE_0) ?
24619 				      0xa6 : 0xa7, state->afectrl[core]);
24620 			write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24621 				      0xa5, state->afeoverride[core]);
24622 		}
24623 
24624 		wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24625 					    (state->mm & 0xff));
24626 
24627 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24628 	}
24629 }
24630 
24631 static void
wlc_phy_a1_nphy(struct brcms_phy * pi,u8 core,u32 winsz,u32 start,u32 end)24632 wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24633 		u32 end)
24634 {
24635 	u32 *buf, *src, *dst, sz;
24636 
24637 	sz = end - start + 1;
24638 
24639 	buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24640 	if (NULL == buf)
24641 		return;
24642 
24643 	src = buf;
24644 	dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24645 
24646 	wlc_phy_table_read_nphy(pi,
24647 				(core ==
24648 				 PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24649 				 NPHY_TBL_ID_EPSILONTBL1),
24650 				NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24651 
24652 	do {
24653 		u32 phy_a1, phy_a2;
24654 		s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24655 
24656 		phy_a1 = end - min(end, (winsz >> 1));
24657 		phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24658 			       end + (winsz >> 1));
24659 		phy_a3 = phy_a2 - phy_a1 + 1;
24660 		phy_a6 = 0;
24661 		phy_a7 = 0;
24662 
24663 		do {
24664 			wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24665 						    &phy_a5);
24666 			phy_a6 += phy_a4;
24667 			phy_a7 += phy_a5;
24668 		} while (phy_a2-- != phy_a1);
24669 
24670 		phy_a6 /= phy_a3;
24671 		phy_a7 /= phy_a3;
24672 		dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24673 	} while (end-- != start);
24674 
24675 	wlc_phy_table_write_nphy(pi,
24676 				 (core ==
24677 				  PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24678 				 NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24679 
24680 	kfree(buf);
24681 }
24682 
24683 static void
wlc_phy_a2_nphy(struct brcms_phy * pi,struct nphy_ipa_txcalgains * txgains,enum phy_cal_mode cal_mode,u8 core)24684 wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24685 		enum phy_cal_mode cal_mode, u8 core)
24686 {
24687 	u16 phy_a1, phy_a2, phy_a3;
24688 	u16 phy_a4, phy_a5;
24689 	u8 phy_a7, m[2];
24690 	u32 phy_a8 = 0;
24691 	struct nphy_txgains phy_a9;
24692 
24693 	if (NREV_LT(pi->pubpi.phy_rev, 3))
24694 		return;
24695 
24696 	phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24697 
24698 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24699 
24700 		phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24701 
24702 		if (CHSPEC_IS2G(pi->radio_chanspec))
24703 			phy_a5 = ((phy_a9.txlpf[core] << 15) |
24704 				  (phy_a9.txgm[core] << 12) |
24705 				  (phy_a9.pga[core] << 8) |
24706 				  (txgains->gains.pad[core] << 3) |
24707 				  (phy_a9.ipa[core]));
24708 		else
24709 			phy_a5 = ((phy_a9.txlpf[core] << 15) |
24710 				  (phy_a9.txgm[core] << 12) |
24711 				  (txgains->gains.pga[core] << 8) |
24712 				  (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24713 
24714 		wlc_phy_rfctrl_override_1tomany_nphy(
24715 			pi,
24716 			NPHY_REV7_RfctrlOverride_cmd_txgain,
24717 			phy_a5, (1 << core), 0);
24718 
24719 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24720 			if ((pi->pubpi.radiorev <= 4)
24721 			    || (pi->pubpi.radiorev == 6))
24722 				m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24723 					  60 : 79;
24724 			else
24725 				m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24726 					  45 : 64;
24727 		} else {
24728 			m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24729 		}
24730 
24731 		m[phy_a7] = 0;
24732 		wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24733 
24734 		phy_a2 = 63;
24735 
24736 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24737 			if ((pi->pubpi.radiorev == 4)
24738 			    || (pi->pubpi.radiorev == 6)) {
24739 				phy_a1 = 30;
24740 				phy_a3 = 30;
24741 			} else {
24742 				phy_a1 = 25;
24743 				phy_a3 = 25;
24744 			}
24745 		} else {
24746 			if ((pi->pubpi.radiorev == 5)
24747 			    || (pi->pubpi.radiorev == 7)
24748 			    || (pi->pubpi.radiorev == 8)) {
24749 				phy_a1 = 25;
24750 				phy_a3 = 25;
24751 			} else {
24752 				phy_a1 = 35;
24753 				phy_a3 = 35;
24754 			}
24755 		}
24756 
24757 		if (cal_mode == CAL_GCTRL) {
24758 			if ((pi->pubpi.radiorev == 5)
24759 			    && (CHSPEC_IS2G(pi->radio_chanspec)))
24760 				phy_a1 = 55;
24761 			else if (((pi->pubpi.radiorev == 7) &&
24762 				  (CHSPEC_IS2G(pi->radio_chanspec))) ||
24763 				 ((pi->pubpi.radiorev == 8) &&
24764 				  (CHSPEC_IS2G(pi->radio_chanspec))))
24765 				phy_a1 = 60;
24766 			else
24767 				phy_a1 = 63;
24768 
24769 		} else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
24770 
24771 			phy_a1 = 35;
24772 			phy_a3 = 35;
24773 		}
24774 
24775 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24776 			    0x29b, (0x1 << 0), (1) << 0);
24777 
24778 		mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24779 			    0x29b, (0x1 << 0), (0) << 0);
24780 
24781 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24782 			    0x2a4, (0x1 << 13), (1) << 13);
24783 
24784 		mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24785 			    0x2a4, (0x1 << 13), (0) << 13);
24786 
24787 		write_phy_reg(pi, 0x2a1, 0x80);
24788 		write_phy_reg(pi, 0x2a2, 0x100);
24789 
24790 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24791 			    0x2a4, (0x7 << 4), (11) << 4);
24792 
24793 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24794 			    0x2a4, (0x7 << 8), (11) << 8);
24795 
24796 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24797 			    0x2a4, (0x7 << 0), (0x3) << 0);
24798 
24799 		write_phy_reg(pi, 0x2e5, 0x20);
24800 
24801 		mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24802 
24803 		mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24804 
24805 		mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24806 
24807 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24808 						  1, ((core == 0) ? 1 : 2), 0,
24809 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24810 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24811 						  0, ((core == 0) ? 2 : 1), 0,
24812 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24813 
24814 		write_phy_reg(pi, 0x2be, 1);
24815 		SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24816 
24817 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24818 						  0, 0x3, 0,
24819 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24820 
24821 		wlc_phy_table_write_nphy(pi,
24822 					 (core ==
24823 					  PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24824 					 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24825 					 32, &phy_a8);
24826 
24827 		if (cal_mode != CAL_GCTRL) {
24828 			if (CHSPEC_IS5G(pi->radio_chanspec))
24829 				wlc_phy_a1_nphy(pi, core, 5, 0, 35);
24830 		}
24831 
24832 		wlc_phy_rfctrl_override_1tomany_nphy(
24833 			pi,
24834 			NPHY_REV7_RfctrlOverride_cmd_txgain,
24835 			phy_a5, (1 << core), 1);
24836 
24837 	} else {
24838 
24839 		if (txgains) {
24840 			if (txgains->useindex) {
24841 				phy_a4 = 15 - ((txgains->index) >> 3);
24842 				if (CHSPEC_IS2G(pi->radio_chanspec)) {
24843 					if (NREV_GE(pi->pubpi.phy_rev, 6) &&
24844 					    pi->sh->chip == BCMA_CHIP_ID_BCM47162) {
24845 						phy_a5 = 0x10f7 | (phy_a4 << 8);
24846 					} else if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24847 						phy_a5 = 0x00f7 | (phy_a4 << 8);
24848 					} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
24849 						phy_a5 = 0x10f7 | (phy_a4 << 8);
24850 					} else {
24851 						phy_a5 = 0x50f7 | (phy_a4 << 8);
24852 					}
24853 				} else {
24854 					phy_a5 = 0x70f7 | (phy_a4 << 8);
24855 				}
24856 				wlc_phy_rfctrl_override_nphy(pi,
24857 							     (0x1 << 13),
24858 							     phy_a5,
24859 							     (1 << core), 0);
24860 			} else {
24861 				wlc_phy_rfctrl_override_nphy(pi,
24862 							     (0x1 << 13),
24863 							     0x5bf7,
24864 							     (1 << core), 0);
24865 			}
24866 		}
24867 
24868 		if (CHSPEC_IS2G(pi->radio_chanspec))
24869 			m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
24870 		else
24871 			m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24872 
24873 		m[phy_a7] = 0;
24874 		wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24875 
24876 		phy_a2 = 63;
24877 
24878 		if (cal_mode == CAL_FULL) {
24879 			phy_a1 = 25;
24880 			phy_a3 = 25;
24881 		} else if (cal_mode == CAL_SOFT) {
24882 			phy_a1 = 25;
24883 			phy_a3 = 25;
24884 		} else if (cal_mode == CAL_GCTRL) {
24885 			phy_a1 = 63;
24886 			phy_a3 = 25;
24887 		} else {
24888 
24889 			phy_a1 = 25;
24890 			phy_a3 = 25;
24891 		}
24892 
24893 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24894 			    0x29b, (0x1 << 0), (1) << 0);
24895 
24896 		mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24897 			    0x29b, (0x1 << 0), (0) << 0);
24898 
24899 		if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24900 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24901 				    0x2a4, (0x1 << 13), (1) << 13);
24902 
24903 			mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24904 				    0x2a4, (0x1 << 13), (0) << 13);
24905 
24906 			write_phy_reg(pi, 0x2a1, 0x20);
24907 			write_phy_reg(pi, 0x2a2, 0x60);
24908 
24909 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24910 				    0x2a4, (0xf << 4), (9) << 4);
24911 
24912 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24913 				    0x2a4, (0xf << 8), (9) << 8);
24914 
24915 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24916 				    0x2a4, (0xf << 0), (0x2) << 0);
24917 
24918 			write_phy_reg(pi, 0x2e5, 0x20);
24919 		} else {
24920 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24921 				    0x2a4, (0x1 << 11), (1) << 11);
24922 
24923 			mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24924 				    0x2a4, (0x1 << 11), (0) << 11);
24925 
24926 			write_phy_reg(pi, 0x2a1, 0x80);
24927 			write_phy_reg(pi, 0x2a2, 0x600);
24928 
24929 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24930 				    0x2a4, (0x7 << 4), (0) << 4);
24931 
24932 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24933 				    0x2a4, (0x7 << 8), (0) << 8);
24934 
24935 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24936 				    0x2a4, (0x7 << 0), (0x3) << 0);
24937 
24938 			mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
24939 
24940 		}
24941 
24942 		mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24943 
24944 		mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24945 
24946 		mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24947 
24948 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
24949 
24950 		write_phy_reg(pi, 0x2be, 1);
24951 		SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24952 
24953 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24954 
24955 		wlc_phy_table_write_nphy(pi,
24956 					 (core ==
24957 					  PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24958 					 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24959 					 32, &phy_a8);
24960 
24961 		if (cal_mode != CAL_GCTRL)
24962 			wlc_phy_a1_nphy(pi, core, 5, 0, 40);
24963 	}
24964 }
24965 
wlc_phy_a3_nphy(struct brcms_phy * pi,u8 start_gain,u8 core)24966 static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
24967 {
24968 	int phy_a1;
24969 	int phy_a2;
24970 	bool phy_a3;
24971 	struct nphy_ipa_txcalgains phy_a4;
24972 	bool phy_a5 = false;
24973 	bool phy_a6 = true;
24974 	s32 phy_a7, phy_a8;
24975 	u32 phy_a9;
24976 	int phy_a10;
24977 	int phy_a12;
24978 	u8 phy_a13 = 0;
24979 	u8 phy_a14;
24980 	u8 *phy_a15 = NULL;
24981 
24982 	phy_a4.useindex = true;
24983 	phy_a12 = start_gain;
24984 
24985 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24986 
24987 		phy_a2 = 20;
24988 		phy_a1 = 1;
24989 
24990 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24991 			if (pi->pubpi.radiorev == 5) {
24992 
24993 				phy_a15 = pad_gain_codes_used_2057rev5;
24994 				phy_a13 =
24995 					ARRAY_SIZE(pad_gain_codes_used_2057rev5) - 1;
24996 
24997 			} else if ((pi->pubpi.radiorev == 7)
24998 				   || (pi->pubpi.radiorev == 8)) {
24999 
25000 				phy_a15 = pad_gain_codes_used_2057rev7;
25001 				phy_a13 =
25002 					ARRAY_SIZE(pad_gain_codes_used_2057rev7) - 1;
25003 
25004 			} else {
25005 
25006 				phy_a15 = pad_all_gain_codes_2057;
25007 				phy_a13 = ARRAY_SIZE(pad_all_gain_codes_2057) -
25008 					  1;
25009 			}
25010 
25011 		} else {
25012 
25013 			phy_a15 = pga_all_gain_codes_2057;
25014 			phy_a13 = ARRAY_SIZE(pga_all_gain_codes_2057) - 1;
25015 		}
25016 
25017 		phy_a14 = 0;
25018 
25019 		for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25020 			if (CHSPEC_IS2G(pi->radio_chanspec))
25021 				phy_a4.gains.pad[core] =
25022 					(u16) phy_a15[phy_a12];
25023 			else
25024 				phy_a4.gains.pga[core] =
25025 					(u16) phy_a15[phy_a12];
25026 
25027 			wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25028 
25029 			wlc_phy_table_read_nphy(pi,
25030 						(core ==
25031 						 PHY_CORE_0 ?
25032 						 NPHY_TBL_ID_EPSILONTBL0 :
25033 						 NPHY_TBL_ID_EPSILONTBL1), 1,
25034 						63, 32, &phy_a9);
25035 
25036 			wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25037 
25038 			phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25039 				  (phy_a8 == 4095) || (phy_a8 == -4096));
25040 
25041 			if (!phy_a6 && (phy_a3 != phy_a5)) {
25042 				if (!phy_a3)
25043 					phy_a12 -= (u8) phy_a1;
25044 				break;
25045 			}
25046 
25047 			if (phy_a3)
25048 				phy_a12 += (u8) phy_a1;
25049 			else
25050 				phy_a12 -= (u8) phy_a1;
25051 
25052 			if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25053 				if (phy_a12 < phy_a14)
25054 					phy_a12 = phy_a14;
25055 				else
25056 					phy_a12 = phy_a13;
25057 				break;
25058 			}
25059 
25060 			phy_a6 = false;
25061 			phy_a5 = phy_a3;
25062 		}
25063 
25064 	} else {
25065 		phy_a2 = 10;
25066 		phy_a1 = 8;
25067 		for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25068 			phy_a4.index = (u8) phy_a12;
25069 			wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25070 
25071 			wlc_phy_table_read_nphy(pi,
25072 						(core ==
25073 						 PHY_CORE_0 ?
25074 						 NPHY_TBL_ID_EPSILONTBL0 :
25075 						 NPHY_TBL_ID_EPSILONTBL1), 1,
25076 						63, 32, &phy_a9);
25077 
25078 			wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25079 
25080 			phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25081 				  (phy_a8 == 4095) || (phy_a8 == -4096));
25082 
25083 			if (!phy_a6 && (phy_a3 != phy_a5)) {
25084 				if (!phy_a3)
25085 					phy_a12 -= (u8) phy_a1;
25086 				break;
25087 			}
25088 
25089 			if (phy_a3)
25090 				phy_a12 += (u8) phy_a1;
25091 			else
25092 				phy_a12 -= (u8) phy_a1;
25093 
25094 			if ((phy_a12 < 0) || (phy_a12 > 127)) {
25095 				if (phy_a12 < 0)
25096 					phy_a12 = 0;
25097 				else
25098 					phy_a12 = 127;
25099 				break;
25100 			}
25101 
25102 			phy_a6 = false;
25103 			phy_a5 = phy_a3;
25104 		}
25105 
25106 	}
25107 
25108 	if (NREV_GE(pi->pubpi.phy_rev, 7))
25109 		return (u8) phy_a15[phy_a12];
25110 	else
25111 		return (u8) phy_a12;
25112 
25113 }
25114 
wlc_phy_a4(struct brcms_phy * pi,bool full_cal)25115 static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25116 {
25117 	struct nphy_ipa_txcalgains phy_b1[2];
25118 	struct nphy_papd_restore_state phy_b2;
25119 	bool phy_b3;
25120 	u8 phy_b4;
25121 	u8 phy_b5;
25122 	s16 phy_b6, phy_b7, phy_b8;
25123 	u16 phy_b9;
25124 	s16 phy_b10, phy_b11, phy_b12;
25125 
25126 	phy_b11 = 0;
25127 	phy_b12 = 0;
25128 	phy_b7 = 0;
25129 	phy_b8 = 0;
25130 	phy_b6 = 0;
25131 
25132 	if (pi->nphy_papd_skip == 1)
25133 		return;
25134 
25135 	phy_b3 = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
25136 			MCTL_EN_MAC));
25137 	if (!phy_b3)
25138 		wlapi_suspend_mac_and_wait(pi->sh->physhim);
25139 
25140 	wlc_phy_stay_in_carriersearch_nphy(pi, true);
25141 
25142 	pi->nphy_force_papd_cal = false;
25143 
25144 	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25145 		pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25146 			wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25147 
25148 	pi->nphy_papd_last_cal = pi->sh->now;
25149 	pi->nphy_papd_recal_counter++;
25150 
25151 	phy_b4 = pi->nphy_txpwrctrl;
25152 	wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25153 
25154 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25155 				 nphy_papd_scaltbl);
25156 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25157 				 nphy_papd_scaltbl);
25158 
25159 	phy_b9 = read_phy_reg(pi, 0x01);
25160 	mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25161 
25162 	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25163 		s32 i, val = 0;
25164 		for (i = 0; i < 64; i++)
25165 			wlc_phy_table_write_nphy(pi,
25166 						 ((phy_b5 ==
25167 						   PHY_CORE_0) ?
25168 						  NPHY_TBL_ID_EPSILONTBL0 :
25169 						  NPHY_TBL_ID_EPSILONTBL1), 1,
25170 						 i, 32, &val);
25171 	}
25172 
25173 	wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25174 
25175 	phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25176 	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25177 		wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25178 
25179 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25180 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25181 				if ((pi->pubpi.radiorev == 3)
25182 				    || (pi->pubpi.radiorev == 4)
25183 				    || (pi->pubpi.radiorev == 6)) {
25184 					pi->nphy_papd_cal_gain_index[phy_b5] =
25185 						23;
25186 				} else if (pi->pubpi.radiorev == 5) {
25187 					pi->nphy_papd_cal_gain_index[phy_b5] =
25188 						0;
25189 					pi->nphy_papd_cal_gain_index[phy_b5] =
25190 						wlc_phy_a3_nphy(
25191 							pi,
25192 							pi->
25193 							nphy_papd_cal_gain_index
25194 							[phy_b5],
25195 							phy_b5);
25196 
25197 				} else if ((pi->pubpi.radiorev == 7)
25198 					   || (pi->pubpi.radiorev == 8)) {
25199 
25200 					pi->nphy_papd_cal_gain_index[phy_b5] =
25201 						0;
25202 					pi->nphy_papd_cal_gain_index[phy_b5] =
25203 						wlc_phy_a3_nphy(
25204 							pi,
25205 							pi->
25206 							nphy_papd_cal_gain_index
25207 							[phy_b5],
25208 							phy_b5);
25209 
25210 				}
25211 
25212 				phy_b1[phy_b5].gains.pad[phy_b5] =
25213 					pi->nphy_papd_cal_gain_index[phy_b5];
25214 
25215 			} else {
25216 				pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25217 				pi->nphy_papd_cal_gain_index[phy_b5] =
25218 					wlc_phy_a3_nphy(
25219 						pi,
25220 						pi->
25221 						nphy_papd_cal_gain_index
25222 						[phy_b5], phy_b5);
25223 				phy_b1[phy_b5].gains.pga[phy_b5] =
25224 					pi->nphy_papd_cal_gain_index[phy_b5];
25225 			}
25226 		} else {
25227 			phy_b1[phy_b5].useindex = true;
25228 			phy_b1[phy_b5].index = 16;
25229 			phy_b1[phy_b5].index =
25230 				wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25231 						phy_b5);
25232 
25233 			pi->nphy_papd_cal_gain_index[phy_b5] =
25234 				15 - ((phy_b1[phy_b5].index) >> 3);
25235 		}
25236 
25237 		switch (pi->nphy_papd_cal_type) {
25238 		case 0:
25239 			wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25240 			break;
25241 		case 1:
25242 			wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25243 			break;
25244 		}
25245 
25246 		if (NREV_GE(pi->pubpi.phy_rev, 7))
25247 			wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25248 	}
25249 
25250 	if (NREV_LT(pi->pubpi.phy_rev, 7))
25251 		wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25252 
25253 	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25254 		int eps_offset = 0;
25255 
25256 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25257 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25258 				if (pi->pubpi.radiorev == 3)
25259 					eps_offset = -2;
25260 				else if (pi->pubpi.radiorev == 5)
25261 					eps_offset = 3;
25262 				else
25263 					eps_offset = -1;
25264 			} else {
25265 				eps_offset = 2;
25266 			}
25267 
25268 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25269 				phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25270 				phy_b10 = 0;
25271 				if ((pi->pubpi.radiorev == 3) ||
25272 				    (pi->pubpi.radiorev == 4) ||
25273 				    (pi->pubpi.radiorev == 6)) {
25274 					phy_b12 = -(
25275 					    nphy_papd_padgain_dlt_2g_2057rev3n4
25276 							     [phy_b8] + 1) / 2;
25277 					phy_b10 = -1;
25278 				} else if (pi->pubpi.radiorev == 5) {
25279 					phy_b12 = -(
25280 					    nphy_papd_padgain_dlt_2g_2057rev5
25281 							     [phy_b8] + 1) / 2;
25282 				} else if ((pi->pubpi.radiorev == 7) ||
25283 					   (pi->pubpi.radiorev == 8)) {
25284 					phy_b12 = -(
25285 					    nphy_papd_padgain_dlt_2g_2057rev7
25286 							     [phy_b8] + 1) / 2;
25287 				}
25288 			} else {
25289 				phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25290 				if ((pi->pubpi.radiorev == 3) ||
25291 				    (pi->pubpi.radiorev == 4) ||
25292 				    (pi->pubpi.radiorev == 6))
25293 					phy_b11 =
25294 						-(nphy_papd_pgagain_dlt_5g_2057
25295 						  [phy_b7]
25296 						  + 1) / 2;
25297 				else if ((pi->pubpi.radiorev == 7)
25298 					 || (pi->pubpi.radiorev == 8))
25299 					phy_b11 = -(
25300 					      nphy_papd_pgagain_dlt_5g_2057rev7
25301 							     [phy_b7] + 1) / 2;
25302 
25303 				phy_b10 = -9;
25304 			}
25305 
25306 			if (CHSPEC_IS2G(pi->radio_chanspec))
25307 				phy_b6 =
25308 					-60 + 27 + eps_offset + phy_b12 +
25309 					phy_b10;
25310 			else
25311 				phy_b6 =
25312 					-60 + 27 + eps_offset + phy_b11 +
25313 					phy_b10;
25314 
25315 			mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25316 				    0x29c, (0x1ff << 7), (phy_b6) << 7);
25317 
25318 			pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25319 		} else {
25320 			if (NREV_LT(pi->pubpi.phy_rev, 5))
25321 				eps_offset = 4;
25322 			else
25323 				eps_offset = 2;
25324 
25325 			phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25326 
25327 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25328 				phy_b11 =
25329 					-(nphy_papd_pga_gain_delta_ipa_2g[
25330 						  phy_b7] +
25331 					  1) / 2;
25332 				phy_b10 = 0;
25333 			} else {
25334 				phy_b11 =
25335 					-(nphy_papd_pga_gain_delta_ipa_5g[
25336 						  phy_b7] +
25337 					  1) / 2;
25338 				phy_b10 = -9;
25339 			}
25340 
25341 			phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25342 
25343 			mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25344 				    0x29c, (0x1ff << 7), (phy_b6) << 7);
25345 
25346 			pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25347 		}
25348 	}
25349 
25350 	mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25351 		    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25352 
25353 	mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25354 		    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25355 
25356 	if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25357 		mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25358 			    0x2a4, (0x1 << 13), (0) << 13);
25359 
25360 		mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25361 			    0x2a4, (0x1 << 13), (0) << 13);
25362 
25363 	} else {
25364 		mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25365 			    0x2a4, (0x1 << 11), (0) << 11);
25366 
25367 		mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25368 			    0x2a4, (0x1 << 11), (0) << 11);
25369 
25370 	}
25371 	pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25372 
25373 	write_phy_reg(pi, 0x01, phy_b9);
25374 
25375 	wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25376 
25377 	wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25378 	if (phy_b4 == PHY_TPC_HW_OFF) {
25379 		wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25380 					 (s8) (pi->nphy_txpwrindex[0].
25381 					       index_internal), false);
25382 		wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25383 					 (s8) (pi->nphy_txpwrindex[1].
25384 					       index_internal), false);
25385 	}
25386 
25387 	wlc_phy_stay_in_carriersearch_nphy(pi, false);
25388 
25389 	if (!phy_b3)
25390 		wlapi_enable_mac(pi->sh->physhim);
25391 }
25392 
wlc_phy_cal_perical_nphy_run(struct brcms_phy * pi,u8 caltype)25393 void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25394 {
25395 	struct nphy_txgains target_gain;
25396 	u8 tx_pwr_ctrl_state;
25397 	bool fullcal = true;
25398 	bool restore_tx_gain = false;
25399 	bool mphase;
25400 
25401 	if (PHY_MUTED(pi))
25402 		return;
25403 
25404 	if (caltype == PHY_PERICAL_AUTO)
25405 		fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25406 	else if (caltype == PHY_PERICAL_PARTIAL)
25407 		fullcal = false;
25408 
25409 	if (pi->cal_type_override != PHY_PERICAL_AUTO)
25410 		fullcal =
25411 			(pi->cal_type_override ==
25412 			 PHY_PERICAL_FULL) ? true : false;
25413 
25414 	if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT) {
25415 		if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25416 			wlc_phy_cal_perical_mphase_restart(pi);
25417 	}
25418 
25419 	if (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL)
25420 		wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25421 
25422 	wlapi_suspend_mac_and_wait(pi->sh->physhim);
25423 
25424 	wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25425 
25426 	if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25427 	    (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25428 		pi->nphy_cal_orig_pwr_idx[0] =
25429 			(u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25430 		pi->nphy_cal_orig_pwr_idx[1] =
25431 			(u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25432 
25433 		if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25434 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25435 						0x110, 16,
25436 						pi->nphy_cal_orig_tx_gain);
25437 		} else {
25438 			pi->nphy_cal_orig_tx_gain[0] = 0;
25439 			pi->nphy_cal_orig_tx_gain[1] = 0;
25440 		}
25441 	}
25442 	target_gain = wlc_phy_get_tx_gain_nphy(pi);
25443 	tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25444 	wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25445 
25446 	if (pi->antsel_type == ANTSEL_2x3)
25447 		wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25448 
25449 	mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25450 	if (!mphase) {
25451 
25452 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25453 			wlc_phy_precal_txgain_nphy(pi);
25454 			pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25455 			restore_tx_gain = true;
25456 
25457 			target_gain = pi->nphy_cal_target_gain;
25458 		}
25459 		if (0 ==
25460 		    wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25461 					    mphase)) {
25462 			if (PHY_IPA(pi))
25463 				wlc_phy_a4(pi, true);
25464 
25465 			wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25466 			wlapi_enable_mac(pi->sh->physhim);
25467 			wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25468 					     10000);
25469 			wlapi_suspend_mac_and_wait(pi->sh->physhim);
25470 			wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25471 
25472 			if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25473 					(pi->first_cal_after_assoc ||
25474 					(pi->cal_type_override ==
25475 					 PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25476 				wlc_phy_savecal_nphy(pi);
25477 
25478 				wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25479 
25480 				pi->nphy_perical_last = pi->sh->now;
25481 			}
25482 		}
25483 		if (caltype != PHY_PERICAL_AUTO)
25484 			wlc_phy_rssi_cal_nphy(pi);
25485 
25486 		if (pi->first_cal_after_assoc
25487 		    || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25488 			pi->first_cal_after_assoc = false;
25489 			wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25490 			wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25491 		}
25492 
25493 		if (NREV_GE(pi->pubpi.phy_rev, 3))
25494 			wlc_phy_radio205x_vcocal_nphy(pi);
25495 	} else {
25496 		switch (pi->mphase_cal_phase_id) {
25497 		case MPHASE_CAL_STATE_INIT:
25498 			pi->nphy_perical_last = pi->sh->now;
25499 			pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25500 
25501 			if (NREV_GE(pi->pubpi.phy_rev, 3))
25502 				wlc_phy_precal_txgain_nphy(pi);
25503 
25504 			pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25505 			pi->mphase_cal_phase_id++;
25506 			break;
25507 
25508 		case MPHASE_CAL_STATE_TXPHASE0:
25509 		case MPHASE_CAL_STATE_TXPHASE1:
25510 		case MPHASE_CAL_STATE_TXPHASE2:
25511 		case MPHASE_CAL_STATE_TXPHASE3:
25512 		case MPHASE_CAL_STATE_TXPHASE4:
25513 		case MPHASE_CAL_STATE_TXPHASE5:
25514 			if ((pi->radar_percal_mask & 0x10) != 0)
25515 				pi->nphy_rxcal_active = true;
25516 
25517 			if (wlc_phy_cal_txiqlo_nphy
25518 				    (pi, pi->nphy_cal_target_gain, fullcal,
25519 				    true) != 0) {
25520 
25521 				wlc_phy_cal_perical_mphase_reset(pi);
25522 				break;
25523 			}
25524 
25525 			if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25526 			    (pi->mphase_cal_phase_id ==
25527 			     MPHASE_CAL_STATE_TXPHASE4))
25528 				pi->mphase_cal_phase_id += 2;
25529 			else
25530 				pi->mphase_cal_phase_id++;
25531 			break;
25532 
25533 		case MPHASE_CAL_STATE_PAPDCAL:
25534 			if ((pi->radar_percal_mask & 0x2) != 0)
25535 				pi->nphy_rxcal_active = true;
25536 
25537 			if (PHY_IPA(pi))
25538 				wlc_phy_a4(pi, true);
25539 
25540 			pi->mphase_cal_phase_id++;
25541 			break;
25542 
25543 		case MPHASE_CAL_STATE_RXCAL:
25544 			if ((pi->radar_percal_mask & 0x1) != 0)
25545 				pi->nphy_rxcal_active = true;
25546 			if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25547 						  (pi->first_cal_after_assoc ||
25548 						   (pi->cal_type_override ==
25549 						    PHY_PERICAL_FULL)) ? 2 : 0,
25550 						  false) == 0)
25551 				wlc_phy_savecal_nphy(pi);
25552 
25553 			pi->mphase_cal_phase_id++;
25554 			break;
25555 
25556 		case MPHASE_CAL_STATE_RSSICAL:
25557 			if ((pi->radar_percal_mask & 0x4) != 0)
25558 				pi->nphy_rxcal_active = true;
25559 			wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25560 			wlc_phy_rssi_cal_nphy(pi);
25561 
25562 			if (NREV_GE(pi->pubpi.phy_rev, 3))
25563 				wlc_phy_radio205x_vcocal_nphy(pi);
25564 
25565 			restore_tx_gain = true;
25566 
25567 			if (pi->first_cal_after_assoc)
25568 				pi->mphase_cal_phase_id++;
25569 			else
25570 				wlc_phy_cal_perical_mphase_reset(pi);
25571 
25572 			break;
25573 
25574 		case MPHASE_CAL_STATE_IDLETSSI:
25575 			if ((pi->radar_percal_mask & 0x8) != 0)
25576 				pi->nphy_rxcal_active = true;
25577 
25578 			if (pi->first_cal_after_assoc) {
25579 				pi->first_cal_after_assoc = false;
25580 				wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25581 				wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25582 			}
25583 
25584 			wlc_phy_cal_perical_mphase_reset(pi);
25585 			break;
25586 
25587 		default:
25588 			wlc_phy_cal_perical_mphase_reset(pi);
25589 			break;
25590 		}
25591 	}
25592 
25593 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25594 		if (restore_tx_gain) {
25595 			if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25596 
25597 				wlc_phy_txpwr_index_nphy(pi, 1,
25598 							 pi->
25599 							 nphy_cal_orig_pwr_idx
25600 							 [0], false);
25601 				wlc_phy_txpwr_index_nphy(pi, 2,
25602 							 pi->
25603 							 nphy_cal_orig_pwr_idx
25604 							 [1], false);
25605 
25606 				pi->nphy_txpwrindex[0].index = -1;
25607 				pi->nphy_txpwrindex[1].index = -1;
25608 			} else {
25609 				wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25610 							 (s8) (pi->
25611 							       nphy_txpwrindex
25612 							       [0].
25613 							       index_internal),
25614 							 false);
25615 				wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25616 							 (s8) (pi->
25617 							       nphy_txpwrindex
25618 							       [1].
25619 							       index_internal),
25620 							 false);
25621 			}
25622 		}
25623 	}
25624 
25625 	wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25626 	wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25627 	wlapi_enable_mac(pi->sh->physhim);
25628 }
25629 
25630 int
wlc_phy_cal_txiqlo_nphy(struct brcms_phy * pi,struct nphy_txgains target_gain,bool fullcal,bool mphase)25631 wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25632 			bool fullcal, bool mphase)
25633 {
25634 	u16 val;
25635 	u16 tbl_buf[11];
25636 	u8 cal_cnt;
25637 	u16 cal_cmd;
25638 	u8 num_cals, max_cal_cmds;
25639 	u16 core_no, cal_type;
25640 	u16 diq_start = 0;
25641 	u8 phy_bw;
25642 	u16 max_val;
25643 	u16 tone_freq;
25644 	u16 gain_save[2];
25645 	u16 cal_gain[2];
25646 	struct nphy_iqcal_params cal_params[2];
25647 	u32 tbl_len;
25648 	const void *tbl_ptr;
25649 	bool ladder_updated[2];
25650 	u8 mphase_cal_lastphase = 0;
25651 	int bcmerror = 0;
25652 	bool phyhang_avoid_state = false;
25653 
25654 	static const u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
25655 		0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25656 		0x1902,
25657 		0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25658 		0x6407
25659 	};
25660 
25661 	static const u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
25662 		0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25663 		0x3200,
25664 		0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25665 		0x6407
25666 	};
25667 
25668 	static const u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
25669 		0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25670 		0x1202,
25671 		0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25672 		0x4707
25673 	};
25674 
25675 	static const u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
25676 		0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25677 		0x2300,
25678 		0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25679 		0x4707
25680 	};
25681 
25682 	static const u16 tbl_tx_iqlo_cal_startcoefs[] = {
25683 		0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25684 		0x0000
25685 	};
25686 
25687 	static const u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
25688 		0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25689 		0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25690 	};
25691 
25692 	static const u16 tbl_tx_iqlo_cal_cmds_recal[] = {
25693 		0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25694 		0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25695 	};
25696 
25697 	static const u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
25698 		0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25699 		0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25700 		0x0000
25701 	};
25702 
25703 	static const u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
25704 		0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25705 		0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25706 	};
25707 
25708 	static const u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
25709 		0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25710 		0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25711 	};
25712 
25713 	wlc_phy_stay_in_carriersearch_nphy(pi, true);
25714 
25715 	if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25716 		phyhang_avoid_state = pi->phyhang_avoid;
25717 		pi->phyhang_avoid = false;
25718 	}
25719 
25720 	if (CHSPEC_IS40(pi->radio_chanspec))
25721 		phy_bw = 40;
25722 	else
25723 		phy_bw = 20;
25724 
25725 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25726 
25727 	for (core_no = 0; core_no <= 1; core_no++) {
25728 		wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25729 					      &cal_params[core_no]);
25730 		cal_gain[core_no] = cal_params[core_no].cal_gain;
25731 	}
25732 
25733 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25734 
25735 	wlc_phy_txcal_radio_setup_nphy(pi);
25736 
25737 	wlc_phy_txcal_physetup_nphy(pi);
25738 
25739 	ladder_updated[0] = ladder_updated[1] = false;
25740 	if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
25741 	      (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
25742 	       && (CHSPEC_IS2G(pi->radio_chanspec))))) {
25743 
25744 		if (phy_bw == 40) {
25745 			tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
25746 			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
25747 		} else {
25748 			tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
25749 			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
25750 		}
25751 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
25752 					 16, tbl_ptr);
25753 
25754 		if (phy_bw == 40) {
25755 			tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
25756 			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
25757 		} else {
25758 			tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
25759 			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
25760 		}
25761 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
25762 					 16, tbl_ptr);
25763 	}
25764 
25765 	if (NREV_GE(pi->pubpi.phy_rev, 7))
25766 		write_phy_reg(pi, 0xc2, 0x8ad9);
25767 	else
25768 		write_phy_reg(pi, 0xc2, 0x8aa9);
25769 
25770 	max_val = 250;
25771 	tone_freq = (phy_bw == 20) ? 2500 : 5000;
25772 
25773 	if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25774 		wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
25775 		bcmerror = 0;
25776 	} else {
25777 		bcmerror =
25778 			wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
25779 					     false);
25780 	}
25781 
25782 	if (bcmerror == 0) {
25783 
25784 		if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25785 			tbl_ptr = pi->mphase_txcal_bestcoeffs;
25786 			tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25787 			if (NREV_LT(pi->pubpi.phy_rev, 3))
25788 				tbl_len -= 2;
25789 		} else {
25790 			if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
25791 
25792 				tbl_ptr = pi->nphy_txiqlocal_bestc;
25793 				tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25794 				if (NREV_LT(pi->pubpi.phy_rev, 3))
25795 					tbl_len -= 2;
25796 			} else {
25797 
25798 				fullcal = true;
25799 
25800 				if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25801 					tbl_ptr =
25802 					    tbl_tx_iqlo_cal_startcoefs_nphyrev3;
25803 					tbl_len = ARRAY_SIZE(
25804 					   tbl_tx_iqlo_cal_startcoefs_nphyrev3);
25805 				} else {
25806 					tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
25807 					tbl_len = ARRAY_SIZE(
25808 						    tbl_tx_iqlo_cal_startcoefs);
25809 				}
25810 			}
25811 		}
25812 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
25813 					 16, tbl_ptr);
25814 
25815 		if (fullcal) {
25816 			max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25817 				       ARRAY_SIZE(
25818 				tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
25819 				       ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
25820 		} else {
25821 			max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25822 				       ARRAY_SIZE(
25823 				tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
25824 				       ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
25825 		}
25826 
25827 		if (mphase) {
25828 			cal_cnt = pi->mphase_txcal_cmdidx;
25829 			if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
25830 				num_cals = cal_cnt + pi->mphase_txcal_numcmds;
25831 			else
25832 				num_cals = max_cal_cmds;
25833 		} else {
25834 			cal_cnt = 0;
25835 			num_cals = max_cal_cmds;
25836 		}
25837 
25838 		for (; cal_cnt < num_cals; cal_cnt++) {
25839 
25840 			if (fullcal) {
25841 				cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25842 					  tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
25843 					  [cal_cnt] :
25844 					  tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
25845 			} else {
25846 				cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25847 					  tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
25848 					cal_cnt]
25849 					  : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
25850 			}
25851 
25852 			core_no = ((cal_cmd & 0x3000) >> 12);
25853 			cal_type = ((cal_cmd & 0x0F00) >> 8);
25854 
25855 			if (NREV_GE(pi->pubpi.phy_rev, 6) ||
25856 			    (NREV_IS(pi->pubpi.phy_rev, 5) &&
25857 			     PHY_IPA(pi)
25858 			     && (CHSPEC_IS2G(pi->radio_chanspec)))) {
25859 				if (!ladder_updated[core_no]) {
25860 					wlc_phy_update_txcal_ladder_nphy(
25861 						pi,
25862 						core_no);
25863 					ladder_updated[core_no] = true;
25864 				}
25865 			}
25866 
25867 			val =
25868 				(cal_params[core_no].
25869 				 ncorr[cal_type] << 8) | NPHY_N_GCTL;
25870 			write_phy_reg(pi, 0xc1, val);
25871 
25872 			if ((cal_type == 1) || (cal_type == 3)
25873 			    || (cal_type == 4)) {
25874 
25875 				wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25876 							1, 69 + core_no, 16,
25877 							tbl_buf);
25878 
25879 				diq_start = tbl_buf[0];
25880 
25881 				tbl_buf[0] = 0;
25882 				wlc_phy_table_write_nphy(pi,
25883 							 NPHY_TBL_ID_IQLOCAL, 1,
25884 							 69 + core_no, 16,
25885 							 tbl_buf);
25886 			}
25887 
25888 			write_phy_reg(pi, 0xc0, cal_cmd);
25889 
25890 			SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
25891 				 20000);
25892 			if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
25893 				 "HW error: txiq calib"))
25894 				return -EIO;
25895 
25896 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25897 						tbl_len, 96, 16, tbl_buf);
25898 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25899 						 tbl_len, 64, 16, tbl_buf);
25900 
25901 			if ((cal_type == 1) || (cal_type == 3)
25902 			    || (cal_type == 4)) {
25903 
25904 				tbl_buf[0] = diq_start;
25905 
25906 			}
25907 
25908 		}
25909 
25910 		if (mphase) {
25911 			pi->mphase_txcal_cmdidx = num_cals;
25912 			if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
25913 				pi->mphase_txcal_cmdidx = 0;
25914 		}
25915 
25916 		mphase_cal_lastphase =
25917 			(NREV_LE(pi->pubpi.phy_rev, 2)) ?
25918 			MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
25919 
25920 		if (!mphase
25921 		    || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
25922 
25923 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
25924 						16, tbl_buf);
25925 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
25926 						 16, tbl_buf);
25927 
25928 			if (NREV_LT(pi->pubpi.phy_rev, 2)) {
25929 
25930 				tbl_buf[0] = 0;
25931 				tbl_buf[1] = 0;
25932 				tbl_buf[2] = 0;
25933 				tbl_buf[3] = 0;
25934 
25935 			}
25936 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
25937 						 16, tbl_buf);
25938 
25939 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
25940 						16, tbl_buf);
25941 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
25942 						 16, tbl_buf);
25943 
25944 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
25945 						 16, tbl_buf);
25946 
25947 			tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25948 			if (NREV_LT(pi->pubpi.phy_rev, 3))
25949 				tbl_len -= 2;
25950 
25951 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25952 						tbl_len, 96, 16,
25953 						pi->nphy_txiqlocal_bestc);
25954 
25955 			pi->nphy_txiqlocal_coeffsvalid = true;
25956 			pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25957 		} else {
25958 			tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25959 			if (NREV_LT(pi->pubpi.phy_rev, 3))
25960 				tbl_len -= 2;
25961 
25962 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25963 						tbl_len, 96, 16,
25964 						pi->mphase_txcal_bestcoeffs);
25965 		}
25966 
25967 		wlc_phy_stopplayback_nphy(pi);
25968 
25969 		write_phy_reg(pi, 0xc2, 0x0000);
25970 
25971 	}
25972 
25973 	wlc_phy_txcal_phycleanup_nphy(pi);
25974 
25975 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
25976 				 gain_save);
25977 
25978 	wlc_phy_txcal_radio_cleanup_nphy(pi);
25979 
25980 	if (NREV_LT(pi->pubpi.phy_rev, 2)) {
25981 		if (!mphase
25982 		    || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
25983 			wlc_phy_tx_iq_war_nphy(pi);
25984 	}
25985 
25986 	if (NREV_GE(pi->pubpi.phy_rev, 4))
25987 		pi->phyhang_avoid = phyhang_avoid_state;
25988 
25989 	wlc_phy_stay_in_carriersearch_nphy(pi, false);
25990 
25991 	return bcmerror;
25992 }
25993 
wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy * pi)25994 static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
25995 {
25996 	u16 tbl_buf[7];
25997 
25998 	if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
25999 	    (pi->nphy_txiqlocal_coeffsvalid)) {
26000 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26001 					ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
26002 
26003 		if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26004 		    (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26005 		    (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26006 		    (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26007 
26008 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26009 						 16, pi->nphy_txiqlocal_bestc);
26010 
26011 			tbl_buf[0] = 0;
26012 			tbl_buf[1] = 0;
26013 			tbl_buf[2] = 0;
26014 			tbl_buf[3] = 0;
26015 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26016 						 16, tbl_buf);
26017 
26018 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26019 						 16,
26020 						 &pi->nphy_txiqlocal_bestc[5]);
26021 
26022 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26023 						 16,
26024 						 &pi->nphy_txiqlocal_bestc[5]);
26025 		}
26026 	}
26027 }
26028 
26029 void
wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy * pi,u8 write,struct nphy_iq_comp * pcomp)26030 wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26031 			  struct nphy_iq_comp *pcomp)
26032 {
26033 	if (write) {
26034 		write_phy_reg(pi, 0x9a, pcomp->a0);
26035 		write_phy_reg(pi, 0x9b, pcomp->b0);
26036 		write_phy_reg(pi, 0x9c, pcomp->a1);
26037 		write_phy_reg(pi, 0x9d, pcomp->b1);
26038 	} else {
26039 		pcomp->a0 = read_phy_reg(pi, 0x9a);
26040 		pcomp->b0 = read_phy_reg(pi, 0x9b);
26041 		pcomp->a1 = read_phy_reg(pi, 0x9c);
26042 		pcomp->b1 = read_phy_reg(pi, 0x9d);
26043 	}
26044 }
26045 
26046 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)26047 wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26048 		       u16 num_samps, u8 wait_time, u8 wait_for_crs)
26049 {
26050 	u8 core;
26051 
26052 	write_phy_reg(pi, 0x12b, num_samps);
26053 	mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26054 	mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26055 		    (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26056 
26057 	mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26058 
26059 	SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26060 		 10000);
26061 	if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26062 		 "HW error: rxiq est"))
26063 		return;
26064 
26065 	if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26066 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26067 			est[core].i_pwr =
26068 				(read_phy_reg(pi,
26069 					      NPHY_IqestipwrAccHi(core)) << 16)
26070 				| read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26071 			est[core].q_pwr =
26072 				(read_phy_reg(pi,
26073 					      NPHY_IqestqpwrAccHi(core)) << 16)
26074 				| read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26075 			est[core].iq_prod =
26076 				(read_phy_reg(pi,
26077 					      NPHY_IqestIqAccHi(core)) << 16) |
26078 				read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26079 		}
26080 	}
26081 }
26082 
26083 #define CAL_RETRY_CNT 2
wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy * pi,u8 core_mask)26084 static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26085 {
26086 	u8 curr_core;
26087 	struct phy_iq_est est[PHY_CORE_MAX];
26088 	struct nphy_iq_comp old_comp, new_comp;
26089 	s32 iq = 0;
26090 	u32 ii = 0, qq = 0;
26091 	s16 iq_nbits, qq_nbits, brsh, arsh;
26092 	s32 a, b, temp;
26093 	int bcmerror = 0;
26094 	uint cal_retry = 0;
26095 
26096 	if (core_mask == 0x0)
26097 		return;
26098 
26099 	wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26100 	new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26101 	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26102 
26103 cal_try:
26104 	wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26105 
26106 	new_comp = old_comp;
26107 
26108 	for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26109 
26110 		if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26111 			iq = est[curr_core].iq_prod;
26112 			ii = est[curr_core].i_pwr;
26113 			qq = est[curr_core].q_pwr;
26114 		} else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26115 			iq = est[curr_core].iq_prod;
26116 			ii = est[curr_core].i_pwr;
26117 			qq = est[curr_core].q_pwr;
26118 		} else {
26119 			continue;
26120 		}
26121 
26122 		if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26123 			bcmerror = -EBADE;
26124 			break;
26125 		}
26126 
26127 		iq_nbits = wlc_phy_nbits(iq);
26128 		qq_nbits = wlc_phy_nbits(qq);
26129 
26130 		arsh = 10 - (30 - iq_nbits);
26131 		if (arsh >= 0) {
26132 			a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26133 			temp = (s32) (ii >> arsh);
26134 			if (temp == 0) {
26135 				bcmerror = -EBADE;
26136 				break;
26137 			}
26138 		} else {
26139 			a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26140 			temp = (s32) (ii << -arsh);
26141 			if (temp == 0) {
26142 				bcmerror = -EBADE;
26143 				break;
26144 			}
26145 		}
26146 
26147 		a /= temp;
26148 
26149 		brsh = qq_nbits - 31 + 20;
26150 		if (brsh >= 0) {
26151 			b = (qq << (31 - qq_nbits));
26152 			temp = (s32) (ii >> brsh);
26153 			if (temp == 0) {
26154 				bcmerror = -EBADE;
26155 				break;
26156 			}
26157 		} else {
26158 			b = (qq << (31 - qq_nbits));
26159 			temp = (s32) (ii << -brsh);
26160 			if (temp == 0) {
26161 				bcmerror = -EBADE;
26162 				break;
26163 			}
26164 		}
26165 		b /= temp;
26166 		b -= a * a;
26167 		b = (s32) int_sqrt((unsigned long) b);
26168 		b -= (1 << 10);
26169 
26170 		if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26171 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26172 				new_comp.a0 = (s16) a & 0x3ff;
26173 				new_comp.b0 = (s16) b & 0x3ff;
26174 			} else {
26175 
26176 				new_comp.a0 = (s16) b & 0x3ff;
26177 				new_comp.b0 = (s16) a & 0x3ff;
26178 			}
26179 		}
26180 		if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26181 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26182 				new_comp.a1 = (s16) a & 0x3ff;
26183 				new_comp.b1 = (s16) b & 0x3ff;
26184 			} else {
26185 
26186 				new_comp.a1 = (s16) b & 0x3ff;
26187 				new_comp.b1 = (s16) a & 0x3ff;
26188 			}
26189 		}
26190 	}
26191 
26192 	if (bcmerror != 0) {
26193 		pr_debug("%s: Failed, cnt = %d\n", __func__, cal_retry);
26194 
26195 		if (cal_retry < CAL_RETRY_CNT) {
26196 			cal_retry++;
26197 			goto cal_try;
26198 		}
26199 
26200 		new_comp = old_comp;
26201 	}
26202 
26203 	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26204 }
26205 
wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy * pi,u8 rx_core)26206 static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26207 {
26208 	u16 offtune_val;
26209 	u16 bias_g = 0;
26210 	u16 bias_a = 0;
26211 
26212 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26213 		if (rx_core == PHY_CORE_0) {
26214 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26215 				pi->tx_rx_cal_radio_saveregs[0] =
26216 					read_radio_reg(pi,
26217 					    RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26218 				pi->tx_rx_cal_radio_saveregs[1] =
26219 					read_radio_reg(pi,
26220 					    RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26221 
26222 				write_radio_reg(pi,
26223 					RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26224 					0x3);
26225 				write_radio_reg(pi,
26226 					RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26227 					0xaf);
26228 
26229 			} else {
26230 				pi->tx_rx_cal_radio_saveregs[0] =
26231 					read_radio_reg(pi,
26232 					    RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26233 				pi->tx_rx_cal_radio_saveregs[1] =
26234 					read_radio_reg(pi,
26235 					    RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26236 
26237 				write_radio_reg(
26238 					pi,
26239 					RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26240 					0x3);
26241 				write_radio_reg(
26242 					pi,
26243 					RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26244 					0x7f);
26245 			}
26246 
26247 		} else {
26248 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26249 				pi->tx_rx_cal_radio_saveregs[0] =
26250 					read_radio_reg(pi,
26251 					    RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26252 				pi->tx_rx_cal_radio_saveregs[1] =
26253 					read_radio_reg(pi,
26254 					    RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26255 
26256 				write_radio_reg(
26257 					pi,
26258 					RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26259 					0x3);
26260 				write_radio_reg(
26261 					pi,
26262 					RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26263 					0xaf);
26264 
26265 			} else {
26266 				pi->tx_rx_cal_radio_saveregs[0] =
26267 					read_radio_reg(pi,
26268 					    RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26269 				pi->tx_rx_cal_radio_saveregs[1] =
26270 					read_radio_reg(pi,
26271 					    RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26272 
26273 				write_radio_reg(pi,
26274 					RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26275 					0x3);
26276 				write_radio_reg(pi,
26277 					RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26278 					0x7f);
26279 			}
26280 		}
26281 
26282 	} else {
26283 		if (rx_core == PHY_CORE_0) {
26284 			pi->tx_rx_cal_radio_saveregs[0] =
26285 				read_radio_reg(pi,
26286 					       RADIO_2056_TX_RXIQCAL_TXMUX |
26287 					       RADIO_2056_TX1);
26288 			pi->tx_rx_cal_radio_saveregs[1] =
26289 				read_radio_reg(pi,
26290 					       RADIO_2056_RX_RXIQCAL_RXMUX |
26291 					       RADIO_2056_RX0);
26292 
26293 			if (pi->pubpi.radiorev >= 5) {
26294 				pi->tx_rx_cal_radio_saveregs[2] =
26295 					read_radio_reg(pi,
26296 						       RADIO_2056_RX_RXSPARE2 |
26297 						       RADIO_2056_RX0);
26298 				pi->tx_rx_cal_radio_saveregs[3] =
26299 					read_radio_reg(pi,
26300 						       RADIO_2056_TX_TXSPARE2 |
26301 						       RADIO_2056_TX1);
26302 			}
26303 
26304 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26305 
26306 				if (pi->pubpi.radiorev >= 5) {
26307 					pi->tx_rx_cal_radio_saveregs[4] =
26308 						read_radio_reg(pi,
26309 						      RADIO_2056_RX_LNAA_MASTER
26310 						      | RADIO_2056_RX0);
26311 
26312 					write_radio_reg(
26313 						pi,
26314 						RADIO_2056_RX_LNAA_MASTER
26315 						| RADIO_2056_RX0, 0x40);
26316 
26317 					write_radio_reg(pi,
26318 						RADIO_2056_TX_TXSPARE2 |
26319 						RADIO_2056_TX1, bias_a);
26320 
26321 					write_radio_reg(pi,
26322 						RADIO_2056_RX_RXSPARE2 |
26323 						RADIO_2056_RX0, bias_a);
26324 				} else {
26325 					pi->tx_rx_cal_radio_saveregs[4] =
26326 						read_radio_reg(pi,
26327 							RADIO_2056_RX_LNAA_TUNE
26328 							| RADIO_2056_RX0);
26329 
26330 					offtune_val =
26331 						(pi->tx_rx_cal_radio_saveregs
26332 						 [2] & 0xF0) >> 8;
26333 					offtune_val =
26334 						(offtune_val <= 0x7) ? 0xF : 0;
26335 
26336 					mod_radio_reg(pi,
26337 						      RADIO_2056_RX_LNAA_TUNE |
26338 						      RADIO_2056_RX0, 0xF0,
26339 						      (offtune_val << 8));
26340 				}
26341 
26342 				write_radio_reg(pi,
26343 						RADIO_2056_TX_RXIQCAL_TXMUX |
26344 						RADIO_2056_TX1, 0x9);
26345 				write_radio_reg(pi,
26346 						RADIO_2056_RX_RXIQCAL_RXMUX |
26347 						RADIO_2056_RX0, 0x9);
26348 			} else {
26349 				if (pi->pubpi.radiorev >= 5) {
26350 					pi->tx_rx_cal_radio_saveregs[4] =
26351 						read_radio_reg(
26352 						      pi,
26353 						      RADIO_2056_RX_LNAG_MASTER
26354 						    | RADIO_2056_RX0);
26355 
26356 					write_radio_reg(
26357 						pi,
26358 						RADIO_2056_RX_LNAG_MASTER
26359 						| RADIO_2056_RX0, 0x40);
26360 
26361 					write_radio_reg(
26362 						pi,
26363 						RADIO_2056_TX_TXSPARE2
26364 						|
26365 						RADIO_2056_TX1, bias_g);
26366 
26367 					write_radio_reg(
26368 						pi,
26369 						RADIO_2056_RX_RXSPARE2
26370 						|
26371 						RADIO_2056_RX0, bias_g);
26372 
26373 				} else {
26374 					pi->tx_rx_cal_radio_saveregs[4] =
26375 						read_radio_reg(
26376 							pi,
26377 							RADIO_2056_RX_LNAG_TUNE
26378 							| RADIO_2056_RX0);
26379 
26380 					offtune_val =
26381 						(pi->
26382 						 tx_rx_cal_radio_saveregs[2] &
26383 						 0xF0) >> 8;
26384 					offtune_val =
26385 						(offtune_val <= 0x7) ? 0xF : 0;
26386 
26387 					mod_radio_reg(pi,
26388 						      RADIO_2056_RX_LNAG_TUNE |
26389 						      RADIO_2056_RX0, 0xF0,
26390 						      (offtune_val << 8));
26391 				}
26392 
26393 				write_radio_reg(pi,
26394 						RADIO_2056_TX_RXIQCAL_TXMUX |
26395 						RADIO_2056_TX1, 0x6);
26396 				write_radio_reg(pi,
26397 						RADIO_2056_RX_RXIQCAL_RXMUX |
26398 						RADIO_2056_RX0, 0x6);
26399 			}
26400 
26401 		} else {
26402 			pi->tx_rx_cal_radio_saveregs[0] =
26403 				read_radio_reg(pi,
26404 					       RADIO_2056_TX_RXIQCAL_TXMUX |
26405 					       RADIO_2056_TX0);
26406 			pi->tx_rx_cal_radio_saveregs[1] =
26407 				read_radio_reg(pi,
26408 					       RADIO_2056_RX_RXIQCAL_RXMUX |
26409 					       RADIO_2056_RX1);
26410 
26411 			if (pi->pubpi.radiorev >= 5) {
26412 				pi->tx_rx_cal_radio_saveregs[2] =
26413 					read_radio_reg(pi,
26414 						       RADIO_2056_RX_RXSPARE2 |
26415 						       RADIO_2056_RX1);
26416 				pi->tx_rx_cal_radio_saveregs[3] =
26417 					read_radio_reg(pi,
26418 						       RADIO_2056_TX_TXSPARE2 |
26419 						       RADIO_2056_TX0);
26420 			}
26421 
26422 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26423 
26424 				if (pi->pubpi.radiorev >= 5) {
26425 					pi->tx_rx_cal_radio_saveregs[4] =
26426 						read_radio_reg(
26427 						       pi,
26428 						       RADIO_2056_RX_LNAA_MASTER
26429 						       | RADIO_2056_RX1);
26430 
26431 					write_radio_reg(
26432 						pi,
26433 						RADIO_2056_RX_LNAA_MASTER |
26434 						RADIO_2056_RX1, 0x40);
26435 
26436 					write_radio_reg(
26437 						pi,
26438 						RADIO_2056_TX_TXSPARE2
26439 						|
26440 						RADIO_2056_TX0, bias_a);
26441 
26442 					write_radio_reg(
26443 						pi,
26444 						RADIO_2056_RX_RXSPARE2
26445 						|
26446 						RADIO_2056_RX1, bias_a);
26447 				} else {
26448 					pi->tx_rx_cal_radio_saveregs[4] =
26449 						read_radio_reg(
26450 							pi,
26451 							RADIO_2056_RX_LNAA_TUNE
26452 							| RADIO_2056_RX1);
26453 
26454 					offtune_val =
26455 						(pi->
26456 						 tx_rx_cal_radio_saveregs[2] &
26457 						 0xF0) >> 8;
26458 					offtune_val =
26459 						(offtune_val <= 0x7) ? 0xF : 0;
26460 
26461 					mod_radio_reg(pi,
26462 						      RADIO_2056_RX_LNAA_TUNE |
26463 						      RADIO_2056_RX1, 0xF0,
26464 						      (offtune_val << 8));
26465 				}
26466 
26467 				write_radio_reg(pi,
26468 						RADIO_2056_TX_RXIQCAL_TXMUX |
26469 						RADIO_2056_TX0, 0x9);
26470 				write_radio_reg(pi,
26471 						RADIO_2056_RX_RXIQCAL_RXMUX |
26472 						RADIO_2056_RX1, 0x9);
26473 			} else {
26474 				if (pi->pubpi.radiorev >= 5) {
26475 					pi->tx_rx_cal_radio_saveregs[4] =
26476 						read_radio_reg(
26477 						      pi,
26478 						      RADIO_2056_RX_LNAG_MASTER
26479 						    | RADIO_2056_RX1);
26480 
26481 					write_radio_reg(
26482 						pi,
26483 						RADIO_2056_RX_LNAG_MASTER
26484 						| RADIO_2056_RX1, 0x40);
26485 
26486 					write_radio_reg(
26487 						pi,
26488 						RADIO_2056_TX_TXSPARE2
26489 						|
26490 						RADIO_2056_TX0, bias_g);
26491 
26492 					write_radio_reg(
26493 						pi,
26494 						RADIO_2056_RX_RXSPARE2
26495 						|
26496 						RADIO_2056_RX1, bias_g);
26497 				} else {
26498 					pi->tx_rx_cal_radio_saveregs[4] =
26499 						read_radio_reg(
26500 							pi,
26501 							RADIO_2056_RX_LNAG_TUNE
26502 							| RADIO_2056_RX1);
26503 
26504 					offtune_val =
26505 						(pi->
26506 						 tx_rx_cal_radio_saveregs[2] &
26507 						 0xF0) >> 8;
26508 					offtune_val =
26509 						(offtune_val <= 0x7) ? 0xF : 0;
26510 
26511 					mod_radio_reg(pi,
26512 						      RADIO_2056_RX_LNAG_TUNE |
26513 						      RADIO_2056_RX1, 0xF0,
26514 						      (offtune_val << 8));
26515 				}
26516 
26517 				write_radio_reg(pi,
26518 						RADIO_2056_TX_RXIQCAL_TXMUX |
26519 						RADIO_2056_TX0, 0x6);
26520 				write_radio_reg(pi,
26521 						RADIO_2056_RX_RXIQCAL_RXMUX |
26522 						RADIO_2056_RX1, 0x6);
26523 			}
26524 		}
26525 	}
26526 }
26527 
wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy * pi,u8 rx_core)26528 static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26529 {
26530 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26531 		if (rx_core == PHY_CORE_0) {
26532 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26533 				write_radio_reg(
26534 					pi,
26535 					RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26536 					pi->
26537 					tx_rx_cal_radio_saveregs[0]);
26538 				write_radio_reg(
26539 					pi,
26540 					RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26541 					pi->
26542 					tx_rx_cal_radio_saveregs[1]);
26543 
26544 			} else {
26545 				write_radio_reg(
26546 					pi,
26547 					RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26548 					pi->
26549 					tx_rx_cal_radio_saveregs[0]);
26550 				write_radio_reg(
26551 					pi,
26552 					RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26553 					pi->
26554 					tx_rx_cal_radio_saveregs[1]);
26555 			}
26556 
26557 		} else {
26558 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26559 				write_radio_reg(
26560 					pi,
26561 					RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26562 					pi->
26563 					tx_rx_cal_radio_saveregs[0]);
26564 				write_radio_reg(
26565 					pi,
26566 					RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26567 					pi->
26568 					tx_rx_cal_radio_saveregs[1]);
26569 
26570 			} else {
26571 				write_radio_reg(
26572 					pi,
26573 					RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26574 					pi->
26575 					tx_rx_cal_radio_saveregs[0]);
26576 				write_radio_reg(
26577 					pi,
26578 					RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26579 					pi->
26580 					tx_rx_cal_radio_saveregs[1]);
26581 			}
26582 		}
26583 
26584 	} else {
26585 		if (rx_core == PHY_CORE_0) {
26586 			write_radio_reg(pi,
26587 					RADIO_2056_TX_RXIQCAL_TXMUX |
26588 					RADIO_2056_TX1,
26589 					pi->tx_rx_cal_radio_saveregs[0]);
26590 
26591 			write_radio_reg(pi,
26592 					RADIO_2056_RX_RXIQCAL_RXMUX |
26593 					RADIO_2056_RX0,
26594 					pi->tx_rx_cal_radio_saveregs[1]);
26595 
26596 			if (pi->pubpi.radiorev >= 5) {
26597 				write_radio_reg(pi,
26598 						RADIO_2056_RX_RXSPARE2 |
26599 						RADIO_2056_RX0,
26600 						pi->
26601 						tx_rx_cal_radio_saveregs[2]);
26602 
26603 				write_radio_reg(pi,
26604 						RADIO_2056_TX_TXSPARE2 |
26605 						RADIO_2056_TX1,
26606 						pi->
26607 						tx_rx_cal_radio_saveregs[3]);
26608 			}
26609 
26610 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26611 				if (pi->pubpi.radiorev >= 5)
26612 					write_radio_reg(
26613 						pi,
26614 						RADIO_2056_RX_LNAA_MASTER
26615 						| RADIO_2056_RX0,
26616 						pi->
26617 						tx_rx_cal_radio_saveregs
26618 						[4]);
26619 				else
26620 					write_radio_reg(
26621 						pi,
26622 						RADIO_2056_RX_LNAA_TUNE
26623 						| RADIO_2056_RX0,
26624 						pi->
26625 						tx_rx_cal_radio_saveregs
26626 						[4]);
26627 			} else {
26628 				if (pi->pubpi.radiorev >= 5)
26629 					write_radio_reg(
26630 						pi,
26631 						RADIO_2056_RX_LNAG_MASTER
26632 						| RADIO_2056_RX0,
26633 						pi->
26634 						tx_rx_cal_radio_saveregs
26635 						[4]);
26636 				else
26637 					write_radio_reg(
26638 						pi,
26639 						RADIO_2056_RX_LNAG_TUNE
26640 						| RADIO_2056_RX0,
26641 						pi->
26642 						tx_rx_cal_radio_saveregs
26643 						[4]);
26644 			}
26645 
26646 		} else {
26647 			write_radio_reg(pi,
26648 					RADIO_2056_TX_RXIQCAL_TXMUX |
26649 					RADIO_2056_TX0,
26650 					pi->tx_rx_cal_radio_saveregs[0]);
26651 
26652 			write_radio_reg(pi,
26653 					RADIO_2056_RX_RXIQCAL_RXMUX |
26654 					RADIO_2056_RX1,
26655 					pi->tx_rx_cal_radio_saveregs[1]);
26656 
26657 			if (pi->pubpi.radiorev >= 5) {
26658 				write_radio_reg(pi,
26659 						RADIO_2056_RX_RXSPARE2 |
26660 						RADIO_2056_RX1,
26661 						pi->
26662 						tx_rx_cal_radio_saveregs[2]);
26663 
26664 				write_radio_reg(pi,
26665 						RADIO_2056_TX_TXSPARE2 |
26666 						RADIO_2056_TX0,
26667 						pi->
26668 						tx_rx_cal_radio_saveregs[3]);
26669 			}
26670 
26671 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26672 				if (pi->pubpi.radiorev >= 5)
26673 					write_radio_reg(
26674 						pi,
26675 						RADIO_2056_RX_LNAA_MASTER
26676 						| RADIO_2056_RX1,
26677 						pi->
26678 						tx_rx_cal_radio_saveregs
26679 						[4]);
26680 				else
26681 					write_radio_reg(
26682 						pi,
26683 						RADIO_2056_RX_LNAA_TUNE
26684 						| RADIO_2056_RX1,
26685 						pi->
26686 						tx_rx_cal_radio_saveregs
26687 						[4]);
26688 			} else {
26689 				if (pi->pubpi.radiorev >= 5)
26690 					write_radio_reg(
26691 						pi,
26692 						RADIO_2056_RX_LNAG_MASTER
26693 						| RADIO_2056_RX1,
26694 						pi->
26695 						tx_rx_cal_radio_saveregs
26696 						[4]);
26697 				else
26698 					write_radio_reg(
26699 						pi,
26700 						RADIO_2056_RX_LNAG_TUNE
26701 						| RADIO_2056_RX1,
26702 						pi->
26703 						tx_rx_cal_radio_saveregs
26704 						[4]);
26705 			}
26706 		}
26707 	}
26708 }
26709 
wlc_phy_rxcal_physetup_nphy(struct brcms_phy * pi,u8 rx_core)26710 static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26711 {
26712 	u8 tx_core;
26713 	u16 rx_antval, tx_antval;
26714 
26715 	if (NREV_GE(pi->pubpi.phy_rev, 7))
26716 		tx_core = rx_core;
26717 	else
26718 		tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26719 
26720 	pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26721 	pi->tx_rx_cal_phy_saveregs[1] =
26722 		read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26723 	pi->tx_rx_cal_phy_saveregs[2] =
26724 		read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
26725 	pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
26726 	pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
26727 	pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
26728 	pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
26729 	pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
26730 	pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
26731 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26732 		pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
26733 		pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
26734 		pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
26735 		pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
26736 	}
26737 
26738 	pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
26739 	pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
26740 	mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
26741 		    0x29b, (0x1 << 0), (0) << 0);
26742 
26743 	mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
26744 		    0x29b, (0x1 << 0), (0) << 0);
26745 
26746 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26747 
26748 		mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26749 
26750 		mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
26751 
26752 	} else {
26753 
26754 		mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
26755 		mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26756 		mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
26757 		mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
26758 	}
26759 
26760 	mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
26761 	mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26762 		    (0x1 << 2), (0x1 << 2));
26763 	if (NREV_LT(pi->pubpi.phy_rev, 7)) {
26764 		mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
26765 			    (0x1 << 0) | (0x1 << 1), 0);
26766 		mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
26767 			    0x8f : 0xa5,
26768 			    (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
26769 	}
26770 
26771 	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
26772 					 RADIO_MIMO_CORESEL_CORE1 |
26773 					 RADIO_MIMO_CORESEL_CORE2);
26774 
26775 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26776 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26777 						  0, 0, 0,
26778 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
26779 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
26780 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
26781 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
26782 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
26783 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
26784 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
26785 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
26786 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
26787 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
26788 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
26789 		if (CHSPEC_IS40(pi->radio_chanspec))
26790 			wlc_phy_rfctrl_override_nphy_rev7(
26791 				pi,
26792 				(0x1 << 7),
26793 				2, 0, 0,
26794 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
26795 		else
26796 			wlc_phy_rfctrl_override_nphy_rev7(
26797 				pi,
26798 				(0x1 << 7),
26799 				0, 0, 0,
26800 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
26801 
26802 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26803 						  0, 0, 0,
26804 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
26805 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
26806 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
26807 	} else {
26808 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
26809 	}
26810 
26811 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
26812 
26813 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26814 
26815 		wlc_phy_rfctrlintc_override_nphy(pi,
26816 						 NPHY_RfctrlIntc_override_TRSW,
26817 						 0x1, rx_core + 1);
26818 	} else {
26819 
26820 		if (rx_core == PHY_CORE_0) {
26821 			rx_antval = 0x1;
26822 			tx_antval = 0x8;
26823 		} else {
26824 			rx_antval = 0x4;
26825 			tx_antval = 0x2;
26826 		}
26827 
26828 		wlc_phy_rfctrlintc_override_nphy(pi,
26829 						 NPHY_RfctrlIntc_override_TRSW,
26830 						 rx_antval, rx_core + 1);
26831 		wlc_phy_rfctrlintc_override_nphy(pi,
26832 						 NPHY_RfctrlIntc_override_TRSW,
26833 						 tx_antval, tx_core + 1);
26834 	}
26835 }
26836 
wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy * pi,u8 rx_core)26837 static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26838 {
26839 
26840 	write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
26841 	write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
26842 		      pi->tx_rx_cal_phy_saveregs[1]);
26843 	write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26844 		      pi->tx_rx_cal_phy_saveregs[2]);
26845 	write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
26846 	write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
26847 
26848 	write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
26849 	write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
26850 	write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
26851 	write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
26852 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26853 		write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
26854 		write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
26855 		write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
26856 		write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
26857 	}
26858 
26859 	write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
26860 	write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
26861 }
26862 
26863 static void
wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy * pi,u8 rx_core,u16 * rxgain,u8 cal_type)26864 wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
26865 				 u16 *rxgain, u8 cal_type)
26866 {
26867 
26868 	u16 num_samps;
26869 	struct phy_iq_est est[PHY_CORE_MAX];
26870 	u8 tx_core;
26871 	struct nphy_iq_comp save_comp, zero_comp;
26872 	u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
26873 	    thresh_pwr = 10000;
26874 	s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
26875 	bool gainctrl_done = false;
26876 	u8 mix_tia_gain = 3;
26877 	s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
26878 	s8 curr_gaintbl_index = 3;
26879 	u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
26880 	const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
26881 	u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
26882 	int fine_gain_idx;
26883 	s8 txpwrindex;
26884 	u16 nphy_rxcal_txgain[2];
26885 
26886 	if (NREV_GE(pi->pubpi.phy_rev, 7))
26887 		tx_core = rx_core;
26888 	else
26889 		tx_core = 1 - rx_core;
26890 
26891 	num_samps = 1024;
26892 	desired_log2_pwr = 13;
26893 
26894 	wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
26895 	zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
26896 	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
26897 
26898 	if (CHSPEC_IS5G(pi->radio_chanspec)) {
26899 		if (NREV_GE(pi->pubpi.phy_rev, 7))
26900 			mix_tia_gain = 3;
26901 		else if (NREV_GE(pi->pubpi.phy_rev, 4))
26902 			mix_tia_gain = 4;
26903 		else
26904 			mix_tia_gain = 6;
26905 		if (NREV_GE(pi->pubpi.phy_rev, 7))
26906 			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
26907 		else
26908 			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
26909 	} else {
26910 		if (NREV_GE(pi->pubpi.phy_rev, 7))
26911 			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
26912 		else
26913 			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
26914 	}
26915 
26916 	do {
26917 
26918 		hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
26919 			0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
26920 		lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
26921 		lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
26922 		lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
26923 		lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
26924 		txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
26925 
26926 		if (NREV_GE(pi->pubpi.phy_rev, 7))
26927 			wlc_phy_rfctrl_override_1tomany_nphy(
26928 				pi,
26929 				NPHY_REV7_RfctrlOverride_cmd_rxgain,
26930 				((lpf_biq1 << 12) |
26931 				 (lpf_biq0 << 8) |
26932 				 (mix_tia_gain << 4) | (lna2 << 2)
26933 				 | lna1), 0x3, 0);
26934 		else
26935 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
26936 						     ((hpvga << 12) |
26937 						      (lpf_biq1 << 10) |
26938 						      (lpf_biq0 << 8) |
26939 						      (mix_tia_gain << 4) |
26940 						      (lna2 << 2) | lna1), 0x3,
26941 						     0);
26942 
26943 		pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
26944 
26945 		if (txpwrindex == -1) {
26946 			nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
26947 			nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
26948 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
26949 						 2, 0x110, 16,
26950 						 nphy_rxcal_txgain);
26951 		} else {
26952 			wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
26953 						 false);
26954 		}
26955 
26956 		wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
26957 				     NPHY_RXCAL_TONEFREQ_40MHz :
26958 				     NPHY_RXCAL_TONEFREQ_20MHz,
26959 				     NPHY_RXCAL_TONEAMP, 0, cal_type, false);
26960 
26961 		wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
26962 		i_pwr = DIV_ROUND_CLOSEST(est[rx_core].i_pwr, num_samps);
26963 		q_pwr = DIV_ROUND_CLOSEST(est[rx_core].q_pwr, num_samps);
26964 		curr_pwr = i_pwr + q_pwr;
26965 
26966 		switch (gainctrl_dirn) {
26967 		case NPHY_RXCAL_GAIN_INIT:
26968 			if (curr_pwr > thresh_pwr) {
26969 				gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
26970 				prev_gaintbl_index = curr_gaintbl_index;
26971 				curr_gaintbl_index--;
26972 			} else {
26973 				gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
26974 				prev_gaintbl_index = curr_gaintbl_index;
26975 				curr_gaintbl_index++;
26976 			}
26977 			break;
26978 
26979 		case NPHY_RXCAL_GAIN_UP:
26980 			if (curr_pwr > thresh_pwr) {
26981 				gainctrl_done = true;
26982 				optim_pwr = prev_pwr;
26983 				optim_gaintbl_index = prev_gaintbl_index;
26984 			} else {
26985 				prev_gaintbl_index = curr_gaintbl_index;
26986 				curr_gaintbl_index++;
26987 			}
26988 			break;
26989 
26990 		case NPHY_RXCAL_GAIN_DOWN:
26991 			if (curr_pwr > thresh_pwr) {
26992 				prev_gaintbl_index = curr_gaintbl_index;
26993 				curr_gaintbl_index--;
26994 			} else {
26995 				gainctrl_done = true;
26996 				optim_pwr = curr_pwr;
26997 				optim_gaintbl_index = curr_gaintbl_index;
26998 			}
26999 			break;
27000 
27001 		default:
27002 			break;
27003 		}
27004 
27005 		if ((curr_gaintbl_index < 0) ||
27006 		    (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27007 			gainctrl_done = true;
27008 			optim_pwr = curr_pwr;
27009 			optim_gaintbl_index = prev_gaintbl_index;
27010 		} else {
27011 			prev_pwr = curr_pwr;
27012 		}
27013 
27014 		wlc_phy_stopplayback_nphy(pi);
27015 	} while (!gainctrl_done);
27016 
27017 	hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27018 	lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27019 	lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27020 	lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27021 	lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27022 	txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27023 
27024 	actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27025 	delta_pwr = desired_log2_pwr - actual_log2_pwr;
27026 
27027 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27028 		fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27029 
27030 		if (fine_gain_idx + (int)lpf_biq0 > 10)
27031 			lpf_biq1 = 10 - lpf_biq0;
27032 		else
27033 			lpf_biq1 = (u16) max(fine_gain_idx, 0);
27034 
27035 		wlc_phy_rfctrl_override_1tomany_nphy(
27036 			pi,
27037 			NPHY_REV7_RfctrlOverride_cmd_rxgain,
27038 			((lpf_biq1 << 12) |
27039 			 (lpf_biq0 << 8) |
27040 			 (mix_tia_gain << 4) |
27041 			 (lna2 << 2) | lna1), 0x3,
27042 			0);
27043 	} else {
27044 		hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27045 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27046 					     ((hpvga << 12) |
27047 					      (lpf_biq1 << 10) |
27048 					      (lpf_biq0 << 8) |
27049 					      (mix_tia_gain << 4) |
27050 					      (lna2 << 2) |
27051 					      lna1), 0x3, 0);
27052 	}
27053 
27054 	if (rxgain != NULL) {
27055 		*rxgain++ = lna1;
27056 		*rxgain++ = lna2;
27057 		*rxgain++ = mix_tia_gain;
27058 		*rxgain++ = lpf_biq0;
27059 		*rxgain++ = lpf_biq1;
27060 		*rxgain = hpvga;
27061 	}
27062 
27063 	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27064 }
27065 
27066 static void
wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy * pi,u8 rx_core,u16 * rxgain,u8 cal_type)27067 wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27068 			    u8 cal_type)
27069 {
27070 	wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27071 }
27072 
27073 static u8
wlc_phy_rc_sweep_nphy(struct brcms_phy * pi,u8 core_idx,u8 loopback_type)27074 wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27075 {
27076 	u32 target_bws[2] = { 9500, 21000 };
27077 	u32 ref_tones[2] = { 3000, 6000 };
27078 	u32 target_bw, ref_tone;
27079 
27080 	u32 target_pwr_ratios[2] = { 28606, 18468 };
27081 	u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27082 
27083 	u16 start_rccal_ovr_val = 128;
27084 	u16 txlpf_rccal_lpc_ovr_val = 128;
27085 	u16 rxlpf_rccal_hpc_ovr_val = 159;
27086 
27087 	u16 orig_txlpf_rccal_lpc_ovr_val;
27088 	u16 orig_rxlpf_rccal_hpc_ovr_val;
27089 	u16 radio_addr_offset_rx;
27090 	u16 radio_addr_offset_tx;
27091 	u16 orig_dcBypass;
27092 	u16 orig_RxStrnFilt40Num[6];
27093 	u16 orig_RxStrnFilt40Den[4];
27094 	u16 orig_rfctrloverride[2];
27095 	u16 orig_rfctrlauxreg[2];
27096 	u16 orig_rfctrlrssiothers;
27097 	u16 tx_lpf_bw = 4;
27098 
27099 	u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27100 	u16 lpf_hpc = 7, hpvga_hpc = 7;
27101 
27102 	s8 rccal_stepsize;
27103 	u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27104 	u32 ref_iq_vals = 0, target_iq_vals = 0;
27105 	u16 num_samps, log_num_samps = 10;
27106 	struct phy_iq_est est[PHY_CORE_MAX];
27107 
27108 	if (NREV_GE(pi->pubpi.phy_rev, 7))
27109 		return 0;
27110 
27111 	num_samps = (1 << log_num_samps);
27112 
27113 	if (CHSPEC_IS40(pi->radio_chanspec)) {
27114 		target_bw = target_bws[1];
27115 		target_pwr_ratio = target_pwr_ratios[1];
27116 		ref_tone = ref_tones[1];
27117 		rx_lpf_bw = rx_lpf_bws[1];
27118 	} else {
27119 		target_bw = target_bws[0];
27120 		target_pwr_ratio = target_pwr_ratios[0];
27121 		ref_tone = ref_tones[0];
27122 		rx_lpf_bw = rx_lpf_bws[0];
27123 	}
27124 
27125 	if (core_idx == 0) {
27126 		radio_addr_offset_rx = RADIO_2056_RX0;
27127 		radio_addr_offset_tx =
27128 			(loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27129 	} else {
27130 		radio_addr_offset_rx = RADIO_2056_RX1;
27131 		radio_addr_offset_tx =
27132 			(loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27133 	}
27134 
27135 	orig_txlpf_rccal_lpc_ovr_val =
27136 		read_radio_reg(pi,
27137 			       (RADIO_2056_TX_TXLPF_RCCAL |
27138 				radio_addr_offset_tx));
27139 	orig_rxlpf_rccal_hpc_ovr_val =
27140 		read_radio_reg(pi,
27141 			       (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27142 				radio_addr_offset_rx));
27143 
27144 	orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27145 
27146 	orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27147 	orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27148 	orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27149 	orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27150 	orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27151 	orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27152 	orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27153 	orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27154 	orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27155 	orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27156 
27157 	orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27158 	orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27159 	orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27160 	orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27161 	orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27162 
27163 	write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27164 			txlpf_rccal_lpc_ovr_val);
27165 
27166 	write_radio_reg(pi,
27167 			(RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27168 			rxlpf_rccal_hpc_ovr_val);
27169 
27170 	mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27171 
27172 	write_phy_reg(pi, 0x267, 0x02d4);
27173 	write_phy_reg(pi, 0x268, 0x0000);
27174 	write_phy_reg(pi, 0x269, 0x0000);
27175 	write_phy_reg(pi, 0x26a, 0x0000);
27176 	write_phy_reg(pi, 0x26b, 0x0000);
27177 	write_phy_reg(pi, 0x26c, 0x02d4);
27178 	write_phy_reg(pi, 0x26d, 0x0000);
27179 	write_phy_reg(pi, 0x26e, 0x0000);
27180 	write_phy_reg(pi, 0x26f, 0x0000);
27181 	write_phy_reg(pi, 0x270, 0x0000);
27182 
27183 	or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27184 	or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27185 	or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27186 	or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27187 
27188 	mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27189 		    (0x7 << 10), (tx_lpf_bw << 10));
27190 	mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27191 		    (0x7 << 0), (hpvga_hpc << 0));
27192 	mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27193 		    (0x7 << 4), (lpf_hpc << 4));
27194 	mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27195 		    (0x7 << 8), (rx_lpf_bw << 8));
27196 
27197 	rccal_stepsize = 16;
27198 	rccal_val = start_rccal_ovr_val + rccal_stepsize;
27199 
27200 	while (rccal_stepsize >= 0) {
27201 		write_radio_reg(pi,
27202 				(RADIO_2056_RX_RXLPF_RCCAL_LPC |
27203 				 radio_addr_offset_rx), rccal_val);
27204 
27205 		if (rccal_stepsize == 16) {
27206 
27207 			wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27208 					     0, 1, false);
27209 			udelay(2);
27210 
27211 			wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27212 
27213 			if (core_idx == 0)
27214 				ref_iq_vals =
27215 					max_t(u32, (est[0].i_pwr +
27216 						    est[0].q_pwr) >>
27217 					      (log_num_samps + 1),
27218 					      1);
27219 			else
27220 				ref_iq_vals =
27221 					max_t(u32, (est[1].i_pwr +
27222 						    est[1].q_pwr) >>
27223 					      (log_num_samps + 1),
27224 					      1);
27225 
27226 			wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27227 					     0, 1, false);
27228 			udelay(2);
27229 		}
27230 
27231 		wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27232 
27233 		if (core_idx == 0)
27234 			target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27235 					 (log_num_samps + 1);
27236 		else
27237 			target_iq_vals =
27238 				(est[1].i_pwr +
27239 				 est[1].q_pwr) >> (log_num_samps + 1);
27240 
27241 		pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27242 
27243 		if (rccal_stepsize == 0)
27244 			rccal_stepsize--;
27245 		else if (rccal_stepsize == 1) {
27246 			last_rccal_val = rccal_val;
27247 			rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27248 			last_pwr_ratio = pwr_ratio;
27249 			rccal_stepsize--;
27250 		} else {
27251 			rccal_stepsize = (rccal_stepsize >> 1);
27252 			rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27253 				      rccal_stepsize : (-rccal_stepsize));
27254 		}
27255 
27256 		if (rccal_stepsize == -1) {
27257 			best_rccal_val =
27258 				(abs((int)last_pwr_ratio -
27259 				     (int)target_pwr_ratio) <
27260 				 abs((int)pwr_ratio -
27261 				     (int)target_pwr_ratio)) ? last_rccal_val :
27262 				rccal_val;
27263 
27264 			if (CHSPEC_IS40(pi->radio_chanspec)) {
27265 				if ((best_rccal_val > 140)
27266 				    || (best_rccal_val < 135))
27267 					best_rccal_val = 138;
27268 			} else {
27269 				if ((best_rccal_val > 142)
27270 				    || (best_rccal_val < 137))
27271 					best_rccal_val = 140;
27272 			}
27273 
27274 			write_radio_reg(pi,
27275 					(RADIO_2056_RX_RXLPF_RCCAL_LPC |
27276 					 radio_addr_offset_rx), best_rccal_val);
27277 		}
27278 	}
27279 
27280 	wlc_phy_stopplayback_nphy(pi);
27281 
27282 	write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27283 			orig_txlpf_rccal_lpc_ovr_val);
27284 	write_radio_reg(pi,
27285 			(RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27286 			orig_rxlpf_rccal_hpc_ovr_val);
27287 
27288 	mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27289 
27290 	write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27291 	write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27292 	write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27293 	write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27294 	write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27295 	write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27296 	write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27297 	write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27298 	write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27299 	write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27300 
27301 	write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27302 	write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27303 	write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27304 	write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27305 	write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27306 
27307 	pi->nphy_anarxlpf_adjusted = false;
27308 
27309 	return best_rccal_val - 0x80;
27310 }
27311 
27312 #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)27313 static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27314 				      struct nphy_txgains target_gain,
27315 				      u8 cal_type, bool debug)
27316 {
27317 	u16 orig_BBConfig;
27318 	u8 core_no, rx_core;
27319 	u8 best_rccal[2];
27320 	u16 gain_save[2];
27321 	u16 cal_gain[2];
27322 	struct nphy_iqcal_params cal_params[2];
27323 	u8 rxcore_state;
27324 	s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27325 	s8 txlpf_idac;
27326 	bool phyhang_avoid_state = false;
27327 	bool skip_rxiqcal = false;
27328 
27329 	orig_BBConfig = read_phy_reg(pi, 0x01);
27330 	mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27331 
27332 	wlc_phy_stay_in_carriersearch_nphy(pi, true);
27333 
27334 	if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27335 		phyhang_avoid_state = pi->phyhang_avoid;
27336 		pi->phyhang_avoid = false;
27337 	}
27338 
27339 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27340 
27341 	for (core_no = 0; core_no <= 1; core_no++) {
27342 		wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27343 					      &cal_params[core_no]);
27344 		cal_gain[core_no] = cal_params[core_no].cal_gain;
27345 	}
27346 
27347 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27348 
27349 	rxcore_state = wlc_phy_rxcore_getstate_nphy(
27350 		(struct brcms_phy_pub *) pi);
27351 
27352 	for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27353 
27354 		skip_rxiqcal =
27355 			((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27356 
27357 		wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27358 
27359 		wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27360 
27361 		if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27362 
27363 			wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27364 
27365 			wlc_phy_tx_tone_nphy(pi,
27366 					     (CHSPEC_IS40(
27367 						      pi->radio_chanspec)) ?
27368 					     NPHY_RXCAL_TONEFREQ_40MHz :
27369 					     NPHY_RXCAL_TONEFREQ_20MHz,
27370 					     NPHY_RXCAL_TONEAMP, 0, cal_type,
27371 					     false);
27372 
27373 			if (debug)
27374 				mdelay(WAIT_FOR_SCOPE);
27375 
27376 			wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27377 			wlc_phy_stopplayback_nphy(pi);
27378 		}
27379 
27380 		if (((cal_type == 1) || (cal_type == 2))
27381 		    && NREV_LT(pi->pubpi.phy_rev, 7)) {
27382 
27383 			if (rx_core == PHY_CORE_1) {
27384 
27385 				if (rxcore_state == 1)
27386 					wlc_phy_rxcore_setstate_nphy(
27387 						(struct brcms_phy_pub *) pi, 3);
27388 
27389 				wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27390 							    1);
27391 
27392 				best_rccal[rx_core] =
27393 					wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27394 				pi->nphy_rccal_value = best_rccal[rx_core];
27395 
27396 				if (rxcore_state == 1)
27397 					wlc_phy_rxcore_setstate_nphy(
27398 						(struct brcms_phy_pub *) pi,
27399 						rxcore_state);
27400 			}
27401 		}
27402 
27403 		wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27404 
27405 		wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27406 		wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27407 	}
27408 
27409 	if ((cal_type == 1) || (cal_type == 2)) {
27410 
27411 		best_rccal[0] = best_rccal[1];
27412 		write_radio_reg(pi,
27413 				(RADIO_2056_RX_RXLPF_RCCAL_LPC |
27414 				 RADIO_2056_RX0), (best_rccal[0] | 0x80));
27415 
27416 		for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27417 			rxlpf_rccal_hpc =
27418 				(((int)best_rccal[rx_core] - 12) >> 1) + 10;
27419 			txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27420 
27421 			if (PHY_IPA(pi)) {
27422 				txlpf_rccal_lpc +=
27423 					(pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27424 				txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27425 					     0x0e : 0x13;
27426 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27427 						 TXLPF_IDAC_4, txlpf_idac);
27428 			}
27429 
27430 			rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27431 					      0);
27432 			txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27433 					      0);
27434 
27435 			write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27436 					     ((rx_core ==
27437 					       PHY_CORE_0) ? RADIO_2056_RX0 :
27438 					      RADIO_2056_RX1)),
27439 					(rxlpf_rccal_hpc | 0x80));
27440 
27441 			write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27442 					     ((rx_core ==
27443 					       PHY_CORE_0) ? RADIO_2056_TX0 :
27444 					      RADIO_2056_TX1)),
27445 					(txlpf_rccal_lpc | 0x80));
27446 		}
27447 	}
27448 
27449 	write_phy_reg(pi, 0x01, orig_BBConfig);
27450 
27451 	wlc_phy_resetcca_nphy(pi);
27452 
27453 	if (NREV_GE(pi->pubpi.phy_rev, 7))
27454 		wlc_phy_rfctrl_override_1tomany_nphy(
27455 			pi,
27456 			NPHY_REV7_RfctrlOverride_cmd_rxgain,
27457 			0, 0x3, 1);
27458 	else
27459 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27460 
27461 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27462 
27463 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27464 				 gain_save);
27465 
27466 	if (NREV_GE(pi->pubpi.phy_rev, 4))
27467 		pi->phyhang_avoid = phyhang_avoid_state;
27468 
27469 	wlc_phy_stay_in_carriersearch_nphy(pi, false);
27470 
27471 	return 0;
27472 }
27473 
27474 static int
wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy * pi,struct nphy_txgains target_gain,bool debug)27475 wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27476 			   struct nphy_txgains target_gain, bool debug)
27477 {
27478 	struct phy_iq_est est[PHY_CORE_MAX];
27479 	u8 core_num, rx_core, tx_core;
27480 	u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27481 	u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27482 	u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27483 	s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27484 	s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27485 	u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27486 	u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27487 	u16 num_samps;
27488 	u32 i_pwr, q_pwr, tot_pwr[3];
27489 	u8 gain_pass, use_hpf_num;
27490 	u16 mask, val1, val2;
27491 	u16 core_no;
27492 	u16 gain_save[2];
27493 	u16 cal_gain[2];
27494 	struct nphy_iqcal_params cal_params[2];
27495 	u8 phy_bw;
27496 	int bcmerror = 0;
27497 	bool first_playtone = true;
27498 
27499 	wlc_phy_stay_in_carriersearch_nphy(pi, true);
27500 
27501 	if (NREV_LT(pi->pubpi.phy_rev, 2))
27502 		wlc_phy_reapply_txcal_coeffs_nphy(pi);
27503 
27504 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27505 
27506 	for (core_no = 0; core_no <= 1; core_no++) {
27507 		wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27508 					      &cal_params[core_no]);
27509 		cal_gain[core_no] = cal_params[core_no].cal_gain;
27510 	}
27511 
27512 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27513 
27514 	num_samps = 1024;
27515 	desired_log2_pwr = 13;
27516 
27517 	for (core_num = 0; core_num < 2; core_num++) {
27518 
27519 		rx_core = core_num;
27520 		tx_core = 1 - core_num;
27521 
27522 		orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27523 		orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27524 						0xa6 : 0xa7);
27525 		orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27526 		orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27527 						 0x91 : 0x92);
27528 		orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27529 						 0x91 : 0x92);
27530 
27531 		mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27532 		mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27533 
27534 		or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27535 			   ((0x1 << 1) | (0x1 << 2)));
27536 		or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27537 
27538 		if (((pi->nphy_rxcalparams) & 0xff000000))
27539 			write_phy_reg(pi,
27540 				      (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27541 				      (CHSPEC_IS5G(pi->radio_chanspec) ?
27542 					0x140 : 0x110));
27543 		else
27544 			write_phy_reg(pi,
27545 				      (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27546 				      (CHSPEC_IS5G(pi->radio_chanspec) ?
27547 				       0x180 : 0x120));
27548 
27549 		write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27550 			      (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27551 			       0x114));
27552 
27553 		mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27554 		if (rx_core == PHY_CORE_0) {
27555 			val1 = RADIO_2055_COUPLE_RX_MASK;
27556 			val2 = RADIO_2055_COUPLE_TX_MASK;
27557 		} else {
27558 			val1 = RADIO_2055_COUPLE_TX_MASK;
27559 			val2 = RADIO_2055_COUPLE_RX_MASK;
27560 		}
27561 
27562 		if ((pi->nphy_rxcalparams & 0x10000)) {
27563 			mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27564 				      val1);
27565 			mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27566 				      val2);
27567 		}
27568 
27569 		for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27570 
27571 			if (debug)
27572 				mdelay(WAIT_FOR_SCOPE);
27573 
27574 			if (gain_pass < 3) {
27575 				curr_lna = lna_vals[gain_pass];
27576 				curr_hpf1 = hpf1_vals[gain_pass];
27577 				curr_hpf2 = hpf2_vals[gain_pass];
27578 			} else {
27579 
27580 				if (tot_pwr[1] > 10000) {
27581 					curr_lna = lna_vals[2];
27582 					curr_hpf1 = hpf1_vals[2];
27583 					curr_hpf2 = hpf2_vals[2];
27584 					use_hpf_num = 1;
27585 					curr_hpf = curr_hpf1;
27586 					actual_log2_pwr =
27587 						wlc_phy_nbits(tot_pwr[2]);
27588 				} else {
27589 					if (tot_pwr[0] > 10000) {
27590 						curr_lna = lna_vals[1];
27591 						curr_hpf1 = hpf1_vals[1];
27592 						curr_hpf2 = hpf2_vals[1];
27593 						use_hpf_num = 1;
27594 						curr_hpf = curr_hpf1;
27595 						actual_log2_pwr =
27596 							wlc_phy_nbits(
27597 								tot_pwr[1]);
27598 					} else {
27599 						curr_lna = lna_vals[0];
27600 						curr_hpf1 = hpf1_vals[0];
27601 						curr_hpf2 = hpf2_vals[0];
27602 						use_hpf_num = 2;
27603 						curr_hpf = curr_hpf2;
27604 						actual_log2_pwr =
27605 							wlc_phy_nbits(
27606 								tot_pwr[0]);
27607 					}
27608 				}
27609 
27610 				hpf_change = desired_log2_pwr - actual_log2_pwr;
27611 				curr_hpf += hpf_change;
27612 				curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27613 				if (use_hpf_num == 1)
27614 					curr_hpf1 = curr_hpf;
27615 				else
27616 					curr_hpf2 = curr_hpf;
27617 			}
27618 
27619 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27620 						     ((curr_hpf2 << 8) |
27621 						      (curr_hpf1 << 4) |
27622 						      (curr_lna << 2)), 0x3, 0);
27623 			wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27624 
27625 			wlc_phy_stopplayback_nphy(pi);
27626 
27627 			if (first_playtone) {
27628 				bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27629 						(u16) (pi->nphy_rxcalparams &
27630 						       0xffff), 0, 0, true);
27631 				first_playtone = false;
27632 			} else {
27633 				phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27634 					  40 : 20;
27635 				wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27636 							0, 0, 0, true);
27637 			}
27638 
27639 			if (bcmerror == 0) {
27640 				if (gain_pass < 3) {
27641 
27642 					wlc_phy_rx_iq_est_nphy(pi, est,
27643 							       num_samps, 32,
27644 							       0);
27645 					i_pwr = DIV_ROUND_CLOSEST(est[rx_core].i_pwr,
27646 									 num_samps);
27647 					q_pwr = DIV_ROUND_CLOSEST(est[rx_core].q_pwr,
27648 									 num_samps);
27649 					tot_pwr[gain_pass] = i_pwr + q_pwr;
27650 				} else {
27651 
27652 					wlc_phy_calc_rx_iq_comp_nphy(pi,
27653 								     (1 <<
27654 								      rx_core));
27655 				}
27656 
27657 				wlc_phy_stopplayback_nphy(pi);
27658 			}
27659 
27660 			if (bcmerror != 0)
27661 				break;
27662 		}
27663 
27664 		and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27665 		and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27666 
27667 		write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27668 			      0x92, orig_RfctrlIntcTx);
27669 		write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27670 			      0x92, orig_RfctrlIntcRx);
27671 		write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27672 		write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27673 			      0xa7, orig_AfectrlCore);
27674 		write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27675 
27676 		if (bcmerror != 0)
27677 			break;
27678 	}
27679 
27680 	wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27681 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27682 
27683 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27684 				 gain_save);
27685 
27686 	wlc_phy_stay_in_carriersearch_nphy(pi, false);
27687 
27688 	return bcmerror;
27689 }
27690 
27691 int
wlc_phy_cal_rxiq_nphy(struct brcms_phy * pi,struct nphy_txgains target_gain,u8 cal_type,bool debug)27692 wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27693 		      u8 cal_type, bool debug)
27694 {
27695 	if (NREV_GE(pi->pubpi.phy_rev, 7))
27696 		cal_type = 0;
27697 
27698 	if (NREV_GE(pi->pubpi.phy_rev, 3))
27699 		return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27700 						  debug);
27701 	else
27702 		return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27703 }
27704 
wlc_phy_txpwr_fixpower_nphy(struct brcms_phy * pi)27705 void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27706 {
27707 	uint core;
27708 	u32 txgain;
27709 	u16 rad_gain, dac_gain, bbmult, m1m2;
27710 	u8 txpi[2], chan_freq_range;
27711 	s32 rfpwr_offset;
27712 
27713 	if (pi->phyhang_avoid)
27714 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
27715 
27716 	if (pi->sh->sromrev < 4) {
27717 		txpi[0] = txpi[1] = 72;
27718 	} else {
27719 
27720 		chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27721 		switch (chan_freq_range) {
27722 		case WL_CHAN_FREQ_RANGE_2G:
27723 		case WL_CHAN_FREQ_RANGE_5GL:
27724 		case WL_CHAN_FREQ_RANGE_5GM:
27725 		case WL_CHAN_FREQ_RANGE_5GH:
27726 			txpi[0] = 0;
27727 			txpi[1] = 0;
27728 			break;
27729 		default:
27730 			txpi[0] = txpi[1] = 91;
27731 			break;
27732 		}
27733 	}
27734 
27735 	if (NREV_GE(pi->pubpi.phy_rev, 7))
27736 		txpi[0] = txpi[1] = 30;
27737 	else if (NREV_GE(pi->pubpi.phy_rev, 3))
27738 		txpi[0] = txpi[1] = 40;
27739 
27740 	if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27741 
27742 		if ((txpi[0] < 40) || (txpi[0] > 100) ||
27743 		    (txpi[1] < 40) || (txpi[1] > 100))
27744 			txpi[0] = txpi[1] = 91;
27745 	}
27746 
27747 	pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27748 	pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27749 	pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27750 	pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27751 
27752 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27753 		uint phyrev = pi->pubpi.phy_rev;
27754 
27755 		if (NREV_GE(phyrev, 3)) {
27756 			if (PHY_IPA(pi)) {
27757 				u32 *tx_gaintbl =
27758 					wlc_phy_get_ipa_gaintbl_nphy(pi);
27759 				txgain = tx_gaintbl[txpi[core]];
27760 			} else {
27761 				if (CHSPEC_IS5G(pi->radio_chanspec)) {
27762 					if (NREV_IS(phyrev, 3)) {
27763 						txgain =
27764 						      nphy_tpc_5GHz_txgain_rev3
27765 								   [txpi[core]];
27766 					} else if (NREV_IS(phyrev, 4)) {
27767 						txgain = (
27768 						  pi->srom_fem5g.extpagain ==
27769 						  3) ?
27770 						  nphy_tpc_5GHz_txgain_HiPwrEPA
27771 						 [txpi[core]] :
27772 						 nphy_tpc_5GHz_txgain_rev4
27773 						 [txpi[core]];
27774 					} else {
27775 						txgain =
27776 						      nphy_tpc_5GHz_txgain_rev5
27777 								   [txpi[core]];
27778 					}
27779 				} else {
27780 					if (NREV_GE(phyrev, 5) &&
27781 					    (pi->srom_fem2g.extpagain == 3)) {
27782 						txgain =
27783 							nphy_tpc_txgain_HiPwrEPA
27784 							[txpi[core]];
27785 					} else {
27786 						txgain = nphy_tpc_txgain_rev3
27787 							 [txpi[core]];
27788 					}
27789 				}
27790 			}
27791 		} else {
27792 			txgain = nphy_tpc_txgain[txpi[core]];
27793 		}
27794 
27795 		if (NREV_GE(phyrev, 3))
27796 			rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27797 		else
27798 			rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27799 
27800 		if (NREV_GE(phyrev, 7))
27801 			dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27802 		else
27803 			dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27804 
27805 		bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27806 
27807 		if (NREV_GE(phyrev, 3))
27808 			mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27809 					 0xa5), (0x1 << 8), (0x1 << 8));
27810 		else
27811 			mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27812 
27813 		write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27814 
27815 		wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27816 					 &rad_gain);
27817 
27818 		wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27819 		m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27820 		m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27821 		wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27822 
27823 		if (PHY_IPA(pi)) {
27824 			wlc_phy_table_read_nphy(pi,
27825 						(core ==
27826 						 PHY_CORE_0 ?
27827 						 NPHY_TBL_ID_CORE1TXPWRCTL :
27828 						 NPHY_TBL_ID_CORE2TXPWRCTL), 1,
27829 						576 + txpi[core], 32,
27830 						&rfpwr_offset);
27831 
27832 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27833 				    0x29b, (0x1ff << 4),
27834 				    ((s16) rfpwr_offset) << 4);
27835 
27836 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27837 				    0x29b, (0x1 << 2), (1) << 2);
27838 
27839 		}
27840 	}
27841 
27842 	and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
27843 
27844 	if (pi->phyhang_avoid)
27845 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
27846 }
27847 
27848 static void
wlc_phy_txpwr_nphy_srom_convert(u8 * srom_max,u16 * pwr_offset,u8 tmp_max_pwr,u8 rate_start,u8 rate_end)27849 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
27850 				u8 tmp_max_pwr, u8 rate_start,
27851 				u8 rate_end)
27852 {
27853 	u8 rate;
27854 	u8 word_num, nibble_num;
27855 	u8 tmp_nibble;
27856 
27857 	for (rate = rate_start; rate <= rate_end; rate++) {
27858 		word_num = (rate - rate_start) >> 2;
27859 		nibble_num = (rate - rate_start) & 0x3;
27860 		tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
27861 
27862 		srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
27863 	}
27864 }
27865 
27866 static void
wlc_phy_txpwr_nphy_po_apply(u8 * srom_max,u8 pwr_offset,u8 rate_start,u8 rate_end)27867 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
27868 			    u8 rate_start, u8 rate_end)
27869 {
27870 	u8 rate;
27871 
27872 	for (rate = rate_start; rate <= rate_end; rate++)
27873 		srom_max[rate] -= 2 * pwr_offset;
27874 }
27875 
27876 void
wlc_phy_ofdm_to_mcs_powers_nphy(u8 * power,u8 rate_mcs_start,u8 rate_mcs_end,u8 rate_ofdm_start)27877 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
27878 				u8 rate_mcs_end, u8 rate_ofdm_start)
27879 {
27880 	u8 rate1, rate2;
27881 
27882 	rate2 = rate_ofdm_start;
27883 	for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
27884 		power[rate1] = power[rate2];
27885 		rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
27886 	}
27887 	power[rate_mcs_end] = power[rate_mcs_end - 1];
27888 }
27889 
27890 void
wlc_phy_mcs_to_ofdm_powers_nphy(u8 * power,u8 rate_ofdm_start,u8 rate_ofdm_end,u8 rate_mcs_start)27891 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
27892 				u8 rate_ofdm_end, u8 rate_mcs_start)
27893 {
27894 	u8 rate1, rate2;
27895 
27896 	for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
27897 	     rate1 <= rate_ofdm_end; rate1++, rate2++) {
27898 		power[rate1] = power[rate2];
27899 		if (rate1 == rate_ofdm_start)
27900 			power[++rate1] = power[rate2];
27901 	}
27902 }
27903 
wlc_phy_txpwr_apply_nphy(struct brcms_phy * pi)27904 void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
27905 {
27906 	uint rate1, rate2, band_num;
27907 	u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
27908 	u8 tmp_max_pwr = 0;
27909 	u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
27910 	u8 *tx_srom_max_rate = NULL;
27911 
27912 	for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
27913 	     band_num++) {
27914 		switch (band_num) {
27915 		case 0:
27916 
27917 			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
27918 					  pi->nphy_pwrctrl_info[1].max_pwr_2g);
27919 
27920 			pwr_offsets1[0] = pi->cck2gpo;
27921 			wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
27922 							pwr_offsets1,
27923 							tmp_max_pwr,
27924 							TXP_FIRST_CCK,
27925 							TXP_LAST_CCK);
27926 
27927 			pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
27928 			pwr_offsets1[1] =
27929 				(u16) (pi->ofdm2gpo >> 16) & 0xffff;
27930 
27931 			pwr_offsets2 = pi->mcs2gpo;
27932 
27933 			tmp_cddpo = pi->cdd2gpo;
27934 			tmp_stbcpo = pi->stbc2gpo;
27935 			tmp_bw40po = pi->bw402gpo;
27936 
27937 			tx_srom_max_rate = pi->tx_srom_max_rate_2g;
27938 			break;
27939 		case 1:
27940 
27941 			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
27942 					  pi->nphy_pwrctrl_info[1].max_pwr_5gm);
27943 
27944 			pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
27945 			pwr_offsets1[1] =
27946 				(u16) (pi->ofdm5gpo >> 16) & 0xffff;
27947 
27948 			pwr_offsets2 = pi->mcs5gpo;
27949 
27950 			tmp_cddpo = pi->cdd5gpo;
27951 			tmp_stbcpo = pi->stbc5gpo;
27952 			tmp_bw40po = pi->bw405gpo;
27953 
27954 			tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
27955 			break;
27956 		case 2:
27957 
27958 			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
27959 					  pi->nphy_pwrctrl_info[1].max_pwr_5gl);
27960 
27961 			pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
27962 			pwr_offsets1[1] =
27963 				(u16) (pi->ofdm5glpo >> 16) & 0xffff;
27964 
27965 			pwr_offsets2 = pi->mcs5glpo;
27966 
27967 			tmp_cddpo = pi->cdd5glpo;
27968 			tmp_stbcpo = pi->stbc5glpo;
27969 			tmp_bw40po = pi->bw405glpo;
27970 
27971 			tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
27972 			break;
27973 		case 3:
27974 
27975 			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
27976 					  pi->nphy_pwrctrl_info[1].max_pwr_5gh);
27977 
27978 			pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
27979 			pwr_offsets1[1] =
27980 				(u16) (pi->ofdm5ghpo >> 16) & 0xffff;
27981 
27982 			pwr_offsets2 = pi->mcs5ghpo;
27983 
27984 			tmp_cddpo = pi->cdd5ghpo;
27985 			tmp_stbcpo = pi->stbc5ghpo;
27986 			tmp_bw40po = pi->bw405ghpo;
27987 
27988 			tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
27989 			break;
27990 		}
27991 
27992 		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
27993 						tmp_max_pwr, TXP_FIRST_OFDM,
27994 						TXP_LAST_OFDM);
27995 
27996 		wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
27997 						TXP_FIRST_MCS_20_SISO,
27998 						TXP_LAST_MCS_20_SISO,
27999 						TXP_FIRST_OFDM);
28000 
28001 		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28002 						tmp_max_pwr,
28003 						TXP_FIRST_MCS_20_CDD,
28004 						TXP_LAST_MCS_20_CDD);
28005 
28006 		if (NREV_GE(pi->pubpi.phy_rev, 3))
28007 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28008 						    TXP_FIRST_MCS_20_CDD,
28009 						    TXP_LAST_MCS_20_CDD);
28010 
28011 		wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28012 						TXP_FIRST_OFDM_20_CDD,
28013 						TXP_LAST_OFDM_20_CDD,
28014 						TXP_FIRST_MCS_20_CDD);
28015 
28016 		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28017 						tmp_max_pwr,
28018 						TXP_FIRST_MCS_20_STBC,
28019 						TXP_LAST_MCS_20_STBC);
28020 
28021 		if (NREV_GE(pi->pubpi.phy_rev, 3))
28022 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28023 						    tmp_stbcpo,
28024 						    TXP_FIRST_MCS_20_STBC,
28025 						    TXP_LAST_MCS_20_STBC);
28026 
28027 		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28028 						&pwr_offsets2[2], tmp_max_pwr,
28029 						TXP_FIRST_MCS_20_SDM,
28030 						TXP_LAST_MCS_20_SDM);
28031 
28032 		if (NPHY_IS_SROM_REINTERPRET) {
28033 
28034 			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28035 							&pwr_offsets2[4],
28036 							tmp_max_pwr,
28037 							TXP_FIRST_MCS_40_SISO,
28038 							TXP_LAST_MCS_40_SISO);
28039 
28040 			wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28041 							TXP_FIRST_OFDM_40_SISO,
28042 							TXP_LAST_OFDM_40_SISO,
28043 							TXP_FIRST_MCS_40_SISO);
28044 
28045 			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28046 							&pwr_offsets2[4],
28047 							tmp_max_pwr,
28048 							TXP_FIRST_MCS_40_CDD,
28049 							TXP_LAST_MCS_40_CDD);
28050 
28051 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28052 						    TXP_FIRST_MCS_40_CDD,
28053 						    TXP_LAST_MCS_40_CDD);
28054 
28055 			wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28056 							TXP_FIRST_OFDM_40_CDD,
28057 							TXP_LAST_OFDM_40_CDD,
28058 							TXP_FIRST_MCS_40_CDD);
28059 
28060 			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28061 							&pwr_offsets2[4],
28062 							tmp_max_pwr,
28063 							TXP_FIRST_MCS_40_STBC,
28064 							TXP_LAST_MCS_40_STBC);
28065 
28066 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28067 						    tmp_stbcpo,
28068 						    TXP_FIRST_MCS_40_STBC,
28069 						    TXP_LAST_MCS_40_STBC);
28070 
28071 			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28072 							&pwr_offsets2[6],
28073 							tmp_max_pwr,
28074 							TXP_FIRST_MCS_40_SDM,
28075 							TXP_LAST_MCS_40_SDM);
28076 		} else {
28077 
28078 			for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28079 				     TXP_FIRST_OFDM;
28080 			     rate1 <= TXP_LAST_MCS_40_SDM;
28081 			     rate1++, rate2++)
28082 				tx_srom_max_rate[rate1] =
28083 					tx_srom_max_rate[rate2];
28084 		}
28085 
28086 		if (NREV_GE(pi->pubpi.phy_rev, 3))
28087 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28088 						    tmp_bw40po,
28089 						    TXP_FIRST_OFDM_40_SISO,
28090 						    TXP_LAST_MCS_40_SDM);
28091 
28092 		tx_srom_max_rate[TXP_MCS_32] =
28093 			tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28094 	}
28095 
28096 	return;
28097 }
28098 
wlc_phy_txpower_recalc_target_nphy(struct brcms_phy * pi)28099 void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28100 {
28101 	u8 tx_pwr_ctrl_state;
28102 	wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28103 	wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28104 
28105 	tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28106 
28107 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28108 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28109 		(void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
28110 		udelay(1);
28111 	}
28112 
28113 	wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28114 
28115 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28116 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28117 }
28118 
wlc_phy_txpwr_ison_nphy(struct brcms_phy * pi)28119 static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28120 {
28121 	return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28122 					    (0x1 << 14) | (0x1 << 13));
28123 }
28124 
wlc_phy_txpwr_idx_get_nphy(struct brcms_phy * pi)28125 u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28126 {
28127 	u16 tmp;
28128 	u16 pwr_idx[2];
28129 
28130 	if (wlc_phy_txpwr_ison_nphy(pi)) {
28131 		pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28132 		pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28133 
28134 		tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28135 	} else {
28136 		tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28137 			<< 8) |
28138 			(pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28139 	}
28140 
28141 	return tmp;
28142 }
28143 
wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy * pi)28144 void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28145 {
28146 	if (PHY_IPA(pi)
28147 	    && (pi->nphy_force_papd_cal
28148 		|| (wlc_phy_txpwr_ison_nphy(pi)
28149 		    &&
28150 		    (((u32)
28151 		      abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28152 			  pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28153 		     || ((u32)
28154 			 abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28155 			     pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28156 		wlc_phy_a4(pi, true);
28157 }
28158 
wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy * pi,u8 ctrl_type)28159 void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28160 {
28161 	u16 mask = 0, val = 0, ishw = 0;
28162 	u8 ctr;
28163 	uint core;
28164 	u32 tbl_offset;
28165 	u32 tbl_len;
28166 	u16 regval[84];
28167 
28168 	if (pi->phyhang_avoid)
28169 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
28170 
28171 	switch (ctrl_type) {
28172 	case PHY_TPC_HW_OFF:
28173 	case PHY_TPC_HW_ON:
28174 		pi->nphy_txpwrctrl = ctrl_type;
28175 		break;
28176 	default:
28177 		break;
28178 	}
28179 
28180 	if (ctrl_type == PHY_TPC_HW_OFF) {
28181 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28182 
28183 			if (wlc_phy_txpwr_ison_nphy(pi)) {
28184 				for (core = 0; core < pi->pubpi.phy_corenum;
28185 				     core++)
28186 					pi->nphy_txpwr_idx[core] =
28187 						wlc_phy_txpwr_idx_cur_get_nphy(
28188 							pi,
28189 							(u8) core);
28190 			}
28191 
28192 		}
28193 
28194 		tbl_len = 84;
28195 		tbl_offset = 64;
28196 		for (ctr = 0; ctr < tbl_len; ctr++)
28197 			regval[ctr] = 0;
28198 		wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28199 					 regval);
28200 		wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28201 					 regval);
28202 
28203 		if (NREV_GE(pi->pubpi.phy_rev, 3))
28204 			and_phy_reg(pi, 0x1e7,
28205 				    (u16) (~((0x1 << 15) |
28206 					     (0x1 << 14) | (0x1 << 13))));
28207 		else
28208 			and_phy_reg(pi, 0x1e7,
28209 				    (u16) (~((0x1 << 14) | (0x1 << 13))));
28210 
28211 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28212 			or_phy_reg(pi, 0x8f, (0x1 << 8));
28213 			or_phy_reg(pi, 0xa5, (0x1 << 8));
28214 		} else {
28215 			or_phy_reg(pi, 0xa5, (0x1 << 14));
28216 		}
28217 
28218 		if (NREV_IS(pi->pubpi.phy_rev, 2))
28219 			mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28220 		else if (NREV_LT(pi->pubpi.phy_rev, 2))
28221 			mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28222 
28223 		if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28224 		    pi->bw == WL_CHANSPEC_BW_40)
28225 			wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28226 				       MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28227 
28228 	} else {
28229 
28230 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28231 					 8, pi->adj_pwr_tbl_nphy);
28232 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28233 					 8, pi->adj_pwr_tbl_nphy);
28234 
28235 		ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28236 		mask = (0x1 << 14) | (0x1 << 13);
28237 		val = (ishw << 14) | (ishw << 13);
28238 
28239 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28240 			mask |= (0x1 << 15);
28241 			val |= (ishw << 15);
28242 		}
28243 
28244 		mod_phy_reg(pi, 0x1e7, mask, val);
28245 
28246 		if (CHSPEC_IS5G(pi->radio_chanspec)) {
28247 			if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28248 				mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28249 				mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28250 			} else {
28251 				mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28252 				if (NREV_GT(pi->pubpi.phy_rev, 1))
28253 					mod_phy_reg(pi, 0x222,
28254 						    (0xff << 0), 0x64);
28255 			}
28256 		}
28257 
28258 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28259 			if ((pi->nphy_txpwr_idx[0] != 128)
28260 			    && (pi->nphy_txpwr_idx[1] != 128))
28261 				wlc_phy_txpwr_idx_cur_set_nphy(pi,
28262 							       pi->
28263 							       nphy_txpwr_idx
28264 							       [0],
28265 							       pi->
28266 							       nphy_txpwr_idx
28267 							       [1]);
28268 		}
28269 
28270 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28271 			and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28272 			and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28273 		} else {
28274 			and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28275 		}
28276 
28277 		if (NREV_IS(pi->pubpi.phy_rev, 2))
28278 			mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28279 		else if (NREV_LT(pi->pubpi.phy_rev, 2))
28280 			mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28281 
28282 		if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28283 		    pi->bw == WL_CHANSPEC_BW_40)
28284 			wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28285 				       0x0, BRCM_BAND_ALL);
28286 
28287 		if (PHY_IPA(pi)) {
28288 			mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28289 				    0x29b, (0x1 << 2), (0) << 2);
28290 
28291 			mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28292 				    0x29b, (0x1 << 2), (0) << 2);
28293 
28294 		}
28295 
28296 	}
28297 
28298 	if (pi->phyhang_avoid)
28299 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
28300 }
28301 
28302 void
wlc_phy_txpwr_index_nphy(struct brcms_phy * pi,u8 core_mask,s8 txpwrindex,bool restore_cals)28303 wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28304 			 bool restore_cals)
28305 {
28306 	u8 core, txpwrctl_tbl;
28307 	u16 tx_ind0, iq_ind0, lo_ind0;
28308 	u16 m1m2;
28309 	u32 txgain;
28310 	u16 rad_gain, dac_gain;
28311 	u8 bbmult;
28312 	u32 iqcomp;
28313 	u16 iqcomp_a, iqcomp_b;
28314 	u32 locomp;
28315 	u16 tmpval;
28316 	u8 tx_pwr_ctrl_state;
28317 	s32 rfpwr_offset;
28318 	u16 regval[2];
28319 
28320 	if (pi->phyhang_avoid)
28321 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
28322 
28323 	tx_ind0 = 192;
28324 	iq_ind0 = 320;
28325 	lo_ind0 = 448;
28326 
28327 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28328 
28329 		if ((core_mask & (1 << core)) == 0)
28330 			continue;
28331 
28332 		txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28333 
28334 		if (txpwrindex < 0) {
28335 			if (pi->nphy_txpwrindex[core].index < 0)
28336 				continue;
28337 
28338 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28339 				mod_phy_reg(pi, 0x8f,
28340 					    (0x1 << 8),
28341 					    pi->nphy_txpwrindex[core].
28342 					    AfectrlOverride);
28343 				mod_phy_reg(pi, 0xa5, (0x1 << 8),
28344 					    pi->nphy_txpwrindex[core].
28345 					    AfectrlOverride);
28346 			} else {
28347 				mod_phy_reg(pi, 0xa5,
28348 					    (0x1 << 14),
28349 					    pi->nphy_txpwrindex[core].
28350 					    AfectrlOverride);
28351 			}
28352 
28353 			write_phy_reg(pi, (core == PHY_CORE_0) ?
28354 				      0xaa : 0xab,
28355 				      pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28356 
28357 			wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28358 						 &pi->nphy_txpwrindex[core].
28359 						 rad_gain);
28360 
28361 			wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28362 			m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28363 			m1m2 |= ((core == PHY_CORE_0) ?
28364 				 (pi->nphy_txpwrindex[core].bbmult << 8) :
28365 				 (pi->nphy_txpwrindex[core].bbmult << 0));
28366 			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28367 
28368 			if (restore_cals) {
28369 				wlc_phy_table_write_nphy(
28370 					pi, 15, 2, (80 + 2 * core), 16,
28371 					&pi->nphy_txpwrindex[core].iqcomp_a);
28372 				wlc_phy_table_write_nphy(
28373 					pi, 15, 1, (85 + core), 16,
28374 					&pi->nphy_txpwrindex[core].locomp);
28375 				wlc_phy_table_write_nphy(
28376 					pi, 15, 1, (93 + core), 16,
28377 					&pi->nphy_txpwrindex[core].locomp);
28378 			}
28379 
28380 			wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28381 
28382 			pi->nphy_txpwrindex[core].index_internal =
28383 				pi->nphy_txpwrindex[core].index_internal_save;
28384 		} else {
28385 
28386 			if (pi->nphy_txpwrindex[core].index < 0) {
28387 
28388 				if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28389 					mod_phy_reg(pi, 0x8f,
28390 						    (0x1 << 8),
28391 						    pi->nphy_txpwrindex[core].
28392 						    AfectrlOverride);
28393 					mod_phy_reg(pi, 0xa5, (0x1 << 8),
28394 						    pi->nphy_txpwrindex[core].
28395 						    AfectrlOverride);
28396 				} else {
28397 					pi->nphy_txpwrindex[core].
28398 					AfectrlOverride =
28399 						read_phy_reg(pi, 0xa5);
28400 				}
28401 
28402 				pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28403 					read_phy_reg(pi, (core == PHY_CORE_0) ?
28404 							 0xaa : 0xab);
28405 
28406 				wlc_phy_table_read_nphy(pi, 7, 1,
28407 							(0x110 + core), 16,
28408 							&pi->
28409 							nphy_txpwrindex[core].
28410 							rad_gain);
28411 
28412 				wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28413 							&tmpval);
28414 				tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28415 				tmpval &= 0xff;
28416 				pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28417 
28418 				wlc_phy_table_read_nphy(pi, 15, 2,
28419 							(80 + 2 * core), 16,
28420 							&pi->
28421 							nphy_txpwrindex[core].
28422 							iqcomp_a);
28423 
28424 				wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28425 							16,
28426 							&pi->
28427 							nphy_txpwrindex[core].
28428 							locomp);
28429 
28430 				pi->nphy_txpwrindex[core].index_internal_save =
28431 					pi->nphy_txpwrindex[core].
28432 					index_internal;
28433 			}
28434 
28435 			tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28436 			wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28437 
28438 			if (NREV_IS(pi->pubpi.phy_rev, 1))
28439 				wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28440 
28441 			wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28442 						(tx_ind0 + txpwrindex), 32,
28443 						&txgain);
28444 
28445 			if (NREV_GE(pi->pubpi.phy_rev, 3))
28446 				rad_gain = (txgain >> 16) &
28447 					   ((1 << (32 - 16 + 1)) - 1);
28448 			else
28449 				rad_gain = (txgain >> 16) &
28450 					   ((1 << (28 - 16 + 1)) - 1);
28451 
28452 			dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28453 			bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28454 
28455 			if (NREV_GE(pi->pubpi.phy_rev, 3))
28456 				mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28457 						 0xa5), (0x1 << 8), (0x1 << 8));
28458 			else
28459 				mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28460 
28461 			write_phy_reg(pi, (core == PHY_CORE_0) ?
28462 				      0xaa : 0xab, dac_gain);
28463 
28464 			wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28465 						 &rad_gain);
28466 
28467 			wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28468 			m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28469 			m1m2 |= ((core == PHY_CORE_0) ?
28470 				(bbmult << 8) : (bbmult << 0));
28471 
28472 			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28473 
28474 			wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28475 						(iq_ind0 + txpwrindex), 32,
28476 						&iqcomp);
28477 			iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28478 			iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28479 
28480 			if (restore_cals) {
28481 				regval[0] = (u16) iqcomp_a;
28482 				regval[1] = (u16) iqcomp_b;
28483 				wlc_phy_table_write_nphy(pi, 15, 2,
28484 							 (80 + 2 * core), 16,
28485 							 regval);
28486 			}
28487 
28488 			wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28489 						(lo_ind0 + txpwrindex), 32,
28490 						&locomp);
28491 			if (restore_cals)
28492 				wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28493 							 16, &locomp);
28494 
28495 			if (NREV_IS(pi->pubpi.phy_rev, 1))
28496 				wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28497 
28498 			if (PHY_IPA(pi)) {
28499 				wlc_phy_table_read_nphy(pi,
28500 						(core == PHY_CORE_0 ?
28501 						 NPHY_TBL_ID_CORE1TXPWRCTL :
28502 						 NPHY_TBL_ID_CORE2TXPWRCTL),
28503 						1, 576 + txpwrindex, 32,
28504 						&rfpwr_offset);
28505 
28506 				mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28507 					    0x29b, (0x1ff << 4),
28508 					    ((s16) rfpwr_offset) << 4);
28509 
28510 				mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28511 					    0x29b, (0x1 << 2), (1) << 2);
28512 
28513 			}
28514 
28515 			wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28516 		}
28517 
28518 		pi->nphy_txpwrindex[core].index = txpwrindex;
28519 	}
28520 
28521 	if (pi->phyhang_avoid)
28522 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
28523 }
28524 
28525 void
wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy * pi,uint chan,u8 * max_pwr,u8 txp_rate_idx)28526 wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28527 				   u8 txp_rate_idx)
28528 {
28529 	u8 chan_freq_range;
28530 
28531 	chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28532 	switch (chan_freq_range) {
28533 	case WL_CHAN_FREQ_RANGE_2G:
28534 		*max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28535 		break;
28536 	case WL_CHAN_FREQ_RANGE_5GM:
28537 		*max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28538 		break;
28539 	case WL_CHAN_FREQ_RANGE_5GL:
28540 		*max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28541 		break;
28542 	case WL_CHAN_FREQ_RANGE_5GH:
28543 		*max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28544 		break;
28545 	default:
28546 		*max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28547 		break;
28548 	}
28549 
28550 	return;
28551 }
28552 
wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy * pi,bool enable)28553 void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28554 {
28555 	u16 clip_off[] = { 0xffff, 0xffff };
28556 
28557 	if (enable) {
28558 		if (pi->nphy_deaf_count == 0) {
28559 			pi->classifier_state =
28560 				wlc_phy_classifier_nphy(pi, 0, 0);
28561 			wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28562 			wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28563 			wlc_phy_clip_det_nphy(pi, 1, clip_off);
28564 		}
28565 
28566 		pi->nphy_deaf_count++;
28567 
28568 		wlc_phy_resetcca_nphy(pi);
28569 
28570 	} else {
28571 		pi->nphy_deaf_count--;
28572 
28573 		if (pi->nphy_deaf_count == 0) {
28574 			wlc_phy_classifier_nphy(pi, (0x7 << 0),
28575 						pi->classifier_state);
28576 			wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28577 		}
28578 	}
28579 }
28580 
wlc_nphy_deaf_mode(struct brcms_phy * pi,bool mode)28581 void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28582 {
28583 	wlapi_suspend_mac_and_wait(pi->sh->physhim);
28584 
28585 	if (mode) {
28586 		if (pi->nphy_deaf_count == 0)
28587 			wlc_phy_stay_in_carriersearch_nphy(pi, true);
28588 	} else if (pi->nphy_deaf_count > 0) {
28589 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
28590 	}
28591 
28592 	wlapi_enable_mac(pi->sh->physhim);
28593 }
28594