1 /*
2  * Copyright (c) 2010 Broadcom Corporation
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
11  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
13  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
14  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16 
17 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
18 
19 #include <linux/kernel.h>
20 #include <linux/delay.h>
21 #include <linux/cordic.h>
22 
23 #include <brcm_hw_ids.h>
24 #include <aiutils.h>
25 #include <chipcommon.h>
26 #include <pmu.h>
27 #include <d11.h>
28 #include <phy_shim.h>
29 #include "phy_int.h"
30 #include "phy_hal.h"
31 #include "phy_radio.h"
32 #include "phyreg_n.h"
33 #include "phytbl_n.h"
34 #include "soc.h"
35 
36 #define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name)	\
37 	read_radio_reg(pi, radio_type##_##jspace##_##reg_name |	\
38 		       ((core == PHY_CORE_0) ? \
39 			radio_type##_##jspace##0 : \
40 			radio_type##_##jspace##1))
41 
42 #define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value)	\
43 	write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
44 			((core ==  PHY_CORE_0) ? \
45 			 radio_type##_##jspace##0 : \
46 			 radio_type##_##jspace##1), value)
47 
48 #define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
49 	write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value)
50 
51 #define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name)	\
52 	read_radio_reg(pi, ((core == PHY_CORE_0) ? \
53 			    radio_type##_##jspace##0##_##reg_name : \
54 			    radio_type##_##jspace##1##_##reg_name))
55 
56 #define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value)	\
57 	write_radio_reg(pi, ((core ==  PHY_CORE_0) ? \
58 			     radio_type##_##jspace##0##_##reg_name : \
59 			     radio_type##_##jspace##1##_##reg_name), \
60 			value)
61 
62 #define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name)	\
63 	read_radio_reg(pi, ((core == PHY_CORE_0) ? \
64 			     radio_type##_##reg_name##_##jspace##0 : \
65 			     radio_type##_##reg_name##_##jspace##1))
66 
67 #define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value)	\
68 	write_radio_reg(pi, ((core == PHY_CORE_0) ? \
69 			radio_type##_##reg_name##_##jspace##0 : \
70 			radio_type##_##reg_name##_##jspace##1), \
71 			value)
72 
73 #define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
74 #define NPHY_ACI_CHANNEL_DELTA 5
75 #define NPHY_ACI_CHANNEL_SKIP 4
76 #define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
77 #define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
78 #define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
79 #define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
80 #define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
81 #define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
82 
83 #define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
84 
85 #define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
86 
87 #define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
88 
89 #define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
90 
91 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
92 
93 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
94 
95 #define NPHY_NOISE_NOASSOC_ENTER_TH  400
96 
97 #define NPHY_NOISE_ASSOC_ENTER_TH  400
98 
99 #define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH  400
100 
101 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
102 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
103 
104 #define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
105 
106 #define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
107 
108 #define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
109 
110 #define NPHY_RSSICAL_MAXREAD 31
111 
112 #define NPHY_RSSICAL_NPOLL 8
113 #define NPHY_RSSICAL_MAXD  (1<<20)
114 #define NPHY_MIN_RXIQ_PWR 2
115 
116 #define NPHY_RSSICAL_W1_TARGET 25
117 #define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
118 #define NPHY_RSSICAL_NB_TARGET 0
119 
120 #define NPHY_RSSICAL_W1_TARGET_REV3 29
121 #define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
122 
123 #define NPHY_CALSANITY_RSSI_NB_MAX_POS  9
124 #define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
125 #define NPHY_CALSANITY_RSSI_W1_MAX_POS  12
126 #define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - \
127 					NPHY_RSSICAL_MAXREAD)
128 #define NPHY_CALSANITY_RSSI_W2_MAX_POS  NPHY_CALSANITY_RSSI_W1_MAX_POS
129 #define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - \
130 					NPHY_RSSICAL_MAXREAD)
131 #define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
132 #define NPHY_RSSI_NB_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
133 			       ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
134 #define NPHY_RSSI_W1_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
135 			       ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
136 #define NPHY_RSSI_W2_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
137 			       ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
138 
139 #define NPHY_IQCAL_NUMGAINS 9
140 #define NPHY_N_GCTL 0x66
141 
142 #define NPHY_PAPD_EPS_TBL_SIZE 64
143 #define NPHY_PAPD_SCL_TBL_SIZE 64
144 #define NPHY_NUM_DIG_FILT_COEFFS 15
145 
146 #define NPHY_PAPD_COMP_OFF 0
147 #define NPHY_PAPD_COMP_ON  1
148 
149 #define NPHY_SROM_TEMPSHIFT             32
150 #define NPHY_SROM_MAXTEMPOFFSET         16
151 #define NPHY_SROM_MINTEMPOFFSET         -16
152 
153 #define NPHY_CAL_MAXTEMPDELTA           64
154 
155 #define NPHY_NOISEVAR_TBLLEN40 256
156 #define NPHY_NOISEVAR_TBLLEN20 128
157 
158 #define NPHY_ANARXLPFBW_REDUCTIONFACT 7
159 
160 #define NPHY_ADJUSTED_MINCRSPOWER 0x1e
161 
162 /* 5357 Chip specific ChipControl register bits */
163 #define CCTRL5357_EXTPA            (1<<14) /* extPA in ChipControl 1, bit 14 */
164 #define CCTRL5357_ANT_MUX_2o3      (1<<15) /* 2o3 in ChipControl 1, bit 15 */
165 
166 #define NPHY_CAL_TSSISAMPS      64
167 #define NPHY_TEST_TONE_FREQ_40MHz 4000
168 #define NPHY_TEST_TONE_FREQ_20MHz 2500
169 
170 #define MAX_205x_RCAL_WAITLOOPS 10000
171 
172 #define NPHY_RXCAL_TONEAMP 181
173 #define NPHY_RXCAL_TONEFREQ_40MHz 4000
174 #define NPHY_RXCAL_TONEFREQ_20MHz 2000
175 
176 #define TXFILT_SHAPING_OFDM20   0
177 #define TXFILT_SHAPING_OFDM40   1
178 #define TXFILT_SHAPING_CCK      2
179 #define TXFILT_DEFAULT_OFDM20   3
180 #define TXFILT_DEFAULT_OFDM40   4
181 
182 struct nphy_iqcal_params {
183 	u16 txlpf;
184 	u16 txgm;
185 	u16 pga;
186 	u16 pad;
187 	u16 ipa;
188 	u16 cal_gain;
189 	u16 ncorr[5];
190 };
191 
192 struct nphy_txiqcal_ladder {
193 	u8 percent;
194 	u8 g_env;
195 };
196 
197 struct nphy_ipa_txcalgains {
198 	struct nphy_txgains gains;
199 	bool useindex;
200 	u8 index;
201 };
202 
203 struct nphy_papd_restore_state {
204 	u16 fbmix[2];
205 	u16 vga_master[2];
206 	u16 intpa_master[2];
207 	u16 afectrl[2];
208 	u16 afeoverride[2];
209 	u16 pwrup[2];
210 	u16 atten[2];
211 	u16 mm;
212 };
213 
214 struct nphy_ipa_txrxgain {
215 	u16 hpvga;
216 	u16 lpf_biq1;
217 	u16 lpf_biq0;
218 	u16 lna2;
219 	u16 lna1;
220 	s8 txpwrindex;
221 };
222 
223 #define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
224 
225 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz[] = {
226 	{0, 0, 0, 0, 0, 100},
227 	{0, 0, 0, 0, 0, 50},
228 	{0, 0, 0, 0, 0, -1},
229 	{0, 0, 0, 3, 0, -1},
230 	{0, 0, 3, 3, 0, -1},
231 	{0, 2, 3, 3, 0, -1}
232 };
233 
234 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz[] = {
235 	{0, 0, 0, 0, 0, 128},
236 	{0, 0, 0, 0, 0, 70},
237 	{0, 0, 0, 0, 0, 20},
238 	{0, 0, 0, 3, 0, 20},
239 	{0, 0, 3, 3, 0, 20},
240 	{0, 2, 3, 3, 0, 20}
241 };
242 
243 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = {
244 	{0, 0, 0, 0, 0, 100},
245 	{0, 0, 0, 0, 0, 50},
246 	{0, 0, 0, 0, 0, -1},
247 	{0, 0, 0, 3, 0, -1},
248 	{0, 0, 3, 3, 0, -1},
249 	{0, 0, 5, 3, 0, -1}
250 };
251 
252 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = {
253 	{0, 0, 0, 0, 0, 10},
254 	{0, 0, 0, 1, 0, 10},
255 	{0, 0, 1, 2, 0, 10},
256 	{0, 0, 1, 3, 0, 10},
257 	{0, 0, 4, 3, 0, 10},
258 	{0, 0, 6, 3, 0, 10}
259 };
260 
261 enum {
262 	NPHY_RXCAL_GAIN_INIT = 0,
263 	NPHY_RXCAL_GAIN_UP,
264 	NPHY_RXCAL_GAIN_DOWN
265 };
266 
267 #define wlc_phy_get_papd_nphy(pi) \
268 	(read_phy_reg((pi), 0x1e7) & \
269 	 ((0x1 << 15) |	\
270 	  (0x1 << 14) |	\
271 	  (0x1 << 13)))
272 
273 static const u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
274 	{-377, 137, -407, 208, -1527, 956, 93, 186, 93,
275 	 230, -44, 230, 201, -191, 201},
276 	{-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
277 	 26, 34, -32, 34},
278 	{-360, 164, -376, 164, -1533, 576, 308, -314, 308,
279 	 121, -73, 121, 91, 124, 91},
280 	{-295, 200, -363, 142, -1391, 826, 151, 301, 151,
281 	 151, 301, 151, 602, -752, 602},
282 	{-92, 58, -96, 49, -104, 44, 17, 35, 17,
283 	 12, 25, 12, 13, 27, 13},
284 	{-375, 136, -399, 209, -1479, 949, 130, 260, 130,
285 	 230, -44, 230, 201, -191, 201},
286 	{0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
287 	 0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
288 };
289 
290 struct chan_info_nphy_2055 {
291 	u16 chan;
292 	u16 freq;
293 	uint unknown;
294 	u8 RF_pll_ref;
295 	u8 RF_rf_pll_mod1;
296 	u8 RF_rf_pll_mod0;
297 	u8 RF_vco_cap_tail;
298 	u8 RF_vco_cal1;
299 	u8 RF_vco_cal2;
300 	u8 RF_pll_lf_c1;
301 	u8 RF_pll_lf_r1;
302 	u8 RF_pll_lf_c2;
303 	u8 RF_lgbuf_cen_buf;
304 	u8 RF_lgen_tune1;
305 	u8 RF_lgen_tune2;
306 	u8 RF_core1_lgbuf_a_tune;
307 	u8 RF_core1_lgbuf_g_tune;
308 	u8 RF_core1_rxrf_reg1;
309 	u8 RF_core1_tx_pga_pad_tn;
310 	u8 RF_core1_tx_mx_bgtrim;
311 	u8 RF_core2_lgbuf_a_tune;
312 	u8 RF_core2_lgbuf_g_tune;
313 	u8 RF_core2_rxrf_reg1;
314 	u8 RF_core2_tx_pga_pad_tn;
315 	u8 RF_core2_tx_mx_bgtrim;
316 	u16 PHY_BW1a;
317 	u16 PHY_BW2;
318 	u16 PHY_BW3;
319 	u16 PHY_BW4;
320 	u16 PHY_BW5;
321 	u16 PHY_BW6;
322 };
323 
324 struct chan_info_nphy_radio205x {
325 	u16 chan;
326 	u16 freq;
327 	u8 RF_SYN_pll_vcocal1;
328 	u8 RF_SYN_pll_vcocal2;
329 	u8 RF_SYN_pll_refdiv;
330 	u8 RF_SYN_pll_mmd2;
331 	u8 RF_SYN_pll_mmd1;
332 	u8 RF_SYN_pll_loopfilter1;
333 	u8 RF_SYN_pll_loopfilter2;
334 	u8 RF_SYN_pll_loopfilter3;
335 	u8 RF_SYN_pll_loopfilter4;
336 	u8 RF_SYN_pll_loopfilter5;
337 	u8 RF_SYN_reserved_addr27;
338 	u8 RF_SYN_reserved_addr28;
339 	u8 RF_SYN_reserved_addr29;
340 	u8 RF_SYN_logen_VCOBUF1;
341 	u8 RF_SYN_logen_MIXER2;
342 	u8 RF_SYN_logen_BUF3;
343 	u8 RF_SYN_logen_BUF4;
344 	u8 RF_RX0_lnaa_tune;
345 	u8 RF_RX0_lnag_tune;
346 	u8 RF_TX0_intpaa_boost_tune;
347 	u8 RF_TX0_intpag_boost_tune;
348 	u8 RF_TX0_pada_boost_tune;
349 	u8 RF_TX0_padg_boost_tune;
350 	u8 RF_TX0_pgaa_boost_tune;
351 	u8 RF_TX0_pgag_boost_tune;
352 	u8 RF_TX0_mixa_boost_tune;
353 	u8 RF_TX0_mixg_boost_tune;
354 	u8 RF_RX1_lnaa_tune;
355 	u8 RF_RX1_lnag_tune;
356 	u8 RF_TX1_intpaa_boost_tune;
357 	u8 RF_TX1_intpag_boost_tune;
358 	u8 RF_TX1_pada_boost_tune;
359 	u8 RF_TX1_padg_boost_tune;
360 	u8 RF_TX1_pgaa_boost_tune;
361 	u8 RF_TX1_pgag_boost_tune;
362 	u8 RF_TX1_mixa_boost_tune;
363 	u8 RF_TX1_mixg_boost_tune;
364 	u16 PHY_BW1a;
365 	u16 PHY_BW2;
366 	u16 PHY_BW3;
367 	u16 PHY_BW4;
368 	u16 PHY_BW5;
369 	u16 PHY_BW6;
370 };
371 
372 struct chan_info_nphy_radio2057 {
373 	u16 chan;
374 	u16 freq;
375 	u8 RF_vcocal_countval0;
376 	u8 RF_vcocal_countval1;
377 	u8 RF_rfpll_refmaster_sparextalsize;
378 	u8 RF_rfpll_loopfilter_r1;
379 	u8 RF_rfpll_loopfilter_c2;
380 	u8 RF_rfpll_loopfilter_c1;
381 	u8 RF_cp_kpd_idac;
382 	u8 RF_rfpll_mmd0;
383 	u8 RF_rfpll_mmd1;
384 	u8 RF_vcobuf_tune;
385 	u8 RF_logen_mx2g_tune;
386 	u8 RF_logen_mx5g_tune;
387 	u8 RF_logen_indbuf2g_tune;
388 	u8 RF_logen_indbuf5g_tune;
389 	u8 RF_txmix2g_tune_boost_pu_core0;
390 	u8 RF_pad2g_tune_pus_core0;
391 	u8 RF_pga_boost_tune_core0;
392 	u8 RF_txmix5g_boost_tune_core0;
393 	u8 RF_pad5g_tune_misc_pus_core0;
394 	u8 RF_lna2g_tune_core0;
395 	u8 RF_lna5g_tune_core0;
396 	u8 RF_txmix2g_tune_boost_pu_core1;
397 	u8 RF_pad2g_tune_pus_core1;
398 	u8 RF_pga_boost_tune_core1;
399 	u8 RF_txmix5g_boost_tune_core1;
400 	u8 RF_pad5g_tune_misc_pus_core1;
401 	u8 RF_lna2g_tune_core1;
402 	u8 RF_lna5g_tune_core1;
403 	u16 PHY_BW1a;
404 	u16 PHY_BW2;
405 	u16 PHY_BW3;
406 	u16 PHY_BW4;
407 	u16 PHY_BW5;
408 	u16 PHY_BW6;
409 };
410 
411 struct chan_info_nphy_radio2057_rev5 {
412 	u16 chan;
413 	u16 freq;
414 	u8 RF_vcocal_countval0;
415 	u8 RF_vcocal_countval1;
416 	u8 RF_rfpll_refmaster_sparextalsize;
417 	u8 RF_rfpll_loopfilter_r1;
418 	u8 RF_rfpll_loopfilter_c2;
419 	u8 RF_rfpll_loopfilter_c1;
420 	u8 RF_cp_kpd_idac;
421 	u8 RF_rfpll_mmd0;
422 	u8 RF_rfpll_mmd1;
423 	u8 RF_vcobuf_tune;
424 	u8 RF_logen_mx2g_tune;
425 	u8 RF_logen_indbuf2g_tune;
426 	u8 RF_txmix2g_tune_boost_pu_core0;
427 	u8 RF_pad2g_tune_pus_core0;
428 	u8 RF_lna2g_tune_core0;
429 	u8 RF_txmix2g_tune_boost_pu_core1;
430 	u8 RF_pad2g_tune_pus_core1;
431 	u8 RF_lna2g_tune_core1;
432 	u16 PHY_BW1a;
433 	u16 PHY_BW2;
434 	u16 PHY_BW3;
435 	u16 PHY_BW4;
436 	u16 PHY_BW5;
437 	u16 PHY_BW6;
438 };
439 
440 struct nphy_sfo_cfg {
441 	u16 PHY_BW1a;
442 	u16 PHY_BW2;
443 	u16 PHY_BW3;
444 	u16 PHY_BW4;
445 	u16 PHY_BW5;
446 	u16 PHY_BW6;
447 };
448 
449 static const struct chan_info_nphy_2055 chan_info_nphy_2055[] = {
450 	{
451 	 184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
452 	 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
453 	 0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
454 	{
455 	 186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
456 	 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
457 	 0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
458 	{
459 	 188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
460 	 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
461 	 0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
462 	{
463 	 190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
464 	 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
465 	 0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
466 	{
467 	 192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
468 	 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
469 	 0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
470 	{
471 	 194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
472 	 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
473 	 0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
474 	{
475 	 196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
476 	 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
477 	 0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
478 	{
479 	 198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
480 	 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
481 	 0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
482 	{
483 	 200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
484 	 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
485 	 0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
486 	{
487 	 202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
488 	 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
489 	 0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
490 	{
491 	 204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
492 	 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
493 	 0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
494 	{
495 	 206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
496 	 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
497 	 0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
498 	{
499 	 208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
500 	 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
501 	 0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
502 	{
503 	 210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
504 	 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
505 	 0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
506 	{
507 	 212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
508 	 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
509 	 0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
510 	{
511 	 214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
512 	 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
513 	 0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
514 	{
515 	 216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
516 	 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
517 	 0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
518 	{
519 	 218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
520 	 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
521 	 0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
522 	{
523 	 220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
524 	 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
525 	 0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
526 	{
527 	 222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
528 	 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
529 	 0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
530 	{
531 	 224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
532 	 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
533 	 0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
534 	{
535 	 226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
536 	 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
537 	 0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
538 	{
539 	 228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
540 	 0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
541 	 0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
542 	{
543 	 32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
544 	 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
545 	 0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
546 	{
547 	 34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
548 	 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
549 	 0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
550 	{
551 	 36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
552 	 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
553 	 0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
554 	{
555 	 38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
556 	 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
557 	 0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
558 	{
559 	 40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
560 	 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
561 	 0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
562 	{
563 	 42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
564 	 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
565 	 0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
566 	{
567 	 44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
568 	 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
569 	 0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
570 	{
571 	 46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
572 	 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
573 	 0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
574 	{
575 	 48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
576 	 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
577 	 0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
578 	{
579 	 50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
580 	 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
581 	 0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
582 	{
583 	 52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
584 	 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
585 	 0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
586 	{
587 	 54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
588 	 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
589 	 0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
590 	{
591 	 56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
592 	 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
593 	 0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
594 	{
595 	 58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
596 	 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
597 	 0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
598 	{
599 	 60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
600 	 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
601 	 0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
602 	{
603 	 62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
604 	 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
605 	 0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
606 	{
607 	 64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
608 	 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
609 	 0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
610 	{
611 	 66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
612 	 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
613 	 0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
614 	{
615 	 68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
616 	 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
617 	 0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
618 	{
619 	 70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
620 	 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
621 	 0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
622 	{
623 	 72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
624 	 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
625 	 0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
626 	{
627 	 74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
628 	 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
629 	 0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
630 	{
631 	 76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
632 	 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
633 	 0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
634 	{
635 	 78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
636 	 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
637 	 0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
638 	{
639 	 80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
640 	 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
641 	 0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
642 	{
643 	 82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
644 	 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
645 	 0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
646 	{
647 	 84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
648 	 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
649 	 0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
650 	{
651 	 86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
652 	 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
653 	 0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
654 	{
655 	 88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
656 	 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
657 	 0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
658 	{
659 	 90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
660 	 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
661 	 0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
662 	{
663 	 92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
664 	 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
665 	 0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
666 	{
667 	 94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
668 	 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
669 	 0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
670 	{
671 	 96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
672 	 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
673 	 0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
674 	{
675 	 98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
676 	 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
677 	 0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
678 	{
679 	 100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
680 	 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
681 	 0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
682 	{
683 	 102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
684 	 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
685 	 0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
686 	{
687 	 104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
688 	 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
689 	 0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
690 	{
691 	 106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
692 	 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
693 	 0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
694 	{
695 	 108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
696 	 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
697 	 0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
698 	{
699 	 110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
700 	 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
701 	 0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
702 	{
703 	 112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
704 	 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
705 	 0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
706 	{
707 	 114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
708 	 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
709 	 0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
710 	{
711 	 116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
712 	 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
713 	 0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
714 	{
715 	 118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
716 	 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
717 	 0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
718 	{
719 	 120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
720 	 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
721 	 0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
722 	{
723 	 122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
724 	 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
725 	 0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
726 	{
727 	 124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
728 	 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
729 	 0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
730 	{
731 	 126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
732 	 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
733 	 0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
734 	{
735 	 128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
736 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
737 	 0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
738 	{
739 	 130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
740 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
741 	 0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
742 	{
743 	 132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
744 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
745 	 0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
746 	{
747 	 134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
748 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
749 	 0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
750 	{
751 	 136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
752 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
753 	 0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
754 	{
755 	 138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
756 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
757 	 0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
758 	{
759 	 140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
760 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
761 	 0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
762 	{
763 	 142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
764 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
765 	 0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
766 	{
767 	 144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
768 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
769 	 0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
770 	{
771 	 145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
772 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
773 	 0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
774 	{
775 	 146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
776 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
777 	 0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
778 	{
779 	 147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
780 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
781 	 0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
782 	{
783 	 148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
784 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
785 	 0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
786 	{
787 	 149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
788 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
789 	 0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
790 	{
791 	 150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
792 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
793 	 0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
794 	{
795 	 151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
796 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
797 	 0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
798 	{
799 	 152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
800 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
801 	 0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
802 	{
803 	 153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
804 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
805 	 0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
806 	{
807 	 154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
808 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
809 	 0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
810 	{
811 	 155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
812 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
813 	 0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
814 	{
815 	 156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
816 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
817 	 0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
818 	{
819 	 157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
820 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
821 	 0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
822 	{
823 	 158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
824 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
825 	 0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
826 	{
827 	 159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
828 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
829 	 0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
830 	{
831 	 160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
832 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
833 	 0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
834 	{
835 	 161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
836 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
837 	 0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
838 	{
839 	 162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
840 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
841 	 0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
842 	{
843 	 163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
844 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
845 	 0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
846 	{
847 	 164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
848 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
849 	 0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
850 	{
851 	 165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
852 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
853 	 0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
854 	{
855 	 166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
856 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
857 	 0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
858 	{
859 	 168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
860 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
861 	 0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
862 	{
863 	 170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
864 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
865 	 0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
866 	{
867 	 172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
868 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
869 	 0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
870 	{
871 	 174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
872 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
873 	 0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
874 	{
875 	 176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
876 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
877 	 0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
878 	{
879 	 178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
880 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
881 	 0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
882 	{
883 	 180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
884 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
885 	 0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
886 	{
887 	 182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
888 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
889 	 0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
890 	{
891 	 1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
892 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
893 	 0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
894 	{
895 	 2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
896 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
897 	 0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
898 	{
899 	 3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
900 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
901 	 0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
902 	{
903 	 4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
904 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
905 	 0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
906 	{
907 	 5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
908 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
909 	 0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
910 	{
911 	 6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
912 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
913 	 0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
914 	{
915 	 7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
916 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
917 	 0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
918 	{
919 	 8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
920 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
921 	 0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
922 	{
923 	 9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
924 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
925 	 0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
926 	{
927 	 10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
928 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
929 	 0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
930 	{
931 	 11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
932 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
933 	 0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
934 	{
935 	 12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
936 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
937 	 0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
938 	{
939 	 13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
940 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
941 	 0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
942 	{
943 	 14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
944 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
945 	 0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
946 };
947 
948 static const struct chan_info_nphy_radio205x chan_info_nphyrev3_2056[] = {
949 	{
950 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
951 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
952 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
953 	 0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
954 	{
955 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
956 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
957 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
958 	 0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
959 	{
960 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
961 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
962 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
963 	 0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
964 	{
965 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
966 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
967 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
968 	 0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
969 	{
970 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
971 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
972 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
973 	 0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
974 	{
975 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
976 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
977 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
978 	 0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
979 	{
980 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
981 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
982 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
983 	 0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
984 	{
985 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
986 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
987 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
988 	 0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
989 	{
990 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
991 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
992 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
993 	 0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
994 	{
995 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
996 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
997 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
998 	 0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
999 	{
1000 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1001 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1002 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1003 	 0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1004 	{
1005 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1006 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1007 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1008 	 0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1009 	{
1010 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1011 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1012 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1013 	 0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1014 	{
1015 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1016 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1017 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1018 	 0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1019 	{
1020 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1021 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1022 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1023 	 0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1024 	{
1025 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1026 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1027 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1028 	 0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1029 	{
1030 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1031 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1032 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1033 	 0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1034 	{
1035 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1036 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1037 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1038 	 0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1039 	{
1040 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1041 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1042 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1043 	 0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1044 	{
1045 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1046 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1047 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1048 	 0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1049 	{
1050 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1051 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1052 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1053 	 0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1054 	{
1055 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1056 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1057 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1058 	 0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1059 	{
1060 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1061 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1062 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1063 	 0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1064 	{
1065 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1066 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1067 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1068 	 0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1069 	{
1070 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1071 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1072 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1073 	 0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1074 	{
1075 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1076 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1077 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1078 	 0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1079 	{
1080 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1081 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1082 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1083 	 0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1084 	{
1085 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1086 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1087 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1088 	 0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1089 	{
1090 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1091 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1092 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1093 	 0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1094 	{
1095 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1096 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1097 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1098 	 0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1099 	{
1100 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1101 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1102 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1103 	 0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1104 	{
1105 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1106 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1107 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1108 	 0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1109 	{
1110 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1111 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1112 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1113 	 0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1114 	{
1115 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1116 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1117 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1118 	 0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1119 	{
1120 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1121 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1122 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1123 	 0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1124 	{
1125 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1126 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1127 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1128 	 0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1129 	{
1130 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1131 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1132 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1133 	 0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1134 	{
1135 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1136 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1137 	 0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1138 	 0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1139 	{
1140 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1141 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1142 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1143 	 0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1144 	{
1145 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1146 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1147 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1148 	 0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1149 	{
1150 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1151 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1152 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1153 	 0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1154 	{
1155 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1156 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1157 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1158 	 0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1159 	{
1160 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1161 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1162 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1163 	 0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1164 	{
1165 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1166 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1167 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1168 	 0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1169 	{
1170 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1171 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1172 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1173 	 0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1174 	{
1175 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1176 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1177 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1178 	 0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1179 	{
1180 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1181 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1182 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1183 	 0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1184 	{
1185 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1186 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1187 	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1188 	 0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1189 	{
1190 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1191 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1192 	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1193 	 0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1194 	{
1195 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1196 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1197 	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1198 	 0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1199 	{
1200 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1201 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1202 	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1203 	 0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1204 	{
1205 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1206 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1207 	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1208 	 0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1209 	{
1210 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1211 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1212 	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1213 	 0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1214 	{
1215 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1216 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1217 	 0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1218 	 0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1219 	{
1220 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1221 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1222 	 0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1223 	 0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1224 	{
1225 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1226 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1227 	 0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1228 	 0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1229 	{
1230 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1231 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1232 	 0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1233 	 0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1234 	{
1235 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1236 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1237 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1238 	 0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1239 	{
1240 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1241 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1242 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1243 	 0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1244 	{
1245 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1246 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1247 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1248 	 0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1249 	{
1250 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1251 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1252 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1253 	 0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1254 	{
1255 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1256 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1257 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1258 	 0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1259 	{
1260 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1261 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1262 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1263 	 0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1264 	{
1265 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1266 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1267 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1268 	 0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1269 	{
1270 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1271 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1272 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1273 	 0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1274 	{
1275 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1276 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1277 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1278 	 0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1279 	{
1280 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1281 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1282 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1283 	 0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1284 	{
1285 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1286 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1287 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1288 	 0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1289 	{
1290 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1291 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1292 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1293 	 0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1294 	{
1295 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1296 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1297 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1298 	 0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1299 	{
1300 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1301 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1302 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1303 	 0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1304 	{
1305 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1306 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1307 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1308 	 0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1309 	{
1310 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1311 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1312 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1313 	 0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1314 	{
1315 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1316 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1317 	 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1318 	 0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1319 	{
1320 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1321 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1322 	 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1323 	 0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1324 	{
1325 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1326 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1327 	 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1328 	 0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1329 	{
1330 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1331 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1332 	 0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1333 	 0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1334 	{
1335 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1336 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1337 	 0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1338 	 0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1339 	{
1340 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1341 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1342 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1343 	 0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1344 	{
1345 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1346 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1347 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1348 	 0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1349 	{
1350 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1351 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1352 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1353 	 0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1354 	{
1355 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1356 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1357 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1358 	 0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1359 	{
1360 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1361 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1362 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1363 	 0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1364 	{
1365 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1366 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1367 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1368 	 0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1369 	{
1370 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1371 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1372 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1373 	 0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1374 	{
1375 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1376 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1377 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1378 	 0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1379 	{
1380 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1381 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1382 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1383 	 0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1384 	{
1385 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1386 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1387 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1388 	 0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1389 	{
1390 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1391 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1392 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1393 	 0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1394 	{
1395 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1396 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1397 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1398 	 0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1399 	{
1400 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1401 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1402 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1403 	 0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1404 	{
1405 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1406 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1407 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1408 	 0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1409 	{
1410 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1411 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1412 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1413 	 0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1414 	{
1415 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1416 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1417 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1418 	 0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1419 	{
1420 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1421 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1422 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1423 	 0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1424 	{
1425 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1426 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1427 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1428 	 0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1429 	{
1430 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1431 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1432 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1433 	 0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1434 	{
1435 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1436 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1437 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1438 	 0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1439 	{
1440 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1441 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1442 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1443 	 0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1444 	{
1445 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1446 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1447 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1448 	 0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1449 	{
1450 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1451 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1452 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1453 	 0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1454 	{
1455 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1456 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1457 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1458 	 0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1459 	{
1460 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1461 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1462 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1463 	 0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1464 	{
1465 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1466 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1467 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1468 	 0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1469 	{
1470 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1471 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1472 	 0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1473 	 0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1474 	{
1475 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1476 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1477 	 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1478 	 0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1479 	{
1480 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1481 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1482 	 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1483 	 0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1484 	{
1485 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1486 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1487 	 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1488 	 0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1489 	{
1490 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1491 	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1492 	 0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1493 	 0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1494 	{
1495 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1496 	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1497 	 0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1498 	 0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1499 	{
1500 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1501 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1502 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1503 	 0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1504 	{
1505 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1506 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1507 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1508 	 0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1509 	{
1510 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1511 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1512 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1513 	 0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1514 	{
1515 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1516 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1517 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1518 	 0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1519 	{
1520 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1521 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1522 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1523 	 0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1524 	{
1525 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1526 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1527 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1528 	 0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1529 	{
1530 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1531 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1532 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1533 	 0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1534 	{
1535 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1536 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1537 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1538 	 0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1539 	{
1540 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1541 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1542 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1543 	 0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1544 	{
1545 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1546 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1547 	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1548 	 0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1549 	{
1550 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1551 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1552 	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1553 	 0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1554 	{
1555 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1556 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1557 	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1558 	 0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1559 	{
1560 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1561 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1562 	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1563 	 0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1564 	{
1565 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1566 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1567 	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1568 	 0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1569 };
1570 
1571 static const struct chan_info_nphy_radio205x chan_info_nphyrev4_2056_A1[] = {
1572 	{
1573 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1574 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1575 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1576 	 0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1577 	{
1578 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1579 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1580 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1581 	 0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1582 	{
1583 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1584 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1585 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1586 	 0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1587 	{
1588 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1589 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1590 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1591 	 0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1592 	{
1593 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1594 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1595 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1596 	 0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1597 	{
1598 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1599 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1600 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1601 	 0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1602 	{
1603 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1604 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1605 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1606 	 0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1607 	{
1608 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1609 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1610 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1611 	 0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1612 	{
1613 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1614 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1615 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1616 	 0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1617 	{
1618 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1619 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1620 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1621 	 0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1622 	{
1623 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1624 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1625 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1626 	 0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1627 	{
1628 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1629 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1630 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1631 	 0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1632 	{
1633 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1634 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1635 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1636 	 0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1637 	{
1638 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1639 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1640 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1641 	 0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1642 	{
1643 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1644 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1645 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1646 	 0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1647 	{
1648 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1649 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1650 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1651 	 0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1652 	{
1653 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1654 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1655 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1656 	 0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1657 	{
1658 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1659 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1660 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1661 	 0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1662 	{
1663 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1664 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1665 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1666 	 0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1667 	{
1668 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1669 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1670 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1671 	 0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1672 	{
1673 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1674 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1675 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1676 	 0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1677 	{
1678 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1679 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1680 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1681 	 0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1682 	{
1683 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1684 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1685 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1686 	 0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1687 	{
1688 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1689 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1690 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1691 	 0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1692 	{
1693 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1694 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1695 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1696 	 0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1697 	{
1698 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1699 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1700 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1701 	 0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1702 	{
1703 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1704 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1705 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1706 	 0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1707 	{
1708 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1709 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1710 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1711 	 0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1712 	{
1713 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1714 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1715 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1716 	 0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1717 	{
1718 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1719 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1720 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1721 	 0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1722 	{
1723 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1724 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1725 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1726 	 0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1727 	{
1728 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1729 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1730 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1731 	 0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1732 	{
1733 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1734 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1735 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1736 	 0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1737 	{
1738 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1739 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1740 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1741 	 0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1742 	{
1743 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1744 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1745 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1746 	 0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1747 	{
1748 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1749 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1750 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1751 	 0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1752 	{
1753 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1754 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1755 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1756 	 0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1757 	{
1758 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1759 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1760 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1761 	 0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1762 	{
1763 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1764 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1765 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1766 	 0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1767 	{
1768 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1769 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1770 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1771 	 0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1772 	{
1773 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1774 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1775 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1776 	 0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1777 	{
1778 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1779 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1780 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1781 	 0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1782 	{
1783 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1784 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1785 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1786 	 0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1787 	{
1788 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1789 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1790 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1791 	 0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1792 	{
1793 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1794 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1795 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1796 	 0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1797 	{
1798 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1799 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1800 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1801 	 0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1802 	{
1803 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1804 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1805 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1806 	 0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1807 	{
1808 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1809 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1810 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1811 	 0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1812 	{
1813 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1814 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1815 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1816 	 0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1817 	{
1818 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1819 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1820 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1821 	 0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1822 	{
1823 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1824 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1825 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1826 	 0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1827 	{
1828 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1829 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1830 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1831 	 0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1832 	{
1833 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1834 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1835 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1836 	 0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1837 	{
1838 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1839 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1840 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1841 	 0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1842 	{
1843 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1844 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1845 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1846 	 0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1847 	{
1848 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1849 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1850 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1851 	 0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1852 	{
1853 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1854 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1855 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1856 	 0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1857 	{
1858 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1859 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1860 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1861 	 0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1862 	{
1863 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1864 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1865 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1866 	 0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1867 	{
1868 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1869 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1870 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1871 	 0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1872 	{
1873 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1874 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1875 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1876 	 0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1877 	{
1878 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1879 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1880 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1881 	 0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1882 	{
1883 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1884 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1885 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1886 	 0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1887 	{
1888 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1889 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1890 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1891 	 0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1892 	{
1893 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1894 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1895 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1896 	 0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1897 	{
1898 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1899 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1900 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1901 	 0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1902 	{
1903 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1904 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1905 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1906 	 0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1907 	{
1908 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1909 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1910 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1911 	 0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1912 	{
1913 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1914 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1915 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1916 	 0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1917 	{
1918 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1919 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1920 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1921 	 0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1922 	{
1923 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1924 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1925 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1926 	 0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1927 	{
1928 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1929 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1930 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1931 	 0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1932 	{
1933 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1934 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1935 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1936 	 0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1937 	{
1938 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1939 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1940 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1941 	 0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1942 	{
1943 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1944 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1945 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1946 	 0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1947 	{
1948 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1949 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1950 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1951 	 0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1952 	{
1953 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1954 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1955 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1956 	 0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1957 	{
1958 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1959 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1960 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1961 	 0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1962 	{
1963 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1964 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1965 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1966 	 0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1967 	{
1968 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1969 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1970 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1971 	 0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1972 	{
1973 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1974 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1975 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1976 	 0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1977 	{
1978 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1979 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1980 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1981 	 0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1982 	{
1983 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1984 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1985 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1986 	 0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1987 	{
1988 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1989 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1990 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1991 	 0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1992 	{
1993 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1994 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1995 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1996 	 0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1997 	{
1998 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1999 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
2000 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2001 	 0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2002 	{
2003 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2004 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2005 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2006 	 0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2007 	{
2008 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2009 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2010 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2011 	 0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2012 	{
2013 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2014 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2015 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2016 	 0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2017 	{
2018 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2019 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2020 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2021 	 0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2022 	{
2023 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2024 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2025 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2026 	 0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2027 	{
2028 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2029 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2030 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2031 	 0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2032 	{
2033 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2034 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2035 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2036 	 0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2037 	{
2038 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2039 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2040 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2041 	 0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2042 	{
2043 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2044 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2045 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2046 	 0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2047 	{
2048 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2049 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2050 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2051 	 0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2052 	{
2053 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2054 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2055 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2056 	 0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2057 	{
2058 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2059 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2060 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2061 	 0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2062 	{
2063 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2064 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2065 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2066 	 0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2067 	{
2068 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2069 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2070 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2071 	 0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2072 	{
2073 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2074 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2075 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2076 	 0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2077 	{
2078 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2079 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2080 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2081 	 0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2082 	{
2083 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2084 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2085 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2086 	 0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2087 	{
2088 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2089 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2090 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2091 	 0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2092 	{
2093 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2094 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2095 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2096 	 0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2097 	{
2098 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2099 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2100 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2101 	 0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2102 	{
2103 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2104 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2105 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2106 	 0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2107 	{
2108 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2109 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2110 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2111 	 0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2112 	{
2113 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2114 	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2115 	 0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2116 	 0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2117 	{
2118 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2119 	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2120 	 0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2121 	 0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2122 	{
2123 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2124 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2125 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2126 	 0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2127 	{
2128 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2129 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2130 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2131 	 0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2132 	{
2133 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2134 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2135 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2136 	 0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2137 	{
2138 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2139 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2140 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2141 	 0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2142 	{
2143 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2144 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2145 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2146 	 0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2147 	{
2148 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2149 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2150 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2151 	 0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2152 	{
2153 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2154 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2155 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2156 	 0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2157 	{
2158 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2159 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2160 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2161 	 0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2162 	{
2163 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2164 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2165 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2166 	 0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2167 	{
2168 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2169 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2170 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2171 	 0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2172 	{
2173 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2174 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2175 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2176 	 0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2177 	{
2178 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2179 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2180 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2181 	 0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2182 	{
2183 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2184 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2185 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2186 	 0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2187 	{
2188 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2189 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2190 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2191 	 0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2192 };
2193 
2194 static const struct chan_info_nphy_radio205x chan_info_nphyrev5_2056v5[] = {
2195 	{
2196 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2197 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2198 	 0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2199 	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2200 	{
2201 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2202 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2203 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2204 	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2205 	{
2206 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2207 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2208 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2209 	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2210 	{
2211 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2212 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2213 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2214 	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2215 	{
2216 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2217 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2218 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2219 	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2220 	{
2221 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2222 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2223 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2224 	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2225 	{
2226 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2227 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2228 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2229 	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2230 	{
2231 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2232 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2233 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2234 	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2235 	{
2236 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2237 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2238 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2239 	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2240 	{
2241 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2242 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2243 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2244 	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2245 	{
2246 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2247 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2248 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2249 	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2250 	{
2251 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2252 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2253 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2254 	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2255 	{
2256 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2257 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2258 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2259 	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2260 	{
2261 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2262 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2263 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2264 	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2265 	{
2266 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2267 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2268 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2269 	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2270 	{
2271 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2272 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2273 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2274 	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2275 	{
2276 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2277 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2278 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2279 	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2280 	{
2281 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2282 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2283 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2284 	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2285 	{
2286 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2287 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2288 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2289 	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2290 	{
2291 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2292 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2293 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2294 	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2295 	{
2296 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2297 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2298 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2299 	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2300 	{
2301 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2302 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2303 	 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2304 	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2305 	{
2306 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2307 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2308 	 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2309 	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2310 	{
2311 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2312 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2313 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2314 	 0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2315 	{
2316 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2317 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2318 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2319 	 0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2320 	{
2321 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2322 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2323 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2324 	 0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2325 	{
2326 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2327 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2328 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2329 	 0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2330 	{
2331 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2332 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2333 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2334 	 0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2335 	{
2336 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2337 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2338 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2339 	 0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2340 	{
2341 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2342 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2343 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2344 	 0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2345 	{
2346 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2347 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2348 	 0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2349 	 0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2350 	{
2351 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2352 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2353 	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2354 	 0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2355 	{
2356 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2357 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2358 	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2359 	 0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2360 	{
2361 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2362 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2363 	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2364 	 0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2365 	{
2366 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2367 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2368 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2369 	 0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2370 	{
2371 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2372 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2373 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2374 	 0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2375 	{
2376 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2377 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2378 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2379 	 0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2380 	{
2381 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2382 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2383 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2384 	 0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2385 	{
2386 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2387 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2388 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2389 	 0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2390 	{
2391 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2392 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2393 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2394 	 0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2395 	{
2396 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2397 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2398 	 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2399 	 0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2400 	{
2401 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2402 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2403 	 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2404 	 0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2405 	{
2406 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2407 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2408 	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2409 	 0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2410 	{
2411 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2412 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2413 	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2414 	 0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2415 	{
2416 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2417 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2418 	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2419 	 0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2420 	{
2421 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2422 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2423 	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2424 	 0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2425 	{
2426 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2427 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2428 	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2429 	 0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2430 	{
2431 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2432 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2433 	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2434 	 0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2435 	{
2436 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2437 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2438 	 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2439 	 0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2440 	{
2441 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2442 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2443 	 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2444 	 0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2445 	{
2446 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2447 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2448 	 0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2449 	 0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2450 	{
2451 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2452 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2453 	 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2454 	 0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2455 	{
2456 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2457 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2458 	 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2459 	 0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2460 	{
2461 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2462 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2463 	 0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2464 	 0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2465 	{
2466 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2467 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2468 	 0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2469 	 0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2470 	{
2471 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2472 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2473 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2474 	 0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2475 	{
2476 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2477 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2478 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2479 	 0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2480 	{
2481 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2482 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2483 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2484 	 0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2485 	{
2486 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2487 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2488 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2489 	 0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2490 	{
2491 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2492 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2493 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2494 	 0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2495 	{
2496 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2497 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2498 	 0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2499 	 0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2500 	{
2501 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2502 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2503 	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2504 	 0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2505 	{
2506 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2507 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2508 	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2509 	 0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2510 	{
2511 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2512 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2513 	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2514 	 0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2515 	{
2516 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2517 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2518 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2519 	 0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2520 	{
2521 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2522 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2523 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2524 	 0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2525 	{
2526 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2527 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2528 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2529 	 0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2530 	{
2531 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2532 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2533 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2534 	 0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2535 	{
2536 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2537 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2538 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2539 	 0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2540 	{
2541 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2542 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2543 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2544 	 0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2545 	{
2546 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2547 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2548 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2549 	 0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2550 	{
2551 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2552 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2553 	 0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2554 	 0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2555 	{
2556 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2557 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2558 	 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2559 	 0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2560 	{
2561 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2562 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2563 	 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2564 	 0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2565 	{
2566 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2567 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2568 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2569 	 0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2570 	{
2571 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2572 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2573 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2574 	 0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2575 	{
2576 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2577 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2578 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2579 	 0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2580 	{
2581 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2582 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2583 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2584 	 0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2585 	{
2586 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2587 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2588 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2589 	 0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2590 	{
2591 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2592 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2593 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2594 	 0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2595 	{
2596 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2597 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2598 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2599 	 0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2600 	{
2601 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2602 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2603 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2604 	 0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2605 	{
2606 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2607 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2608 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2609 	 0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2610 	{
2611 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2612 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2613 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2614 	 0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2615 	{
2616 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2617 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2618 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2619 	 0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2620 	{
2621 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2622 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2623 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2624 	 0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2625 	{
2626 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2627 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2628 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2629 	 0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2630 	{
2631 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2632 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2633 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2634 	 0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2635 	{
2636 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2637 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2638 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2639 	 0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2640 	{
2641 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2642 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2643 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2644 	 0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2645 	{
2646 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2647 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2648 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2649 	 0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2650 	{
2651 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2652 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2653 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2654 	 0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2655 	{
2656 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2657 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2658 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2659 	 0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2660 	{
2661 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2662 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2663 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2664 	 0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2665 	{
2666 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2667 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2668 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2669 	 0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2670 	{
2671 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2672 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2673 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2674 	 0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2675 	{
2676 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2677 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2678 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2679 	 0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2680 	{
2681 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2682 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2683 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2684 	 0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2685 	{
2686 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2687 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2688 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2689 	 0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2690 	{
2691 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2692 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2693 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2694 	 0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2695 	{
2696 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2697 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2698 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2699 	 0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2700 	{
2701 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2702 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2703 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2704 	 0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2705 	{
2706 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2707 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2708 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2709 	 0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2710 	{
2711 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2712 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2713 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2714 	 0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2715 	{
2716 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2717 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2718 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2719 	 0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2720 	{
2721 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2722 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2723 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2724 	 0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2725 	{
2726 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2727 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2728 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2729 	 0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2730 	{
2731 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2732 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2733 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2734 	 0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2735 	{
2736 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2737 	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2738 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2739 	 0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2740 	{
2741 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2742 	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2743 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2744 	 0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2745 	{
2746 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2747 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2748 	 0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2749 	 0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2750 	{
2751 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2752 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2753 	 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2754 	 0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2755 	{
2756 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2757 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2758 	 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2759 	 0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2760 	{
2761 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2762 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2763 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2764 	 0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2765 	{
2766 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2767 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2768 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2769 	 0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2770 	{
2771 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2772 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2773 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2774 	 0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2775 	{
2776 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2777 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2778 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2779 	 0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2780 	{
2781 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2782 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2783 	 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2784 	 0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2785 	{
2786 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2787 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2788 	 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2789 	 0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2790 	{
2791 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2792 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2793 	 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2794 	 0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2795 	{
2796 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2797 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2798 	 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2799 	 0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2800 	{
2801 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2802 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2803 	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2804 	 0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2805 	{
2806 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2807 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2808 	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2809 	 0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2810 	{
2811 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2812 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2813 	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2814 	 0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2815 };
2816 
2817 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v6[] = {
2818 	{
2819 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2820 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2821 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2822 	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2823 	{
2824 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2825 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2826 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2827 	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2828 	{
2829 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2830 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2831 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2832 	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2833 	{
2834 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2835 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2836 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2837 	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2838 	{
2839 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2840 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2841 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2842 	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2843 	{
2844 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2845 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2846 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2847 	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2848 	{
2849 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2850 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2851 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2852 	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2853 	{
2854 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2855 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2856 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2857 	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2858 	{
2859 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2860 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2861 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2862 	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2863 	{
2864 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2865 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2866 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2867 	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2868 	{
2869 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2870 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2871 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2872 	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2873 	{
2874 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2875 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2876 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2877 	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2878 	{
2879 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2880 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2881 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2882 	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2883 	{
2884 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2885 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2886 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2887 	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2888 	{
2889 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2890 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2891 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2892 	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2893 	{
2894 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2895 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2896 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2897 	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2898 	{
2899 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2900 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2901 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2902 	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2903 	{
2904 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2905 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2906 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2907 	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2908 	{
2909 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2910 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2911 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2912 	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2913 	{
2914 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2915 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2916 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2917 	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2918 	{
2919 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2920 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2921 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2922 	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2923 	{
2924 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2925 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2926 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2927 	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2928 	{
2929 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2930 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2931 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2932 	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2933 	{
2934 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2935 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2936 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2937 	 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2938 	{
2939 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2940 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2941 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2942 	 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2943 	{
2944 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2945 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2946 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2947 	 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2948 	{
2949 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2950 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2951 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2952 	 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2953 	{
2954 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2955 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2956 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2957 	 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2958 	{
2959 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2960 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2961 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2962 	 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2963 	{
2964 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2965 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2966 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2967 	 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2968 	{
2969 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2970 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2971 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2972 	 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2973 	{
2974 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2975 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2976 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2977 	 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2978 	{
2979 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2980 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2981 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2982 	 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2983 	{
2984 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2985 	 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2986 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2987 	 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2988 	{
2989 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2990 	 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2991 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2992 	 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2993 	{
2994 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2995 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2996 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2997 	 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2998 	{
2999 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3000 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3001 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3002 	 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3003 	{
3004 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3005 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3006 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3007 	 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3008 	{
3009 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3010 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3011 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3012 	 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3013 	{
3014 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3015 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
3016 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3017 	 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3018 	{
3019 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3020 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
3021 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3022 	 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3023 	{
3024 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3025 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3026 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3027 	 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3028 	{
3029 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3030 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3031 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3032 	 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3033 	{
3034 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3035 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3036 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3037 	 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3038 	{
3039 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3040 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3041 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3042 	 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3043 	{
3044 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3045 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3046 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3047 	 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3048 	{
3049 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3050 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3051 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3052 	 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3053 	{
3054 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3055 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3056 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3057 	 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3058 	{
3059 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3060 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3061 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3062 	 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3063 	{
3064 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3065 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3066 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3067 	 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3068 	{
3069 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3070 	 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3071 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3072 	 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3073 	{
3074 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3075 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3076 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3077 	 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3078 	{
3079 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3080 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3081 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3082 	 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3083 	{
3084 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3085 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3086 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3087 	 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3088 	{
3089 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3090 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3091 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3092 	 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3093 	{
3094 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3095 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3096 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3097 	 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3098 	{
3099 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3100 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3101 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3102 	 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3103 	{
3104 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3105 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3106 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3107 	 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3108 	{
3109 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3110 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3111 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3112 	 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3113 	{
3114 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3115 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3116 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3117 	 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3118 	{
3119 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3120 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3121 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3122 	 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3123 	{
3124 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3125 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3126 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3127 	 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3128 	{
3129 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3130 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3131 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3132 	 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3133 	{
3134 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3135 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3136 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3137 	 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3138 	{
3139 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3140 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3141 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3142 	 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3143 	{
3144 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3145 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3146 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3147 	 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3148 	{
3149 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3150 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3151 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3152 	 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3153 	{
3154 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3155 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3156 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3157 	 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3158 	{
3159 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3160 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3161 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3162 	 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3163 	{
3164 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3165 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3166 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3167 	 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3168 	{
3169 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3170 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3171 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3172 	 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3173 	{
3174 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3175 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3176 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3177 	 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3178 	{
3179 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3180 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3181 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3182 	 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3183 	{
3184 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3185 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3186 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3187 	 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3188 	{
3189 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3190 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3191 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3192 	 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3193 	{
3194 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3195 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3196 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3197 	 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3198 	{
3199 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3200 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3201 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3202 	 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3203 	{
3204 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3205 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3206 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3207 	 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3208 	{
3209 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3210 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3211 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3212 	 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3213 	{
3214 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3215 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3216 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3217 	 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3218 	{
3219 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3220 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3221 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3222 	 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3223 	{
3224 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3225 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3226 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3227 	 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3228 	{
3229 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3230 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3231 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3232 	 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3233 	{
3234 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3235 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3236 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3237 	 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3238 	{
3239 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3240 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3241 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3242 	 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3243 	{
3244 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3245 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3246 	 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3247 	 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3248 	{
3249 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3250 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3251 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3252 	 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3253 	{
3254 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3255 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3256 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3257 	 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3258 	{
3259 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3260 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3261 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3262 	 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3263 	{
3264 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3265 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3266 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3267 	 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3268 	{
3269 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3270 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3271 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3272 	 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3273 	{
3274 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3275 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3276 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3277 	 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3278 	{
3279 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3280 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3281 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3282 	 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3283 	{
3284 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3285 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3286 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3287 	 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3288 	{
3289 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3290 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3291 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3292 	 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3293 	{
3294 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3295 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3296 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3297 	 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3298 	{
3299 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3300 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3301 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3302 	 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3303 	{
3304 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3305 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3306 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3307 	 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3308 	{
3309 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3310 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3311 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3312 	 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3313 	{
3314 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3315 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3316 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3317 	 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3318 	{
3319 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3320 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3321 	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3322 	 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3323 	{
3324 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3325 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3326 	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3327 	 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3328 	{
3329 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3330 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3331 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3332 	 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3333 	{
3334 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3335 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3336 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3337 	 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3338 	{
3339 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3340 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3341 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3342 	 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3343 	{
3344 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3345 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3346 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3347 	 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3348 	{
3349 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3350 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3351 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3352 	 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3353 	{
3354 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3355 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3356 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3357 	 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3358 	{
3359 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3360 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3361 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3362 	 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3363 	{
3364 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3365 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3366 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3367 	 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3368 	{
3369 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3370 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3371 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3372 	 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3373 	{
3374 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3375 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3376 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3377 	 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3378 	{
3379 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3380 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3381 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3382 	 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3383 	{
3384 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3385 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3386 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3387 	 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3388 	{
3389 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3390 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3391 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3392 	 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3393 	{
3394 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3395 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3396 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3397 	 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3398 	{
3399 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3400 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3401 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3402 	 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3403 	{
3404 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3405 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3406 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3407 	 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3408 	{
3409 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3410 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3411 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3412 	 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3413 	{
3414 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3415 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3416 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3417 	 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3418 	{
3419 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3420 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3421 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3422 	 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3423 	{
3424 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3425 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3426 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3427 	 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3428 	{
3429 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3430 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3431 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3432 	 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3433 	{
3434 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3435 	 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3436 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3437 	 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3438 };
3439 
3440 static const struct chan_info_nphy_radio205x chan_info_nphyrev5n6_2056v7[] = {
3441 	{
3442 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3443 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3444 	 0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3445 	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3446 	{
3447 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3448 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3449 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3450 	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3451 	{
3452 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3453 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3454 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3455 	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3456 	{
3457 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3458 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3459 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3460 	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3461 	{
3462 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3463 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3464 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3465 	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3466 	{
3467 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3468 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3469 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3470 	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3471 	{
3472 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3473 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3474 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3475 	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3476 	{
3477 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3478 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3479 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3480 	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3481 	{
3482 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3483 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3484 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3485 	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3486 	{
3487 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3488 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3489 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3490 	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3491 	{
3492 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3493 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3494 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3495 	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3496 	{
3497 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3498 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3499 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3500 	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3501 	{
3502 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3503 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3504 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3505 	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3506 	{
3507 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3508 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3509 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3510 	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3511 	{
3512 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3513 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3514 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3515 	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3516 	{
3517 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3518 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3519 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3520 	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3521 	{
3522 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3523 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3524 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3525 	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3526 	{
3527 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3528 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3529 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3530 	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3531 	{
3532 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3533 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3534 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3535 	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3536 	{
3537 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3538 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3539 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3540 	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3541 	{
3542 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3543 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3544 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3545 	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3546 	{
3547 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3548 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3549 	 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3550 	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3551 	{
3552 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3553 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3554 	 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3555 	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3556 	{
3557 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3558 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3559 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3560 	 0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3561 	{
3562 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3563 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3564 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3565 	 0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3566 	{
3567 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3568 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3569 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3570 	 0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3571 	{
3572 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3573 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3574 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3575 	 0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3576 	{
3577 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3578 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3579 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3580 	 0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3581 	{
3582 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3583 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3584 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3585 	 0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3586 	{
3587 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3588 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3589 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3590 	 0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3591 	{
3592 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3593 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3594 	 0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3595 	 0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3596 	{
3597 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3598 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3599 	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3600 	 0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3601 	{
3602 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3603 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3604 	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3605 	 0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3606 	{
3607 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3608 	 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3609 	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3610 	 0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3611 	{
3612 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3613 	 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3614 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3615 	 0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3616 	{
3617 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3618 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3619 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3620 	 0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3621 	{
3622 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3623 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3624 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3625 	 0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3626 	{
3627 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3628 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3629 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3630 	 0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3631 	{
3632 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3633 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3634 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3635 	 0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3636 	{
3637 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3638 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3639 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3640 	 0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3641 	{
3642 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3643 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3644 	 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3645 	 0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3646 	{
3647 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3648 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3649 	 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3650 	 0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3651 	{
3652 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3653 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3654 	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3655 	 0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3656 	{
3657 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3658 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3659 	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3660 	 0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3661 	{
3662 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3663 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3664 	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3665 	 0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3666 	{
3667 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3668 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3669 	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3670 	 0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3671 	{
3672 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3673 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3674 	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3675 	 0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3676 	{
3677 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3678 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3679 	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3680 	 0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3681 	{
3682 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3683 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3684 	 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3685 	 0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3686 	{
3687 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3688 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3689 	 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3690 	 0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3691 	{
3692 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3693 	 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3694 	 0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3695 	 0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3696 	{
3697 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3698 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3699 	 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3700 	 0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3701 	{
3702 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3703 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3704 	 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3705 	 0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3706 	{
3707 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3708 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3709 	 0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3710 	 0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3711 	{
3712 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3713 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3714 	 0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3715 	 0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3716 	{
3717 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3718 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3719 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3720 	 0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3721 	{
3722 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3723 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3724 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3725 	 0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3726 	{
3727 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3728 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3729 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3730 	 0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3731 	{
3732 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3733 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3734 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3735 	 0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3736 	{
3737 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3738 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3739 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3740 	 0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3741 	{
3742 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3743 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3744 	 0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3745 	 0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3746 	{
3747 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3748 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3749 	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3750 	 0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3751 	{
3752 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3753 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3754 	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3755 	 0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3756 	{
3757 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3758 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3759 	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3760 	 0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3761 	{
3762 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3763 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3764 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3765 	 0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3766 	{
3767 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3768 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3769 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3770 	 0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3771 	{
3772 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3773 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3774 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3775 	 0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3776 	{
3777 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3778 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3779 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3780 	 0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3781 	{
3782 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3783 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3784 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3785 	 0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3786 	{
3787 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3788 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3789 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3790 	 0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3791 	{
3792 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3793 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3794 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3795 	 0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3796 	{
3797 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3798 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3799 	 0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3800 	 0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3801 	{
3802 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3803 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3804 	 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3805 	 0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3806 	{
3807 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3808 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3809 	 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3810 	 0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3811 	{
3812 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3813 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3814 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3815 	 0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3816 	{
3817 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3818 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3819 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3820 	 0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3821 	{
3822 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3823 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3824 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3825 	 0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3826 	{
3827 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3828 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3829 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3830 	 0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3831 	{
3832 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3833 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3834 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3835 	 0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3836 	{
3837 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3838 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3839 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3840 	 0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3841 	{
3842 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3843 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3844 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3845 	 0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3846 	{
3847 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3848 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3849 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3850 	 0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3851 	{
3852 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3853 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3854 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3855 	 0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3856 	{
3857 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3858 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3859 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3860 	 0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3861 	{
3862 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3863 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3864 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3865 	 0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3866 	{
3867 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3868 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3869 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3870 	 0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3871 	{
3872 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3873 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3874 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3875 	 0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3876 	{
3877 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3878 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3879 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3880 	 0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3881 	{
3882 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3883 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3884 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3885 	 0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3886 	{
3887 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3888 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3889 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3890 	 0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3891 	{
3892 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3893 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3894 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3895 	 0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3896 	{
3897 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3898 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3899 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3900 	 0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3901 	{
3902 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3903 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3904 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3905 	 0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3906 	{
3907 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3908 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3909 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3910 	 0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3911 	{
3912 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3913 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3914 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3915 	 0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3916 	{
3917 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3918 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3919 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3920 	 0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3921 	{
3922 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3923 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3924 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3925 	 0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3926 	{
3927 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3928 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3929 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3930 	 0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3931 	{
3932 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3933 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3934 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3935 	 0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3936 	{
3937 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3938 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3939 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3940 	 0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3941 	{
3942 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3943 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3944 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3945 	 0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3946 	{
3947 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3948 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3949 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3950 	 0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3951 	{
3952 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3953 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3954 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3955 	 0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3956 	{
3957 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3958 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3959 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3960 	 0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3961 	{
3962 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3963 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3964 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3965 	 0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3966 	{
3967 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3968 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3969 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3970 	 0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3971 	{
3972 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3973 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3974 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3975 	 0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3976 	{
3977 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3978 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3979 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3980 	 0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3981 	{
3982 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3983 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3984 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3985 	 0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3986 	{
3987 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3988 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3989 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3990 	 0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3991 	{
3992 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3993 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3994 	 0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3995 	 0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3996 	{
3997 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3998 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3999 	 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4000 	 0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4001 	{
4002 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4003 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
4004 	 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4005 	 0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4006 	{
4007 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4008 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4009 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4010 	 0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4011 	{
4012 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4013 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
4014 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4015 	 0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4016 	{
4017 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4018 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
4019 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4020 	 0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4021 	{
4022 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4023 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
4024 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
4025 	 0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4026 	{
4027 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4028 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
4029 	 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4030 	 0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4031 	{
4032 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4033 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4034 	 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4035 	 0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4036 	{
4037 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4038 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4039 	 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4040 	 0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4041 	{
4042 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4043 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4044 	 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4045 	 0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4046 	{
4047 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4048 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4049 	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4050 	 0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4051 	{
4052 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4053 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4054 	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4055 	 0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4056 	{
4057 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4058 	 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4059 	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4060 	 0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4061 };
4062 
4063 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v8[] = {
4064 	{
4065 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4066 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4067 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4068 	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4069 	{
4070 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4071 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4072 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4073 	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4074 	{
4075 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4076 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4077 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4078 	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4079 	{
4080 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4081 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4082 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4083 	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4084 	{
4085 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4086 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4087 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4088 	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4089 	{
4090 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4091 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4092 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4093 	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4094 	{
4095 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4096 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4097 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4098 	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4099 	{
4100 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4101 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4102 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4103 	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4104 	{
4105 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4106 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4107 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4108 	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4109 	{
4110 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4111 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4112 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4113 	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4114 	{
4115 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4116 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4117 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4118 	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4119 	{
4120 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4121 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4122 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4123 	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4124 	{
4125 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4126 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4127 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4128 	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4129 	{
4130 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4131 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4132 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4133 	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4134 	{
4135 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4136 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4137 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4138 	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4139 	{
4140 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4141 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4142 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4143 	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4144 	{
4145 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4146 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4147 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4148 	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4149 	{
4150 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4151 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4152 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4153 	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4154 	{
4155 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4156 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4157 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4158 	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4159 	{
4160 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4161 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4162 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4163 	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4164 	{
4165 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4166 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4167 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4168 	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4169 	{
4170 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4171 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4172 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4173 	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4174 	{
4175 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4176 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4177 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4178 	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4179 	{
4180 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4181 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4182 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4183 	 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4184 	{
4185 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4186 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4187 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4188 	 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4189 	{
4190 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4191 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4192 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4193 	 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4194 	{
4195 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4196 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4197 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4198 	 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4199 	{
4200 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4201 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4202 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4203 	 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4204 	{
4205 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4206 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4207 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4208 	 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4209 	{
4210 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4211 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4212 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4213 	 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4214 	{
4215 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4216 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4217 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4218 	 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4219 	{
4220 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4221 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4222 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4223 	 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4224 	{
4225 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4226 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4227 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4228 	 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4229 	{
4230 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4231 	 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4232 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4233 	 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4234 	{
4235 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4236 	 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4237 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4238 	 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4239 	{
4240 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4241 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4242 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4243 	 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4244 	{
4245 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4246 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4247 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4248 	 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4249 	{
4250 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4251 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4252 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4253 	 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4254 	{
4255 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4256 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4257 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4258 	 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4259 	{
4260 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4261 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4262 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4263 	 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4264 	{
4265 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4266 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4267 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4268 	 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4269 	{
4270 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4271 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4272 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4273 	 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4274 	{
4275 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4276 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4277 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4278 	 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4279 	{
4280 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4281 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4282 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4283 	 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4284 	{
4285 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4286 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4287 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4288 	 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4289 	{
4290 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4291 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4292 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4293 	 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4294 	{
4295 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4296 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4297 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4298 	 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4299 	{
4300 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4301 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4302 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4303 	 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4304 	{
4305 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4306 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4307 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4308 	 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4309 	{
4310 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4311 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4312 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4313 	 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4314 	{
4315 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4316 	 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4317 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4318 	 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4319 	{
4320 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4321 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4322 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4323 	 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4324 	{
4325 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4326 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4327 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4328 	 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4329 	{
4330 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4331 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4332 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4333 	 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4334 	{
4335 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4336 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4337 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4338 	 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4339 	{
4340 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4341 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4342 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4343 	 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4344 	{
4345 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4346 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4347 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4348 	 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4349 	{
4350 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4351 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4352 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4353 	 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4354 	{
4355 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4356 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4357 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4358 	 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4359 	{
4360 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4361 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4362 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4363 	 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4364 	{
4365 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4366 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4367 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4368 	 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4369 	{
4370 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4371 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4372 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4373 	 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4374 	{
4375 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4376 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4377 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4378 	 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4379 	{
4380 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4381 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4382 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4383 	 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4384 	{
4385 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4386 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4387 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4388 	 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4389 	{
4390 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4391 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4392 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4393 	 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4394 	{
4395 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4396 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4397 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4398 	 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4399 	{
4400 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4401 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4402 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4403 	 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4404 	{
4405 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4406 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4407 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4408 	 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4409 	{
4410 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4411 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4412 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4413 	 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4414 	{
4415 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4416 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4417 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4418 	 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4419 	{
4420 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4421 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4422 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4423 	 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4424 	{
4425 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4426 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4427 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4428 	 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4429 	{
4430 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4431 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4432 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4433 	 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4434 	{
4435 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4436 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4437 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4438 	 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4439 	{
4440 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4441 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4442 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4443 	 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4444 	{
4445 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4446 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4447 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4448 	 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4449 	{
4450 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4451 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4452 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4453 	 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4454 	{
4455 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4456 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4457 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4458 	 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4459 	{
4460 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4461 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4462 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4463 	 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4464 	{
4465 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4466 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4467 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4468 	 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4469 	{
4470 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4471 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4472 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4473 	 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4474 	{
4475 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4476 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4477 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4478 	 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4479 	{
4480 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4481 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4482 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4483 	 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4484 	{
4485 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4486 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4487 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4488 	 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4489 	{
4490 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4491 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4492 	 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4493 	 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4494 	{
4495 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4496 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4497 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4498 	 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4499 	{
4500 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4501 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4502 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4503 	 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4504 	{
4505 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4506 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4507 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4508 	 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4509 	{
4510 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4511 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4512 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4513 	 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4514 	{
4515 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4516 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4517 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4518 	 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4519 	{
4520 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4521 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4522 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4523 	 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4524 	{
4525 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4526 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4527 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4528 	 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4529 	{
4530 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4531 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4532 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4533 	 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4534 	{
4535 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4536 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4537 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4538 	 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4539 	{
4540 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4541 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4542 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4543 	 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4544 	{
4545 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4546 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4547 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4548 	 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4549 	{
4550 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4551 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4552 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4553 	 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4554 	{
4555 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4556 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4557 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4558 	 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4559 	{
4560 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4561 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4562 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4563 	 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4564 	{
4565 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4566 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4567 	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4568 	 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4569 	{
4570 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4571 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4572 	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4573 	 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4574 	{
4575 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4576 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4577 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4578 	 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4579 	{
4580 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4581 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4582 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4583 	 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4584 	{
4585 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4586 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4587 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4588 	 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4589 	{
4590 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4591 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4592 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4593 	 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4594 	{
4595 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4596 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4597 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4598 	 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4599 	{
4600 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4601 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4602 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4603 	 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4604 	{
4605 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4606 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4607 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4608 	 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4609 	{
4610 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4611 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4612 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4613 	 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4614 	{
4615 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4616 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4617 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4618 	 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4619 	{
4620 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4621 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4622 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4623 	 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4624 	{
4625 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4626 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4627 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4628 	 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4629 	{
4630 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4631 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4632 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4633 	 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4634 	{
4635 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4636 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4637 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4638 	 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4639 	{
4640 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4641 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4642 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4643 	 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4644 	{
4645 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4646 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4647 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4648 	 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4649 	{
4650 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4651 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4652 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4653 	 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4654 	{
4655 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4656 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4657 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4658 	 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4659 	{
4660 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4661 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4662 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4663 	 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4664 	{
4665 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4666 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4667 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4668 	 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4669 	{
4670 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4671 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4672 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4673 	 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4674 	{
4675 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4676 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4677 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4678 	 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4679 	{
4680 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4681 	 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4682 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4683 	 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4684 };
4685 
4686 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v11[] = {
4687 	{
4688 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4689 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4690 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4691 	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4692 	{
4693 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4694 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4695 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4696 	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4697 	{
4698 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4699 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4700 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4701 	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4702 	{
4703 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4704 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4705 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4706 	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4707 	{
4708 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4709 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4710 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4711 	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4712 	{
4713 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4714 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4715 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4716 	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4717 	{
4718 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4719 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4720 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4721 	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4722 	{
4723 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4724 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4725 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4726 	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4727 	{
4728 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4729 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4730 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4731 	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4732 	{
4733 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4734 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4735 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4736 	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4737 	{
4738 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4739 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4740 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4741 	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4742 	{
4743 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4744 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4745 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4746 	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4747 	{
4748 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4749 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4750 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4751 	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4752 	{
4753 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4754 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4755 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4756 	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4757 	{
4758 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4759 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4760 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4761 	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4762 	{
4763 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4764 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4765 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4766 	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4767 	{
4768 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4769 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4770 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4771 	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4772 	{
4773 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4774 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4775 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4776 	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4777 	{
4778 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4779 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4780 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4781 	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4782 	{
4783 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4784 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4785 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4786 	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4787 	{
4788 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4789 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4790 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4791 	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4792 	{
4793 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4794 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4795 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4796 	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4797 	{
4798 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4799 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4800 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4801 	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4802 	{
4803 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4804 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4805 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4806 	 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4807 	{
4808 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4809 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4810 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4811 	 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4812 	{
4813 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4814 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4815 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4816 	 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4817 	{
4818 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4819 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4820 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4821 	 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4822 	{
4823 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4824 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4825 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4826 	 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4827 	{
4828 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4829 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4830 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4831 	 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4832 	{
4833 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4834 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4835 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4836 	 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4837 	{
4838 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4839 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4840 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4841 	 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4842 	{
4843 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4844 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4845 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4846 	 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4847 	{
4848 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4849 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4850 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4851 	 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4852 	{
4853 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4854 	 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4855 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4856 	 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4857 	{
4858 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4859 	 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4860 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4861 	 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4862 	{
4863 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4864 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4865 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4866 	 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4867 	{
4868 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4869 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4870 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4871 	 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4872 	{
4873 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4874 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4875 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4876 	 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4877 	{
4878 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4879 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4880 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4881 	 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4882 	{
4883 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4884 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4885 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4886 	 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4887 	{
4888 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4889 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4890 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4891 	 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4892 	{
4893 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4894 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4895 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4896 	 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4897 	{
4898 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4899 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4900 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4901 	 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4902 	{
4903 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4904 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4905 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4906 	 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4907 	{
4908 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4909 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4910 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4911 	 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4912 	{
4913 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4914 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4915 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4916 	 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4917 	{
4918 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4919 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4920 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4921 	 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4922 	{
4923 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4924 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4925 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4926 	 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4927 	{
4928 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4929 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4930 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4931 	 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4932 	{
4933 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4934 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4935 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4936 	 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4937 	{
4938 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4939 	 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4940 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4941 	 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4942 	{
4943 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4944 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4945 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4946 	 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4947 	{
4948 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4949 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4950 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4951 	 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4952 	{
4953 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4954 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4955 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4956 	 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4957 	{
4958 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4959 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4960 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4961 	 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4962 	{
4963 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4964 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4965 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4966 	 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4967 	{
4968 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4969 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4970 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4971 	 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4972 	{
4973 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4974 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4975 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4976 	 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4977 	{
4978 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4979 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4980 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4981 	 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4982 	{
4983 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4984 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4985 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4986 	 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4987 	{
4988 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4989 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4990 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4991 	 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4992 	{
4993 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4994 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4995 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4996 	 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4997 	{
4998 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4999 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
5000 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5001 	 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
5002 	{
5003 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5004 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
5005 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5006 	 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
5007 	{
5008 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5009 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
5010 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5011 	 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
5012 	{
5013 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5014 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
5015 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5016 	 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
5017 	{
5018 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5019 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
5020 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5021 	 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
5022 	{
5023 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
5024 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5025 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5026 	 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
5027 	{
5028 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
5029 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5030 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5031 	 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
5032 	{
5033 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5034 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5035 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5036 	 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5037 	{
5038 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5039 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5040 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5041 	 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5042 	{
5043 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5044 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5045 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5046 	 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5047 	{
5048 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5049 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5050 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5051 	 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5052 	{
5053 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5054 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5055 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5056 	 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5057 	{
5058 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5059 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5060 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5061 	 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5062 	{
5063 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5064 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5065 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5066 	 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5067 	{
5068 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5069 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5070 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5071 	 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5072 	{
5073 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5074 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5075 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5076 	 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5077 	{
5078 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5079 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5080 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5081 	 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5082 	{
5083 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5084 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5085 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5086 	 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5087 	{
5088 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5089 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5090 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5091 	 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5092 	{
5093 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5094 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5095 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5096 	 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5097 	{
5098 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5099 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5100 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5101 	 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5102 	{
5103 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5104 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5105 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5106 	 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5107 	{
5108 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5109 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5110 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5111 	 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5112 	{
5113 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5114 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5115 	 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5116 	 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5117 	{
5118 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5119 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5120 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5121 	 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5122 	{
5123 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5124 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5125 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5126 	 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5127 	{
5128 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5129 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5130 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5131 	 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5132 	{
5133 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5134 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5135 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5136 	 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5137 	{
5138 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5139 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5140 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5141 	 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5142 	{
5143 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5144 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5145 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5146 	 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5147 	{
5148 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5149 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5150 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5151 	 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5152 	{
5153 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5154 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5155 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5156 	 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5157 	{
5158 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5159 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5160 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5161 	 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5162 	{
5163 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5164 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5165 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5166 	 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5167 	{
5168 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5169 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5170 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5171 	 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5172 	{
5173 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5174 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5175 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5176 	 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5177 	{
5178 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5179 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5180 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5181 	 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5182 	{
5183 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5184 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5185 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5186 	 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5187 	{
5188 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5189 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5190 	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5191 	 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5192 	{
5193 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5194 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5195 	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5196 	 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5197 	{
5198 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5199 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5200 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5201 	 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5202 	{
5203 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5204 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5205 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5206 	 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5207 	{
5208 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5209 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5210 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5211 	 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5212 	{
5213 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5214 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5215 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5216 	 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5217 	{
5218 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5219 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5220 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5221 	 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5222 	{
5223 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5224 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5225 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5226 	 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5227 	{
5228 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5229 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5230 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5231 	 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5232 	{
5233 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5234 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5235 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5236 	 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5237 	{
5238 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5239 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5240 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5241 	 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5242 	{
5243 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5244 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5245 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5246 	 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5247 	{
5248 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5249 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5250 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5251 	 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5252 	{
5253 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5254 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5255 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5256 	 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5257 	{
5258 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5259 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5260 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5261 	 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5262 	{
5263 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5264 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5265 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5266 	 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5267 	{
5268 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5269 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5270 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5271 	 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5272 	{
5273 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5274 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5275 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5276 	 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5277 	{
5278 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5279 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5280 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5281 	 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5282 	{
5283 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5284 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5285 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5286 	 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5287 	{
5288 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5289 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5290 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5291 	 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5292 	{
5293 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5294 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5295 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5296 	 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5297 	{
5298 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5299 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5300 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5301 	 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5302 	{
5303 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5304 	 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5305 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5306 	 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5307 };
5308 
5309 static const struct chan_info_nphy_radio2057 chan_info_nphyrev7_2057_rev4[] = {
5310 	{
5311 	 184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5312 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5313 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5314 	 0x0215,
5315 	 0x0216,
5316 	 },
5317 	{
5318 	 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5319 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5320 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5321 	 0x0214,
5322 	 0x0215,
5323 	 },
5324 	{
5325 	 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5326 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5327 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5328 	 0x0213,
5329 	 0x0214,
5330 	 },
5331 	{
5332 	 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5333 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5334 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5335 	 0x0212,
5336 	 0x0213,
5337 	 },
5338 	{
5339 	 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5340 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5341 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5342 	 0x0211,
5343 	 0x0212,
5344 	 },
5345 	{
5346 	 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5347 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5348 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5349 	 0x020f,
5350 	 0x0211,
5351 	 },
5352 	{
5353 	 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5354 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5355 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5356 	 0x020e,
5357 	 0x020f,
5358 	 },
5359 	{
5360 	 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5361 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5362 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5363 	 0x020d,
5364 	 0x020e,
5365 	 },
5366 	{
5367 	 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5368 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5369 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5370 	 0x020c,
5371 	 0x020d,
5372 	 },
5373 	{
5374 	 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5375 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5376 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5377 	 0x020b,
5378 	 0x020c,
5379 	 },
5380 	{
5381 	 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5382 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5383 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5384 	 0x020a,
5385 	 0x020b,
5386 	 },
5387 	{
5388 	 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5389 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5390 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5391 	 0x0209,
5392 	 0x020a,
5393 	 },
5394 	{
5395 	 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5396 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5397 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5398 	 0x0208,
5399 	 0x0209,
5400 	 },
5401 	{
5402 	 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5403 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5404 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5405 	 0x0207,
5406 	 0x0208,
5407 	 },
5408 	{
5409 	 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5410 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5411 	 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5412 	 0x0206,
5413 	 0x0207,
5414 	 },
5415 	{
5416 	 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5417 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5418 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5419 	 0x0205,
5420 	 0x0206,
5421 	 },
5422 	{
5423 	 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5424 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5425 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5426 	 0x0204,
5427 	 0x0205,
5428 	 },
5429 	{
5430 	 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5431 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5432 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5433 	 0x0203,
5434 	 0x0204,
5435 	 },
5436 	{
5437 	 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5438 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5439 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5440 	 0x0202,
5441 	 0x0203,
5442 	 },
5443 	{
5444 	 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5445 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5446 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5447 	 0x0201,
5448 	 0x0202,
5449 	 },
5450 	{
5451 	 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5452 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5453 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5454 	 0x0200,
5455 	 0x0201,
5456 	 },
5457 	{
5458 	 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5459 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5460 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5461 	 0x01ff,
5462 	 0x0200,
5463 	 },
5464 	{
5465 	 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5466 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5467 	 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5468 	 0x01fe,
5469 	 0x01ff,
5470 	 },
5471 	{
5472 	 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5473 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5474 	 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5475 	 0x01fc,
5476 	 0x01fd,
5477 	 },
5478 	{
5479 	 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5480 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5481 	 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5482 	 0x01fb,
5483 	 0x01fc,
5484 	 },
5485 	{
5486 	 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5487 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5488 	 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5489 	 0x01fa,
5490 	 0x01fb,
5491 	 },
5492 	{
5493 	 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5494 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5495 	 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5496 	 0x01f9,
5497 	 0x01fa,
5498 	 },
5499 	{
5500 	 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5501 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5502 	 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5503 	 0x01f8,
5504 	 0x01f9,
5505 	 },
5506 	{
5507 	 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5508 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5509 	 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5510 	 0x01f7,
5511 	 0x01f8,
5512 	 },
5513 	{
5514 	 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5515 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5516 	 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5517 	 0x01f6,
5518 	 0x01f7,
5519 	 },
5520 	{
5521 	 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5522 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5523 	 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5524 	 0x01f5,
5525 	 0x01f6,
5526 	 },
5527 	{
5528 	 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5529 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5530 	 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5531 	 0x01f4,
5532 	 0x01f5,
5533 	 },
5534 	{
5535 	 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5536 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5537 	 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5538 	 0x01f3,
5539 	 0x01f4,
5540 	 },
5541 	{
5542 	 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5543 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5544 	 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5545 	 0x01f2,
5546 	 0x01f3,
5547 	 },
5548 	{
5549 	 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5550 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5551 	 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5552 	 0x01f1,
5553 	 0x01f2,
5554 	 },
5555 	{
5556 	 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5557 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5558 	 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5559 	 0x01f0,
5560 	 0x01f1,
5561 	 },
5562 	{
5563 	 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5564 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5565 	 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5566 	 0x01f0,
5567 	 0x01f0,
5568 	 },
5569 	{
5570 	 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5571 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5572 	 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5573 	 0x01ef,
5574 	 0x01f0,
5575 	 },
5576 	{
5577 	 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5578 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5579 	 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5580 	 0x01ee,
5581 	 0x01ef,
5582 	 },
5583 	{
5584 	 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5585 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5586 	 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5587 	 0x01ed,
5588 	 0x01ee,
5589 	 },
5590 	{
5591 	 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5592 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5593 	 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5594 	 0x01ec,
5595 	 0x01ed,
5596 	 },
5597 	{
5598 	 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5599 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5600 	 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5601 	 0x01eb,
5602 	 0x01ec,
5603 	 },
5604 	{
5605 	 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5606 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5607 	 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5608 	 0x01ea,
5609 	 0x01eb,
5610 	 },
5611 	{
5612 	 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5613 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5614 	 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5615 	 0x01e9,
5616 	 0x01ea,
5617 	 },
5618 	{
5619 	 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5620 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5621 	 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5622 	 0x01e8,
5623 	 0x01e9,
5624 	 },
5625 	{
5626 	 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5627 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5628 	 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5629 	 0x01e7,
5630 	 0x01e8,
5631 	 },
5632 	{
5633 	 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5634 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5635 	 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5636 	 0x01e6,
5637 	 0x01e7,
5638 	 },
5639 	{
5640 	 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5641 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5642 	 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5643 	 0x01e5,
5644 	 0x01e6,
5645 	 },
5646 	{
5647 	 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5648 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5649 	 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5650 	 0x01e5,
5651 	 0x01e5,
5652 	 },
5653 	{
5654 	 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5655 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5656 	 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5657 	 0x01e4,
5658 	 0x01e5,
5659 	 },
5660 	{
5661 	 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5662 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5663 	 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5664 	 0x01e3,
5665 	 0x01e4,
5666 	 },
5667 	{
5668 	 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5669 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5670 	 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5671 	 0x01e2,
5672 	 0x01e3,
5673 	 },
5674 	{
5675 	 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5676 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5677 	 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5678 	 0x01e1,
5679 	 0x01e2,
5680 	 },
5681 	{
5682 	 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5683 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5684 	 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5685 	 0x01e0,
5686 	 0x01e1,
5687 	 },
5688 	{
5689 	 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5690 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5691 	 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5692 	 0x01df,
5693 	 0x01e0,
5694 	 },
5695 	{
5696 	 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5697 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5698 	 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5699 	 0x01de,
5700 	 0x01df,
5701 	 },
5702 	{
5703 	 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5704 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5705 	 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5706 	 0x01dd,
5707 	 0x01de,
5708 	 },
5709 	{
5710 	 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5711 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5712 	 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5713 	 0x01dd,
5714 	 0x01dd,
5715 	 },
5716 	{
5717 	 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5718 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5719 	 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5720 	 0x01dc,
5721 	 0x01dd,
5722 	 },
5723 	{
5724 	 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5725 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5726 	 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5727 	 0x01db,
5728 	 0x01dc,
5729 	 },
5730 	{
5731 	 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5732 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5733 	 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5734 	 0x01da,
5735 	 0x01db,
5736 	 },
5737 	{
5738 	 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5739 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5740 	 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5741 	 0x01d9,
5742 	 0x01da,
5743 	 },
5744 	{
5745 	 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5746 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5747 	 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5748 	 0x01d8,
5749 	 0x01d9,
5750 	 },
5751 	{
5752 	 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5753 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5754 	 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5755 	 0x01d7,
5756 	 0x01d8,
5757 	 },
5758 	{
5759 	 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5760 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5761 	 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5762 	 0x01d7,
5763 	 0x01d7,
5764 	 },
5765 	{
5766 	 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5767 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5768 	 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5769 	 0x01d6,
5770 	 0x01d7,
5771 	 },
5772 	{
5773 	 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5774 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5775 	 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5776 	 0x01d5,
5777 	 0x01d6,
5778 	 },
5779 	{
5780 	 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5781 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5782 	 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5783 	 0x01d4,
5784 	 0x01d5,
5785 	 },
5786 	{
5787 	 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5788 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5789 	 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5790 	 0x01d3,
5791 	 0x01d4,
5792 	 },
5793 	{
5794 	 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5795 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5796 	 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5797 	 0x01d2,
5798 	 0x01d3,
5799 	 },
5800 	{
5801 	 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5802 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5803 	 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5804 	 0x01d2,
5805 	 0x01d2,
5806 	 },
5807 	{
5808 	 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5809 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5810 	 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5811 	 0x01d1,
5812 	 0x01d2,
5813 	 },
5814 	{
5815 	 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5816 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5817 	 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5818 	 0x01d0,
5819 	 0x01d1,
5820 	 },
5821 	{
5822 	 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5823 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5824 	 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5825 	 0x01cf,
5826 	 0x01d0,
5827 	 },
5828 	{
5829 	 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5830 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5831 	 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5832 	 0x01ce,
5833 	 0x01cf,
5834 	 },
5835 	{
5836 	 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5837 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5838 	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5839 	 0x01ce,
5840 	 0x01ce,
5841 	 },
5842 	{
5843 	 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5844 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5845 	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5846 	 0x01cd,
5847 	 0x01ce,
5848 	 },
5849 	{
5850 	 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5851 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5852 	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5853 	 0x01cc,
5854 	 0x01cd,
5855 	 },
5856 	{
5857 	 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5858 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5859 	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5860 	 0x01cb,
5861 	 0x01cc,
5862 	 },
5863 	{
5864 	 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5865 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5866 	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5867 	 0x01ca,
5868 	 0x01cb,
5869 	 },
5870 	{
5871 	 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5872 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5873 	 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5874 	 0x01ca,
5875 	 0x01cb,
5876 	 },
5877 	{
5878 	 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5879 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5880 	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5881 	 0x01c9,
5882 	 0x01ca,
5883 	 },
5884 	{
5885 	 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5886 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5887 	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5888 	 0x01c9,
5889 	 0x01ca,
5890 	 },
5891 	{
5892 	 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5893 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5894 	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5895 	 0x01c9,
5896 	 0x01c9,
5897 	 },
5898 	{
5899 	 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5900 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5901 	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5902 	 0x01c8,
5903 	 0x01c9,
5904 	 },
5905 	{
5906 	 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5907 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5908 	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5909 	 0x01c8,
5910 	 0x01c9,
5911 	 },
5912 	{
5913 	 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5914 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5915 	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5916 	 0x01c8,
5917 	 0x01c8,
5918 	 },
5919 	{
5920 	 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5921 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5922 	 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5923 	 0x01c7,
5924 	 0x01c8,
5925 	 },
5926 	{
5927 	 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5928 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5929 	 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5930 	 0x01c7,
5931 	 0x01c8,
5932 	 },
5933 	{
5934 	 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5935 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5936 	 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5937 	 0x01c6,
5938 	 0x01c7,
5939 	 },
5940 	{
5941 	 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5942 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5943 	 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5944 	 0x01c6,
5945 	 0x01c7,
5946 	 },
5947 	{
5948 	 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5949 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5950 	 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5951 	 0x01c6,
5952 	 0x01c6,
5953 	 },
5954 	{
5955 	 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5956 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5957 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5958 	 0x01c5,
5959 	 0x01c6,
5960 	 },
5961 	{
5962 	 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5963 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5964 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5965 	 0x01c5,
5966 	 0x01c6,
5967 	 },
5968 	{
5969 	 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5970 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5971 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5972 	 0x01c4,
5973 	 0x01c5,
5974 	 },
5975 	{
5976 	 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5977 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5978 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5979 	 0x01c4,
5980 	 0x01c5,
5981 	 },
5982 	{
5983 	 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5984 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5985 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5986 	 0x01c4,
5987 	 0x01c4,
5988 	 },
5989 	{
5990 	 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5991 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5992 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5993 	 0x01c3,
5994 	 0x01c4,
5995 	 },
5996 	{
5997 	 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5998 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5999 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6000 	 0x01c3,
6001 	 0x01c4,
6002 	 },
6003 	{
6004 	 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6005 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6006 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6007 	 0x01c2,
6008 	 0x01c3,
6009 	 },
6010 	{
6011 	 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6012 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6013 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6014 	 0x01c2,
6015 	 0x01c3,
6016 	 },
6017 	{
6018 	 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6019 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6020 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6021 	 0x01c2,
6022 	 0x01c2,
6023 	 },
6024 	{
6025 	 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6026 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6027 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6028 	 0x01c1,
6029 	 0x01c2,
6030 	 },
6031 	{
6032 	 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6033 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6034 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6035 	 0x01c0,
6036 	 0x01c1,
6037 	 },
6038 	{
6039 	 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6040 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6041 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6042 	 0x01bf,
6043 	 0x01c0,
6044 	 },
6045 	{
6046 	 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6047 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6048 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6049 	 0x01bf,
6050 	 0x01bf,
6051 	 },
6052 	{
6053 	 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6054 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6055 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6056 	 0x01be,
6057 	 0x01bf,
6058 	 },
6059 	{
6060 	 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6061 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6062 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6063 	 0x01bd,
6064 	 0x01be,
6065 	 },
6066 	{
6067 	 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6068 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6069 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6070 	 0x01bc,
6071 	 0x01bd,
6072 	 },
6073 	{
6074 	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6075 	 0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6076 	 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6077 	 0x043f,
6078 	 0x0443,
6079 	 },
6080 	{
6081 	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6082 	 0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6083 	 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6084 	 0x043d,
6085 	 0x0441,
6086 	 },
6087 	{
6088 	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6089 	 0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6090 	 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6091 	 0x043a,
6092 	 0x043f,
6093 	 },
6094 	{
6095 	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6096 	 0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6097 	 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6098 	 0x0438,
6099 	 0x043d,
6100 	 },
6101 	{
6102 	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6103 	 0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6104 	 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6105 	 0x0436,
6106 	 0x043a,
6107 	 },
6108 	{
6109 	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6110 	 0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6111 	 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6112 	 0x0434,
6113 	 0x0438,
6114 	 },
6115 	{
6116 	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6117 	 0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6118 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6119 	 0x0431,
6120 	 0x0436,
6121 	 },
6122 	{
6123 	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6124 	 0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6125 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6126 	 0x042f,
6127 	 0x0434,
6128 	 },
6129 	{
6130 	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6131 	 0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6132 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6133 	 0x042d,
6134 	 0x0431,
6135 	 },
6136 	{
6137 	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6138 	 0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6139 	 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6140 	 0x042b,
6141 	 0x042f,
6142 	 },
6143 	{
6144 	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6145 	 0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6146 	 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6147 	 0x0429,
6148 	 0x042d,
6149 	 },
6150 	{
6151 	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6152 	 0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6153 	 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6154 	 0x0427,
6155 	 0x042b,
6156 	 },
6157 	{
6158 	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6159 	 0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6160 	 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6161 	 0x0424,
6162 	 0x0429,
6163 	 },
6164 	{
6165 	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6166 	 0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6167 	 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6168 	 0x041f,
6169 	 0x0424}
6170 };
6171 
6172 static const struct chan_info_nphy_radio2057_rev5
6173 chan_info_nphyrev8_2057_rev5[] = {
6174 	{
6175 	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6176 	 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6177 	 0x043a, 0x043f, 0x0443},
6178 	{
6179 	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6180 	 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6181 	 0x0438, 0x043d, 0x0441},
6182 	{
6183 	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6184 	 0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6185 	 0x0436, 0x043a, 0x043f},
6186 	{
6187 	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6188 	 0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6189 	 0x0434, 0x0438, 0x043d},
6190 	{
6191 	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6192 	 0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6193 	 0x0431, 0x0436, 0x043a},
6194 	{
6195 	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6196 	 0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6197 	 0x042f, 0x0434, 0x0438},
6198 	{
6199 	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6200 	 0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6201 	 0x042d, 0x0431, 0x0436},
6202 	{
6203 	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6204 	 0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6205 	 0x042b, 0x042f, 0x0434},
6206 	{
6207 	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6208 	 0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6209 	 0x0429, 0x042d, 0x0431},
6210 	{
6211 	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6212 	 0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6213 	 0x0427, 0x042b, 0x042f},
6214 	{
6215 	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6216 	 0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6217 	 0x0424, 0x0429, 0x042d},
6218 	{
6219 	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6220 	 0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6221 	 0x0422, 0x0427, 0x042b},
6222 	{
6223 	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6224 	 0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6225 	 0x0420, 0x0424, 0x0429},
6226 	{
6227 	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6228 	 0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6229 	 0x041b, 0x041f, 0x0424}
6230 };
6231 
6232 static const struct chan_info_nphy_radio2057_rev5
6233 chan_info_nphyrev9_2057_rev5v1[] = {
6234 	{
6235 	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6236 	 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6237 	 0x043a, 0x043f, 0x0443},
6238 	{
6239 	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6240 	 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6241 	 0x0438, 0x043d, 0x0441},
6242 	{
6243 	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6244 	 0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6245 	 0x0436, 0x043a, 0x043f},
6246 	{
6247 	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6248 	 0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6249 	 0x0434, 0x0438, 0x043d},
6250 	{
6251 	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6252 	 0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6253 	 0x0431, 0x0436, 0x043a},
6254 	{
6255 	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6256 	 0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6257 	 0x042f, 0x0434, 0x0438},
6258 	{
6259 	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6260 	 0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6261 	 0x042d, 0x0431, 0x0436},
6262 	{
6263 	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6264 	 0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6265 	 0x042b, 0x042f, 0x0434},
6266 	{
6267 	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6268 	 0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6269 	 0x0429, 0x042d, 0x0431},
6270 	{
6271 	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6272 	 0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6273 	 0x0427, 0x042b, 0x042f},
6274 	{
6275 	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6276 	 0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6277 	 0x0424, 0x0429, 0x042d},
6278 	{
6279 	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6280 	 0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6281 	 0x0422, 0x0427, 0x042b},
6282 	{
6283 	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6284 	 0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6285 	 0x0420, 0x0424, 0x0429},
6286 	{
6287 	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6288 	 0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6289 	 0x041b, 0x041f, 0x0424}
6290 };
6291 
6292 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev7[] = {
6293 	{
6294 	 184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6295 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6296 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6297 	 0x0215,
6298 	 0x0216},
6299 	{
6300 	 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6301 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6302 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6303 	 0x0214,
6304 	 0x0215},
6305 	{
6306 	 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6307 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6308 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6309 	 0x0213,
6310 	 0x0214},
6311 	{
6312 	 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6313 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6314 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6315 	 0x0212,
6316 	 0x0213},
6317 	{
6318 	 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6319 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6320 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6321 	 0x0211,
6322 	 0x0212},
6323 	{
6324 	 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6325 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6326 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6327 	 0x020f,
6328 	 0x0211},
6329 	{
6330 	 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6331 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6332 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6333 	 0x020e,
6334 	 0x020f},
6335 	{
6336 	 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6337 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6338 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6339 	 0x020d,
6340 	 0x020e},
6341 	{
6342 	 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6343 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6344 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6345 	 0x020c,
6346 	 0x020d},
6347 	{
6348 	 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6349 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6350 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6351 	 0x020b,
6352 	 0x020c},
6353 	{
6354 	 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6355 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6356 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6357 	 0x020a,
6358 	 0x020b},
6359 	{
6360 	 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6361 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6362 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6363 	 0x0209,
6364 	 0x020a},
6365 	{
6366 	 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6367 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6368 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6369 	 0x0208,
6370 	 0x0209},
6371 	{
6372 	 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6373 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6374 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6375 	 0x0207,
6376 	 0x0208},
6377 	{
6378 	 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6379 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6380 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6381 	 0x0206,
6382 	 0x0207},
6383 	{
6384 	 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6385 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6386 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6387 	 0x0205,
6388 	 0x0206},
6389 	{
6390 	 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6391 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6392 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6393 	 0x0204,
6394 	 0x0205},
6395 	{
6396 	 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6397 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6398 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6399 	 0x0203,
6400 	 0x0204},
6401 	{
6402 	 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6403 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6404 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6405 	 0x0202,
6406 	 0x0203},
6407 	{
6408 	 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6409 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6410 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6411 	 0x0201,
6412 	 0x0202},
6413 	{
6414 	 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6415 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6416 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6417 	 0x0200,
6418 	 0x0201},
6419 	{
6420 	 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6421 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6422 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6423 	 0x01ff,
6424 	 0x0200},
6425 	{
6426 	 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6427 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6428 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6429 	 0x01fe,
6430 	 0x01ff},
6431 	{
6432 	 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6433 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6434 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6435 	 0x01fc,
6436 	 0x01fd},
6437 	{
6438 	 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6439 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6440 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6441 	 0x01fb,
6442 	 0x01fc},
6443 	{
6444 	 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6445 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6446 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6447 	 0x01fa,
6448 	 0x01fb},
6449 	{
6450 	 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6451 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6452 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6453 	 0x01f9,
6454 	 0x01fa},
6455 	{
6456 	 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6457 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6458 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6459 	 0x01f8,
6460 	 0x01f9},
6461 	{
6462 	 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6463 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6464 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6465 	 0x01f7,
6466 	 0x01f8},
6467 	{
6468 	 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6469 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6470 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6471 	 0x01f6,
6472 	 0x01f7},
6473 	{
6474 	 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6475 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6476 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6477 	 0x01f5,
6478 	 0x01f6},
6479 	{
6480 	 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6481 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6482 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6483 	 0x01f4,
6484 	 0x01f5},
6485 	{
6486 	 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6487 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6488 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6489 	 0x01f3,
6490 	 0x01f4},
6491 	{
6492 	 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6493 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6494 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6495 	 0x01f2,
6496 	 0x01f3},
6497 	{
6498 	 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6499 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6500 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6501 	 0x01f1,
6502 	 0x01f2},
6503 	{
6504 	 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6505 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6506 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6507 	 0x01f0,
6508 	 0x01f1},
6509 	{
6510 	 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6511 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6512 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6513 	 0x01f0,
6514 	 0x01f0},
6515 	{
6516 	 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6517 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6518 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6519 	 0x01ef,
6520 	 0x01f0},
6521 	{
6522 	 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6523 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6524 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6525 	 0x01ee,
6526 	 0x01ef},
6527 	{
6528 	 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6529 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6530 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6531 	 0x01ed,
6532 	 0x01ee},
6533 	{
6534 	 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6535 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6536 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6537 	 0x01ec,
6538 	 0x01ed},
6539 	{
6540 	 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6541 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6542 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6543 	 0x01eb,
6544 	 0x01ec},
6545 	{
6546 	 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6547 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6548 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6549 	 0x01ea,
6550 	 0x01eb},
6551 	{
6552 	 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6553 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6554 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6555 	 0x01e9,
6556 	 0x01ea},
6557 	{
6558 	 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6559 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6560 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6561 	 0x01e8,
6562 	 0x01e9},
6563 	{
6564 	 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6565 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6566 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6567 	 0x01e7,
6568 	 0x01e8},
6569 	{
6570 	 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6571 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6572 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6573 	 0x01e6,
6574 	 0x01e7},
6575 	{
6576 	 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6577 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6578 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6579 	 0x01e5,
6580 	 0x01e6},
6581 	{
6582 	 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6583 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6584 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6585 	 0x01e5,
6586 	 0x01e5},
6587 	{
6588 	 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6589 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6590 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6591 	 0x01e4,
6592 	 0x01e5},
6593 	{
6594 	 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6595 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6596 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6597 	 0x01e3,
6598 	 0x01e4},
6599 	{
6600 	 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6601 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6602 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6603 	 0x01e2,
6604 	 0x01e3},
6605 	{
6606 	 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6607 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6608 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6609 	 0x01e1,
6610 	 0x01e2},
6611 	{
6612 	 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6613 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6614 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6615 	 0x01e0,
6616 	 0x01e1},
6617 	{
6618 	 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6619 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6620 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6621 	 0x01df,
6622 	 0x01e0},
6623 	{
6624 	 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6625 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6626 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6627 	 0x01de,
6628 	 0x01df},
6629 	{
6630 	 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6631 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6632 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6633 	 0x01dd,
6634 	 0x01de},
6635 	{
6636 	 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6637 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6638 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6639 	 0x01dd,
6640 	 0x01dd},
6641 	{
6642 	 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6643 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6644 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6645 	 0x01dc,
6646 	 0x01dd},
6647 	{
6648 	 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6649 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6650 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6651 	 0x01db,
6652 	 0x01dc},
6653 	{
6654 	 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6655 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6656 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6657 	 0x01da,
6658 	 0x01db},
6659 	{
6660 	 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6661 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6662 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6663 	 0x01d9,
6664 	 0x01da},
6665 	{
6666 	 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6667 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6668 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6669 	 0x01d8,
6670 	 0x01d9},
6671 	{
6672 	 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6673 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6674 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6675 	 0x01d7,
6676 	 0x01d8},
6677 	{
6678 	 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6679 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6680 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6681 	 0x01d7,
6682 	 0x01d7},
6683 	{
6684 	 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6685 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6686 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6687 	 0x01d6,
6688 	 0x01d7},
6689 	{
6690 	 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6691 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6692 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6693 	 0x01d5,
6694 	 0x01d6},
6695 	{
6696 	 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6697 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6698 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6699 	 0x01d4,
6700 	 0x01d5},
6701 	{
6702 	 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6703 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6704 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6705 	 0x01d3,
6706 	 0x01d4},
6707 	{
6708 	 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6709 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6710 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6711 	 0x01d2,
6712 	 0x01d3},
6713 	{
6714 	 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6715 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6716 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6717 	 0x01d2,
6718 	 0x01d2},
6719 	{
6720 	 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6721 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6722 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6723 	 0x01d1,
6724 	 0x01d2},
6725 	{
6726 	 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6727 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6728 	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6729 	 0x01d0,
6730 	 0x01d1},
6731 	{
6732 	 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6733 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6734 	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6735 	 0x01cf,
6736 	 0x01d0},
6737 	{
6738 	 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6739 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6740 	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6741 	 0x01ce,
6742 	 0x01cf},
6743 	{
6744 	 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6745 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6746 	 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6747 	 0x01ce,
6748 	 0x01ce},
6749 	{
6750 	 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6751 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6752 	 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6753 	 0x01cd,
6754 	 0x01ce},
6755 	{
6756 	 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6757 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6758 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6759 	 0x01cc,
6760 	 0x01cd},
6761 	{
6762 	 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6763 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6764 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6765 	 0x01cb,
6766 	 0x01cc},
6767 	{
6768 	 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6769 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6770 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6771 	 0x01ca,
6772 	 0x01cb},
6773 	{
6774 	 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6775 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6776 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6777 	 0x01ca,
6778 	 0x01cb},
6779 	{
6780 	 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6781 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6782 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6783 	 0x01c9,
6784 	 0x01ca},
6785 	{
6786 	 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6787 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6788 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6789 	 0x01c9,
6790 	 0x01ca},
6791 	{
6792 	 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6793 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6794 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6795 	 0x01c9,
6796 	 0x01c9},
6797 	{
6798 	 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6799 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6800 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6801 	 0x01c8,
6802 	 0x01c9},
6803 	{
6804 	 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6805 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6806 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6807 	 0x01c8,
6808 	 0x01c9},
6809 	{
6810 	 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6811 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6812 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6813 	 0x01c8,
6814 	 0x01c8},
6815 	{
6816 	 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6817 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6818 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6819 	 0x01c7,
6820 	 0x01c8},
6821 	{
6822 	 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6823 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6824 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6825 	 0x01c7,
6826 	 0x01c8},
6827 	{
6828 	 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6829 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6830 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6831 	 0x01c6,
6832 	 0x01c7},
6833 	{
6834 	 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6835 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6836 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6837 	 0x01c6,
6838 	 0x01c7},
6839 	{
6840 	 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6841 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6842 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6843 	 0x01c6,
6844 	 0x01c6},
6845 	{
6846 	 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6847 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6848 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6849 	 0x01c5,
6850 	 0x01c6},
6851 	{
6852 	 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6853 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6854 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6855 	 0x01c5,
6856 	 0x01c6},
6857 	{
6858 	 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6859 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6860 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6861 	 0x01c4,
6862 	 0x01c5},
6863 	{
6864 	 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6865 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6866 	 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6867 	 0x01c4,
6868 	 0x01c5},
6869 	{
6870 	 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6871 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6872 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6873 	 0x01c4,
6874 	 0x01c4},
6875 	{
6876 	 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6877 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6878 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6879 	 0x01c3,
6880 	 0x01c4},
6881 	{
6882 	 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6883 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6884 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6885 	 0x01c3,
6886 	 0x01c4},
6887 	{
6888 	 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6889 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6890 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6891 	 0x01c2,
6892 	 0x01c3},
6893 	{
6894 	 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6895 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6896 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6897 	 0x01c2,
6898 	 0x01c3},
6899 	{
6900 	 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6901 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6902 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6903 	 0x01c2,
6904 	 0x01c2},
6905 	{
6906 	 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6907 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6908 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6909 	 0x01c1,
6910 	 0x01c2},
6911 	{
6912 	 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6913 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6914 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6915 	 0x01c0,
6916 	 0x01c1},
6917 	{
6918 	 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6919 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6920 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6921 	 0x01bf,
6922 	 0x01c0},
6923 	{
6924 	 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6925 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6926 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6927 	 0x01bf,
6928 	 0x01bf},
6929 	{
6930 	 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6931 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6932 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6933 	 0x01be,
6934 	 0x01bf},
6935 	{
6936 	 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6937 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6938 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6939 	 0x01bd,
6940 	 0x01be},
6941 	{
6942 	 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6943 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6944 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6945 	 0x01bc,
6946 	 0x01bd},
6947 	{
6948 	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6949 	 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6950 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6951 	 0x043f,
6952 	 0x0443},
6953 	{
6954 	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6955 	 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6956 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6957 	 0x043d,
6958 	 0x0441},
6959 	{
6960 	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6961 	 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6962 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6963 	 0x043a,
6964 	 0x043f},
6965 	{
6966 	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6967 	 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6968 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6969 	 0x0438,
6970 	 0x043d},
6971 	{
6972 	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6973 	 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6974 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6975 	 0x0436,
6976 	 0x043a},
6977 	{
6978 	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6979 	 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6980 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6981 	 0x0434,
6982 	 0x0438},
6983 	{
6984 	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6985 	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6986 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6987 	 0x0431,
6988 	 0x0436},
6989 	{
6990 	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6991 	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6992 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6993 	 0x042f,
6994 	 0x0434},
6995 	{
6996 	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6997 	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6998 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6999 	 0x042d,
7000 	 0x0431},
7001 	{
7002 	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7003 	 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7004 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7005 	 0x042b,
7006 	 0x042f},
7007 	{
7008 	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7009 	 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7010 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7011 	 0x0429,
7012 	 0x042d},
7013 	{
7014 	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7015 	 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7016 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7017 	 0x0427,
7018 	 0x042b},
7019 	{
7020 	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7021 	 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7022 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7023 	 0x0424,
7024 	 0x0429},
7025 	{
7026 	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7027 	 0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7028 	 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7029 	 0x041f,
7030 	 0x0424}
7031 };
7032 
7033 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev8[] = {
7034 	{
7035 	 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7036 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7037 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7038 	 0x0214,
7039 	 0x0215},
7040 	{
7041 	 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7042 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7043 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7044 	 0x0213,
7045 	 0x0214},
7046 	{
7047 	 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7048 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7049 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7050 	 0x0212,
7051 	 0x0213},
7052 	{
7053 	 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7054 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7055 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7056 	 0x0211,
7057 	 0x0212},
7058 	{
7059 	 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7060 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7061 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7062 	 0x020f,
7063 	 0x0211},
7064 	{
7065 	 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7066 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7067 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7068 	 0x020e,
7069 	 0x020f},
7070 	{
7071 	 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7072 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7073 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7074 	 0x020d,
7075 	 0x020e},
7076 	{
7077 	 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7078 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7079 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7080 	 0x020c,
7081 	 0x020d},
7082 	{
7083 	 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7084 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7085 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7086 	 0x020b,
7087 	 0x020c},
7088 	{
7089 	 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7090 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7091 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7092 	 0x020a,
7093 	 0x020b},
7094 	{
7095 	 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7096 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7097 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7098 	 0x0209,
7099 	 0x020a},
7100 	{
7101 	 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7102 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7103 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7104 	 0x0208,
7105 	 0x0209},
7106 	{
7107 	 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7108 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7109 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7110 	 0x0207,
7111 	 0x0208},
7112 	{
7113 	 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7114 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7115 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7116 	 0x0206,
7117 	 0x0207},
7118 	{
7119 	 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7120 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7121 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7122 	 0x0205,
7123 	 0x0206},
7124 	{
7125 	 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7126 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7127 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7128 	 0x0204,
7129 	 0x0205},
7130 	{
7131 	 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7132 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7133 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7134 	 0x0203,
7135 	 0x0204},
7136 	{
7137 	 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7138 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7139 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7140 	 0x0202,
7141 	 0x0203},
7142 	{
7143 	 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7144 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7145 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7146 	 0x0201,
7147 	 0x0202},
7148 	{
7149 	 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7150 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7151 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7152 	 0x0200,
7153 	 0x0201},
7154 	{
7155 	 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7156 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7157 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7158 	 0x01ff,
7159 	 0x0200},
7160 	{
7161 	 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7162 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7163 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7164 	 0x01fe,
7165 	 0x01ff},
7166 	{
7167 	 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7168 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7169 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7170 	 0x01fc,
7171 	 0x01fd},
7172 	{
7173 	 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7174 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7175 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7176 	 0x01fb,
7177 	 0x01fc},
7178 	{
7179 	 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7180 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7181 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7182 	 0x01fa,
7183 	 0x01fb},
7184 	{
7185 	 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7186 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7187 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7188 	 0x01f9,
7189 	 0x01fa},
7190 	{
7191 	 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7192 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7193 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7194 	 0x01f8,
7195 	 0x01f9},
7196 	{
7197 	 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7198 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7199 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7200 	 0x01f7,
7201 	 0x01f8},
7202 	{
7203 	 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7204 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7205 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7206 	 0x01f6,
7207 	 0x01f7},
7208 	{
7209 	 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7210 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7211 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7212 	 0x01f5,
7213 	 0x01f6},
7214 	{
7215 	 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7216 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7217 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7218 	 0x01f4,
7219 	 0x01f5},
7220 	{
7221 	 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7222 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7223 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7224 	 0x01f3,
7225 	 0x01f4},
7226 	{
7227 	 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7228 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7229 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7230 	 0x01f2,
7231 	 0x01f3},
7232 	{
7233 	 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7234 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7235 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7236 	 0x01f1,
7237 	 0x01f2},
7238 	{
7239 	 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7240 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7241 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7242 	 0x01f0,
7243 	 0x01f1},
7244 	{
7245 	 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7246 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7247 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7248 	 0x01f0,
7249 	 0x01f0},
7250 	{
7251 	 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7252 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7253 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7254 	 0x01ef,
7255 	 0x01f0},
7256 	{
7257 	 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7258 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7259 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7260 	 0x01ee,
7261 	 0x01ef},
7262 	{
7263 	 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7264 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7265 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7266 	 0x01ed,
7267 	 0x01ee},
7268 	{
7269 	 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7270 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7271 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7272 	 0x01ec,
7273 	 0x01ed},
7274 	{
7275 	 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7276 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7277 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7278 	 0x01eb,
7279 	 0x01ec},
7280 	{
7281 	 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7282 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7283 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7284 	 0x01ea,
7285 	 0x01eb},
7286 	{
7287 	 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7288 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7289 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7290 	 0x01e9,
7291 	 0x01ea},
7292 	{
7293 	 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7294 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7295 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7296 	 0x01e8,
7297 	 0x01e9},
7298 	{
7299 	 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7300 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7301 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7302 	 0x01e7,
7303 	 0x01e8},
7304 	{
7305 	 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7306 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7307 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7308 	 0x01e6,
7309 	 0x01e7},
7310 	{
7311 	 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7312 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7313 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7314 	 0x01e5,
7315 	 0x01e6},
7316 	{
7317 	 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7318 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7319 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7320 	 0x01e5,
7321 	 0x01e5},
7322 	{
7323 	 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7324 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7325 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7326 	 0x01e4,
7327 	 0x01e5},
7328 	{
7329 	 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7330 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7331 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7332 	 0x01e3,
7333 	 0x01e4},
7334 	{
7335 	 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7336 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7337 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7338 	 0x01e2,
7339 	 0x01e3},
7340 	{
7341 	 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7342 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7343 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7344 	 0x01e1,
7345 	 0x01e2},
7346 	{
7347 	 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7348 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7349 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7350 	 0x01e0,
7351 	 0x01e1},
7352 	{
7353 	 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7354 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7355 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7356 	 0x01df,
7357 	 0x01e0},
7358 	{
7359 	 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7360 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7361 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7362 	 0x01de,
7363 	 0x01df},
7364 	{
7365 	 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7366 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7367 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7368 	 0x01dd,
7369 	 0x01de},
7370 	{
7371 	 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7372 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7373 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7374 	 0x01dd,
7375 	 0x01dd},
7376 	{
7377 	 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7378 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7379 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7380 	 0x01dc,
7381 	 0x01dd},
7382 	{
7383 	 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7384 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7385 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7386 	 0x01db,
7387 	 0x01dc},
7388 	{
7389 	 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7390 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7391 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7392 	 0x01da,
7393 	 0x01db},
7394 	{
7395 	 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7396 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7397 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7398 	 0x01d9,
7399 	 0x01da},
7400 	{
7401 	 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7402 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7403 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7404 	 0x01d8,
7405 	 0x01d9},
7406 	{
7407 	 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7408 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7409 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7410 	 0x01d7,
7411 	 0x01d8},
7412 	{
7413 	 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7414 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7415 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7416 	 0x01d7,
7417 	 0x01d7},
7418 	{
7419 	 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7420 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7421 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7422 	 0x01d6,
7423 	 0x01d7},
7424 	{
7425 	 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7426 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7427 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7428 	 0x01d5,
7429 	 0x01d6},
7430 	{
7431 	 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7432 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7433 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7434 	 0x01d4,
7435 	 0x01d5},
7436 	{
7437 	 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7438 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7439 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7440 	 0x01d3,
7441 	 0x01d4},
7442 	{
7443 	 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7444 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7445 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7446 	 0x01d2,
7447 	 0x01d3},
7448 	{
7449 	 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7450 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7451 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7452 	 0x01d2,
7453 	 0x01d2},
7454 	{
7455 	 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7456 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7457 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7458 	 0x01d1,
7459 	 0x01d2},
7460 	{
7461 	 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7462 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7463 	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7464 	 0x01d0,
7465 	 0x01d1},
7466 	{
7467 	 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7468 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7469 	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7470 	 0x01cf,
7471 	 0x01d0},
7472 	{
7473 	 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7474 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7475 	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7476 	 0x01ce,
7477 	 0x01cf},
7478 	{
7479 	 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7480 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7481 	 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7482 	 0x01ce,
7483 	 0x01ce},
7484 	{
7485 	 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7486 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7487 	 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7488 	 0x01cd,
7489 	 0x01ce},
7490 	{
7491 	 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7492 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7493 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7494 	 0x01cc,
7495 	 0x01cd},
7496 	{
7497 	 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7498 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7499 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7500 	 0x01cb,
7501 	 0x01cc},
7502 	{
7503 	 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7504 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7505 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7506 	 0x01ca,
7507 	 0x01cb},
7508 	{
7509 	 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7510 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7511 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7512 	 0x01ca,
7513 	 0x01cb},
7514 	{
7515 	 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7516 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7517 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7518 	 0x01c9,
7519 	 0x01ca},
7520 	{
7521 	 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7522 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7523 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7524 	 0x01c9,
7525 	 0x01ca},
7526 	{
7527 	 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7528 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7529 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7530 	 0x01c9,
7531 	 0x01c9},
7532 	{
7533 	 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7534 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7535 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7536 	 0x01c8,
7537 	 0x01c9},
7538 	{
7539 	 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7540 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7541 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7542 	 0x01c8,
7543 	 0x01c9},
7544 	{
7545 	 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7546 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7547 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7548 	 0x01c8,
7549 	 0x01c8},
7550 	{
7551 	 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7552 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7553 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7554 	 0x01c7,
7555 	 0x01c8},
7556 	{
7557 	 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7558 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7559 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7560 	 0x01c7,
7561 	 0x01c8},
7562 	{
7563 	 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7564 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7565 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7566 	 0x01c6,
7567 	 0x01c7},
7568 	{
7569 	 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7570 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7571 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7572 	 0x01c6,
7573 	 0x01c7},
7574 	{
7575 	 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7576 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7577 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7578 	 0x01c6,
7579 	 0x01c6},
7580 	{
7581 	 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7582 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7583 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7584 	 0x01c5,
7585 	 0x01c6},
7586 	{
7587 	 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7588 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7589 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7590 	 0x01c5,
7591 	 0x01c6},
7592 	{
7593 	 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7594 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7595 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7596 	 0x01c4,
7597 	 0x01c5},
7598 	{
7599 	 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7600 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7601 	 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7602 	 0x01c4,
7603 	 0x01c5},
7604 	{
7605 	 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7606 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7607 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7608 	 0x01c4,
7609 	 0x01c4},
7610 	{
7611 	 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7612 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7613 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7614 	 0x01c3,
7615 	 0x01c4},
7616 	{
7617 	 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7618 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7619 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7620 	 0x01c3,
7621 	 0x01c4},
7622 	{
7623 	 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7624 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7625 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7626 	 0x01c2,
7627 	 0x01c3},
7628 	{
7629 	 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7630 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7631 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7632 	 0x01c2,
7633 	 0x01c3},
7634 	{
7635 	 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7636 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7637 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7638 	 0x01c2,
7639 	 0x01c2},
7640 	{
7641 	 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7642 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7643 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7644 	 0x01c1,
7645 	 0x01c2},
7646 	{
7647 	 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7648 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7649 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7650 	 0x01c0,
7651 	 0x01c1},
7652 	{
7653 	 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7654 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7655 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7656 	 0x01bf,
7657 	 0x01c0},
7658 	{
7659 	 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7660 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7661 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7662 	 0x01bf,
7663 	 0x01bf},
7664 	{
7665 	 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7666 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7667 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7668 	 0x01be,
7669 	 0x01bf},
7670 	{
7671 	 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7672 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7673 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7674 	 0x01bd,
7675 	 0x01be},
7676 	{
7677 	 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7678 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7679 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7680 	 0x01bc,
7681 	 0x01bd},
7682 	{
7683 	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7684 	 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7685 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7686 	 0x043f,
7687 	 0x0443},
7688 	{
7689 	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7690 	 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7691 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7692 	 0x043d,
7693 	 0x0441},
7694 	{
7695 	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7696 	 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7697 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7698 	 0x043a,
7699 	 0x043f},
7700 	{
7701 	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7702 	 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7703 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7704 	 0x0438,
7705 	 0x043d},
7706 	{
7707 	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7708 	 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7709 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7710 	 0x0436,
7711 	 0x043a},
7712 	{
7713 	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7714 	 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7715 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7716 	 0x0434,
7717 	 0x0438},
7718 	{
7719 	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7720 	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7721 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7722 	 0x0431,
7723 	 0x0436},
7724 	{
7725 	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7726 	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7727 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7728 	 0x042f,
7729 	 0x0434},
7730 	{
7731 	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7732 	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7733 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7734 	 0x042d,
7735 	 0x0431},
7736 	{
7737 	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7738 	 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7739 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7740 	 0x042b,
7741 	 0x042f},
7742 	{
7743 	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7744 	 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7745 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7746 	 0x0429,
7747 	 0x042d},
7748 	{
7749 	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7750 	 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7751 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7752 	 0x0427,
7753 	 0x042b},
7754 	{
7755 	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7756 	 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7757 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7758 	 0x0424,
7759 	 0x0429},
7760 	{
7761 	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7762 	 0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7763 	 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7764 	 0x041f,
7765 	 0x0424}
7766 };
7767 
7768 static struct radio_regs regs_2055[] = {
7769 	{0x02, 0x80, 0x80, 0, 0},
7770 	{0x03, 0, 0, 0, 0},
7771 	{0x04, 0x27, 0x27, 0, 0},
7772 	{0x05, 0, 0, 0, 0},
7773 	{0x06, 0x27, 0x27, 0, 0},
7774 	{0x07, 0x7f, 0x7f, 1, 1},
7775 	{0x08, 0x7, 0x7, 1, 1},
7776 	{0x09, 0x7f, 0x7f, 1, 1},
7777 	{0x0A, 0x7, 0x7, 1, 1},
7778 	{0x0B, 0x15, 0x15, 0, 0},
7779 	{0x0C, 0x15, 0x15, 0, 0},
7780 	{0x0D, 0x4f, 0x4f, 1, 1},
7781 	{0x0E, 0x5, 0x5, 1, 1},
7782 	{0x0F, 0x4f, 0x4f, 1, 1},
7783 	{0x10, 0x5, 0x5, 1, 1},
7784 	{0x11, 0xd0, 0xd0, 0, 0},
7785 	{0x12, 0x2, 0x2, 0, 0},
7786 	{0x13, 0, 0, 0, 0},
7787 	{0x14, 0x40, 0x40, 0, 0},
7788 	{0x15, 0, 0, 0, 0},
7789 	{0x16, 0, 0, 0, 0},
7790 	{0x17, 0, 0, 0, 0},
7791 	{0x18, 0, 0, 0, 0},
7792 	{0x19, 0, 0, 0, 0},
7793 	{0x1A, 0, 0, 0, 0},
7794 	{0x1B, 0, 0, 0, 0},
7795 	{0x1C, 0, 0, 0, 0},
7796 	{0x1D, 0xc0, 0xc0, 0, 0},
7797 	{0x1E, 0xff, 0xff, 0, 0},
7798 	{0x1F, 0xc0, 0xc0, 0, 0},
7799 	{0x20, 0xff, 0xff, 0, 0},
7800 	{0x21, 0xc0, 0xc0, 0, 0},
7801 	{0x22, 0, 0, 0, 0},
7802 	{0x23, 0x2c, 0x2c, 0, 0},
7803 	{0x24, 0, 0, 0, 0},
7804 	{0x25, 0, 0, 0, 0},
7805 	{0x26, 0, 0, 0, 0},
7806 	{0x27, 0, 0, 0, 0},
7807 	{0x28, 0, 0, 0, 0},
7808 	{0x29, 0, 0, 0, 0},
7809 	{0x2A, 0, 0, 0, 0},
7810 	{0x2B, 0, 0, 0, 0},
7811 	{0x2C, 0, 0, 0, 0},
7812 	{0x2D, 0xa4, 0xa4, 0, 0},
7813 	{0x2E, 0x38, 0x38, 0, 0},
7814 	{0x2F, 0, 0, 0, 0},
7815 	{0x30, 0x4, 0x4, 1, 1},
7816 	{0x31, 0, 0, 0, 0},
7817 	{0x32, 0xa, 0xa, 0, 0},
7818 	{0x33, 0x87, 0x87, 0, 0},
7819 	{0x34, 0x9, 0x9, 0, 0},
7820 	{0x35, 0x70, 0x70, 0, 0},
7821 	{0x36, 0x11, 0x11, 0, 0},
7822 	{0x37, 0x18, 0x18, 1, 1},
7823 	{0x38, 0x6, 0x6, 0, 0},
7824 	{0x39, 0x4, 0x4, 1, 1},
7825 	{0x3A, 0x6, 0x6, 0, 0},
7826 	{0x3B, 0x9e, 0x9e, 0, 0},
7827 	{0x3C, 0x9, 0x9, 0, 0},
7828 	{0x3D, 0xc8, 0xc8, 1, 1},
7829 	{0x3E, 0x88, 0x88, 0, 0},
7830 	{0x3F, 0, 0, 0, 0},
7831 	{0x40, 0, 0, 0, 0},
7832 	{0x41, 0, 0, 0, 0},
7833 	{0x42, 0x1, 0x1, 0, 0},
7834 	{0x43, 0x2, 0x2, 0, 0},
7835 	{0x44, 0x96, 0x96, 0, 0},
7836 	{0x45, 0x3e, 0x3e, 0, 0},
7837 	{0x46, 0x3e, 0x3e, 0, 0},
7838 	{0x47, 0x13, 0x13, 0, 0},
7839 	{0x48, 0x2, 0x2, 0, 0},
7840 	{0x49, 0x15, 0x15, 0, 0},
7841 	{0x4A, 0x7, 0x7, 0, 0},
7842 	{0x4B, 0, 0, 0, 0},
7843 	{0x4C, 0, 0, 0, 0},
7844 	{0x4D, 0, 0, 0, 0},
7845 	{0x4E, 0, 0, 0, 0},
7846 	{0x4F, 0, 0, 0, 0},
7847 	{0x50, 0x8, 0x8, 0, 0},
7848 	{0x51, 0x8, 0x8, 0, 0},
7849 	{0x52, 0x6, 0x6, 0, 0},
7850 	{0x53, 0x84, 0x84, 1, 1},
7851 	{0x54, 0xc3, 0xc3, 0, 0},
7852 	{0x55, 0x8f, 0x8f, 0, 0},
7853 	{0x56, 0xff, 0xff, 0, 0},
7854 	{0x57, 0xff, 0xff, 0, 0},
7855 	{0x58, 0x88, 0x88, 0, 0},
7856 	{0x59, 0x88, 0x88, 0, 0},
7857 	{0x5A, 0, 0, 0, 0},
7858 	{0x5B, 0xcc, 0xcc, 0, 0},
7859 	{0x5C, 0x6, 0x6, 0, 0},
7860 	{0x5D, 0x80, 0x80, 0, 0},
7861 	{0x5E, 0x80, 0x80, 0, 0},
7862 	{0x5F, 0xf8, 0xf8, 0, 0},
7863 	{0x60, 0x88, 0x88, 0, 0},
7864 	{0x61, 0x88, 0x88, 0, 0},
7865 	{0x62, 0x88, 0x8, 1, 1},
7866 	{0x63, 0x88, 0x88, 0, 0},
7867 	{0x64, 0, 0, 0, 0},
7868 	{0x65, 0x1, 0x1, 1, 1},
7869 	{0x66, 0x8a, 0x8a, 0, 0},
7870 	{0x67, 0x8, 0x8, 0, 0},
7871 	{0x68, 0x83, 0x83, 0, 0},
7872 	{0x69, 0x6, 0x6, 0, 0},
7873 	{0x6A, 0xa0, 0xa0, 0, 0},
7874 	{0x6B, 0xa, 0xa, 0, 0},
7875 	{0x6C, 0x87, 0x87, 1, 1},
7876 	{0x6D, 0x2a, 0x2a, 0, 0},
7877 	{0x6E, 0x2a, 0x2a, 0, 0},
7878 	{0x6F, 0x2a, 0x2a, 0, 0},
7879 	{0x70, 0x2a, 0x2a, 0, 0},
7880 	{0x71, 0x18, 0x18, 0, 0},
7881 	{0x72, 0x6a, 0x6a, 1, 1},
7882 	{0x73, 0xab, 0xab, 1, 1},
7883 	{0x74, 0x13, 0x13, 1, 1},
7884 	{0x75, 0xc1, 0xc1, 1, 1},
7885 	{0x76, 0xaa, 0xaa, 1, 1},
7886 	{0x77, 0x87, 0x87, 1, 1},
7887 	{0x78, 0, 0, 0, 0},
7888 	{0x79, 0x6, 0x6, 0, 0},
7889 	{0x7A, 0x7, 0x7, 0, 0},
7890 	{0x7B, 0x7, 0x7, 0, 0},
7891 	{0x7C, 0x15, 0x15, 0, 0},
7892 	{0x7D, 0x55, 0x55, 0, 0},
7893 	{0x7E, 0x97, 0x97, 1, 1},
7894 	{0x7F, 0x8, 0x8, 0, 0},
7895 	{0x80, 0x14, 0x14, 1, 1},
7896 	{0x81, 0x33, 0x33, 0, 0},
7897 	{0x82, 0x88, 0x88, 0, 0},
7898 	{0x83, 0x6, 0x6, 0, 0},
7899 	{0x84, 0x3, 0x3, 1, 1},
7900 	{0x85, 0xa, 0xa, 0, 0},
7901 	{0x86, 0x3, 0x3, 1, 1},
7902 	{0x87, 0x2a, 0x2a, 0, 0},
7903 	{0x88, 0xa4, 0xa4, 0, 0},
7904 	{0x89, 0x18, 0x18, 0, 0},
7905 	{0x8A, 0x28, 0x28, 0, 0},
7906 	{0x8B, 0, 0, 0, 0},
7907 	{0x8C, 0x4a, 0x4a, 0, 0},
7908 	{0x8D, 0, 0, 0, 0},
7909 	{0x8E, 0xf8, 0xf8, 0, 0},
7910 	{0x8F, 0x88, 0x88, 0, 0},
7911 	{0x90, 0x88, 0x88, 0, 0},
7912 	{0x91, 0x88, 0x8, 1, 1},
7913 	{0x92, 0x88, 0x88, 0, 0},
7914 	{0x93, 0, 0, 0, 0},
7915 	{0x94, 0x1, 0x1, 1, 1},
7916 	{0x95, 0x8a, 0x8a, 0, 0},
7917 	{0x96, 0x8, 0x8, 0, 0},
7918 	{0x97, 0x83, 0x83, 0, 0},
7919 	{0x98, 0x6, 0x6, 0, 0},
7920 	{0x99, 0xa0, 0xa0, 0, 0},
7921 	{0x9A, 0xa, 0xa, 0, 0},
7922 	{0x9B, 0x87, 0x87, 1, 1},
7923 	{0x9C, 0x2a, 0x2a, 0, 0},
7924 	{0x9D, 0x2a, 0x2a, 0, 0},
7925 	{0x9E, 0x2a, 0x2a, 0, 0},
7926 	{0x9F, 0x2a, 0x2a, 0, 0},
7927 	{0xA0, 0x18, 0x18, 0, 0},
7928 	{0xA1, 0x6a, 0x6a, 1, 1},
7929 	{0xA2, 0xab, 0xab, 1, 1},
7930 	{0xA3, 0x13, 0x13, 1, 1},
7931 	{0xA4, 0xc1, 0xc1, 1, 1},
7932 	{0xA5, 0xaa, 0xaa, 1, 1},
7933 	{0xA6, 0x87, 0x87, 1, 1},
7934 	{0xA7, 0, 0, 0, 0},
7935 	{0xA8, 0x6, 0x6, 0, 0},
7936 	{0xA9, 0x7, 0x7, 0, 0},
7937 	{0xAA, 0x7, 0x7, 0, 0},
7938 	{0xAB, 0x15, 0x15, 0, 0},
7939 	{0xAC, 0x55, 0x55, 0, 0},
7940 	{0xAD, 0x97, 0x97, 1, 1},
7941 	{0xAE, 0x8, 0x8, 0, 0},
7942 	{0xAF, 0x14, 0x14, 1, 1},
7943 	{0xB0, 0x33, 0x33, 0, 0},
7944 	{0xB1, 0x88, 0x88, 0, 0},
7945 	{0xB2, 0x6, 0x6, 0, 0},
7946 	{0xB3, 0x3, 0x3, 1, 1},
7947 	{0xB4, 0xa, 0xa, 0, 0},
7948 	{0xB5, 0x3, 0x3, 1, 1},
7949 	{0xB6, 0x2a, 0x2a, 0, 0},
7950 	{0xB7, 0xa4, 0xa4, 0, 0},
7951 	{0xB8, 0x18, 0x18, 0, 0},
7952 	{0xB9, 0x28, 0x28, 0, 0},
7953 	{0xBA, 0, 0, 0, 0},
7954 	{0xBB, 0x4a, 0x4a, 0, 0},
7955 	{0xBC, 0, 0, 0, 0},
7956 	{0xBD, 0x71, 0x71, 0, 0},
7957 	{0xBE, 0x72, 0x72, 0, 0},
7958 	{0xBF, 0x73, 0x73, 0, 0},
7959 	{0xC0, 0x74, 0x74, 0, 0},
7960 	{0xC1, 0x75, 0x75, 0, 0},
7961 	{0xC2, 0x76, 0x76, 0, 0},
7962 	{0xC3, 0x77, 0x77, 0, 0},
7963 	{0xC4, 0x78, 0x78, 0, 0},
7964 	{0xC5, 0x79, 0x79, 0, 0},
7965 	{0xC6, 0x7a, 0x7a, 0, 0},
7966 	{0xC7, 0, 0, 0, 0},
7967 	{0xC8, 0, 0, 0, 0},
7968 	{0xC9, 0, 0, 0, 0},
7969 	{0xCA, 0, 0, 0, 0},
7970 	{0xCB, 0, 0, 0, 0},
7971 	{0xCC, 0, 0, 0, 0},
7972 	{0xCD, 0, 0, 0, 0},
7973 	{0xCE, 0x6, 0x6, 0, 0},
7974 	{0xCF, 0, 0, 0, 0},
7975 	{0xD0, 0, 0, 0, 0},
7976 	{0xD1, 0x18, 0x18, 0, 0},
7977 	{0xD2, 0x88, 0x88, 0, 0},
7978 	{0xD3, 0, 0, 0, 0},
7979 	{0xD4, 0, 0, 0, 0},
7980 	{0xD5, 0, 0, 0, 0},
7981 	{0xD6, 0, 0, 0, 0},
7982 	{0xD7, 0, 0, 0, 0},
7983 	{0xD8, 0, 0, 0, 0},
7984 	{0xD9, 0, 0, 0, 0},
7985 	{0xDA, 0x6, 0x6, 0, 0},
7986 	{0xDB, 0, 0, 0, 0},
7987 	{0xDC, 0, 0, 0, 0},
7988 	{0xDD, 0x18, 0x18, 0, 0},
7989 	{0xDE, 0x88, 0x88, 0, 0},
7990 	{0xDF, 0, 0, 0, 0},
7991 	{0xE0, 0, 0, 0, 0},
7992 	{0xE1, 0, 0, 0, 0},
7993 	{0xE2, 0, 0, 0, 0},
7994 	{0xFFFF, 0, 0, 0, 0},
7995 };
7996 
7997 static struct radio_regs regs_SYN_2056[] = {
7998 	{0x02, 0, 0, 0, 0},
7999 	{0x03, 0, 0, 0, 0},
8000 	{0x04, 0, 0, 0, 0},
8001 	{0x05, 0, 0, 0, 0},
8002 	{0x06, 0, 0, 0, 0},
8003 	{0x07, 0, 0, 0, 0},
8004 	{0x08, 0, 0, 0, 0},
8005 	{0x09, 0x1, 0x1, 0, 0},
8006 	{0x0A, 0, 0, 0, 0},
8007 	{0x0B, 0, 0, 0, 0},
8008 	{0x0C, 0, 0, 0, 0},
8009 	{0x0D, 0, 0, 0, 0},
8010 	{0x0E, 0, 0, 0, 0},
8011 	{0x0F, 0, 0, 0, 0},
8012 	{0x10, 0, 0, 0, 0},
8013 	{0x11, 0, 0, 0, 0},
8014 	{0x12, 0, 0, 0, 0},
8015 	{0x13, 0, 0, 0, 0},
8016 	{0x14, 0, 0, 0, 0},
8017 	{0x15, 0, 0, 0, 0},
8018 	{0x16, 0, 0, 0, 0},
8019 	{0x17, 0, 0, 0, 0},
8020 	{0x18, 0, 0, 0, 0},
8021 	{0x19, 0, 0, 0, 0},
8022 	{0x1A, 0, 0, 0, 0},
8023 	{0x1B, 0, 0, 0, 0},
8024 	{0x1C, 0, 0, 0, 0},
8025 	{0x1D, 0, 0, 0, 0},
8026 	{0x1E, 0, 0, 0, 0},
8027 	{0x1F, 0, 0, 0, 0},
8028 	{0x20, 0, 0, 0, 0},
8029 	{0x21, 0, 0, 0, 0},
8030 	{0x22, 0x60, 0x60, 0, 0},
8031 	{0x23, 0x6, 0x6, 0, 0},
8032 	{0x24, 0xc, 0xc, 0, 0},
8033 	{0x25, 0, 0, 0, 0},
8034 	{0x26, 0, 0, 0, 0},
8035 	{0x27, 0, 0, 0, 0},
8036 	{0x28, 0x1, 0x1, 0, 0},
8037 	{0x29, 0, 0, 0, 0},
8038 	{0x2A, 0, 0, 0, 0},
8039 	{0x2B, 0, 0, 0, 0},
8040 	{0x2C, 0, 0, 0, 0},
8041 	{0x2D, 0, 0, 0, 0},
8042 	{0x2E, 0xd, 0xd, 0, 0},
8043 	{0x2F, 0x1f, 0x1f, 0, 0},
8044 	{0x30, 0x15, 0x15, 0, 0},
8045 	{0x31, 0xf, 0xf, 0, 0},
8046 	{0x32, 0, 0, 0, 0},
8047 	{0x33, 0, 0, 0, 0},
8048 	{0x34, 0, 0, 0, 0},
8049 	{0x35, 0, 0, 0, 0},
8050 	{0x36, 0, 0, 0, 0},
8051 	{0x37, 0, 0, 0, 0},
8052 	{0x38, 0, 0, 0, 0},
8053 	{0x39, 0, 0, 0, 0},
8054 	{0x3A, 0, 0, 0, 0},
8055 	{0x3B, 0, 0, 0, 0},
8056 	{0x3C, 0x13, 0x13, 0, 0},
8057 	{0x3D, 0xf, 0xf, 0, 0},
8058 	{0x3E, 0x18, 0x18, 0, 0},
8059 	{0x3F, 0, 0, 0, 0},
8060 	{0x40, 0, 0, 0, 0},
8061 	{0x41, 0x20, 0x20, 0, 0},
8062 	{0x42, 0x20, 0x20, 0, 0},
8063 	{0x43, 0, 0, 0, 0},
8064 	{0x44, 0x77, 0x77, 0, 0},
8065 	{0x45, 0x7, 0x7, 0, 0},
8066 	{0x46, 0x1, 0x1, 0, 0},
8067 	{0x47, 0x4, 0x4, 0, 0},
8068 	{0x48, 0xf, 0xf, 0, 0},
8069 	{0x49, 0x30, 0x30, 0, 0},
8070 	{0x4A, 0x32, 0x32, 0, 0},
8071 	{0x4B, 0xd, 0xd, 0, 0},
8072 	{0x4C, 0xd, 0xd, 0, 0},
8073 	{0x4D, 0x4, 0x4, 0, 0},
8074 	{0x4E, 0x6, 0x6, 0, 0},
8075 	{0x4F, 0x1, 0x1, 0, 0},
8076 	{0x50, 0x1c, 0x1c, 0, 0},
8077 	{0x51, 0x2, 0x2, 0, 0},
8078 	{0x52, 0x2, 0x2, 0, 0},
8079 	{0x53, 0xf7, 0xf7, 1, 1},
8080 	{0x54, 0xb4, 0xb4, 0, 0},
8081 	{0x55, 0xd2, 0xd2, 0, 0},
8082 	{0x56, 0, 0, 0, 0},
8083 	{0x57, 0, 0, 0, 0},
8084 	{0x58, 0x4, 0x4, 0, 0},
8085 	{0x59, 0x96, 0x96, 0, 0},
8086 	{0x5A, 0x3e, 0x3e, 0, 0},
8087 	{0x5B, 0x3e, 0x3e, 0, 0},
8088 	{0x5C, 0x13, 0x13, 0, 0},
8089 	{0x5D, 0x2, 0x2, 0, 0},
8090 	{0x5E, 0, 0, 0, 0},
8091 	{0x5F, 0x7, 0x7, 0, 0},
8092 	{0x60, 0x7, 0x7, 1, 1},
8093 	{0x61, 0x8, 0x8, 0, 0},
8094 	{0x62, 0x3, 0x3, 0, 0},
8095 	{0x63, 0, 0, 0, 0},
8096 	{0x64, 0, 0, 0, 0},
8097 	{0x65, 0, 0, 0, 0},
8098 	{0x66, 0, 0, 0, 0},
8099 	{0x67, 0, 0, 0, 0},
8100 	{0x68, 0x40, 0x40, 0, 0},
8101 	{0x69, 0, 0, 0, 0},
8102 	{0x6A, 0, 0, 0, 0},
8103 	{0x6B, 0, 0, 0, 0},
8104 	{0x6C, 0, 0, 0, 0},
8105 	{0x6D, 0x1, 0x1, 0, 0},
8106 	{0x6E, 0, 0, 0, 0},
8107 	{0x6F, 0, 0, 0, 0},
8108 	{0x70, 0x60, 0x60, 0, 0},
8109 	{0x71, 0x66, 0x66, 0, 0},
8110 	{0x72, 0xc, 0xc, 0, 0},
8111 	{0x73, 0x66, 0x66, 0, 0},
8112 	{0x74, 0x8f, 0x8f, 1, 1},
8113 	{0x75, 0, 0, 0, 0},
8114 	{0x76, 0xcc, 0xcc, 0, 0},
8115 	{0x77, 0x1, 0x1, 0, 0},
8116 	{0x78, 0x66, 0x66, 0, 0},
8117 	{0x79, 0x66, 0x66, 0, 0},
8118 	{0x7A, 0, 0, 0, 0},
8119 	{0x7B, 0, 0, 0, 0},
8120 	{0x7C, 0, 0, 0, 0},
8121 	{0x7D, 0, 0, 0, 0},
8122 	{0x7E, 0, 0, 0, 0},
8123 	{0x7F, 0, 0, 0, 0},
8124 	{0x80, 0, 0, 0, 0},
8125 	{0x81, 0, 0, 0, 0},
8126 	{0x82, 0, 0, 0, 0},
8127 	{0x83, 0, 0, 0, 0},
8128 	{0x84, 0, 0, 0, 0},
8129 	{0x85, 0xff, 0xff, 0, 0},
8130 	{0x86, 0, 0, 0, 0},
8131 	{0x87, 0, 0, 0, 0},
8132 	{0x88, 0, 0, 0, 0},
8133 	{0x89, 0, 0, 0, 0},
8134 	{0x8A, 0, 0, 0, 0},
8135 	{0x8B, 0, 0, 0, 0},
8136 	{0x8C, 0, 0, 0, 0},
8137 	{0x8D, 0, 0, 0, 0},
8138 	{0x8E, 0, 0, 0, 0},
8139 	{0x8F, 0, 0, 0, 0},
8140 	{0x90, 0, 0, 0, 0},
8141 	{0x91, 0, 0, 0, 0},
8142 	{0x92, 0, 0, 0, 0},
8143 	{0x93, 0, 0, 0, 0},
8144 	{0x94, 0, 0, 0, 0},
8145 	{0x95, 0, 0, 0, 0},
8146 	{0x96, 0, 0, 0, 0},
8147 	{0x97, 0, 0, 0, 0},
8148 	{0x98, 0, 0, 0, 0},
8149 	{0x99, 0, 0, 0, 0},
8150 	{0x9A, 0, 0, 0, 0},
8151 	{0x9B, 0, 0, 0, 0},
8152 	{0x9C, 0, 0, 0, 0},
8153 	{0x9D, 0, 0, 0, 0},
8154 	{0x9E, 0, 0, 0, 0},
8155 	{0x9F, 0x6, 0x6, 0, 0},
8156 	{0xA0, 0x66, 0x66, 0, 0},
8157 	{0xA1, 0x66, 0x66, 0, 0},
8158 	{0xA2, 0x66, 0x66, 0, 0},
8159 	{0xA3, 0x66, 0x66, 0, 0},
8160 	{0xA4, 0x66, 0x66, 0, 0},
8161 	{0xA5, 0x66, 0x66, 0, 0},
8162 	{0xA6, 0x66, 0x66, 0, 0},
8163 	{0xA7, 0x66, 0x66, 0, 0},
8164 	{0xA8, 0x66, 0x66, 0, 0},
8165 	{0xA9, 0x66, 0x66, 0, 0},
8166 	{0xAA, 0x66, 0x66, 0, 0},
8167 	{0xAB, 0x66, 0x66, 0, 0},
8168 	{0xAC, 0x66, 0x66, 0, 0},
8169 	{0xAD, 0x66, 0x66, 0, 0},
8170 	{0xAE, 0x66, 0x66, 0, 0},
8171 	{0xAF, 0x66, 0x66, 0, 0},
8172 	{0xB0, 0x66, 0x66, 0, 0},
8173 	{0xB1, 0x66, 0x66, 0, 0},
8174 	{0xB2, 0x66, 0x66, 0, 0},
8175 	{0xB3, 0xa, 0xa, 0, 0},
8176 	{0xB4, 0, 0, 0, 0},
8177 	{0xB5, 0, 0, 0, 0},
8178 	{0xB6, 0, 0, 0, 0},
8179 	{0xFFFF, 0, 0, 0, 0}
8180 };
8181 
8182 static struct radio_regs regs_TX_2056[] = {
8183 	{0x02, 0, 0, 0, 0},
8184 	{0x03, 0, 0, 0, 0},
8185 	{0x04, 0, 0, 0, 0},
8186 	{0x05, 0, 0, 0, 0},
8187 	{0x06, 0, 0, 0, 0},
8188 	{0x07, 0, 0, 0, 0},
8189 	{0x08, 0, 0, 0, 0},
8190 	{0x09, 0, 0, 0, 0},
8191 	{0x0A, 0, 0, 0, 0},
8192 	{0x0B, 0, 0, 0, 0},
8193 	{0x0C, 0, 0, 0, 0},
8194 	{0x0D, 0, 0, 0, 0},
8195 	{0x0E, 0, 0, 0, 0},
8196 	{0x0F, 0, 0, 0, 0},
8197 	{0x10, 0, 0, 0, 0},
8198 	{0x11, 0, 0, 0, 0},
8199 	{0x12, 0, 0, 0, 0},
8200 	{0x13, 0, 0, 0, 0},
8201 	{0x14, 0, 0, 0, 0},
8202 	{0x15, 0, 0, 0, 0},
8203 	{0x16, 0, 0, 0, 0},
8204 	{0x17, 0, 0, 0, 0},
8205 	{0x18, 0, 0, 0, 0},
8206 	{0x19, 0, 0, 0, 0},
8207 	{0x1A, 0, 0, 0, 0},
8208 	{0x1B, 0, 0, 0, 0},
8209 	{0x1C, 0, 0, 0, 0},
8210 	{0x1D, 0, 0, 0, 0},
8211 	{0x1E, 0, 0, 0, 0},
8212 	{0x1F, 0, 0, 0, 0},
8213 	{0x20, 0, 0, 0, 0},
8214 	{0x21, 0x88, 0x88, 0, 0},
8215 	{0x22, 0x88, 0x88, 0, 0},
8216 	{0x23, 0x88, 0x88, 0, 0},
8217 	{0x24, 0x88, 0x88, 0, 0},
8218 	{0x25, 0xc, 0xc, 0, 0},
8219 	{0x26, 0, 0, 0, 0},
8220 	{0x27, 0x3, 0x3, 0, 0},
8221 	{0x28, 0, 0, 0, 0},
8222 	{0x29, 0x3, 0x3, 0, 0},
8223 	{0x2A, 0x37, 0x37, 0, 0},
8224 	{0x2B, 0x3, 0x3, 0, 0},
8225 	{0x2C, 0, 0, 0, 0},
8226 	{0x2D, 0, 0, 0, 0},
8227 	{0x2E, 0x1, 0x1, 0, 0},
8228 	{0x2F, 0x1, 0x1, 0, 0},
8229 	{0x30, 0, 0, 0, 0},
8230 	{0x31, 0, 0, 0, 0},
8231 	{0x32, 0, 0, 0, 0},
8232 	{0x33, 0x11, 0x11, 0, 0},
8233 	{0x34, 0x11, 0x11, 0, 0},
8234 	{0x35, 0, 0, 0, 0},
8235 	{0x36, 0, 0, 0, 0},
8236 	{0x37, 0x3, 0x3, 0, 0},
8237 	{0x38, 0xf, 0xf, 0, 0},
8238 	{0x39, 0, 0, 0, 0},
8239 	{0x3A, 0x2d, 0x2d, 0, 0},
8240 	{0x3B, 0, 0, 0, 0},
8241 	{0x3C, 0x6e, 0x6e, 0, 0},
8242 	{0x3D, 0xf0, 0xf0, 1, 1},
8243 	{0x3E, 0, 0, 0, 0},
8244 	{0x3F, 0, 0, 0, 0},
8245 	{0x40, 0, 0, 0, 0},
8246 	{0x41, 0x3, 0x3, 0, 0},
8247 	{0x42, 0x3, 0x3, 0, 0},
8248 	{0x43, 0, 0, 0, 0},
8249 	{0x44, 0x1e, 0x1e, 0, 0},
8250 	{0x45, 0, 0, 0, 0},
8251 	{0x46, 0x6e, 0x6e, 0, 0},
8252 	{0x47, 0xf0, 0xf0, 1, 1},
8253 	{0x48, 0, 0, 0, 0},
8254 	{0x49, 0x2, 0x2, 0, 0},
8255 	{0x4A, 0xff, 0xff, 1, 1},
8256 	{0x4B, 0xc, 0xc, 0, 0},
8257 	{0x4C, 0, 0, 0, 0},
8258 	{0x4D, 0x38, 0x38, 0, 0},
8259 	{0x4E, 0x70, 0x70, 1, 1},
8260 	{0x4F, 0x2, 0x2, 0, 0},
8261 	{0x50, 0x88, 0x88, 0, 0},
8262 	{0x51, 0xc, 0xc, 0, 0},
8263 	{0x52, 0, 0, 0, 0},
8264 	{0x53, 0x8, 0x8, 0, 0},
8265 	{0x54, 0x70, 0x70, 1, 1},
8266 	{0x55, 0x2, 0x2, 0, 0},
8267 	{0x56, 0xff, 0xff, 1, 1},
8268 	{0x57, 0, 0, 0, 0},
8269 	{0x58, 0x83, 0x83, 0, 0},
8270 	{0x59, 0x77, 0x77, 1, 1},
8271 	{0x5A, 0, 0, 0, 0},
8272 	{0x5B, 0x2, 0x2, 0, 0},
8273 	{0x5C, 0x88, 0x88, 0, 0},
8274 	{0x5D, 0, 0, 0, 0},
8275 	{0x5E, 0x8, 0x8, 0, 0},
8276 	{0x5F, 0x77, 0x77, 1, 1},
8277 	{0x60, 0x1, 0x1, 0, 0},
8278 	{0x61, 0, 0, 0, 0},
8279 	{0x62, 0x7, 0x7, 0, 0},
8280 	{0x63, 0, 0, 0, 0},
8281 	{0x64, 0x7, 0x7, 0, 0},
8282 	{0x65, 0, 0, 0, 0},
8283 	{0x66, 0, 0, 0, 0},
8284 	{0x67, 0x74, 0x74, 1, 1},
8285 	{0x68, 0, 0, 0, 0},
8286 	{0x69, 0xa, 0xa, 0, 0},
8287 	{0x6A, 0, 0, 0, 0},
8288 	{0x6B, 0, 0, 0, 0},
8289 	{0x6C, 0, 0, 0, 0},
8290 	{0x6D, 0, 0, 0, 0},
8291 	{0x6E, 0, 0, 0, 0},
8292 	{0x6F, 0, 0, 0, 0},
8293 	{0x70, 0, 0, 0, 0},
8294 	{0x71, 0x2, 0x2, 0, 0},
8295 	{0x72, 0, 0, 0, 0},
8296 	{0x73, 0, 0, 0, 0},
8297 	{0x74, 0xe, 0xe, 0, 0},
8298 	{0x75, 0xe, 0xe, 0, 0},
8299 	{0x76, 0xe, 0xe, 0, 0},
8300 	{0x77, 0x13, 0x13, 0, 0},
8301 	{0x78, 0x13, 0x13, 0, 0},
8302 	{0x79, 0x1b, 0x1b, 0, 0},
8303 	{0x7A, 0x1b, 0x1b, 0, 0},
8304 	{0x7B, 0x55, 0x55, 0, 0},
8305 	{0x7C, 0x5b, 0x5b, 0, 0},
8306 	{0x7D, 0, 0, 0, 0},
8307 	{0x7E, 0, 0, 0, 0},
8308 	{0x7F, 0, 0, 0, 0},
8309 	{0x80, 0, 0, 0, 0},
8310 	{0x81, 0, 0, 0, 0},
8311 	{0x82, 0, 0, 0, 0},
8312 	{0x83, 0, 0, 0, 0},
8313 	{0x84, 0, 0, 0, 0},
8314 	{0x85, 0, 0, 0, 0},
8315 	{0x86, 0, 0, 0, 0},
8316 	{0x87, 0, 0, 0, 0},
8317 	{0x88, 0, 0, 0, 0},
8318 	{0x89, 0, 0, 0, 0},
8319 	{0x8A, 0, 0, 0, 0},
8320 	{0x8B, 0, 0, 0, 0},
8321 	{0x8C, 0, 0, 0, 0},
8322 	{0x8D, 0, 0, 0, 0},
8323 	{0x8E, 0, 0, 0, 0},
8324 	{0x8F, 0, 0, 0, 0},
8325 	{0x90, 0, 0, 0, 0},
8326 	{0x91, 0, 0, 0, 0},
8327 	{0x92, 0, 0, 0, 0},
8328 	{0xFFFF, 0, 0, 0, 0}
8329 };
8330 
8331 static struct radio_regs regs_RX_2056[] = {
8332 	{0x02, 0, 0, 0, 0},
8333 	{0x03, 0, 0, 0, 0},
8334 	{0x04, 0, 0, 0, 0},
8335 	{0x05, 0, 0, 0, 0},
8336 	{0x06, 0, 0, 0, 0},
8337 	{0x07, 0, 0, 0, 0},
8338 	{0x08, 0, 0, 0, 0},
8339 	{0x09, 0, 0, 0, 0},
8340 	{0x0A, 0, 0, 0, 0},
8341 	{0x0B, 0, 0, 0, 0},
8342 	{0x0C, 0, 0, 0, 0},
8343 	{0x0D, 0, 0, 0, 0},
8344 	{0x0E, 0, 0, 0, 0},
8345 	{0x0F, 0, 0, 0, 0},
8346 	{0x10, 0, 0, 0, 0},
8347 	{0x11, 0, 0, 0, 0},
8348 	{0x12, 0, 0, 0, 0},
8349 	{0x13, 0, 0, 0, 0},
8350 	{0x14, 0, 0, 0, 0},
8351 	{0x15, 0, 0, 0, 0},
8352 	{0x16, 0, 0, 0, 0},
8353 	{0x17, 0, 0, 0, 0},
8354 	{0x18, 0, 0, 0, 0},
8355 	{0x19, 0, 0, 0, 0},
8356 	{0x1A, 0, 0, 0, 0},
8357 	{0x1B, 0, 0, 0, 0},
8358 	{0x1C, 0, 0, 0, 0},
8359 	{0x1D, 0, 0, 0, 0},
8360 	{0x1E, 0, 0, 0, 0},
8361 	{0x1F, 0, 0, 0, 0},
8362 	{0x20, 0x3, 0x3, 0, 0},
8363 	{0x21, 0, 0, 0, 0},
8364 	{0x22, 0, 0, 0, 0},
8365 	{0x23, 0x90, 0x90, 0, 0},
8366 	{0x24, 0x55, 0x55, 0, 0},
8367 	{0x25, 0x15, 0x15, 0, 0},
8368 	{0x26, 0x5, 0x5, 0, 0},
8369 	{0x27, 0x15, 0x15, 0, 0},
8370 	{0x28, 0x5, 0x5, 0, 0},
8371 	{0x29, 0x20, 0x20, 0, 0},
8372 	{0x2A, 0x11, 0x11, 0, 0},
8373 	{0x2B, 0x90, 0x90, 0, 0},
8374 	{0x2C, 0, 0, 0, 0},
8375 	{0x2D, 0x88, 0x88, 0, 0},
8376 	{0x2E, 0x32, 0x32, 0, 0},
8377 	{0x2F, 0x77, 0x77, 0, 0},
8378 	{0x30, 0x17, 0x17, 1, 1},
8379 	{0x31, 0xff, 0xff, 1, 1},
8380 	{0x32, 0x20, 0x20, 0, 0},
8381 	{0x33, 0, 0, 0, 0},
8382 	{0x34, 0x88, 0x88, 0, 0},
8383 	{0x35, 0x32, 0x32, 0, 0},
8384 	{0x36, 0x77, 0x77, 0, 0},
8385 	{0x37, 0x17, 0x17, 1, 1},
8386 	{0x38, 0xf0, 0xf0, 1, 1},
8387 	{0x39, 0x20, 0x20, 0, 0},
8388 	{0x3A, 0x8, 0x8, 0, 0},
8389 	{0x3B, 0x99, 0x99, 0, 0},
8390 	{0x3C, 0, 0, 0, 0},
8391 	{0x3D, 0x44, 0x44, 1, 1},
8392 	{0x3E, 0, 0, 0, 0},
8393 	{0x3F, 0x44, 0x44, 0, 0},
8394 	{0x40, 0xf, 0xf, 1, 1},
8395 	{0x41, 0x6, 0x6, 0, 0},
8396 	{0x42, 0x4, 0x4, 0, 0},
8397 	{0x43, 0x50, 0x50, 1, 1},
8398 	{0x44, 0x8, 0x8, 0, 0},
8399 	{0x45, 0x99, 0x99, 0, 0},
8400 	{0x46, 0, 0, 0, 0},
8401 	{0x47, 0x11, 0x11, 0, 0},
8402 	{0x48, 0, 0, 0, 0},
8403 	{0x49, 0x44, 0x44, 0, 0},
8404 	{0x4A, 0x7, 0x7, 0, 0},
8405 	{0x4B, 0x6, 0x6, 0, 0},
8406 	{0x4C, 0x4, 0x4, 0, 0},
8407 	{0x4D, 0, 0, 0, 0},
8408 	{0x4E, 0, 0, 0, 0},
8409 	{0x4F, 0x66, 0x66, 0, 0},
8410 	{0x50, 0x66, 0x66, 0, 0},
8411 	{0x51, 0x57, 0x57, 0, 0},
8412 	{0x52, 0x57, 0x57, 0, 0},
8413 	{0x53, 0x44, 0x44, 0, 0},
8414 	{0x54, 0, 0, 0, 0},
8415 	{0x55, 0, 0, 0, 0},
8416 	{0x56, 0x8, 0x8, 0, 0},
8417 	{0x57, 0x8, 0x8, 0, 0},
8418 	{0x58, 0x7, 0x7, 0, 0},
8419 	{0x59, 0x22, 0x22, 0, 0},
8420 	{0x5A, 0x22, 0x22, 0, 0},
8421 	{0x5B, 0x2, 0x2, 0, 0},
8422 	{0x5C, 0x23, 0x23, 0, 0},
8423 	{0x5D, 0x7, 0x7, 0, 0},
8424 	{0x5E, 0x55, 0x55, 0, 0},
8425 	{0x5F, 0x23, 0x23, 0, 0},
8426 	{0x60, 0x41, 0x41, 0, 0},
8427 	{0x61, 0x1, 0x1, 0, 0},
8428 	{0x62, 0xa, 0xa, 0, 0},
8429 	{0x63, 0, 0, 0, 0},
8430 	{0x64, 0, 0, 0, 0},
8431 	{0x65, 0, 0, 0, 0},
8432 	{0x66, 0, 0, 0, 0},
8433 	{0x67, 0, 0, 0, 0},
8434 	{0x68, 0, 0, 0, 0},
8435 	{0x69, 0, 0, 0, 0},
8436 	{0x6A, 0, 0, 0, 0},
8437 	{0x6B, 0xc, 0xc, 0, 0},
8438 	{0x6C, 0, 0, 0, 0},
8439 	{0x6D, 0, 0, 0, 0},
8440 	{0x6E, 0, 0, 0, 0},
8441 	{0x6F, 0, 0, 0, 0},
8442 	{0x70, 0, 0, 0, 0},
8443 	{0x71, 0, 0, 0, 0},
8444 	{0x72, 0x22, 0x22, 0, 0},
8445 	{0x73, 0x22, 0x22, 0, 0},
8446 	{0x74, 0x2, 0x2, 0, 0},
8447 	{0x75, 0xa, 0xa, 0, 0},
8448 	{0x76, 0x1, 0x1, 0, 0},
8449 	{0x77, 0x22, 0x22, 0, 0},
8450 	{0x78, 0x30, 0x30, 0, 0},
8451 	{0x79, 0, 0, 0, 0},
8452 	{0x7A, 0, 0, 0, 0},
8453 	{0x7B, 0, 0, 0, 0},
8454 	{0x7C, 0, 0, 0, 0},
8455 	{0x7D, 0, 0, 0, 0},
8456 	{0x7E, 0, 0, 0, 0},
8457 	{0x7F, 0, 0, 0, 0},
8458 	{0x80, 0, 0, 0, 0},
8459 	{0x81, 0, 0, 0, 0},
8460 	{0x82, 0, 0, 0, 0},
8461 	{0x83, 0, 0, 0, 0},
8462 	{0x84, 0, 0, 0, 0},
8463 	{0x85, 0, 0, 0, 0},
8464 	{0x86, 0, 0, 0, 0},
8465 	{0x87, 0, 0, 0, 0},
8466 	{0x88, 0, 0, 0, 0},
8467 	{0x89, 0, 0, 0, 0},
8468 	{0x8A, 0, 0, 0, 0},
8469 	{0x8B, 0, 0, 0, 0},
8470 	{0x8C, 0, 0, 0, 0},
8471 	{0x8D, 0, 0, 0, 0},
8472 	{0x8E, 0, 0, 0, 0},
8473 	{0x8F, 0, 0, 0, 0},
8474 	{0x90, 0, 0, 0, 0},
8475 	{0x91, 0, 0, 0, 0},
8476 	{0x92, 0, 0, 0, 0},
8477 	{0x93, 0, 0, 0, 0},
8478 	{0x94, 0, 0, 0, 0},
8479 	{0xFFFF, 0, 0, 0, 0}
8480 };
8481 
8482 static struct radio_regs regs_SYN_2056_A1[] = {
8483 	{0x02, 0, 0, 0, 0},
8484 	{0x03, 0, 0, 0, 0},
8485 	{0x04, 0, 0, 0, 0},
8486 	{0x05, 0, 0, 0, 0},
8487 	{0x06, 0, 0, 0, 0},
8488 	{0x07, 0, 0, 0, 0},
8489 	{0x08, 0, 0, 0, 0},
8490 	{0x09, 0x1, 0x1, 0, 0},
8491 	{0x0A, 0, 0, 0, 0},
8492 	{0x0B, 0, 0, 0, 0},
8493 	{0x0C, 0, 0, 0, 0},
8494 	{0x0D, 0, 0, 0, 0},
8495 	{0x0E, 0, 0, 0, 0},
8496 	{0x0F, 0, 0, 0, 0},
8497 	{0x10, 0, 0, 0, 0},
8498 	{0x11, 0, 0, 0, 0},
8499 	{0x12, 0, 0, 0, 0},
8500 	{0x13, 0, 0, 0, 0},
8501 	{0x14, 0, 0, 0, 0},
8502 	{0x15, 0, 0, 0, 0},
8503 	{0x16, 0, 0, 0, 0},
8504 	{0x17, 0, 0, 0, 0},
8505 	{0x18, 0, 0, 0, 0},
8506 	{0x19, 0, 0, 0, 0},
8507 	{0x1A, 0, 0, 0, 0},
8508 	{0x1B, 0, 0, 0, 0},
8509 	{0x1C, 0, 0, 0, 0},
8510 	{0x1D, 0, 0, 0, 0},
8511 	{0x1E, 0, 0, 0, 0},
8512 	{0x1F, 0, 0, 0, 0},
8513 	{0x20, 0, 0, 0, 0},
8514 	{0x21, 0, 0, 0, 0},
8515 	{0x22, 0x60, 0x60, 0, 0},
8516 	{0x23, 0x6, 0x6, 0, 0},
8517 	{0x24, 0xc, 0xc, 0, 0},
8518 	{0x25, 0, 0, 0, 0},
8519 	{0x26, 0, 0, 0, 0},
8520 	{0x27, 0, 0, 0, 0},
8521 	{0x28, 0x1, 0x1, 0, 0},
8522 	{0x29, 0, 0, 0, 0},
8523 	{0x2A, 0, 0, 0, 0},
8524 	{0x2B, 0, 0, 0, 0},
8525 	{0x2C, 0, 0, 0, 0},
8526 	{0x2D, 0, 0, 0, 0},
8527 	{0x2E, 0xd, 0xd, 0, 0},
8528 	{0x2F, 0x1f, 0x1f, 0, 0},
8529 	{0x30, 0x15, 0x15, 0, 0},
8530 	{0x31, 0xf, 0xf, 0, 0},
8531 	{0x32, 0, 0, 0, 0},
8532 	{0x33, 0, 0, 0, 0},
8533 	{0x34, 0, 0, 0, 0},
8534 	{0x35, 0, 0, 0, 0},
8535 	{0x36, 0, 0, 0, 0},
8536 	{0x37, 0, 0, 0, 0},
8537 	{0x38, 0, 0, 0, 0},
8538 	{0x39, 0, 0, 0, 0},
8539 	{0x3A, 0, 0, 0, 0},
8540 	{0x3B, 0, 0, 0, 0},
8541 	{0x3C, 0x13, 0x13, 0, 0},
8542 	{0x3D, 0xf, 0xf, 0, 0},
8543 	{0x3E, 0x18, 0x18, 0, 0},
8544 	{0x3F, 0, 0, 0, 0},
8545 	{0x40, 0, 0, 0, 0},
8546 	{0x41, 0x20, 0x20, 0, 0},
8547 	{0x42, 0x20, 0x20, 0, 0},
8548 	{0x43, 0, 0, 0, 0},
8549 	{0x44, 0x77, 0x77, 0, 0},
8550 	{0x45, 0x7, 0x7, 0, 0},
8551 	{0x46, 0x1, 0x1, 0, 0},
8552 	{0x47, 0x4, 0x4, 0, 0},
8553 	{0x48, 0xf, 0xf, 0, 0},
8554 	{0x49, 0x30, 0x30, 0, 0},
8555 	{0x4A, 0x32, 0x32, 0, 0},
8556 	{0x4B, 0xd, 0xd, 0, 0},
8557 	{0x4C, 0xd, 0xd, 0, 0},
8558 	{0x4D, 0x4, 0x4, 0, 0},
8559 	{0x4E, 0x6, 0x6, 0, 0},
8560 	{0x4F, 0x1, 0x1, 0, 0},
8561 	{0x50, 0x1c, 0x1c, 0, 0},
8562 	{0x51, 0x2, 0x2, 0, 0},
8563 	{0x52, 0x2, 0x2, 0, 0},
8564 	{0x53, 0xf7, 0xf7, 1, 1},
8565 	{0x54, 0xb4, 0xb4, 0, 0},
8566 	{0x55, 0xd2, 0xd2, 0, 0},
8567 	{0x56, 0, 0, 0, 0},
8568 	{0x57, 0, 0, 0, 0},
8569 	{0x58, 0x4, 0x4, 0, 0},
8570 	{0x59, 0x96, 0x96, 0, 0},
8571 	{0x5A, 0x3e, 0x3e, 0, 0},
8572 	{0x5B, 0x3e, 0x3e, 0, 0},
8573 	{0x5C, 0x13, 0x13, 0, 0},
8574 	{0x5D, 0x2, 0x2, 0, 0},
8575 	{0x5E, 0, 0, 0, 0},
8576 	{0x5F, 0x7, 0x7, 0, 0},
8577 	{0x60, 0x7, 0x7, 1, 1},
8578 	{0x61, 0x8, 0x8, 0, 0},
8579 	{0x62, 0x3, 0x3, 0, 0},
8580 	{0x63, 0, 0, 0, 0},
8581 	{0x64, 0, 0, 0, 0},
8582 	{0x65, 0, 0, 0, 0},
8583 	{0x66, 0, 0, 0, 0},
8584 	{0x67, 0, 0, 0, 0},
8585 	{0x68, 0x40, 0x40, 0, 0},
8586 	{0x69, 0, 0, 0, 0},
8587 	{0x6A, 0, 0, 0, 0},
8588 	{0x6B, 0, 0, 0, 0},
8589 	{0x6C, 0, 0, 0, 0},
8590 	{0x6D, 0x1, 0x1, 0, 0},
8591 	{0x6E, 0, 0, 0, 0},
8592 	{0x6F, 0, 0, 0, 0},
8593 	{0x70, 0x60, 0x60, 0, 0},
8594 	{0x71, 0x66, 0x66, 0, 0},
8595 	{0x72, 0xc, 0xc, 0, 0},
8596 	{0x73, 0x66, 0x66, 0, 0},
8597 	{0x74, 0x8f, 0x8f, 1, 1},
8598 	{0x75, 0, 0, 0, 0},
8599 	{0x76, 0xcc, 0xcc, 0, 0},
8600 	{0x77, 0x1, 0x1, 0, 0},
8601 	{0x78, 0x66, 0x66, 0, 0},
8602 	{0x79, 0x66, 0x66, 0, 0},
8603 	{0x7A, 0, 0, 0, 0},
8604 	{0x7B, 0, 0, 0, 0},
8605 	{0x7C, 0, 0, 0, 0},
8606 	{0x7D, 0, 0, 0, 0},
8607 	{0x7E, 0, 0, 0, 0},
8608 	{0x7F, 0, 0, 0, 0},
8609 	{0x80, 0, 0, 0, 0},
8610 	{0x81, 0, 0, 0, 0},
8611 	{0x82, 0, 0, 0, 0},
8612 	{0x83, 0, 0, 0, 0},
8613 	{0x84, 0, 0, 0, 0},
8614 	{0x85, 0xff, 0xff, 0, 0},
8615 	{0x86, 0, 0, 0, 0},
8616 	{0x87, 0, 0, 0, 0},
8617 	{0x88, 0, 0, 0, 0},
8618 	{0x89, 0, 0, 0, 0},
8619 	{0x8A, 0, 0, 0, 0},
8620 	{0x8B, 0, 0, 0, 0},
8621 	{0x8C, 0, 0, 0, 0},
8622 	{0x8D, 0, 0, 0, 0},
8623 	{0x8E, 0, 0, 0, 0},
8624 	{0x8F, 0, 0, 0, 0},
8625 	{0x90, 0, 0, 0, 0},
8626 	{0x91, 0, 0, 0, 0},
8627 	{0x92, 0, 0, 0, 0},
8628 	{0x93, 0, 0, 0, 0},
8629 	{0x94, 0, 0, 0, 0},
8630 	{0x95, 0, 0, 0, 0},
8631 	{0x96, 0, 0, 0, 0},
8632 	{0x97, 0, 0, 0, 0},
8633 	{0x98, 0, 0, 0, 0},
8634 	{0x99, 0, 0, 0, 0},
8635 	{0x9A, 0, 0, 0, 0},
8636 	{0x9B, 0, 0, 0, 0},
8637 	{0x9C, 0, 0, 0, 0},
8638 	{0x9D, 0, 0, 0, 0},
8639 	{0x9E, 0, 0, 0, 0},
8640 	{0x9F, 0x6, 0x6, 0, 0},
8641 	{0xA0, 0x66, 0x66, 0, 0},
8642 	{0xA1, 0x66, 0x66, 0, 0},
8643 	{0xA2, 0x66, 0x66, 0, 0},
8644 	{0xA3, 0x66, 0x66, 0, 0},
8645 	{0xA4, 0x66, 0x66, 0, 0},
8646 	{0xA5, 0x66, 0x66, 0, 0},
8647 	{0xA6, 0x66, 0x66, 0, 0},
8648 	{0xA7, 0x66, 0x66, 0, 0},
8649 	{0xA8, 0x66, 0x66, 0, 0},
8650 	{0xA9, 0x66, 0x66, 0, 0},
8651 	{0xAA, 0x66, 0x66, 0, 0},
8652 	{0xAB, 0x66, 0x66, 0, 0},
8653 	{0xAC, 0x66, 0x66, 0, 0},
8654 	{0xAD, 0x66, 0x66, 0, 0},
8655 	{0xAE, 0x66, 0x66, 0, 0},
8656 	{0xAF, 0x66, 0x66, 0, 0},
8657 	{0xB0, 0x66, 0x66, 0, 0},
8658 	{0xB1, 0x66, 0x66, 0, 0},
8659 	{0xB2, 0x66, 0x66, 0, 0},
8660 	{0xB3, 0xa, 0xa, 0, 0},
8661 	{0xB4, 0, 0, 0, 0},
8662 	{0xB5, 0, 0, 0, 0},
8663 	{0xB6, 0, 0, 0, 0},
8664 	{0xFFFF, 0, 0, 0, 0}
8665 };
8666 
8667 static struct radio_regs regs_TX_2056_A1[] = {
8668 	{0x02, 0, 0, 0, 0},
8669 	{0x03, 0, 0, 0, 0},
8670 	{0x04, 0, 0, 0, 0},
8671 	{0x05, 0, 0, 0, 0},
8672 	{0x06, 0, 0, 0, 0},
8673 	{0x07, 0, 0, 0, 0},
8674 	{0x08, 0, 0, 0, 0},
8675 	{0x09, 0, 0, 0, 0},
8676 	{0x0A, 0, 0, 0, 0},
8677 	{0x0B, 0, 0, 0, 0},
8678 	{0x0C, 0, 0, 0, 0},
8679 	{0x0D, 0, 0, 0, 0},
8680 	{0x0E, 0, 0, 0, 0},
8681 	{0x0F, 0, 0, 0, 0},
8682 	{0x10, 0, 0, 0, 0},
8683 	{0x11, 0, 0, 0, 0},
8684 	{0x12, 0, 0, 0, 0},
8685 	{0x13, 0, 0, 0, 0},
8686 	{0x14, 0, 0, 0, 0},
8687 	{0x15, 0, 0, 0, 0},
8688 	{0x16, 0, 0, 0, 0},
8689 	{0x17, 0, 0, 0, 0},
8690 	{0x18, 0, 0, 0, 0},
8691 	{0x19, 0, 0, 0, 0},
8692 	{0x1A, 0, 0, 0, 0},
8693 	{0x1B, 0, 0, 0, 0},
8694 	{0x1C, 0, 0, 0, 0},
8695 	{0x1D, 0, 0, 0, 0},
8696 	{0x1E, 0, 0, 0, 0},
8697 	{0x1F, 0, 0, 0, 0},
8698 	{0x20, 0, 0, 0, 0},
8699 	{0x21, 0x88, 0x88, 0, 0},
8700 	{0x22, 0x88, 0x88, 0, 0},
8701 	{0x23, 0x88, 0x88, 0, 0},
8702 	{0x24, 0x88, 0x88, 0, 0},
8703 	{0x25, 0xc, 0xc, 0, 0},
8704 	{0x26, 0, 0, 0, 0},
8705 	{0x27, 0x3, 0x3, 0, 0},
8706 	{0x28, 0, 0, 0, 0},
8707 	{0x29, 0x3, 0x3, 0, 0},
8708 	{0x2A, 0x37, 0x37, 0, 0},
8709 	{0x2B, 0x3, 0x3, 0, 0},
8710 	{0x2C, 0, 0, 0, 0},
8711 	{0x2D, 0, 0, 0, 0},
8712 	{0x2E, 0x1, 0x1, 0, 0},
8713 	{0x2F, 0x1, 0x1, 0, 0},
8714 	{0x30, 0, 0, 0, 0},
8715 	{0x31, 0, 0, 0, 0},
8716 	{0x32, 0, 0, 0, 0},
8717 	{0x33, 0x11, 0x11, 0, 0},
8718 	{0x34, 0x11, 0x11, 0, 0},
8719 	{0x35, 0, 0, 0, 0},
8720 	{0x36, 0, 0, 0, 0},
8721 	{0x37, 0x3, 0x3, 0, 0},
8722 	{0x38, 0xf, 0xf, 0, 0},
8723 	{0x39, 0, 0, 0, 0},
8724 	{0x3A, 0x2d, 0x2d, 0, 0},
8725 	{0x3B, 0, 0, 0, 0},
8726 	{0x3C, 0x6e, 0x6e, 0, 0},
8727 	{0x3D, 0xf0, 0xf0, 1, 1},
8728 	{0x3E, 0, 0, 0, 0},
8729 	{0x3F, 0, 0, 0, 0},
8730 	{0x40, 0, 0, 0, 0},
8731 	{0x41, 0x3, 0x3, 0, 0},
8732 	{0x42, 0x3, 0x3, 0, 0},
8733 	{0x43, 0, 0, 0, 0},
8734 	{0x44, 0x1e, 0x1e, 0, 0},
8735 	{0x45, 0, 0, 0, 0},
8736 	{0x46, 0x6e, 0x6e, 0, 0},
8737 	{0x47, 0xf0, 0xf0, 1, 1},
8738 	{0x48, 0, 0, 0, 0},
8739 	{0x49, 0x2, 0x2, 0, 0},
8740 	{0x4A, 0xff, 0xff, 1, 1},
8741 	{0x4B, 0xc, 0xc, 0, 0},
8742 	{0x4C, 0, 0, 0, 0},
8743 	{0x4D, 0x38, 0x38, 0, 0},
8744 	{0x4E, 0x70, 0x70, 1, 1},
8745 	{0x4F, 0x2, 0x2, 0, 0},
8746 	{0x50, 0x88, 0x88, 0, 0},
8747 	{0x51, 0xc, 0xc, 0, 0},
8748 	{0x52, 0, 0, 0, 0},
8749 	{0x53, 0x8, 0x8, 0, 0},
8750 	{0x54, 0x70, 0x70, 1, 1},
8751 	{0x55, 0x2, 0x2, 0, 0},
8752 	{0x56, 0xff, 0xff, 1, 1},
8753 	{0x57, 0, 0, 0, 0},
8754 	{0x58, 0x83, 0x83, 0, 0},
8755 	{0x59, 0x77, 0x77, 1, 1},
8756 	{0x5A, 0, 0, 0, 0},
8757 	{0x5B, 0x2, 0x2, 0, 0},
8758 	{0x5C, 0x88, 0x88, 0, 0},
8759 	{0x5D, 0, 0, 0, 0},
8760 	{0x5E, 0x8, 0x8, 0, 0},
8761 	{0x5F, 0x77, 0x77, 1, 1},
8762 	{0x60, 0x1, 0x1, 0, 0},
8763 	{0x61, 0, 0, 0, 0},
8764 	{0x62, 0x7, 0x7, 0, 0},
8765 	{0x63, 0, 0, 0, 0},
8766 	{0x64, 0x7, 0x7, 0, 0},
8767 	{0x65, 0, 0, 0, 0},
8768 	{0x66, 0, 0, 0, 0},
8769 	{0x67, 0x72, 0x72, 1, 1},
8770 	{0x68, 0, 0, 0, 0},
8771 	{0x69, 0xa, 0xa, 0, 0},
8772 	{0x6A, 0, 0, 0, 0},
8773 	{0x6B, 0, 0, 0, 0},
8774 	{0x6C, 0, 0, 0, 0},
8775 	{0x6D, 0, 0, 0, 0},
8776 	{0x6E, 0, 0, 0, 0},
8777 	{0x6F, 0, 0, 0, 0},
8778 	{0x70, 0, 0, 0, 0},
8779 	{0x71, 0x2, 0x2, 0, 0},
8780 	{0x72, 0, 0, 0, 0},
8781 	{0x73, 0, 0, 0, 0},
8782 	{0x74, 0xe, 0xe, 0, 0},
8783 	{0x75, 0xe, 0xe, 0, 0},
8784 	{0x76, 0xe, 0xe, 0, 0},
8785 	{0x77, 0x13, 0x13, 0, 0},
8786 	{0x78, 0x13, 0x13, 0, 0},
8787 	{0x79, 0x1b, 0x1b, 0, 0},
8788 	{0x7A, 0x1b, 0x1b, 0, 0},
8789 	{0x7B, 0x55, 0x55, 0, 0},
8790 	{0x7C, 0x5b, 0x5b, 0, 0},
8791 	{0x7D, 0, 0, 0, 0},
8792 	{0x7E, 0, 0, 0, 0},
8793 	{0x7F, 0, 0, 0, 0},
8794 	{0x80, 0, 0, 0, 0},
8795 	{0x81, 0, 0, 0, 0},
8796 	{0x82, 0, 0, 0, 0},
8797 	{0x83, 0, 0, 0, 0},
8798 	{0x84, 0, 0, 0, 0},
8799 	{0x85, 0, 0, 0, 0},
8800 	{0x86, 0, 0, 0, 0},
8801 	{0x87, 0, 0, 0, 0},
8802 	{0x88, 0, 0, 0, 0},
8803 	{0x89, 0, 0, 0, 0},
8804 	{0x8A, 0, 0, 0, 0},
8805 	{0x8B, 0, 0, 0, 0},
8806 	{0x8C, 0, 0, 0, 0},
8807 	{0x8D, 0, 0, 0, 0},
8808 	{0x8E, 0, 0, 0, 0},
8809 	{0x8F, 0, 0, 0, 0},
8810 	{0x90, 0, 0, 0, 0},
8811 	{0x91, 0, 0, 0, 0},
8812 	{0x92, 0, 0, 0, 0},
8813 	{0xFFFF, 0, 0, 0, 0}
8814 };
8815 
8816 static struct radio_regs regs_RX_2056_A1[] = {
8817 	{0x02, 0, 0, 0, 0},
8818 	{0x03, 0, 0, 0, 0},
8819 	{0x04, 0, 0, 0, 0},
8820 	{0x05, 0, 0, 0, 0},
8821 	{0x06, 0, 0, 0, 0},
8822 	{0x07, 0, 0, 0, 0},
8823 	{0x08, 0, 0, 0, 0},
8824 	{0x09, 0, 0, 0, 0},
8825 	{0x0A, 0, 0, 0, 0},
8826 	{0x0B, 0, 0, 0, 0},
8827 	{0x0C, 0, 0, 0, 0},
8828 	{0x0D, 0, 0, 0, 0},
8829 	{0x0E, 0, 0, 0, 0},
8830 	{0x0F, 0, 0, 0, 0},
8831 	{0x10, 0, 0, 0, 0},
8832 	{0x11, 0, 0, 0, 0},
8833 	{0x12, 0, 0, 0, 0},
8834 	{0x13, 0, 0, 0, 0},
8835 	{0x14, 0, 0, 0, 0},
8836 	{0x15, 0, 0, 0, 0},
8837 	{0x16, 0, 0, 0, 0},
8838 	{0x17, 0, 0, 0, 0},
8839 	{0x18, 0, 0, 0, 0},
8840 	{0x19, 0, 0, 0, 0},
8841 	{0x1A, 0, 0, 0, 0},
8842 	{0x1B, 0, 0, 0, 0},
8843 	{0x1C, 0, 0, 0, 0},
8844 	{0x1D, 0, 0, 0, 0},
8845 	{0x1E, 0, 0, 0, 0},
8846 	{0x1F, 0, 0, 0, 0},
8847 	{0x20, 0x3, 0x3, 0, 0},
8848 	{0x21, 0, 0, 0, 0},
8849 	{0x22, 0, 0, 0, 0},
8850 	{0x23, 0x90, 0x90, 0, 0},
8851 	{0x24, 0x55, 0x55, 0, 0},
8852 	{0x25, 0x15, 0x15, 0, 0},
8853 	{0x26, 0x5, 0x5, 0, 0},
8854 	{0x27, 0x15, 0x15, 0, 0},
8855 	{0x28, 0x5, 0x5, 0, 0},
8856 	{0x29, 0x20, 0x20, 0, 0},
8857 	{0x2A, 0x11, 0x11, 0, 0},
8858 	{0x2B, 0x90, 0x90, 0, 0},
8859 	{0x2C, 0, 0, 0, 0},
8860 	{0x2D, 0x88, 0x88, 0, 0},
8861 	{0x2E, 0x32, 0x32, 0, 0},
8862 	{0x2F, 0x77, 0x77, 0, 0},
8863 	{0x30, 0x17, 0x17, 1, 1},
8864 	{0x31, 0xff, 0xff, 1, 1},
8865 	{0x32, 0x20, 0x20, 0, 0},
8866 	{0x33, 0, 0, 0, 0},
8867 	{0x34, 0x88, 0x88, 0, 0},
8868 	{0x35, 0x32, 0x32, 0, 0},
8869 	{0x36, 0x77, 0x77, 0, 0},
8870 	{0x37, 0x17, 0x17, 1, 1},
8871 	{0x38, 0xf0, 0xf0, 1, 1},
8872 	{0x39, 0x20, 0x20, 0, 0},
8873 	{0x3A, 0x8, 0x8, 0, 0},
8874 	{0x3B, 0x55, 0x55, 1, 1},
8875 	{0x3C, 0, 0, 0, 0},
8876 	{0x3D, 0x44, 0x44, 1, 1},
8877 	{0x3E, 0, 0, 0, 0},
8878 	{0x3F, 0x44, 0x44, 0, 0},
8879 	{0x40, 0xf, 0xf, 1, 1},
8880 	{0x41, 0x6, 0x6, 0, 0},
8881 	{0x42, 0x4, 0x4, 0, 0},
8882 	{0x43, 0x50, 0x50, 1, 1},
8883 	{0x44, 0x8, 0x8, 0, 0},
8884 	{0x45, 0x55, 0x55, 1, 1},
8885 	{0x46, 0, 0, 0, 0},
8886 	{0x47, 0x11, 0x11, 0, 0},
8887 	{0x48, 0, 0, 0, 0},
8888 	{0x49, 0x44, 0x44, 0, 0},
8889 	{0x4A, 0x7, 0x7, 0, 0},
8890 	{0x4B, 0x6, 0x6, 0, 0},
8891 	{0x4C, 0x4, 0x4, 0, 0},
8892 	{0x4D, 0, 0, 0, 0},
8893 	{0x4E, 0, 0, 0, 0},
8894 	{0x4F, 0x26, 0x26, 1, 1},
8895 	{0x50, 0x26, 0x26, 1, 1},
8896 	{0x51, 0xf, 0xf, 1, 1},
8897 	{0x52, 0xf, 0xf, 1, 1},
8898 	{0x53, 0x44, 0x44, 0, 0},
8899 	{0x54, 0, 0, 0, 0},
8900 	{0x55, 0, 0, 0, 0},
8901 	{0x56, 0x8, 0x8, 0, 0},
8902 	{0x57, 0x8, 0x8, 0, 0},
8903 	{0x58, 0x7, 0x7, 0, 0},
8904 	{0x59, 0x22, 0x22, 0, 0},
8905 	{0x5A, 0x22, 0x22, 0, 0},
8906 	{0x5B, 0x2, 0x2, 0, 0},
8907 	{0x5C, 0x2f, 0x2f, 1, 1},
8908 	{0x5D, 0x7, 0x7, 0, 0},
8909 	{0x5E, 0x55, 0x55, 0, 0},
8910 	{0x5F, 0x23, 0x23, 0, 0},
8911 	{0x60, 0x41, 0x41, 0, 0},
8912 	{0x61, 0x1, 0x1, 0, 0},
8913 	{0x62, 0xa, 0xa, 0, 0},
8914 	{0x63, 0, 0, 0, 0},
8915 	{0x64, 0, 0, 0, 0},
8916 	{0x65, 0, 0, 0, 0},
8917 	{0x66, 0, 0, 0, 0},
8918 	{0x67, 0, 0, 0, 0},
8919 	{0x68, 0, 0, 0, 0},
8920 	{0x69, 0, 0, 0, 0},
8921 	{0x6A, 0, 0, 0, 0},
8922 	{0x6B, 0xc, 0xc, 0, 0},
8923 	{0x6C, 0, 0, 0, 0},
8924 	{0x6D, 0, 0, 0, 0},
8925 	{0x6E, 0, 0, 0, 0},
8926 	{0x6F, 0, 0, 0, 0},
8927 	{0x70, 0, 0, 0, 0},
8928 	{0x71, 0, 0, 0, 0},
8929 	{0x72, 0x22, 0x22, 0, 0},
8930 	{0x73, 0x22, 0x22, 0, 0},
8931 	{0x74, 0, 0, 1, 1},
8932 	{0x75, 0xa, 0xa, 0, 0},
8933 	{0x76, 0x1, 0x1, 0, 0},
8934 	{0x77, 0x22, 0x22, 0, 0},
8935 	{0x78, 0x30, 0x30, 0, 0},
8936 	{0x79, 0, 0, 0, 0},
8937 	{0x7A, 0, 0, 0, 0},
8938 	{0x7B, 0, 0, 0, 0},
8939 	{0x7C, 0, 0, 0, 0},
8940 	{0x7D, 0, 0, 0, 0},
8941 	{0x7E, 0, 0, 0, 0},
8942 	{0x7F, 0, 0, 0, 0},
8943 	{0x80, 0, 0, 0, 0},
8944 	{0x81, 0, 0, 0, 0},
8945 	{0x82, 0, 0, 0, 0},
8946 	{0x83, 0, 0, 0, 0},
8947 	{0x84, 0, 0, 0, 0},
8948 	{0x85, 0, 0, 0, 0},
8949 	{0x86, 0, 0, 0, 0},
8950 	{0x87, 0, 0, 0, 0},
8951 	{0x88, 0, 0, 0, 0},
8952 	{0x89, 0, 0, 0, 0},
8953 	{0x8A, 0, 0, 0, 0},
8954 	{0x8B, 0, 0, 0, 0},
8955 	{0x8C, 0, 0, 0, 0},
8956 	{0x8D, 0, 0, 0, 0},
8957 	{0x8E, 0, 0, 0, 0},
8958 	{0x8F, 0, 0, 0, 0},
8959 	{0x90, 0, 0, 0, 0},
8960 	{0x91, 0, 0, 0, 0},
8961 	{0x92, 0, 0, 0, 0},
8962 	{0x93, 0, 0, 0, 0},
8963 	{0x94, 0, 0, 0, 0},
8964 	{0xFFFF, 0, 0, 0, 0}
8965 };
8966 
8967 static struct radio_regs regs_SYN_2056_rev5[] = {
8968 	{0x02, 0, 0, 0, 0},
8969 	{0x03, 0, 0, 0, 0},
8970 	{0x04, 0, 0, 0, 0},
8971 	{0x05, 0, 0, 0, 0},
8972 	{0x06, 0, 0, 0, 0},
8973 	{0x07, 0, 0, 0, 0},
8974 	{0x08, 0, 0, 0, 0},
8975 	{0x09, 0x1, 0x1, 0, 0},
8976 	{0x0A, 0, 0, 0, 0},
8977 	{0x0B, 0, 0, 0, 0},
8978 	{0x0C, 0, 0, 0, 0},
8979 	{0x0D, 0, 0, 0, 0},
8980 	{0x0E, 0, 0, 0, 0},
8981 	{0x0F, 0, 0, 0, 0},
8982 	{0x10, 0, 0, 0, 0},
8983 	{0x11, 0, 0, 0, 0},
8984 	{0x12, 0, 0, 0, 0},
8985 	{0x13, 0, 0, 0, 0},
8986 	{0x14, 0, 0, 0, 0},
8987 	{0x15, 0, 0, 0, 0},
8988 	{0x16, 0, 0, 0, 0},
8989 	{0x17, 0, 0, 0, 0},
8990 	{0x18, 0, 0, 0, 0},
8991 	{0x19, 0, 0, 0, 0},
8992 	{0x1A, 0, 0, 0, 0},
8993 	{0x1B, 0, 0, 0, 0},
8994 	{0x1C, 0, 0, 0, 0},
8995 	{0x1D, 0, 0, 0, 0},
8996 	{0x1E, 0, 0, 0, 0},
8997 	{0x1F, 0, 0, 0, 0},
8998 	{0x20, 0, 0, 0, 0},
8999 	{0x21, 0, 0, 0, 0},
9000 	{0x22, 0x60, 0x60, 0, 0},
9001 	{0x23, 0x6, 0x6, 0, 0},
9002 	{0x24, 0xc, 0xc, 0, 0},
9003 	{0x25, 0, 0, 0, 0},
9004 	{0x26, 0, 0, 0, 0},
9005 	{0x27, 0, 0, 0, 0},
9006 	{0x28, 0x1, 0x1, 0, 0},
9007 	{0x29, 0, 0, 0, 0},
9008 	{0x2A, 0, 0, 0, 0},
9009 	{0x2B, 0, 0, 0, 0},
9010 	{0x2C, 0, 0, 0, 0},
9011 	{0x2D, 0, 0, 0, 0},
9012 	{0x2E, 0, 0, 0, 0},
9013 	{0x2F, 0x1f, 0x1f, 0, 0},
9014 	{0x30, 0x15, 0x15, 0, 0},
9015 	{0x31, 0xf, 0xf, 0, 0},
9016 	{0x32, 0, 0, 0, 0},
9017 	{0x33, 0, 0, 0, 0},
9018 	{0x34, 0, 0, 0, 0},
9019 	{0x35, 0, 0, 0, 0},
9020 	{0x36, 0, 0, 0, 0},
9021 	{0x37, 0, 0, 0, 0},
9022 	{0x38, 0, 0, 0, 0},
9023 	{0x39, 0, 0, 0, 0},
9024 	{0x3A, 0, 0, 0, 0},
9025 	{0x3B, 0, 0, 0, 0},
9026 	{0x3C, 0x13, 0x13, 0, 0},
9027 	{0x3D, 0xf, 0xf, 0, 0},
9028 	{0x3E, 0x18, 0x18, 0, 0},
9029 	{0x3F, 0, 0, 0, 0},
9030 	{0x40, 0, 0, 0, 0},
9031 	{0x41, 0x20, 0x20, 0, 0},
9032 	{0x42, 0x20, 0x20, 0, 0},
9033 	{0x43, 0, 0, 0, 0},
9034 	{0x44, 0x77, 0x77, 0, 0},
9035 	{0x45, 0x7, 0x7, 0, 0},
9036 	{0x46, 0x1, 0x1, 0, 0},
9037 	{0x47, 0x4, 0x4, 0, 0},
9038 	{0x48, 0xf, 0xf, 0, 0},
9039 	{0x49, 0x30, 0x30, 0, 0},
9040 	{0x4A, 0x32, 0x32, 0, 0},
9041 	{0x4B, 0xd, 0xd, 0, 0},
9042 	{0x4C, 0xd, 0xd, 0, 0},
9043 	{0x4D, 0x4, 0x4, 0, 0},
9044 	{0x4E, 0x6, 0x6, 0, 0},
9045 	{0x4F, 0x1, 0x1, 0, 0},
9046 	{0x50, 0x1c, 0x1c, 0, 0},
9047 	{0x51, 0x2, 0x2, 0, 0},
9048 	{0x52, 0x2, 0x2, 0, 0},
9049 	{0x53, 0xf7, 0xf7, 1, 1},
9050 	{0x54, 0xb4, 0xb4, 0, 0},
9051 	{0x55, 0xd2, 0xd2, 0, 0},
9052 	{0x56, 0, 0, 0, 0},
9053 	{0x57, 0, 0, 0, 0},
9054 	{0x58, 0x4, 0x4, 0, 0},
9055 	{0x59, 0x96, 0x96, 0, 0},
9056 	{0x5A, 0x3e, 0x3e, 0, 0},
9057 	{0x5B, 0x3e, 0x3e, 0, 0},
9058 	{0x5C, 0x13, 0x13, 0, 0},
9059 	{0x5D, 0x2, 0x2, 0, 0},
9060 	{0x5E, 0, 0, 0, 0},
9061 	{0x5F, 0x7, 0x7, 0, 0},
9062 	{0x60, 0x7, 0x7, 1, 1},
9063 	{0x61, 0x8, 0x8, 0, 0},
9064 	{0x62, 0x3, 0x3, 0, 0},
9065 	{0x63, 0, 0, 0, 0},
9066 	{0x64, 0, 0, 0, 0},
9067 	{0x65, 0, 0, 0, 0},
9068 	{0x66, 0, 0, 0, 0},
9069 	{0x67, 0, 0, 0, 0},
9070 	{0x68, 0x40, 0x40, 0, 0},
9071 	{0x69, 0, 0, 0, 0},
9072 	{0x6A, 0, 0, 0, 0},
9073 	{0x6B, 0, 0, 0, 0},
9074 	{0x6C, 0, 0, 0, 0},
9075 	{0x6D, 0x1, 0x1, 0, 0},
9076 	{0x6E, 0, 0, 0, 0},
9077 	{0x6F, 0, 0, 0, 0},
9078 	{0x70, 0x60, 0x60, 0, 0},
9079 	{0x71, 0x66, 0x66, 0, 0},
9080 	{0x72, 0xc, 0xc, 0, 0},
9081 	{0x73, 0x66, 0x66, 0, 0},
9082 	{0x74, 0x8f, 0x8f, 1, 1},
9083 	{0x75, 0, 0, 0, 0},
9084 	{0x76, 0xcc, 0xcc, 0, 0},
9085 	{0x77, 0x1, 0x1, 0, 0},
9086 	{0x78, 0x66, 0x66, 0, 0},
9087 	{0x79, 0x66, 0x66, 0, 0},
9088 	{0x7A, 0, 0, 0, 0},
9089 	{0x7B, 0, 0, 0, 0},
9090 	{0x7C, 0, 0, 0, 0},
9091 	{0x7D, 0, 0, 0, 0},
9092 	{0x7E, 0, 0, 0, 0},
9093 	{0x7F, 0, 0, 0, 0},
9094 	{0x80, 0, 0, 0, 0},
9095 	{0x81, 0, 0, 0, 0},
9096 	{0x82, 0, 0, 0, 0},
9097 	{0x83, 0, 0, 0, 0},
9098 	{0x84, 0, 0, 0, 0},
9099 	{0x85, 0xff, 0xff, 0, 0},
9100 	{0x86, 0, 0, 0, 0},
9101 	{0x87, 0, 0, 0, 0},
9102 	{0x88, 0, 0, 0, 0},
9103 	{0x89, 0, 0, 0, 0},
9104 	{0x8A, 0, 0, 0, 0},
9105 	{0x8B, 0, 0, 0, 0},
9106 	{0x8C, 0, 0, 0, 0},
9107 	{0x8D, 0, 0, 0, 0},
9108 	{0x8E, 0, 0, 0, 0},
9109 	{0x8F, 0, 0, 0, 0},
9110 	{0x90, 0, 0, 0, 0},
9111 	{0x91, 0, 0, 0, 0},
9112 	{0x92, 0, 0, 0, 0},
9113 	{0x93, 0, 0, 0, 0},
9114 	{0x94, 0, 0, 0, 0},
9115 	{0x95, 0, 0, 0, 0},
9116 	{0x96, 0, 0, 0, 0},
9117 	{0x97, 0, 0, 0, 0},
9118 	{0x98, 0, 0, 0, 0},
9119 	{0x99, 0, 0, 0, 0},
9120 	{0x9A, 0, 0, 0, 0},
9121 	{0x9B, 0, 0, 0, 0},
9122 	{0x9C, 0, 0, 0, 0},
9123 	{0x9D, 0, 0, 0, 0},
9124 	{0x9E, 0, 0, 0, 0},
9125 	{0x9F, 0x6, 0x6, 0, 0},
9126 	{0xA0, 0x66, 0x66, 0, 0},
9127 	{0xA1, 0x66, 0x66, 0, 0},
9128 	{0xA2, 0x66, 0x66, 0, 0},
9129 	{0xA3, 0x66, 0x66, 0, 0},
9130 	{0xA4, 0x66, 0x66, 0, 0},
9131 	{0xA5, 0x66, 0x66, 0, 0},
9132 	{0xA6, 0x66, 0x66, 0, 0},
9133 	{0xA7, 0x66, 0x66, 0, 0},
9134 	{0xA8, 0x66, 0x66, 0, 0},
9135 	{0xA9, 0x66, 0x66, 0, 0},
9136 	{0xAA, 0x66, 0x66, 0, 0},
9137 	{0xAB, 0x66, 0x66, 0, 0},
9138 	{0xAC, 0x66, 0x66, 0, 0},
9139 	{0xAD, 0x66, 0x66, 0, 0},
9140 	{0xAE, 0x66, 0x66, 0, 0},
9141 	{0xAF, 0x66, 0x66, 0, 0},
9142 	{0xB0, 0x66, 0x66, 0, 0},
9143 	{0xB1, 0x66, 0x66, 0, 0},
9144 	{0xB2, 0x66, 0x66, 0, 0},
9145 	{0xB3, 0xa, 0xa, 0, 0},
9146 	{0xB4, 0, 0, 0, 0},
9147 	{0xB5, 0, 0, 0, 0},
9148 	{0xB6, 0, 0, 0, 0},
9149 	{0xFFFF, 0, 0, 0, 0}
9150 };
9151 
9152 static struct radio_regs regs_TX_2056_rev5[] = {
9153 	{0x02, 0, 0, 0, 0},
9154 	{0x03, 0, 0, 0, 0},
9155 	{0x04, 0, 0, 0, 0},
9156 	{0x05, 0, 0, 0, 0},
9157 	{0x06, 0, 0, 0, 0},
9158 	{0x07, 0, 0, 0, 0},
9159 	{0x08, 0, 0, 0, 0},
9160 	{0x09, 0, 0, 0, 0},
9161 	{0x0A, 0, 0, 0, 0},
9162 	{0x0B, 0, 0, 0, 0},
9163 	{0x0C, 0, 0, 0, 0},
9164 	{0x0D, 0, 0, 0, 0},
9165 	{0x0E, 0, 0, 0, 0},
9166 	{0x0F, 0, 0, 0, 0},
9167 	{0x10, 0, 0, 0, 0},
9168 	{0x11, 0, 0, 0, 0},
9169 	{0x12, 0, 0, 0, 0},
9170 	{0x13, 0, 0, 0, 0},
9171 	{0x14, 0, 0, 0, 0},
9172 	{0x15, 0, 0, 0, 0},
9173 	{0x16, 0, 0, 0, 0},
9174 	{0x17, 0, 0, 0, 0},
9175 	{0x18, 0, 0, 0, 0},
9176 	{0x19, 0, 0, 0, 0},
9177 	{0x1A, 0, 0, 0, 0},
9178 	{0x1B, 0, 0, 0, 0},
9179 	{0x1C, 0, 0, 0, 0},
9180 	{0x1D, 0, 0, 0, 0},
9181 	{0x1E, 0, 0, 0, 0},
9182 	{0x1F, 0, 0, 0, 0},
9183 	{0x20, 0, 0, 0, 0},
9184 	{0x21, 0x88, 0x88, 0, 0},
9185 	{0x22, 0x88, 0x88, 0, 0},
9186 	{0x23, 0x88, 0x88, 0, 0},
9187 	{0x24, 0x88, 0x88, 0, 0},
9188 	{0x25, 0xc, 0xc, 0, 0},
9189 	{0x26, 0, 0, 0, 0},
9190 	{0x27, 0x3, 0x3, 0, 0},
9191 	{0x28, 0, 0, 0, 0},
9192 	{0x29, 0x3, 0x3, 0, 0},
9193 	{0x2A, 0x37, 0x37, 0, 0},
9194 	{0x2B, 0x3, 0x3, 0, 0},
9195 	{0x2C, 0, 0, 0, 0},
9196 	{0x2D, 0, 0, 0, 0},
9197 	{0x2E, 0x1, 0x1, 0, 0},
9198 	{0x2F, 0x1, 0x1, 0, 0},
9199 	{0x30, 0, 0, 0, 0},
9200 	{0x31, 0, 0, 0, 0},
9201 	{0x32, 0, 0, 0, 0},
9202 	{0x33, 0x11, 0x11, 0, 0},
9203 	{0x34, 0x11, 0x11, 0, 0},
9204 	{0x35, 0, 0, 0, 0},
9205 	{0x36, 0, 0, 0, 0},
9206 	{0x37, 0x3, 0x3, 0, 0},
9207 	{0x38, 0xf, 0xf, 0, 0},
9208 	{0x39, 0, 0, 0, 0},
9209 	{0x3A, 0x2d, 0x2d, 0, 0},
9210 	{0x3B, 0, 0, 0, 0},
9211 	{0x3C, 0x6e, 0x6e, 0, 0},
9212 	{0x3D, 0xf0, 0xf0, 1, 1},
9213 	{0x3E, 0, 0, 0, 0},
9214 	{0x3F, 0, 0, 0, 0},
9215 	{0x40, 0, 0, 0, 0},
9216 	{0x41, 0x3, 0x3, 0, 0},
9217 	{0x42, 0x3, 0x3, 0, 0},
9218 	{0x43, 0, 0, 0, 0},
9219 	{0x44, 0x1e, 0x1e, 0, 0},
9220 	{0x45, 0, 0, 0, 0},
9221 	{0x46, 0x6e, 0x6e, 0, 0},
9222 	{0x47, 0xf0, 0xf0, 1, 1},
9223 	{0x48, 0, 0, 0, 0},
9224 	{0x49, 0x2, 0x2, 0, 0},
9225 	{0x4A, 0xff, 0xff, 1, 1},
9226 	{0x4B, 0xc, 0xc, 0, 0},
9227 	{0x4C, 0, 0, 0, 0},
9228 	{0x4D, 0x38, 0x38, 0, 0},
9229 	{0x4E, 0x70, 0x70, 1, 1},
9230 	{0x4F, 0x2, 0x2, 0, 0},
9231 	{0x50, 0x88, 0x88, 0, 0},
9232 	{0x51, 0xc, 0xc, 0, 0},
9233 	{0x52, 0, 0, 0, 0},
9234 	{0x53, 0x8, 0x8, 0, 0},
9235 	{0x54, 0x70, 0x70, 1, 1},
9236 	{0x55, 0x2, 0x2, 0, 0},
9237 	{0x56, 0xff, 0xff, 1, 1},
9238 	{0x57, 0, 0, 0, 0},
9239 	{0x58, 0x83, 0x83, 0, 0},
9240 	{0x59, 0x77, 0x77, 1, 1},
9241 	{0x5A, 0, 0, 0, 0},
9242 	{0x5B, 0x2, 0x2, 0, 0},
9243 	{0x5C, 0x88, 0x88, 0, 0},
9244 	{0x5D, 0, 0, 0, 0},
9245 	{0x5E, 0x8, 0x8, 0, 0},
9246 	{0x5F, 0x77, 0x77, 1, 1},
9247 	{0x60, 0x1, 0x1, 0, 0},
9248 	{0x61, 0, 0, 0, 0},
9249 	{0x62, 0x7, 0x7, 0, 0},
9250 	{0x63, 0, 0, 0, 0},
9251 	{0x64, 0x7, 0x7, 0, 0},
9252 	{0x65, 0, 0, 0, 0},
9253 	{0x66, 0, 0, 0, 0},
9254 	{0x67, 0, 0, 1, 1},
9255 	{0x68, 0, 0, 0, 0},
9256 	{0x69, 0xa, 0xa, 0, 0},
9257 	{0x6A, 0, 0, 0, 0},
9258 	{0x6B, 0, 0, 0, 0},
9259 	{0x6C, 0, 0, 0, 0},
9260 	{0x6D, 0, 0, 0, 0},
9261 	{0x6E, 0, 0, 0, 0},
9262 	{0x6F, 0, 0, 0, 0},
9263 	{0x70, 0, 0, 0, 0},
9264 	{0x71, 0x2, 0x2, 0, 0},
9265 	{0x72, 0, 0, 0, 0},
9266 	{0x73, 0, 0, 0, 0},
9267 	{0x74, 0xe, 0xe, 0, 0},
9268 	{0x75, 0xe, 0xe, 0, 0},
9269 	{0x76, 0xe, 0xe, 0, 0},
9270 	{0x77, 0x13, 0x13, 0, 0},
9271 	{0x78, 0x13, 0x13, 0, 0},
9272 	{0x79, 0x1b, 0x1b, 0, 0},
9273 	{0x7A, 0x1b, 0x1b, 0, 0},
9274 	{0x7B, 0x55, 0x55, 0, 0},
9275 	{0x7C, 0x5b, 0x5b, 0, 0},
9276 	{0x7D, 0, 0, 0, 0},
9277 	{0x7E, 0, 0, 0, 0},
9278 	{0x7F, 0, 0, 0, 0},
9279 	{0x80, 0, 0, 0, 0},
9280 	{0x81, 0, 0, 0, 0},
9281 	{0x82, 0, 0, 0, 0},
9282 	{0x83, 0, 0, 0, 0},
9283 	{0x84, 0, 0, 0, 0},
9284 	{0x85, 0, 0, 0, 0},
9285 	{0x86, 0, 0, 0, 0},
9286 	{0x87, 0, 0, 0, 0},
9287 	{0x88, 0, 0, 0, 0},
9288 	{0x89, 0, 0, 0, 0},
9289 	{0x8A, 0, 0, 0, 0},
9290 	{0x8B, 0, 0, 0, 0},
9291 	{0x8C, 0, 0, 0, 0},
9292 	{0x8D, 0, 0, 0, 0},
9293 	{0x8E, 0, 0, 0, 0},
9294 	{0x8F, 0, 0, 0, 0},
9295 	{0x90, 0, 0, 0, 0},
9296 	{0x91, 0, 0, 0, 0},
9297 	{0x92, 0, 0, 0, 0},
9298 	{0x93, 0x70, 0x70, 0, 0},
9299 	{0x94, 0x70, 0x70, 0, 0},
9300 	{0x95, 0x71, 0x71, 1, 1},
9301 	{0x96, 0x71, 0x71, 1, 1},
9302 	{0x97, 0x72, 0x72, 1, 1},
9303 	{0x98, 0x73, 0x73, 1, 1},
9304 	{0x99, 0x74, 0x74, 1, 1},
9305 	{0x9A, 0x75, 0x75, 1, 1},
9306 	{0xFFFF, 0, 0, 0, 0}
9307 };
9308 
9309 static struct radio_regs regs_RX_2056_rev5[] = {
9310 	{0x02, 0, 0, 0, 0},
9311 	{0x03, 0, 0, 0, 0},
9312 	{0x04, 0, 0, 0, 0},
9313 	{0x05, 0, 0, 0, 0},
9314 	{0x06, 0, 0, 0, 0},
9315 	{0x07, 0, 0, 0, 0},
9316 	{0x08, 0, 0, 0, 0},
9317 	{0x09, 0, 0, 0, 0},
9318 	{0x0A, 0, 0, 0, 0},
9319 	{0x0B, 0, 0, 0, 0},
9320 	{0x0C, 0, 0, 0, 0},
9321 	{0x0D, 0, 0, 0, 0},
9322 	{0x0E, 0, 0, 0, 0},
9323 	{0x0F, 0, 0, 0, 0},
9324 	{0x10, 0, 0, 0, 0},
9325 	{0x11, 0, 0, 0, 0},
9326 	{0x12, 0, 0, 0, 0},
9327 	{0x13, 0, 0, 0, 0},
9328 	{0x14, 0, 0, 0, 0},
9329 	{0x15, 0, 0, 0, 0},
9330 	{0x16, 0, 0, 0, 0},
9331 	{0x17, 0, 0, 0, 0},
9332 	{0x18, 0, 0, 0, 0},
9333 	{0x19, 0, 0, 0, 0},
9334 	{0x1A, 0, 0, 0, 0},
9335 	{0x1B, 0, 0, 0, 0},
9336 	{0x1C, 0, 0, 0, 0},
9337 	{0x1D, 0, 0, 0, 0},
9338 	{0x1E, 0, 0, 0, 0},
9339 	{0x1F, 0, 0, 0, 0},
9340 	{0x20, 0x3, 0x3, 0, 0},
9341 	{0x21, 0, 0, 0, 0},
9342 	{0x22, 0, 0, 0, 0},
9343 	{0x23, 0x90, 0x90, 0, 0},
9344 	{0x24, 0x55, 0x55, 0, 0},
9345 	{0x25, 0x15, 0x15, 0, 0},
9346 	{0x26, 0x5, 0x5, 0, 0},
9347 	{0x27, 0x15, 0x15, 0, 0},
9348 	{0x28, 0x5, 0x5, 0, 0},
9349 	{0x29, 0x20, 0x20, 0, 0},
9350 	{0x2A, 0x11, 0x11, 0, 0},
9351 	{0x2B, 0x90, 0x90, 0, 0},
9352 	{0x2C, 0, 0, 0, 0},
9353 	{0x2D, 0x88, 0x88, 0, 0},
9354 	{0x2E, 0x32, 0x32, 0, 0},
9355 	{0x2F, 0x77, 0x77, 0, 0},
9356 	{0x30, 0x17, 0x17, 1, 1},
9357 	{0x31, 0xff, 0xff, 1, 1},
9358 	{0x32, 0x20, 0x20, 0, 0},
9359 	{0x33, 0, 0, 0, 0},
9360 	{0x34, 0x88, 0x88, 0, 0},
9361 	{0x35, 0x32, 0x32, 0, 0},
9362 	{0x36, 0x77, 0x77, 0, 0},
9363 	{0x37, 0x17, 0x17, 1, 1},
9364 	{0x38, 0xf0, 0xf0, 1, 1},
9365 	{0x39, 0x20, 0x20, 0, 0},
9366 	{0x3A, 0x8, 0x8, 0, 0},
9367 	{0x3B, 0x55, 0x55, 1, 1},
9368 	{0x3C, 0, 0, 0, 0},
9369 	{0x3D, 0x88, 0x88, 1, 1},
9370 	{0x3E, 0, 0, 0, 0},
9371 	{0x3F, 0, 0, 1, 1},
9372 	{0x40, 0x7, 0x7, 1, 1},
9373 	{0x41, 0x6, 0x6, 0, 0},
9374 	{0x42, 0x4, 0x4, 0, 0},
9375 	{0x43, 0, 0, 0, 0},
9376 	{0x44, 0x8, 0x8, 0, 0},
9377 	{0x45, 0x55, 0x55, 1, 1},
9378 	{0x46, 0, 0, 0, 0},
9379 	{0x47, 0x11, 0x11, 0, 0},
9380 	{0x48, 0, 0, 0, 0},
9381 	{0x49, 0, 0, 1, 1},
9382 	{0x4A, 0x7, 0x7, 0, 0},
9383 	{0x4B, 0x6, 0x6, 0, 0},
9384 	{0x4C, 0x4, 0x4, 0, 0},
9385 	{0x4D, 0, 0, 0, 0},
9386 	{0x4E, 0, 0, 0, 0},
9387 	{0x4F, 0x26, 0x26, 1, 1},
9388 	{0x50, 0x26, 0x26, 1, 1},
9389 	{0x51, 0xf, 0xf, 1, 1},
9390 	{0x52, 0xf, 0xf, 1, 1},
9391 	{0x53, 0x44, 0x44, 0, 0},
9392 	{0x54, 0, 0, 0, 0},
9393 	{0x55, 0, 0, 0, 0},
9394 	{0x56, 0x8, 0x8, 0, 0},
9395 	{0x57, 0x8, 0x8, 0, 0},
9396 	{0x58, 0x7, 0x7, 0, 0},
9397 	{0x59, 0x22, 0x22, 0, 0},
9398 	{0x5A, 0x22, 0x22, 0, 0},
9399 	{0x5B, 0x2, 0x2, 0, 0},
9400 	{0x5C, 0x4, 0x4, 1, 1},
9401 	{0x5D, 0x7, 0x7, 0, 0},
9402 	{0x5E, 0x55, 0x55, 0, 0},
9403 	{0x5F, 0x23, 0x23, 0, 0},
9404 	{0x60, 0x41, 0x41, 0, 0},
9405 	{0x61, 0x1, 0x1, 0, 0},
9406 	{0x62, 0xa, 0xa, 0, 0},
9407 	{0x63, 0, 0, 0, 0},
9408 	{0x64, 0, 0, 0, 0},
9409 	{0x65, 0, 0, 0, 0},
9410 	{0x66, 0, 0, 0, 0},
9411 	{0x67, 0, 0, 0, 0},
9412 	{0x68, 0, 0, 0, 0},
9413 	{0x69, 0, 0, 0, 0},
9414 	{0x6A, 0, 0, 0, 0},
9415 	{0x6B, 0xc, 0xc, 0, 0},
9416 	{0x6C, 0, 0, 0, 0},
9417 	{0x6D, 0, 0, 0, 0},
9418 	{0x6E, 0, 0, 0, 0},
9419 	{0x6F, 0, 0, 0, 0},
9420 	{0x70, 0, 0, 0, 0},
9421 	{0x71, 0, 0, 0, 0},
9422 	{0x72, 0x22, 0x22, 0, 0},
9423 	{0x73, 0x22, 0x22, 0, 0},
9424 	{0x74, 0, 0, 1, 1},
9425 	{0x75, 0xa, 0xa, 0, 0},
9426 	{0x76, 0x1, 0x1, 0, 0},
9427 	{0x77, 0x22, 0x22, 0, 0},
9428 	{0x78, 0x30, 0x30, 0, 0},
9429 	{0x79, 0, 0, 0, 0},
9430 	{0x7A, 0, 0, 0, 0},
9431 	{0x7B, 0, 0, 0, 0},
9432 	{0x7C, 0, 0, 0, 0},
9433 	{0x7D, 0, 0, 0, 0},
9434 	{0x7E, 0, 0, 0, 0},
9435 	{0x7F, 0, 0, 0, 0},
9436 	{0x80, 0, 0, 0, 0},
9437 	{0x81, 0, 0, 0, 0},
9438 	{0x82, 0, 0, 0, 0},
9439 	{0x83, 0, 0, 0, 0},
9440 	{0x84, 0, 0, 0, 0},
9441 	{0x85, 0, 0, 0, 0},
9442 	{0x86, 0, 0, 0, 0},
9443 	{0x87, 0, 0, 0, 0},
9444 	{0x88, 0, 0, 0, 0},
9445 	{0x89, 0, 0, 0, 0},
9446 	{0x8A, 0, 0, 0, 0},
9447 	{0x8B, 0, 0, 0, 0},
9448 	{0x8C, 0, 0, 0, 0},
9449 	{0x8D, 0, 0, 0, 0},
9450 	{0x8E, 0, 0, 0, 0},
9451 	{0x8F, 0, 0, 0, 0},
9452 	{0x90, 0, 0, 0, 0},
9453 	{0x91, 0, 0, 0, 0},
9454 	{0x92, 0, 0, 0, 0},
9455 	{0x93, 0, 0, 0, 0},
9456 	{0x94, 0, 0, 0, 0},
9457 	{0xFFFF, 0, 0, 0, 0}
9458 };
9459 
9460 static struct radio_regs regs_SYN_2056_rev6[] = {
9461 	{0x02, 0, 0, 0, 0},
9462 	{0x03, 0, 0, 0, 0},
9463 	{0x04, 0, 0, 0, 0},
9464 	{0x05, 0, 0, 0, 0},
9465 	{0x06, 0, 0, 0, 0},
9466 	{0x07, 0, 0, 0, 0},
9467 	{0x08, 0, 0, 0, 0},
9468 	{0x09, 0x1, 0x1, 0, 0},
9469 	{0x0A, 0, 0, 0, 0},
9470 	{0x0B, 0, 0, 0, 0},
9471 	{0x0C, 0, 0, 0, 0},
9472 	{0x0D, 0, 0, 0, 0},
9473 	{0x0E, 0, 0, 0, 0},
9474 	{0x0F, 0, 0, 0, 0},
9475 	{0x10, 0, 0, 0, 0},
9476 	{0x11, 0, 0, 0, 0},
9477 	{0x12, 0, 0, 0, 0},
9478 	{0x13, 0, 0, 0, 0},
9479 	{0x14, 0, 0, 0, 0},
9480 	{0x15, 0, 0, 0, 0},
9481 	{0x16, 0, 0, 0, 0},
9482 	{0x17, 0, 0, 0, 0},
9483 	{0x18, 0, 0, 0, 0},
9484 	{0x19, 0, 0, 0, 0},
9485 	{0x1A, 0, 0, 0, 0},
9486 	{0x1B, 0, 0, 0, 0},
9487 	{0x1C, 0, 0, 0, 0},
9488 	{0x1D, 0, 0, 0, 0},
9489 	{0x1E, 0, 0, 0, 0},
9490 	{0x1F, 0, 0, 0, 0},
9491 	{0x20, 0, 0, 0, 0},
9492 	{0x21, 0, 0, 0, 0},
9493 	{0x22, 0x60, 0x60, 0, 0},
9494 	{0x23, 0x6, 0x6, 0, 0},
9495 	{0x24, 0xc, 0xc, 0, 0},
9496 	{0x25, 0, 0, 0, 0},
9497 	{0x26, 0, 0, 0, 0},
9498 	{0x27, 0, 0, 0, 0},
9499 	{0x28, 0x1, 0x1, 0, 0},
9500 	{0x29, 0, 0, 0, 0},
9501 	{0x2A, 0, 0, 0, 0},
9502 	{0x2B, 0, 0, 0, 0},
9503 	{0x2C, 0, 0, 0, 0},
9504 	{0x2D, 0, 0, 0, 0},
9505 	{0x2E, 0, 0, 0, 0},
9506 	{0x2F, 0x1f, 0x1f, 0, 0},
9507 	{0x30, 0x15, 0x15, 0, 0},
9508 	{0x31, 0xf, 0xf, 0, 0},
9509 	{0x32, 0, 0, 0, 0},
9510 	{0x33, 0, 0, 0, 0},
9511 	{0x34, 0, 0, 0, 0},
9512 	{0x35, 0, 0, 0, 0},
9513 	{0x36, 0, 0, 0, 0},
9514 	{0x37, 0, 0, 0, 0},
9515 	{0x38, 0, 0, 0, 0},
9516 	{0x39, 0, 0, 0, 0},
9517 	{0x3A, 0, 0, 0, 0},
9518 	{0x3B, 0, 0, 0, 0},
9519 	{0x3C, 0x13, 0x13, 0, 0},
9520 	{0x3D, 0xf, 0xf, 0, 0},
9521 	{0x3E, 0x18, 0x18, 0, 0},
9522 	{0x3F, 0, 0, 0, 0},
9523 	{0x40, 0, 0, 0, 0},
9524 	{0x41, 0x20, 0x20, 0, 0},
9525 	{0x42, 0x20, 0x20, 0, 0},
9526 	{0x43, 0, 0, 0, 0},
9527 	{0x44, 0x77, 0x77, 0, 0},
9528 	{0x45, 0x7, 0x7, 0, 0},
9529 	{0x46, 0x1, 0x1, 0, 0},
9530 	{0x47, 0x4, 0x4, 0, 0},
9531 	{0x48, 0xf, 0xf, 0, 0},
9532 	{0x49, 0x30, 0x30, 0, 0},
9533 	{0x4A, 0x32, 0x32, 0, 0},
9534 	{0x4B, 0xd, 0xd, 0, 0},
9535 	{0x4C, 0xd, 0xd, 0, 0},
9536 	{0x4D, 0x4, 0x4, 0, 0},
9537 	{0x4E, 0x6, 0x6, 0, 0},
9538 	{0x4F, 0x1, 0x1, 0, 0},
9539 	{0x50, 0x1c, 0x1c, 0, 0},
9540 	{0x51, 0x2, 0x2, 0, 0},
9541 	{0x52, 0x2, 0x2, 0, 0},
9542 	{0x53, 0xf7, 0xf7, 1, 1},
9543 	{0x54, 0xb4, 0xb4, 0, 0},
9544 	{0x55, 0xd2, 0xd2, 0, 0},
9545 	{0x56, 0, 0, 0, 0},
9546 	{0x57, 0, 0, 0, 0},
9547 	{0x58, 0x4, 0x4, 0, 0},
9548 	{0x59, 0x96, 0x96, 0, 0},
9549 	{0x5A, 0x3e, 0x3e, 0, 0},
9550 	{0x5B, 0x3e, 0x3e, 0, 0},
9551 	{0x5C, 0x13, 0x13, 0, 0},
9552 	{0x5D, 0x2, 0x2, 0, 0},
9553 	{0x5E, 0, 0, 0, 0},
9554 	{0x5F, 0x7, 0x7, 0, 0},
9555 	{0x60, 0x7, 0x7, 1, 1},
9556 	{0x61, 0x8, 0x8, 0, 0},
9557 	{0x62, 0x3, 0x3, 0, 0},
9558 	{0x63, 0, 0, 0, 0},
9559 	{0x64, 0, 0, 0, 0},
9560 	{0x65, 0, 0, 0, 0},
9561 	{0x66, 0, 0, 0, 0},
9562 	{0x67, 0, 0, 0, 0},
9563 	{0x68, 0x40, 0x40, 0, 0},
9564 	{0x69, 0, 0, 0, 0},
9565 	{0x6A, 0, 0, 0, 0},
9566 	{0x6B, 0, 0, 0, 0},
9567 	{0x6C, 0, 0, 0, 0},
9568 	{0x6D, 0x1, 0x1, 0, 0},
9569 	{0x6E, 0, 0, 0, 0},
9570 	{0x6F, 0, 0, 0, 0},
9571 	{0x70, 0x60, 0x60, 0, 0},
9572 	{0x71, 0x66, 0x66, 0, 0},
9573 	{0x72, 0xc, 0xc, 0, 0},
9574 	{0x73, 0x66, 0x66, 0, 0},
9575 	{0x74, 0x8f, 0x8f, 1, 1},
9576 	{0x75, 0, 0, 0, 0},
9577 	{0x76, 0xcc, 0xcc, 0, 0},
9578 	{0x77, 0x1, 0x1, 0, 0},
9579 	{0x78, 0x66, 0x66, 0, 0},
9580 	{0x79, 0x66, 0x66, 0, 0},
9581 	{0x7A, 0, 0, 0, 0},
9582 	{0x7B, 0, 0, 0, 0},
9583 	{0x7C, 0, 0, 0, 0},
9584 	{0x7D, 0, 0, 0, 0},
9585 	{0x7E, 0, 0, 0, 0},
9586 	{0x7F, 0, 0, 0, 0},
9587 	{0x80, 0, 0, 0, 0},
9588 	{0x81, 0, 0, 0, 0},
9589 	{0x82, 0, 0, 0, 0},
9590 	{0x83, 0, 0, 0, 0},
9591 	{0x84, 0, 0, 0, 0},
9592 	{0x85, 0xff, 0xff, 0, 0},
9593 	{0x86, 0, 0, 0, 0},
9594 	{0x87, 0, 0, 0, 0},
9595 	{0x88, 0, 0, 0, 0},
9596 	{0x89, 0, 0, 0, 0},
9597 	{0x8A, 0, 0, 0, 0},
9598 	{0x8B, 0, 0, 0, 0},
9599 	{0x8C, 0, 0, 0, 0},
9600 	{0x8D, 0, 0, 0, 0},
9601 	{0x8E, 0, 0, 0, 0},
9602 	{0x8F, 0, 0, 0, 0},
9603 	{0x90, 0, 0, 0, 0},
9604 	{0x91, 0, 0, 0, 0},
9605 	{0x92, 0, 0, 0, 0},
9606 	{0x93, 0, 0, 0, 0},
9607 	{0x94, 0, 0, 0, 0},
9608 	{0x95, 0, 0, 0, 0},
9609 	{0x96, 0, 0, 0, 0},
9610 	{0x97, 0, 0, 0, 0},
9611 	{0x98, 0, 0, 0, 0},
9612 	{0x99, 0, 0, 0, 0},
9613 	{0x9A, 0, 0, 0, 0},
9614 	{0x9B, 0, 0, 0, 0},
9615 	{0x9C, 0, 0, 0, 0},
9616 	{0x9D, 0, 0, 0, 0},
9617 	{0x9E, 0, 0, 0, 0},
9618 	{0x9F, 0x6, 0x6, 0, 0},
9619 	{0xA0, 0x66, 0x66, 0, 0},
9620 	{0xA1, 0x66, 0x66, 0, 0},
9621 	{0xA2, 0x66, 0x66, 0, 0},
9622 	{0xA3, 0x66, 0x66, 0, 0},
9623 	{0xA4, 0x66, 0x66, 0, 0},
9624 	{0xA5, 0x66, 0x66, 0, 0},
9625 	{0xA6, 0x66, 0x66, 0, 0},
9626 	{0xA7, 0x66, 0x66, 0, 0},
9627 	{0xA8, 0x66, 0x66, 0, 0},
9628 	{0xA9, 0x66, 0x66, 0, 0},
9629 	{0xAA, 0x66, 0x66, 0, 0},
9630 	{0xAB, 0x66, 0x66, 0, 0},
9631 	{0xAC, 0x66, 0x66, 0, 0},
9632 	{0xAD, 0x66, 0x66, 0, 0},
9633 	{0xAE, 0x66, 0x66, 0, 0},
9634 	{0xAF, 0x66, 0x66, 0, 0},
9635 	{0xB0, 0x66, 0x66, 0, 0},
9636 	{0xB1, 0x66, 0x66, 0, 0},
9637 	{0xB2, 0x66, 0x66, 0, 0},
9638 	{0xB3, 0xa, 0xa, 0, 0},
9639 	{0xB4, 0, 0, 0, 0},
9640 	{0xB5, 0, 0, 0, 0},
9641 	{0xB6, 0, 0, 0, 0},
9642 	{0xFFFF, 0, 0, 0, 0}
9643 };
9644 
9645 static struct radio_regs regs_TX_2056_rev6[] = {
9646 	{0x02, 0, 0, 0, 0},
9647 	{0x03, 0, 0, 0, 0},
9648 	{0x04, 0, 0, 0, 0},
9649 	{0x05, 0, 0, 0, 0},
9650 	{0x06, 0, 0, 0, 0},
9651 	{0x07, 0, 0, 0, 0},
9652 	{0x08, 0, 0, 0, 0},
9653 	{0x09, 0, 0, 0, 0},
9654 	{0x0A, 0, 0, 0, 0},
9655 	{0x0B, 0, 0, 0, 0},
9656 	{0x0C, 0, 0, 0, 0},
9657 	{0x0D, 0, 0, 0, 0},
9658 	{0x0E, 0, 0, 0, 0},
9659 	{0x0F, 0, 0, 0, 0},
9660 	{0x10, 0, 0, 0, 0},
9661 	{0x11, 0, 0, 0, 0},
9662 	{0x12, 0, 0, 0, 0},
9663 	{0x13, 0, 0, 0, 0},
9664 	{0x14, 0, 0, 0, 0},
9665 	{0x15, 0, 0, 0, 0},
9666 	{0x16, 0, 0, 0, 0},
9667 	{0x17, 0, 0, 0, 0},
9668 	{0x18, 0, 0, 0, 0},
9669 	{0x19, 0, 0, 0, 0},
9670 	{0x1A, 0, 0, 0, 0},
9671 	{0x1B, 0, 0, 0, 0},
9672 	{0x1C, 0, 0, 0, 0},
9673 	{0x1D, 0, 0, 0, 0},
9674 	{0x1E, 0, 0, 0, 0},
9675 	{0x1F, 0, 0, 0, 0},
9676 	{0x20, 0, 0, 0, 0},
9677 	{0x21, 0x88, 0x88, 0, 0},
9678 	{0x22, 0x88, 0x88, 0, 0},
9679 	{0x23, 0x88, 0x88, 0, 0},
9680 	{0x24, 0x88, 0x88, 0, 0},
9681 	{0x25, 0xc, 0xc, 0, 0},
9682 	{0x26, 0, 0, 0, 0},
9683 	{0x27, 0x3, 0x3, 0, 0},
9684 	{0x28, 0, 0, 0, 0},
9685 	{0x29, 0x3, 0x3, 0, 0},
9686 	{0x2A, 0x37, 0x37, 0, 0},
9687 	{0x2B, 0x3, 0x3, 0, 0},
9688 	{0x2C, 0, 0, 0, 0},
9689 	{0x2D, 0, 0, 0, 0},
9690 	{0x2E, 0x1, 0x1, 0, 0},
9691 	{0x2F, 0x1, 0x1, 0, 0},
9692 	{0x30, 0, 0, 0, 0},
9693 	{0x31, 0, 0, 0, 0},
9694 	{0x32, 0, 0, 0, 0},
9695 	{0x33, 0x11, 0x11, 0, 0},
9696 	{0x34, 0xee, 0xee, 1, 1},
9697 	{0x35, 0, 0, 0, 0},
9698 	{0x36, 0, 0, 0, 0},
9699 	{0x37, 0x3, 0x3, 0, 0},
9700 	{0x38, 0x50, 0x50, 1, 1},
9701 	{0x39, 0, 0, 0, 0},
9702 	{0x3A, 0x50, 0x50, 1, 1},
9703 	{0x3B, 0, 0, 0, 0},
9704 	{0x3C, 0x6e, 0x6e, 0, 0},
9705 	{0x3D, 0xf0, 0xf0, 1, 1},
9706 	{0x3E, 0, 0, 0, 0},
9707 	{0x3F, 0, 0, 0, 0},
9708 	{0x40, 0, 0, 0, 0},
9709 	{0x41, 0x3, 0x3, 0, 0},
9710 	{0x42, 0x3, 0x3, 0, 0},
9711 	{0x43, 0, 0, 0, 0},
9712 	{0x44, 0x1e, 0x1e, 0, 0},
9713 	{0x45, 0, 0, 0, 0},
9714 	{0x46, 0x6e, 0x6e, 0, 0},
9715 	{0x47, 0xf0, 0xf0, 1, 1},
9716 	{0x48, 0, 0, 0, 0},
9717 	{0x49, 0x2, 0x2, 0, 0},
9718 	{0x4A, 0xff, 0xff, 1, 1},
9719 	{0x4B, 0xc, 0xc, 0, 0},
9720 	{0x4C, 0, 0, 0, 0},
9721 	{0x4D, 0x38, 0x38, 0, 0},
9722 	{0x4E, 0x70, 0x70, 1, 1},
9723 	{0x4F, 0x2, 0x2, 0, 0},
9724 	{0x50, 0x88, 0x88, 0, 0},
9725 	{0x51, 0xc, 0xc, 0, 0},
9726 	{0x52, 0, 0, 0, 0},
9727 	{0x53, 0x8, 0x8, 0, 0},
9728 	{0x54, 0x70, 0x70, 1, 1},
9729 	{0x55, 0x2, 0x2, 0, 0},
9730 	{0x56, 0xff, 0xff, 1, 1},
9731 	{0x57, 0, 0, 0, 0},
9732 	{0x58, 0x83, 0x83, 0, 0},
9733 	{0x59, 0x77, 0x77, 1, 1},
9734 	{0x5A, 0, 0, 0, 0},
9735 	{0x5B, 0x2, 0x2, 0, 0},
9736 	{0x5C, 0x88, 0x88, 0, 0},
9737 	{0x5D, 0, 0, 0, 0},
9738 	{0x5E, 0x8, 0x8, 0, 0},
9739 	{0x5F, 0x77, 0x77, 1, 1},
9740 	{0x60, 0x1, 0x1, 0, 0},
9741 	{0x61, 0, 0, 0, 0},
9742 	{0x62, 0x7, 0x7, 0, 0},
9743 	{0x63, 0, 0, 0, 0},
9744 	{0x64, 0x7, 0x7, 0, 0},
9745 	{0x65, 0, 0, 0, 0},
9746 	{0x66, 0, 0, 0, 0},
9747 	{0x67, 0, 0, 1, 1},
9748 	{0x68, 0, 0, 0, 0},
9749 	{0x69, 0xa, 0xa, 0, 0},
9750 	{0x6A, 0, 0, 0, 0},
9751 	{0x6B, 0, 0, 0, 0},
9752 	{0x6C, 0, 0, 0, 0},
9753 	{0x6D, 0, 0, 0, 0},
9754 	{0x6E, 0, 0, 0, 0},
9755 	{0x6F, 0, 0, 0, 0},
9756 	{0x70, 0, 0, 0, 0},
9757 	{0x71, 0x2, 0x2, 0, 0},
9758 	{0x72, 0, 0, 0, 0},
9759 	{0x73, 0, 0, 0, 0},
9760 	{0x74, 0xe, 0xe, 0, 0},
9761 	{0x75, 0xe, 0xe, 0, 0},
9762 	{0x76, 0xe, 0xe, 0, 0},
9763 	{0x77, 0x13, 0x13, 0, 0},
9764 	{0x78, 0x13, 0x13, 0, 0},
9765 	{0x79, 0x1b, 0x1b, 0, 0},
9766 	{0x7A, 0x1b, 0x1b, 0, 0},
9767 	{0x7B, 0x55, 0x55, 0, 0},
9768 	{0x7C, 0x5b, 0x5b, 0, 0},
9769 	{0x7D, 0x30, 0x30, 1, 1},
9770 	{0x7E, 0, 0, 0, 0},
9771 	{0x7F, 0, 0, 0, 0},
9772 	{0x80, 0, 0, 0, 0},
9773 	{0x81, 0, 0, 0, 0},
9774 	{0x82, 0, 0, 0, 0},
9775 	{0x83, 0, 0, 0, 0},
9776 	{0x84, 0, 0, 0, 0},
9777 	{0x85, 0, 0, 0, 0},
9778 	{0x86, 0, 0, 0, 0},
9779 	{0x87, 0, 0, 0, 0},
9780 	{0x88, 0, 0, 0, 0},
9781 	{0x89, 0, 0, 0, 0},
9782 	{0x8A, 0, 0, 0, 0},
9783 	{0x8B, 0, 0, 0, 0},
9784 	{0x8C, 0, 0, 0, 0},
9785 	{0x8D, 0, 0, 0, 0},
9786 	{0x8E, 0, 0, 0, 0},
9787 	{0x8F, 0, 0, 0, 0},
9788 	{0x90, 0, 0, 0, 0},
9789 	{0x91, 0, 0, 0, 0},
9790 	{0x92, 0, 0, 0, 0},
9791 	{0x93, 0x70, 0x70, 0, 0},
9792 	{0x94, 0x70, 0x70, 0, 0},
9793 	{0x95, 0x70, 0x70, 0, 0},
9794 	{0x96, 0x70, 0x70, 0, 0},
9795 	{0x97, 0x70, 0x70, 0, 0},
9796 	{0x98, 0x70, 0x70, 0, 0},
9797 	{0x99, 0x70, 0x70, 0, 0},
9798 	{0x9A, 0x70, 0x70, 0, 0},
9799 	{0xFFFF, 0, 0, 0, 0}
9800 };
9801 
9802 static struct radio_regs regs_RX_2056_rev6[] = {
9803 	{0x02, 0, 0, 0, 0},
9804 	{0x03, 0, 0, 0, 0},
9805 	{0x04, 0, 0, 0, 0},
9806 	{0x05, 0, 0, 0, 0},
9807 	{0x06, 0, 0, 0, 0},
9808 	{0x07, 0, 0, 0, 0},
9809 	{0x08, 0, 0, 0, 0},
9810 	{0x09, 0, 0, 0, 0},
9811 	{0x0A, 0, 0, 0, 0},
9812 	{0x0B, 0, 0, 0, 0},
9813 	{0x0C, 0, 0, 0, 0},
9814 	{0x0D, 0, 0, 0, 0},
9815 	{0x0E, 0, 0, 0, 0},
9816 	{0x0F, 0, 0, 0, 0},
9817 	{0x10, 0, 0, 0, 0},
9818 	{0x11, 0, 0, 0, 0},
9819 	{0x12, 0, 0, 0, 0},
9820 	{0x13, 0, 0, 0, 0},
9821 	{0x14, 0, 0, 0, 0},
9822 	{0x15, 0, 0, 0, 0},
9823 	{0x16, 0, 0, 0, 0},
9824 	{0x17, 0, 0, 0, 0},
9825 	{0x18, 0, 0, 0, 0},
9826 	{0x19, 0, 0, 0, 0},
9827 	{0x1A, 0, 0, 0, 0},
9828 	{0x1B, 0, 0, 0, 0},
9829 	{0x1C, 0, 0, 0, 0},
9830 	{0x1D, 0, 0, 0, 0},
9831 	{0x1E, 0, 0, 0, 0},
9832 	{0x1F, 0, 0, 0, 0},
9833 	{0x20, 0x3, 0x3, 0, 0},
9834 	{0x21, 0, 0, 0, 0},
9835 	{0x22, 0, 0, 0, 0},
9836 	{0x23, 0x90, 0x90, 0, 0},
9837 	{0x24, 0x55, 0x55, 0, 0},
9838 	{0x25, 0x15, 0x15, 0, 0},
9839 	{0x26, 0x5, 0x5, 0, 0},
9840 	{0x27, 0x15, 0x15, 0, 0},
9841 	{0x28, 0x5, 0x5, 0, 0},
9842 	{0x29, 0x20, 0x20, 0, 0},
9843 	{0x2A, 0x11, 0x11, 0, 0},
9844 	{0x2B, 0x90, 0x90, 0, 0},
9845 	{0x2C, 0, 0, 0, 0},
9846 	{0x2D, 0x88, 0x88, 0, 0},
9847 	{0x2E, 0x32, 0x32, 0, 0},
9848 	{0x2F, 0x77, 0x77, 0, 0},
9849 	{0x30, 0x17, 0x17, 1, 1},
9850 	{0x31, 0xff, 0xff, 1, 1},
9851 	{0x32, 0x20, 0x20, 0, 0},
9852 	{0x33, 0, 0, 0, 0},
9853 	{0x34, 0x88, 0x88, 0, 0},
9854 	{0x35, 0x32, 0x32, 0, 0},
9855 	{0x36, 0x77, 0x77, 0, 0},
9856 	{0x37, 0x17, 0x17, 1, 1},
9857 	{0x38, 0xf0, 0xf0, 1, 1},
9858 	{0x39, 0x20, 0x20, 0, 0},
9859 	{0x3A, 0x8, 0x8, 0, 0},
9860 	{0x3B, 0x55, 0x55, 1, 1},
9861 	{0x3C, 0, 0, 0, 0},
9862 	{0x3D, 0x88, 0x88, 1, 1},
9863 	{0x3E, 0, 0, 0, 0},
9864 	{0x3F, 0x44, 0x44, 0, 0},
9865 	{0x40, 0x7, 0x7, 1, 1},
9866 	{0x41, 0x6, 0x6, 0, 0},
9867 	{0x42, 0x4, 0x4, 0, 0},
9868 	{0x43, 0, 0, 0, 0},
9869 	{0x44, 0x8, 0x8, 0, 0},
9870 	{0x45, 0x55, 0x55, 1, 1},
9871 	{0x46, 0, 0, 0, 0},
9872 	{0x47, 0x11, 0x11, 0, 0},
9873 	{0x48, 0, 0, 0, 0},
9874 	{0x49, 0x44, 0x44, 0, 0},
9875 	{0x4A, 0x7, 0x7, 0, 0},
9876 	{0x4B, 0x6, 0x6, 0, 0},
9877 	{0x4C, 0x4, 0x4, 0, 0},
9878 	{0x4D, 0, 0, 0, 0},
9879 	{0x4E, 0, 0, 0, 0},
9880 	{0x4F, 0x26, 0x26, 1, 1},
9881 	{0x50, 0x26, 0x26, 1, 1},
9882 	{0x51, 0xf, 0xf, 1, 1},
9883 	{0x52, 0xf, 0xf, 1, 1},
9884 	{0x53, 0x44, 0x44, 0, 0},
9885 	{0x54, 0, 0, 0, 0},
9886 	{0x55, 0, 0, 0, 0},
9887 	{0x56, 0x8, 0x8, 0, 0},
9888 	{0x57, 0x8, 0x8, 0, 0},
9889 	{0x58, 0x7, 0x7, 0, 0},
9890 	{0x59, 0x22, 0x22, 0, 0},
9891 	{0x5A, 0x22, 0x22, 0, 0},
9892 	{0x5B, 0x2, 0x2, 0, 0},
9893 	{0x5C, 0x4, 0x4, 1, 1},
9894 	{0x5D, 0x7, 0x7, 0, 0},
9895 	{0x5E, 0x55, 0x55, 0, 0},
9896 	{0x5F, 0x23, 0x23, 0, 0},
9897 	{0x60, 0x41, 0x41, 0, 0},
9898 	{0x61, 0x1, 0x1, 0, 0},
9899 	{0x62, 0xa, 0xa, 0, 0},
9900 	{0x63, 0, 0, 0, 0},
9901 	{0x64, 0, 0, 0, 0},
9902 	{0x65, 0, 0, 0, 0},
9903 	{0x66, 0, 0, 0, 0},
9904 	{0x67, 0, 0, 0, 0},
9905 	{0x68, 0, 0, 0, 0},
9906 	{0x69, 0, 0, 0, 0},
9907 	{0x6A, 0, 0, 0, 0},
9908 	{0x6B, 0xc, 0xc, 0, 0},
9909 	{0x6C, 0, 0, 0, 0},
9910 	{0x6D, 0, 0, 0, 0},
9911 	{0x6E, 0, 0, 0, 0},
9912 	{0x6F, 0, 0, 0, 0},
9913 	{0x70, 0, 0, 0, 0},
9914 	{0x71, 0, 0, 0, 0},
9915 	{0x72, 0x22, 0x22, 0, 0},
9916 	{0x73, 0x22, 0x22, 0, 0},
9917 	{0x74, 0, 0, 1, 1},
9918 	{0x75, 0xa, 0xa, 0, 0},
9919 	{0x76, 0x1, 0x1, 0, 0},
9920 	{0x77, 0x22, 0x22, 0, 0},
9921 	{0x78, 0x30, 0x30, 0, 0},
9922 	{0x79, 0, 0, 0, 0},
9923 	{0x7A, 0, 0, 0, 0},
9924 	{0x7B, 0, 0, 0, 0},
9925 	{0x7C, 0, 0, 0, 0},
9926 	{0x7D, 0x5, 0x5, 1, 1},
9927 	{0x7E, 0, 0, 0, 0},
9928 	{0x7F, 0, 0, 0, 0},
9929 	{0x80, 0, 0, 0, 0},
9930 	{0x81, 0, 0, 0, 0},
9931 	{0x82, 0, 0, 0, 0},
9932 	{0x83, 0, 0, 0, 0},
9933 	{0x84, 0, 0, 0, 0},
9934 	{0x85, 0, 0, 0, 0},
9935 	{0x86, 0, 0, 0, 0},
9936 	{0x87, 0, 0, 0, 0},
9937 	{0x88, 0, 0, 0, 0},
9938 	{0x89, 0, 0, 0, 0},
9939 	{0x8A, 0, 0, 0, 0},
9940 	{0x8B, 0, 0, 0, 0},
9941 	{0x8C, 0, 0, 0, 0},
9942 	{0x8D, 0, 0, 0, 0},
9943 	{0x8E, 0, 0, 0, 0},
9944 	{0x8F, 0, 0, 0, 0},
9945 	{0x90, 0, 0, 0, 0},
9946 	{0x91, 0, 0, 0, 0},
9947 	{0x92, 0, 0, 0, 0},
9948 	{0x93, 0, 0, 0, 0},
9949 	{0x94, 0, 0, 0, 0},
9950 	{0xFFFF, 0, 0, 0, 0}
9951 };
9952 
9953 static struct radio_regs regs_SYN_2056_rev7[] = {
9954 	{0x02, 0, 0, 0, 0},
9955 	{0x03, 0, 0, 0, 0},
9956 	{0x04, 0, 0, 0, 0},
9957 	{0x05, 0, 0, 0, 0},
9958 	{0x06, 0, 0, 0, 0},
9959 	{0x07, 0, 0, 0, 0},
9960 	{0x08, 0, 0, 0, 0},
9961 	{0x09, 0x1, 0x1, 0, 0},
9962 	{0x0A, 0, 0, 0, 0},
9963 	{0x0B, 0, 0, 0, 0},
9964 	{0x0C, 0, 0, 0, 0},
9965 	{0x0D, 0, 0, 0, 0},
9966 	{0x0E, 0, 0, 0, 0},
9967 	{0x0F, 0, 0, 0, 0},
9968 	{0x10, 0, 0, 0, 0},
9969 	{0x11, 0, 0, 0, 0},
9970 	{0x12, 0, 0, 0, 0},
9971 	{0x13, 0, 0, 0, 0},
9972 	{0x14, 0, 0, 0, 0},
9973 	{0x15, 0, 0, 0, 0},
9974 	{0x16, 0, 0, 0, 0},
9975 	{0x17, 0, 0, 0, 0},
9976 	{0x18, 0, 0, 0, 0},
9977 	{0x19, 0, 0, 0, 0},
9978 	{0x1A, 0, 0, 0, 0},
9979 	{0x1B, 0, 0, 0, 0},
9980 	{0x1C, 0, 0, 0, 0},
9981 	{0x1D, 0, 0, 0, 0},
9982 	{0x1E, 0, 0, 0, 0},
9983 	{0x1F, 0, 0, 0, 0},
9984 	{0x20, 0, 0, 0, 0},
9985 	{0x21, 0, 0, 0, 0},
9986 	{0x22, 0x60, 0x60, 0, 0},
9987 	{0x23, 0x6, 0x6, 0, 0},
9988 	{0x24, 0xc, 0xc, 0, 0},
9989 	{0x25, 0, 0, 0, 0},
9990 	{0x26, 0, 0, 0, 0},
9991 	{0x27, 0, 0, 0, 0},
9992 	{0x28, 0x1, 0x1, 0, 0},
9993 	{0x29, 0, 0, 0, 0},
9994 	{0x2A, 0, 0, 0, 0},
9995 	{0x2B, 0, 0, 0, 0},
9996 	{0x2C, 0, 0, 0, 0},
9997 	{0x2D, 0, 0, 0, 0},
9998 	{0x2E, 0, 0, 0, 0},
9999 	{0x2F, 0x1f, 0x1f, 0, 0},
10000 	{0x30, 0x15, 0x15, 0, 0},
10001 	{0x31, 0xf, 0xf, 0, 0},
10002 	{0x32, 0, 0, 0, 0},
10003 	{0x33, 0, 0, 0, 0},
10004 	{0x34, 0, 0, 0, 0},
10005 	{0x35, 0, 0, 0, 0},
10006 	{0x36, 0, 0, 0, 0},
10007 	{0x37, 0, 0, 0, 0},
10008 	{0x38, 0, 0, 0, 0},
10009 	{0x39, 0, 0, 0, 0},
10010 	{0x3A, 0, 0, 0, 0},
10011 	{0x3B, 0, 0, 0, 0},
10012 	{0x3C, 0x13, 0x13, 0, 0},
10013 	{0x3D, 0xf, 0xf, 0, 0},
10014 	{0x3E, 0x18, 0x18, 0, 0},
10015 	{0x3F, 0, 0, 0, 0},
10016 	{0x40, 0, 0, 0, 0},
10017 	{0x41, 0x20, 0x20, 0, 0},
10018 	{0x42, 0x20, 0x20, 0, 0},
10019 	{0x43, 0, 0, 0, 0},
10020 	{0x44, 0x77, 0x77, 0, 0},
10021 	{0x45, 0x7, 0x7, 0, 0},
10022 	{0x46, 0x1, 0x1, 0, 0},
10023 	{0x47, 0x4, 0x4, 0, 0},
10024 	{0x48, 0xf, 0xf, 0, 0},
10025 	{0x49, 0x30, 0x30, 0, 0},
10026 	{0x4A, 0x32, 0x32, 0, 0},
10027 	{0x4B, 0xd, 0xd, 0, 0},
10028 	{0x4C, 0xd, 0xd, 0, 0},
10029 	{0x4D, 0x4, 0x4, 0, 0},
10030 	{0x4E, 0x6, 0x6, 0, 0},
10031 	{0x4F, 0x1, 0x1, 0, 0},
10032 	{0x50, 0x1c, 0x1c, 0, 0},
10033 	{0x51, 0x2, 0x2, 0, 0},
10034 	{0x52, 0x2, 0x2, 0, 0},
10035 	{0x53, 0xf7, 0xf7, 1, 1},
10036 	{0x54, 0xb4, 0xb4, 0, 0},
10037 	{0x55, 0xd2, 0xd2, 0, 0},
10038 	{0x56, 0, 0, 0, 0},
10039 	{0x57, 0, 0, 0, 0},
10040 	{0x58, 0x4, 0x4, 0, 0},
10041 	{0x59, 0x96, 0x96, 0, 0},
10042 	{0x5A, 0x3e, 0x3e, 0, 0},
10043 	{0x5B, 0x3e, 0x3e, 0, 0},
10044 	{0x5C, 0x13, 0x13, 0, 0},
10045 	{0x5D, 0x2, 0x2, 0, 0},
10046 	{0x5E, 0, 0, 0, 0},
10047 	{0x5F, 0x7, 0x7, 0, 0},
10048 	{0x60, 0x7, 0x7, 1, 1},
10049 	{0x61, 0x8, 0x8, 0, 0},
10050 	{0x62, 0x3, 0x3, 0, 0},
10051 	{0x63, 0, 0, 0, 0},
10052 	{0x64, 0, 0, 0, 0},
10053 	{0x65, 0, 0, 0, 0},
10054 	{0x66, 0, 0, 0, 0},
10055 	{0x67, 0, 0, 0, 0},
10056 	{0x68, 0x40, 0x40, 0, 0},
10057 	{0x69, 0, 0, 0, 0},
10058 	{0x6A, 0, 0, 0, 0},
10059 	{0x6B, 0, 0, 0, 0},
10060 	{0x6C, 0, 0, 0, 0},
10061 	{0x6D, 0x1, 0x1, 0, 0},
10062 	{0x6E, 0, 0, 0, 0},
10063 	{0x6F, 0, 0, 0, 0},
10064 	{0x70, 0x60, 0x60, 0, 0},
10065 	{0x71, 0x66, 0x66, 0, 0},
10066 	{0x72, 0xc, 0xc, 0, 0},
10067 	{0x73, 0x66, 0x66, 0, 0},
10068 	{0x74, 0x8f, 0x8f, 1, 1},
10069 	{0x75, 0, 0, 0, 0},
10070 	{0x76, 0xcc, 0xcc, 0, 0},
10071 	{0x77, 0x1, 0x1, 0, 0},
10072 	{0x78, 0x66, 0x66, 0, 0},
10073 	{0x79, 0x66, 0x66, 0, 0},
10074 	{0x7A, 0, 0, 0, 0},
10075 	{0x7B, 0, 0, 0, 0},
10076 	{0x7C, 0, 0, 0, 0},
10077 	{0x7D, 0, 0, 0, 0},
10078 	{0x7E, 0, 0, 0, 0},
10079 	{0x7F, 0, 0, 0, 0},
10080 	{0x80, 0, 0, 0, 0},
10081 	{0x81, 0, 0, 0, 0},
10082 	{0x82, 0, 0, 0, 0},
10083 	{0x83, 0, 0, 0, 0},
10084 	{0x84, 0, 0, 0, 0},
10085 	{0x85, 0xff, 0xff, 0, 0},
10086 	{0x86, 0, 0, 0, 0},
10087 	{0x87, 0, 0, 0, 0},
10088 	{0x88, 0, 0, 0, 0},
10089 	{0x89, 0, 0, 0, 0},
10090 	{0x8A, 0, 0, 0, 0},
10091 	{0x8B, 0, 0, 0, 0},
10092 	{0x8C, 0, 0, 0, 0},
10093 	{0x8D, 0, 0, 0, 0},
10094 	{0x8E, 0, 0, 0, 0},
10095 	{0x8F, 0, 0, 0, 0},
10096 	{0x90, 0, 0, 0, 0},
10097 	{0x91, 0, 0, 0, 0},
10098 	{0x92, 0, 0, 0, 0},
10099 	{0x93, 0, 0, 0, 0},
10100 	{0x94, 0, 0, 0, 0},
10101 	{0x95, 0, 0, 0, 0},
10102 	{0x96, 0, 0, 0, 0},
10103 	{0x97, 0, 0, 0, 0},
10104 	{0x98, 0, 0, 0, 0},
10105 	{0x99, 0, 0, 0, 0},
10106 	{0x9A, 0, 0, 0, 0},
10107 	{0x9B, 0, 0, 0, 0},
10108 	{0x9C, 0, 0, 0, 0},
10109 	{0x9D, 0, 0, 0, 0},
10110 	{0x9E, 0, 0, 0, 0},
10111 	{0x9F, 0x6, 0x6, 0, 0},
10112 	{0xA0, 0x66, 0x66, 0, 0},
10113 	{0xA1, 0x66, 0x66, 0, 0},
10114 	{0xA2, 0x66, 0x66, 0, 0},
10115 	{0xA3, 0x66, 0x66, 0, 0},
10116 	{0xA4, 0x66, 0x66, 0, 0},
10117 	{0xA5, 0x66, 0x66, 0, 0},
10118 	{0xA6, 0x66, 0x66, 0, 0},
10119 	{0xA7, 0x66, 0x66, 0, 0},
10120 	{0xA8, 0x66, 0x66, 0, 0},
10121 	{0xA9, 0x66, 0x66, 0, 0},
10122 	{0xAA, 0x66, 0x66, 0, 0},
10123 	{0xAB, 0x66, 0x66, 0, 0},
10124 	{0xAC, 0x66, 0x66, 0, 0},
10125 	{0xAD, 0x66, 0x66, 0, 0},
10126 	{0xAE, 0x66, 0x66, 0, 0},
10127 	{0xAF, 0x66, 0x66, 0, 0},
10128 	{0xB0, 0x66, 0x66, 0, 0},
10129 	{0xB1, 0x66, 0x66, 0, 0},
10130 	{0xB2, 0x66, 0x66, 0, 0},
10131 	{0xB3, 0xa, 0xa, 0, 0},
10132 	{0xB4, 0, 0, 0, 0},
10133 	{0xB5, 0, 0, 0, 0},
10134 	{0xB6, 0, 0, 0, 0},
10135 	{0xFFFF, 0, 0, 0, 0},
10136 };
10137 
10138 static struct radio_regs regs_TX_2056_rev7[] = {
10139 	{0x02, 0, 0, 0, 0},
10140 	{0x03, 0, 0, 0, 0},
10141 	{0x04, 0, 0, 0, 0},
10142 	{0x05, 0, 0, 0, 0},
10143 	{0x06, 0, 0, 0, 0},
10144 	{0x07, 0, 0, 0, 0},
10145 	{0x08, 0, 0, 0, 0},
10146 	{0x09, 0, 0, 0, 0},
10147 	{0x0A, 0, 0, 0, 0},
10148 	{0x0B, 0, 0, 0, 0},
10149 	{0x0C, 0, 0, 0, 0},
10150 	{0x0D, 0, 0, 0, 0},
10151 	{0x0E, 0, 0, 0, 0},
10152 	{0x0F, 0, 0, 0, 0},
10153 	{0x10, 0, 0, 0, 0},
10154 	{0x11, 0, 0, 0, 0},
10155 	{0x12, 0, 0, 0, 0},
10156 	{0x13, 0, 0, 0, 0},
10157 	{0x14, 0, 0, 0, 0},
10158 	{0x15, 0, 0, 0, 0},
10159 	{0x16, 0, 0, 0, 0},
10160 	{0x17, 0, 0, 0, 0},
10161 	{0x18, 0, 0, 0, 0},
10162 	{0x19, 0, 0, 0, 0},
10163 	{0x1A, 0, 0, 0, 0},
10164 	{0x1B, 0, 0, 0, 0},
10165 	{0x1C, 0, 0, 0, 0},
10166 	{0x1D, 0, 0, 0, 0},
10167 	{0x1E, 0, 0, 0, 0},
10168 	{0x1F, 0, 0, 0, 0},
10169 	{0x20, 0, 0, 0, 0},
10170 	{0x21, 0x88, 0x88, 0, 0},
10171 	{0x22, 0x88, 0x88, 0, 0},
10172 	{0x23, 0x88, 0x88, 0, 0},
10173 	{0x24, 0x88, 0x88, 0, 0},
10174 	{0x25, 0xc, 0xc, 0, 0},
10175 	{0x26, 0, 0, 0, 0},
10176 	{0x27, 0x3, 0x3, 0, 0},
10177 	{0x28, 0, 0, 0, 0},
10178 	{0x29, 0x3, 0x3, 0, 0},
10179 	{0x2A, 0x37, 0x37, 0, 0},
10180 	{0x2B, 0x3, 0x3, 0, 0},
10181 	{0x2C, 0, 0, 0, 0},
10182 	{0x2D, 0, 0, 0, 0},
10183 	{0x2E, 0x1, 0x1, 0, 0},
10184 	{0x2F, 0x1, 0x1, 0, 0},
10185 	{0x30, 0, 0, 0, 0},
10186 	{0x31, 0, 0, 0, 0},
10187 	{0x32, 0, 0, 0, 0},
10188 	{0x33, 0x11, 0x11, 0, 0},
10189 	{0x34, 0xee, 0xee, 1, 1},
10190 	{0x35, 0, 0, 0, 0},
10191 	{0x36, 0, 0, 0, 0},
10192 	{0x37, 0x3, 0x3, 0, 0},
10193 	{0x38, 0x50, 0x50, 1, 1},
10194 	{0x39, 0, 0, 0, 0},
10195 	{0x3A, 0x50, 0x50, 1, 1},
10196 	{0x3B, 0, 0, 0, 0},
10197 	{0x3C, 0x6e, 0x6e, 0, 0},
10198 	{0x3D, 0xf0, 0xf0, 1, 1},
10199 	{0x3E, 0, 0, 0, 0},
10200 	{0x3F, 0, 0, 0, 0},
10201 	{0x40, 0, 0, 0, 0},
10202 	{0x41, 0x3, 0x3, 0, 0},
10203 	{0x42, 0x3, 0x3, 0, 0},
10204 	{0x43, 0, 0, 0, 0},
10205 	{0x44, 0x1e, 0x1e, 0, 0},
10206 	{0x45, 0, 0, 0, 0},
10207 	{0x46, 0x6e, 0x6e, 0, 0},
10208 	{0x47, 0xf0, 0xf0, 1, 1},
10209 	{0x48, 0, 0, 0, 0},
10210 	{0x49, 0x2, 0x2, 0, 0},
10211 	{0x4A, 0xff, 0xff, 1, 1},
10212 	{0x4B, 0xc, 0xc, 0, 0},
10213 	{0x4C, 0, 0, 0, 0},
10214 	{0x4D, 0x38, 0x38, 0, 0},
10215 	{0x4E, 0x70, 0x70, 1, 1},
10216 	{0x4F, 0x2, 0x2, 0, 0},
10217 	{0x50, 0x88, 0x88, 0, 0},
10218 	{0x51, 0xc, 0xc, 0, 0},
10219 	{0x52, 0, 0, 0, 0},
10220 	{0x53, 0x8, 0x8, 0, 0},
10221 	{0x54, 0x70, 0x70, 1, 1},
10222 	{0x55, 0x2, 0x2, 0, 0},
10223 	{0x56, 0xff, 0xff, 1, 1},
10224 	{0x57, 0, 0, 0, 0},
10225 	{0x58, 0x83, 0x83, 0, 0},
10226 	{0x59, 0x77, 0x77, 1, 1},
10227 	{0x5A, 0, 0, 0, 0},
10228 	{0x5B, 0x2, 0x2, 0, 0},
10229 	{0x5C, 0x88, 0x88, 0, 0},
10230 	{0x5D, 0, 0, 0, 0},
10231 	{0x5E, 0x8, 0x8, 0, 0},
10232 	{0x5F, 0x77, 0x77, 1, 1},
10233 	{0x60, 0x1, 0x1, 0, 0},
10234 	{0x61, 0, 0, 0, 0},
10235 	{0x62, 0x7, 0x7, 0, 0},
10236 	{0x63, 0, 0, 0, 0},
10237 	{0x64, 0x7, 0x7, 0, 0},
10238 	{0x65, 0, 0, 0, 0},
10239 	{0x66, 0, 0, 0, 0},
10240 	{0x67, 0, 0, 1, 1},
10241 	{0x68, 0, 0, 0, 0},
10242 	{0x69, 0xa, 0xa, 0, 0},
10243 	{0x6A, 0, 0, 0, 0},
10244 	{0x6B, 0, 0, 0, 0},
10245 	{0x6C, 0, 0, 0, 0},
10246 	{0x6D, 0, 0, 0, 0},
10247 	{0x6E, 0, 0, 0, 0},
10248 	{0x6F, 0, 0, 0, 0},
10249 	{0x70, 0, 0, 0, 0},
10250 	{0x71, 0x2, 0x2, 0, 0},
10251 	{0x72, 0, 0, 0, 0},
10252 	{0x73, 0, 0, 0, 0},
10253 	{0x74, 0xe, 0xe, 0, 0},
10254 	{0x75, 0xe, 0xe, 0, 0},
10255 	{0x76, 0xe, 0xe, 0, 0},
10256 	{0x77, 0x13, 0x13, 0, 0},
10257 	{0x78, 0x13, 0x13, 0, 0},
10258 	{0x79, 0x1b, 0x1b, 0, 0},
10259 	{0x7A, 0x1b, 0x1b, 0, 0},
10260 	{0x7B, 0x55, 0x55, 0, 0},
10261 	{0x7C, 0x5b, 0x5b, 0, 0},
10262 	{0x7D, 0x30, 0x30, 1, 1},
10263 	{0x7E, 0, 0, 0, 0},
10264 	{0x7F, 0, 0, 0, 0},
10265 	{0x80, 0, 0, 0, 0},
10266 	{0x81, 0, 0, 0, 0},
10267 	{0x82, 0, 0, 0, 0},
10268 	{0x83, 0, 0, 0, 0},
10269 	{0x84, 0, 0, 0, 0},
10270 	{0x85, 0, 0, 0, 0},
10271 	{0x86, 0, 0, 0, 0},
10272 	{0x87, 0, 0, 0, 0},
10273 	{0x88, 0, 0, 0, 0},
10274 	{0x89, 0, 0, 0, 0},
10275 	{0x8A, 0, 0, 0, 0},
10276 	{0x8B, 0, 0, 0, 0},
10277 	{0x8C, 0, 0, 0, 0},
10278 	{0x8D, 0, 0, 0, 0},
10279 	{0x8E, 0, 0, 0, 0},
10280 	{0x8F, 0, 0, 0, 0},
10281 	{0x90, 0, 0, 0, 0},
10282 	{0x91, 0, 0, 0, 0},
10283 	{0x92, 0, 0, 0, 0},
10284 	{0x93, 0x70, 0x70, 0, 0},
10285 	{0x94, 0x70, 0x70, 0, 0},
10286 	{0x95, 0x71, 0x71, 1, 1},
10287 	{0x96, 0x71, 0x71, 1, 1},
10288 	{0x97, 0x72, 0x72, 1, 1},
10289 	{0x98, 0x73, 0x73, 1, 1},
10290 	{0x99, 0x74, 0x74, 1, 1},
10291 	{0x9A, 0x75, 0x75, 1, 1},
10292 	{0xFFFF, 0, 0, 0, 0},
10293 };
10294 
10295 static struct radio_regs regs_RX_2056_rev7[] = {
10296 	{0x02, 0, 0, 0, 0},
10297 	{0x03, 0, 0, 0, 0},
10298 	{0x04, 0, 0, 0, 0},
10299 	{0x05, 0, 0, 0, 0},
10300 	{0x06, 0, 0, 0, 0},
10301 	{0x07, 0, 0, 0, 0},
10302 	{0x08, 0, 0, 0, 0},
10303 	{0x09, 0, 0, 0, 0},
10304 	{0x0A, 0, 0, 0, 0},
10305 	{0x0B, 0, 0, 0, 0},
10306 	{0x0C, 0, 0, 0, 0},
10307 	{0x0D, 0, 0, 0, 0},
10308 	{0x0E, 0, 0, 0, 0},
10309 	{0x0F, 0, 0, 0, 0},
10310 	{0x10, 0, 0, 0, 0},
10311 	{0x11, 0, 0, 0, 0},
10312 	{0x12, 0, 0, 0, 0},
10313 	{0x13, 0, 0, 0, 0},
10314 	{0x14, 0, 0, 0, 0},
10315 	{0x15, 0, 0, 0, 0},
10316 	{0x16, 0, 0, 0, 0},
10317 	{0x17, 0, 0, 0, 0},
10318 	{0x18, 0, 0, 0, 0},
10319 	{0x19, 0, 0, 0, 0},
10320 	{0x1A, 0, 0, 0, 0},
10321 	{0x1B, 0, 0, 0, 0},
10322 	{0x1C, 0, 0, 0, 0},
10323 	{0x1D, 0, 0, 0, 0},
10324 	{0x1E, 0, 0, 0, 0},
10325 	{0x1F, 0, 0, 0, 0},
10326 	{0x20, 0x3, 0x3, 0, 0},
10327 	{0x21, 0, 0, 0, 0},
10328 	{0x22, 0, 0, 0, 0},
10329 	{0x23, 0x90, 0x90, 0, 0},
10330 	{0x24, 0x55, 0x55, 0, 0},
10331 	{0x25, 0x15, 0x15, 0, 0},
10332 	{0x26, 0x5, 0x5, 0, 0},
10333 	{0x27, 0x15, 0x15, 0, 0},
10334 	{0x28, 0x5, 0x5, 0, 0},
10335 	{0x29, 0x20, 0x20, 0, 0},
10336 	{0x2A, 0x11, 0x11, 0, 0},
10337 	{0x2B, 0x90, 0x90, 0, 0},
10338 	{0x2C, 0, 0, 0, 0},
10339 	{0x2D, 0x88, 0x88, 0, 0},
10340 	{0x2E, 0x32, 0x32, 0, 0},
10341 	{0x2F, 0x77, 0x77, 0, 0},
10342 	{0x30, 0x17, 0x17, 1, 1},
10343 	{0x31, 0xff, 0xff, 1, 1},
10344 	{0x32, 0x20, 0x20, 0, 0},
10345 	{0x33, 0, 0, 0, 0},
10346 	{0x34, 0x88, 0x88, 0, 0},
10347 	{0x35, 0x32, 0x32, 0, 0},
10348 	{0x36, 0x77, 0x77, 0, 0},
10349 	{0x37, 0x17, 0x17, 1, 1},
10350 	{0x38, 0xf0, 0xf0, 1, 1},
10351 	{0x39, 0x20, 0x20, 0, 0},
10352 	{0x3A, 0x8, 0x8, 0, 0},
10353 	{0x3B, 0x55, 0x55, 1, 1},
10354 	{0x3C, 0, 0, 0, 0},
10355 	{0x3D, 0x88, 0x88, 1, 1},
10356 	{0x3E, 0, 0, 0, 0},
10357 	{0x3F, 0, 0, 1, 1},
10358 	{0x40, 0x7, 0x7, 1, 1},
10359 	{0x41, 0x6, 0x6, 0, 0},
10360 	{0x42, 0x4, 0x4, 0, 0},
10361 	{0x43, 0, 0, 0, 0},
10362 	{0x44, 0x8, 0x8, 0, 0},
10363 	{0x45, 0x55, 0x55, 1, 1},
10364 	{0x46, 0, 0, 0, 0},
10365 	{0x47, 0x11, 0x11, 0, 0},
10366 	{0x48, 0, 0, 0, 0},
10367 	{0x49, 0, 0, 1, 1},
10368 	{0x4A, 0x7, 0x7, 0, 0},
10369 	{0x4B, 0x6, 0x6, 0, 0},
10370 	{0x4C, 0x4, 0x4, 0, 0},
10371 	{0x4D, 0, 0, 0, 0},
10372 	{0x4E, 0, 0, 0, 0},
10373 	{0x4F, 0x26, 0x26, 1, 1},
10374 	{0x50, 0x26, 0x26, 1, 1},
10375 	{0x51, 0xf, 0xf, 1, 1},
10376 	{0x52, 0xf, 0xf, 1, 1},
10377 	{0x53, 0x44, 0x44, 0, 0},
10378 	{0x54, 0, 0, 0, 0},
10379 	{0x55, 0, 0, 0, 0},
10380 	{0x56, 0x8, 0x8, 0, 0},
10381 	{0x57, 0x8, 0x8, 0, 0},
10382 	{0x58, 0x7, 0x7, 0, 0},
10383 	{0x59, 0x22, 0x22, 0, 0},
10384 	{0x5A, 0x22, 0x22, 0, 0},
10385 	{0x5B, 0x2, 0x2, 0, 0},
10386 	{0x5C, 0x4, 0x4, 1, 1},
10387 	{0x5D, 0x7, 0x7, 0, 0},
10388 	{0x5E, 0x55, 0x55, 0, 0},
10389 	{0x5F, 0x23, 0x23, 0, 0},
10390 	{0x60, 0x41, 0x41, 0, 0},
10391 	{0x61, 0x1, 0x1, 0, 0},
10392 	{0x62, 0xa, 0xa, 0, 0},
10393 	{0x63, 0, 0, 0, 0},
10394 	{0x64, 0, 0, 0, 0},
10395 	{0x65, 0, 0, 0, 0},
10396 	{0x66, 0, 0, 0, 0},
10397 	{0x67, 0, 0, 0, 0},
10398 	{0x68, 0, 0, 0, 0},
10399 	{0x69, 0, 0, 0, 0},
10400 	{0x6A, 0, 0, 0, 0},
10401 	{0x6B, 0xc, 0xc, 0, 0},
10402 	{0x6C, 0, 0, 0, 0},
10403 	{0x6D, 0, 0, 0, 0},
10404 	{0x6E, 0, 0, 0, 0},
10405 	{0x6F, 0, 0, 0, 0},
10406 	{0x70, 0, 0, 0, 0},
10407 	{0x71, 0, 0, 0, 0},
10408 	{0x72, 0x22, 0x22, 0, 0},
10409 	{0x73, 0x22, 0x22, 0, 0},
10410 	{0x74, 0, 0, 1, 1},
10411 	{0x75, 0xa, 0xa, 0, 0},
10412 	{0x76, 0x1, 0x1, 0, 0},
10413 	{0x77, 0x22, 0x22, 0, 0},
10414 	{0x78, 0x30, 0x30, 0, 0},
10415 	{0x79, 0, 0, 0, 0},
10416 	{0x7A, 0, 0, 0, 0},
10417 	{0x7B, 0, 0, 0, 0},
10418 	{0x7C, 0, 0, 0, 0},
10419 	{0x7D, 0, 0, 0, 0},
10420 	{0x7E, 0, 0, 0, 0},
10421 	{0x7F, 0, 0, 0, 0},
10422 	{0x80, 0, 0, 0, 0},
10423 	{0x81, 0, 0, 0, 0},
10424 	{0x82, 0, 0, 0, 0},
10425 	{0x83, 0, 0, 0, 0},
10426 	{0x84, 0, 0, 0, 0},
10427 	{0x85, 0, 0, 0, 0},
10428 	{0x86, 0, 0, 0, 0},
10429 	{0x87, 0, 0, 0, 0},
10430 	{0x88, 0, 0, 0, 0},
10431 	{0x89, 0, 0, 0, 0},
10432 	{0x8A, 0, 0, 0, 0},
10433 	{0x8B, 0, 0, 0, 0},
10434 	{0x8C, 0, 0, 0, 0},
10435 	{0x8D, 0, 0, 0, 0},
10436 	{0x8E, 0, 0, 0, 0},
10437 	{0x8F, 0, 0, 0, 0},
10438 	{0x90, 0, 0, 0, 0},
10439 	{0x91, 0, 0, 0, 0},
10440 	{0x92, 0, 0, 0, 0},
10441 	{0x93, 0, 0, 0, 0},
10442 	{0x94, 0, 0, 0, 0},
10443 	{0xFFFF, 0, 0, 0, 0},
10444 };
10445 
10446 static struct radio_regs regs_SYN_2056_rev8[] = {
10447 	{0x02, 0, 0, 0, 0},
10448 	{0x03, 0, 0, 0, 0},
10449 	{0x04, 0, 0, 0, 0},
10450 	{0x05, 0, 0, 0, 0},
10451 	{0x06, 0, 0, 0, 0},
10452 	{0x07, 0, 0, 0, 0},
10453 	{0x08, 0, 0, 0, 0},
10454 	{0x09, 0x1, 0x1, 0, 0},
10455 	{0x0A, 0, 0, 0, 0},
10456 	{0x0B, 0, 0, 0, 0},
10457 	{0x0C, 0, 0, 0, 0},
10458 	{0x0D, 0, 0, 0, 0},
10459 	{0x0E, 0, 0, 0, 0},
10460 	{0x0F, 0, 0, 0, 0},
10461 	{0x10, 0, 0, 0, 0},
10462 	{0x11, 0, 0, 0, 0},
10463 	{0x12, 0, 0, 0, 0},
10464 	{0x13, 0, 0, 0, 0},
10465 	{0x14, 0, 0, 0, 0},
10466 	{0x15, 0, 0, 0, 0},
10467 	{0x16, 0, 0, 0, 0},
10468 	{0x17, 0, 0, 0, 0},
10469 	{0x18, 0, 0, 0, 0},
10470 	{0x19, 0, 0, 0, 0},
10471 	{0x1A, 0, 0, 0, 0},
10472 	{0x1B, 0, 0, 0, 0},
10473 	{0x1C, 0, 0, 0, 0},
10474 	{0x1D, 0, 0, 0, 0},
10475 	{0x1E, 0, 0, 0, 0},
10476 	{0x1F, 0, 0, 0, 0},
10477 	{0x20, 0, 0, 0, 0},
10478 	{0x21, 0, 0, 0, 0},
10479 	{0x22, 0x60, 0x60, 0, 0},
10480 	{0x23, 0x6, 0x6, 0, 0},
10481 	{0x24, 0xc, 0xc, 0, 0},
10482 	{0x25, 0, 0, 0, 0},
10483 	{0x26, 0, 0, 0, 0},
10484 	{0x27, 0, 0, 0, 0},
10485 	{0x28, 0x1, 0x1, 0, 0},
10486 	{0x29, 0, 0, 0, 0},
10487 	{0x2A, 0, 0, 0, 0},
10488 	{0x2B, 0, 0, 0, 0},
10489 	{0x2C, 0, 0, 0, 0},
10490 	{0x2D, 0, 0, 0, 0},
10491 	{0x2E, 0, 0, 0, 0},
10492 	{0x2F, 0x1f, 0x1f, 0, 0},
10493 	{0x30, 0x15, 0x15, 0, 0},
10494 	{0x31, 0xf, 0xf, 0, 0},
10495 	{0x32, 0, 0, 0, 0},
10496 	{0x33, 0, 0, 0, 0},
10497 	{0x34, 0, 0, 0, 0},
10498 	{0x35, 0, 0, 0, 0},
10499 	{0x36, 0, 0, 0, 0},
10500 	{0x37, 0, 0, 0, 0},
10501 	{0x38, 0, 0, 0, 0},
10502 	{0x39, 0, 0, 0, 0},
10503 	{0x3A, 0, 0, 0, 0},
10504 	{0x3B, 0, 0, 0, 0},
10505 	{0x3C, 0x13, 0x13, 0, 0},
10506 	{0x3D, 0xf, 0xf, 0, 0},
10507 	{0x3E, 0x18, 0x18, 0, 0},
10508 	{0x3F, 0, 0, 0, 0},
10509 	{0x40, 0, 0, 0, 0},
10510 	{0x41, 0x20, 0x20, 0, 0},
10511 	{0x42, 0x20, 0x20, 0, 0},
10512 	{0x43, 0, 0, 0, 0},
10513 	{0x44, 0x77, 0x77, 0, 0},
10514 	{0x45, 0x7, 0x7, 0, 0},
10515 	{0x46, 0x1, 0x1, 0, 0},
10516 	{0x47, 0x4, 0x4, 0, 0},
10517 	{0x48, 0xf, 0xf, 0, 0},
10518 	{0x49, 0x30, 0x30, 0, 0},
10519 	{0x4A, 0x32, 0x32, 0, 0},
10520 	{0x4B, 0xd, 0xd, 0, 0},
10521 	{0x4C, 0xd, 0xd, 0, 0},
10522 	{0x4D, 0x4, 0x4, 0, 0},
10523 	{0x4E, 0x6, 0x6, 0, 0},
10524 	{0x4F, 0x1, 0x1, 0, 0},
10525 	{0x50, 0x1c, 0x1c, 0, 0},
10526 	{0x51, 0x2, 0x2, 0, 0},
10527 	{0x52, 0x2, 0x2, 0, 0},
10528 	{0x53, 0xf7, 0xf7, 1, 1},
10529 	{0x54, 0xb4, 0xb4, 0, 0},
10530 	{0x55, 0xd2, 0xd2, 0, 0},
10531 	{0x56, 0, 0, 0, 0},
10532 	{0x57, 0, 0, 0, 0},
10533 	{0x58, 0x4, 0x4, 0, 0},
10534 	{0x59, 0x96, 0x96, 0, 0},
10535 	{0x5A, 0x3e, 0x3e, 0, 0},
10536 	{0x5B, 0x3e, 0x3e, 0, 0},
10537 	{0x5C, 0x13, 0x13, 0, 0},
10538 	{0x5D, 0x2, 0x2, 0, 0},
10539 	{0x5E, 0, 0, 0, 0},
10540 	{0x5F, 0x7, 0x7, 0, 0},
10541 	{0x60, 0x7, 0x7, 1, 1},
10542 	{0x61, 0x8, 0x8, 0, 0},
10543 	{0x62, 0x3, 0x3, 0, 0},
10544 	{0x63, 0, 0, 0, 0},
10545 	{0x64, 0, 0, 0, 0},
10546 	{0x65, 0, 0, 0, 0},
10547 	{0x66, 0, 0, 0, 0},
10548 	{0x67, 0, 0, 0, 0},
10549 	{0x68, 0x40, 0x40, 0, 0},
10550 	{0x69, 0, 0, 0, 0},
10551 	{0x6A, 0, 0, 0, 0},
10552 	{0x6B, 0, 0, 0, 0},
10553 	{0x6C, 0, 0, 0, 0},
10554 	{0x6D, 0x1, 0x1, 0, 0},
10555 	{0x6E, 0, 0, 0, 0},
10556 	{0x6F, 0, 0, 0, 0},
10557 	{0x70, 0x60, 0x60, 0, 0},
10558 	{0x71, 0x66, 0x66, 0, 0},
10559 	{0x72, 0xc, 0xc, 0, 0},
10560 	{0x73, 0x66, 0x66, 0, 0},
10561 	{0x74, 0x8f, 0x8f, 1, 1},
10562 	{0x75, 0, 0, 0, 0},
10563 	{0x76, 0xcc, 0xcc, 0, 0},
10564 	{0x77, 0x1, 0x1, 0, 0},
10565 	{0x78, 0x66, 0x66, 0, 0},
10566 	{0x79, 0x66, 0x66, 0, 0},
10567 	{0x7A, 0, 0, 0, 0},
10568 	{0x7B, 0, 0, 0, 0},
10569 	{0x7C, 0, 0, 0, 0},
10570 	{0x7D, 0, 0, 0, 0},
10571 	{0x7E, 0, 0, 0, 0},
10572 	{0x7F, 0, 0, 0, 0},
10573 	{0x80, 0, 0, 0, 0},
10574 	{0x81, 0, 0, 0, 0},
10575 	{0x82, 0, 0, 0, 0},
10576 	{0x83, 0, 0, 0, 0},
10577 	{0x84, 0, 0, 0, 0},
10578 	{0x85, 0xff, 0xff, 0, 0},
10579 	{0x86, 0, 0, 0, 0},
10580 	{0x87, 0, 0, 0, 0},
10581 	{0x88, 0, 0, 0, 0},
10582 	{0x89, 0, 0, 0, 0},
10583 	{0x8A, 0, 0, 0, 0},
10584 	{0x8B, 0, 0, 0, 0},
10585 	{0x8C, 0, 0, 0, 0},
10586 	{0x8D, 0, 0, 0, 0},
10587 	{0x8E, 0, 0, 0, 0},
10588 	{0x8F, 0, 0, 0, 0},
10589 	{0x90, 0, 0, 0, 0},
10590 	{0x91, 0, 0, 0, 0},
10591 	{0x92, 0, 0, 0, 0},
10592 	{0x93, 0, 0, 0, 0},
10593 	{0x94, 0, 0, 0, 0},
10594 	{0x95, 0, 0, 0, 0},
10595 	{0x96, 0, 0, 0, 0},
10596 	{0x97, 0, 0, 0, 0},
10597 	{0x98, 0, 0, 0, 0},
10598 	{0x99, 0, 0, 0, 0},
10599 	{0x9A, 0, 0, 0, 0},
10600 	{0x9B, 0, 0, 0, 0},
10601 	{0x9C, 0, 0, 0, 0},
10602 	{0x9D, 0, 0, 0, 0},
10603 	{0x9E, 0, 0, 0, 0},
10604 	{0x9F, 0x6, 0x6, 0, 0},
10605 	{0xA0, 0x66, 0x66, 0, 0},
10606 	{0xA1, 0x66, 0x66, 0, 0},
10607 	{0xA2, 0x66, 0x66, 0, 0},
10608 	{0xA3, 0x66, 0x66, 0, 0},
10609 	{0xA4, 0x66, 0x66, 0, 0},
10610 	{0xA5, 0x66, 0x66, 0, 0},
10611 	{0xA6, 0x66, 0x66, 0, 0},
10612 	{0xA7, 0x66, 0x66, 0, 0},
10613 	{0xA8, 0x66, 0x66, 0, 0},
10614 	{0xA9, 0x66, 0x66, 0, 0},
10615 	{0xAA, 0x66, 0x66, 0, 0},
10616 	{0xAB, 0x66, 0x66, 0, 0},
10617 	{0xAC, 0x66, 0x66, 0, 0},
10618 	{0xAD, 0x66, 0x66, 0, 0},
10619 	{0xAE, 0x66, 0x66, 0, 0},
10620 	{0xAF, 0x66, 0x66, 0, 0},
10621 	{0xB0, 0x66, 0x66, 0, 0},
10622 	{0xB1, 0x66, 0x66, 0, 0},
10623 	{0xB2, 0x66, 0x66, 0, 0},
10624 	{0xB3, 0xa, 0xa, 0, 0},
10625 	{0xB4, 0, 0, 0, 0},
10626 	{0xB5, 0, 0, 0, 0},
10627 	{0xB6, 0, 0, 0, 0},
10628 	{0xFFFF, 0, 0, 0, 0},
10629 };
10630 
10631 static struct radio_regs regs_TX_2056_rev8[] = {
10632 	{0x02, 0, 0, 0, 0},
10633 	{0x03, 0, 0, 0, 0},
10634 	{0x04, 0, 0, 0, 0},
10635 	{0x05, 0, 0, 0, 0},
10636 	{0x06, 0, 0, 0, 0},
10637 	{0x07, 0, 0, 0, 0},
10638 	{0x08, 0, 0, 0, 0},
10639 	{0x09, 0, 0, 0, 0},
10640 	{0x0A, 0, 0, 0, 0},
10641 	{0x0B, 0, 0, 0, 0},
10642 	{0x0C, 0, 0, 0, 0},
10643 	{0x0D, 0, 0, 0, 0},
10644 	{0x0E, 0, 0, 0, 0},
10645 	{0x0F, 0, 0, 0, 0},
10646 	{0x10, 0, 0, 0, 0},
10647 	{0x11, 0, 0, 0, 0},
10648 	{0x12, 0, 0, 0, 0},
10649 	{0x13, 0, 0, 0, 0},
10650 	{0x14, 0, 0, 0, 0},
10651 	{0x15, 0, 0, 0, 0},
10652 	{0x16, 0, 0, 0, 0},
10653 	{0x17, 0, 0, 0, 0},
10654 	{0x18, 0, 0, 0, 0},
10655 	{0x19, 0, 0, 0, 0},
10656 	{0x1A, 0, 0, 0, 0},
10657 	{0x1B, 0, 0, 0, 0},
10658 	{0x1C, 0, 0, 0, 0},
10659 	{0x1D, 0, 0, 0, 0},
10660 	{0x1E, 0, 0, 0, 0},
10661 	{0x1F, 0, 0, 0, 0},
10662 	{0x20, 0, 0, 0, 0},
10663 	{0x21, 0x88, 0x88, 0, 0},
10664 	{0x22, 0x88, 0x88, 0, 0},
10665 	{0x23, 0x88, 0x88, 0, 0},
10666 	{0x24, 0x88, 0x88, 0, 0},
10667 	{0x25, 0xc, 0xc, 0, 0},
10668 	{0x26, 0, 0, 0, 0},
10669 	{0x27, 0x3, 0x3, 0, 0},
10670 	{0x28, 0, 0, 0, 0},
10671 	{0x29, 0x3, 0x3, 0, 0},
10672 	{0x2A, 0x37, 0x37, 0, 0},
10673 	{0x2B, 0x3, 0x3, 0, 0},
10674 	{0x2C, 0, 0, 0, 0},
10675 	{0x2D, 0, 0, 0, 0},
10676 	{0x2E, 0x1, 0x1, 0, 0},
10677 	{0x2F, 0x1, 0x1, 0, 0},
10678 	{0x30, 0, 0, 0, 0},
10679 	{0x31, 0, 0, 0, 0},
10680 	{0x32, 0, 0, 0, 0},
10681 	{0x33, 0x11, 0x11, 0, 0},
10682 	{0x34, 0xee, 0xee, 1, 1},
10683 	{0x35, 0, 0, 0, 0},
10684 	{0x36, 0, 0, 0, 0},
10685 	{0x37, 0x3, 0x3, 0, 0},
10686 	{0x38, 0x50, 0x50, 1, 1},
10687 	{0x39, 0, 0, 0, 0},
10688 	{0x3A, 0x50, 0x50, 1, 1},
10689 	{0x3B, 0, 0, 0, 0},
10690 	{0x3C, 0x6e, 0x6e, 0, 0},
10691 	{0x3D, 0xf0, 0xf0, 1, 1},
10692 	{0x3E, 0, 0, 0, 0},
10693 	{0x3F, 0, 0, 0, 0},
10694 	{0x40, 0, 0, 0, 0},
10695 	{0x41, 0x3, 0x3, 0, 0},
10696 	{0x42, 0x3, 0x3, 0, 0},
10697 	{0x43, 0, 0, 0, 0},
10698 	{0x44, 0x1e, 0x1e, 0, 0},
10699 	{0x45, 0, 0, 0, 0},
10700 	{0x46, 0x6e, 0x6e, 0, 0},
10701 	{0x47, 0xf0, 0xf0, 1, 1},
10702 	{0x48, 0, 0, 0, 0},
10703 	{0x49, 0x2, 0x2, 0, 0},
10704 	{0x4A, 0xff, 0xff, 1, 1},
10705 	{0x4B, 0xc, 0xc, 0, 0},
10706 	{0x4C, 0, 0, 0, 0},
10707 	{0x4D, 0x38, 0x38, 0, 0},
10708 	{0x4E, 0x70, 0x70, 1, 1},
10709 	{0x4F, 0x2, 0x2, 0, 0},
10710 	{0x50, 0x88, 0x88, 0, 0},
10711 	{0x51, 0xc, 0xc, 0, 0},
10712 	{0x52, 0, 0, 0, 0},
10713 	{0x53, 0x8, 0x8, 0, 0},
10714 	{0x54, 0x70, 0x70, 1, 1},
10715 	{0x55, 0x2, 0x2, 0, 0},
10716 	{0x56, 0xff, 0xff, 1, 1},
10717 	{0x57, 0, 0, 0, 0},
10718 	{0x58, 0x83, 0x83, 0, 0},
10719 	{0x59, 0x77, 0x77, 1, 1},
10720 	{0x5A, 0, 0, 0, 0},
10721 	{0x5B, 0x2, 0x2, 0, 0},
10722 	{0x5C, 0x88, 0x88, 0, 0},
10723 	{0x5D, 0, 0, 0, 0},
10724 	{0x5E, 0x8, 0x8, 0, 0},
10725 	{0x5F, 0x77, 0x77, 1, 1},
10726 	{0x60, 0x1, 0x1, 0, 0},
10727 	{0x61, 0, 0, 0, 0},
10728 	{0x62, 0x7, 0x7, 0, 0},
10729 	{0x63, 0, 0, 0, 0},
10730 	{0x64, 0x7, 0x7, 0, 0},
10731 	{0x65, 0, 0, 0, 0},
10732 	{0x66, 0, 0, 0, 0},
10733 	{0x67, 0, 0, 1, 1},
10734 	{0x68, 0, 0, 0, 0},
10735 	{0x69, 0xa, 0xa, 0, 0},
10736 	{0x6A, 0, 0, 0, 0},
10737 	{0x6B, 0, 0, 0, 0},
10738 	{0x6C, 0, 0, 0, 0},
10739 	{0x6D, 0, 0, 0, 0},
10740 	{0x6E, 0, 0, 0, 0},
10741 	{0x6F, 0, 0, 0, 0},
10742 	{0x70, 0, 0, 0, 0},
10743 	{0x71, 0x2, 0x2, 0, 0},
10744 	{0x72, 0, 0, 0, 0},
10745 	{0x73, 0, 0, 0, 0},
10746 	{0x74, 0xe, 0xe, 0, 0},
10747 	{0x75, 0xe, 0xe, 0, 0},
10748 	{0x76, 0xe, 0xe, 0, 0},
10749 	{0x77, 0x13, 0x13, 0, 0},
10750 	{0x78, 0x13, 0x13, 0, 0},
10751 	{0x79, 0x1b, 0x1b, 0, 0},
10752 	{0x7A, 0x1b, 0x1b, 0, 0},
10753 	{0x7B, 0x55, 0x55, 0, 0},
10754 	{0x7C, 0x5b, 0x5b, 0, 0},
10755 	{0x7D, 0x30, 0x30, 1, 1},
10756 	{0x7E, 0, 0, 0, 0},
10757 	{0x7F, 0, 0, 0, 0},
10758 	{0x80, 0, 0, 0, 0},
10759 	{0x81, 0, 0, 0, 0},
10760 	{0x82, 0, 0, 0, 0},
10761 	{0x83, 0, 0, 0, 0},
10762 	{0x84, 0, 0, 0, 0},
10763 	{0x85, 0, 0, 0, 0},
10764 	{0x86, 0, 0, 0, 0},
10765 	{0x87, 0, 0, 0, 0},
10766 	{0x88, 0, 0, 0, 0},
10767 	{0x89, 0, 0, 0, 0},
10768 	{0x8A, 0, 0, 0, 0},
10769 	{0x8B, 0, 0, 0, 0},
10770 	{0x8C, 0, 0, 0, 0},
10771 	{0x8D, 0, 0, 0, 0},
10772 	{0x8E, 0, 0, 0, 0},
10773 	{0x8F, 0, 0, 0, 0},
10774 	{0x90, 0, 0, 0, 0},
10775 	{0x91, 0, 0, 0, 0},
10776 	{0x92, 0, 0, 0, 0},
10777 	{0x93, 0x70, 0x70, 0, 0},
10778 	{0x94, 0x70, 0x70, 0, 0},
10779 	{0x95, 0x70, 0x70, 0, 0},
10780 	{0x96, 0x70, 0x70, 0, 0},
10781 	{0x97, 0x70, 0x70, 0, 0},
10782 	{0x98, 0x70, 0x70, 0, 0},
10783 	{0x99, 0x70, 0x70, 0, 0},
10784 	{0x9A, 0x70, 0x70, 0, 0},
10785 	{0xFFFF, 0, 0, 0, 0},
10786 };
10787 
10788 static struct radio_regs regs_RX_2056_rev8[] = {
10789 	{0x02, 0, 0, 0, 0},
10790 	{0x03, 0, 0, 0, 0},
10791 	{0x04, 0, 0, 0, 0},
10792 	{0x05, 0, 0, 0, 0},
10793 	{0x06, 0, 0, 0, 0},
10794 	{0x07, 0, 0, 0, 0},
10795 	{0x08, 0, 0, 0, 0},
10796 	{0x09, 0, 0, 0, 0},
10797 	{0x0A, 0, 0, 0, 0},
10798 	{0x0B, 0, 0, 0, 0},
10799 	{0x0C, 0, 0, 0, 0},
10800 	{0x0D, 0, 0, 0, 0},
10801 	{0x0E, 0, 0, 0, 0},
10802 	{0x0F, 0, 0, 0, 0},
10803 	{0x10, 0, 0, 0, 0},
10804 	{0x11, 0, 0, 0, 0},
10805 	{0x12, 0, 0, 0, 0},
10806 	{0x13, 0, 0, 0, 0},
10807 	{0x14, 0, 0, 0, 0},
10808 	{0x15, 0, 0, 0, 0},
10809 	{0x16, 0, 0, 0, 0},
10810 	{0x17, 0, 0, 0, 0},
10811 	{0x18, 0, 0, 0, 0},
10812 	{0x19, 0, 0, 0, 0},
10813 	{0x1A, 0, 0, 0, 0},
10814 	{0x1B, 0, 0, 0, 0},
10815 	{0x1C, 0, 0, 0, 0},
10816 	{0x1D, 0, 0, 0, 0},
10817 	{0x1E, 0, 0, 0, 0},
10818 	{0x1F, 0, 0, 0, 0},
10819 	{0x20, 0x3, 0x3, 0, 0},
10820 	{0x21, 0, 0, 0, 0},
10821 	{0x22, 0, 0, 0, 0},
10822 	{0x23, 0x90, 0x90, 0, 0},
10823 	{0x24, 0x55, 0x55, 0, 0},
10824 	{0x25, 0x15, 0x15, 0, 0},
10825 	{0x26, 0x5, 0x5, 0, 0},
10826 	{0x27, 0x15, 0x15, 0, 0},
10827 	{0x28, 0x5, 0x5, 0, 0},
10828 	{0x29, 0x20, 0x20, 0, 0},
10829 	{0x2A, 0x11, 0x11, 0, 0},
10830 	{0x2B, 0x90, 0x90, 0, 0},
10831 	{0x2C, 0, 0, 0, 0},
10832 	{0x2D, 0x88, 0x88, 0, 0},
10833 	{0x2E, 0x32, 0x32, 0, 0},
10834 	{0x2F, 0x77, 0x77, 0, 0},
10835 	{0x30, 0x17, 0x17, 1, 1},
10836 	{0x31, 0xff, 0xff, 1, 1},
10837 	{0x32, 0x20, 0x20, 0, 0},
10838 	{0x33, 0, 0, 0, 0},
10839 	{0x34, 0x88, 0x88, 0, 0},
10840 	{0x35, 0x32, 0x32, 0, 0},
10841 	{0x36, 0x77, 0x77, 0, 0},
10842 	{0x37, 0x17, 0x17, 1, 1},
10843 	{0x38, 0xf0, 0xf0, 1, 1},
10844 	{0x39, 0x20, 0x20, 0, 0},
10845 	{0x3A, 0x8, 0x8, 0, 0},
10846 	{0x3B, 0x55, 0x55, 1, 1},
10847 	{0x3C, 0, 0, 0, 0},
10848 	{0x3D, 0x88, 0x88, 1, 1},
10849 	{0x3E, 0, 0, 0, 0},
10850 	{0x3F, 0x44, 0x44, 0, 0},
10851 	{0x40, 0x7, 0x7, 1, 1},
10852 	{0x41, 0x6, 0x6, 0, 0},
10853 	{0x42, 0x4, 0x4, 0, 0},
10854 	{0x43, 0, 0, 0, 0},
10855 	{0x44, 0x8, 0x8, 0, 0},
10856 	{0x45, 0x55, 0x55, 1, 1},
10857 	{0x46, 0, 0, 0, 0},
10858 	{0x47, 0x11, 0x11, 0, 0},
10859 	{0x48, 0, 0, 0, 0},
10860 	{0x49, 0x44, 0x44, 0, 0},
10861 	{0x4A, 0x7, 0x7, 0, 0},
10862 	{0x4B, 0x6, 0x6, 0, 0},
10863 	{0x4C, 0x4, 0x4, 0, 0},
10864 	{0x4D, 0, 0, 0, 0},
10865 	{0x4E, 0, 0, 0, 0},
10866 	{0x4F, 0x26, 0x26, 1, 1},
10867 	{0x50, 0x26, 0x26, 1, 1},
10868 	{0x51, 0xf, 0xf, 1, 1},
10869 	{0x52, 0xf, 0xf, 1, 1},
10870 	{0x53, 0x44, 0x44, 0, 0},
10871 	{0x54, 0, 0, 0, 0},
10872 	{0x55, 0, 0, 0, 0},
10873 	{0x56, 0x8, 0x8, 0, 0},
10874 	{0x57, 0x8, 0x8, 0, 0},
10875 	{0x58, 0x7, 0x7, 0, 0},
10876 	{0x59, 0x22, 0x22, 0, 0},
10877 	{0x5A, 0x22, 0x22, 0, 0},
10878 	{0x5B, 0x2, 0x2, 0, 0},
10879 	{0x5C, 0x4, 0x4, 1, 1},
10880 	{0x5D, 0x7, 0x7, 0, 0},
10881 	{0x5E, 0x55, 0x55, 0, 0},
10882 	{0x5F, 0x23, 0x23, 0, 0},
10883 	{0x60, 0x41, 0x41, 0, 0},
10884 	{0x61, 0x1, 0x1, 0, 0},
10885 	{0x62, 0xa, 0xa, 0, 0},
10886 	{0x63, 0, 0, 0, 0},
10887 	{0x64, 0, 0, 0, 0},
10888 	{0x65, 0, 0, 0, 0},
10889 	{0x66, 0, 0, 0, 0},
10890 	{0x67, 0, 0, 0, 0},
10891 	{0x68, 0, 0, 0, 0},
10892 	{0x69, 0, 0, 0, 0},
10893 	{0x6A, 0, 0, 0, 0},
10894 	{0x6B, 0xc, 0xc, 0, 0},
10895 	{0x6C, 0, 0, 0, 0},
10896 	{0x6D, 0, 0, 0, 0},
10897 	{0x6E, 0, 0, 0, 0},
10898 	{0x6F, 0, 0, 0, 0},
10899 	{0x70, 0, 0, 0, 0},
10900 	{0x71, 0, 0, 0, 0},
10901 	{0x72, 0x22, 0x22, 0, 0},
10902 	{0x73, 0x22, 0x22, 0, 0},
10903 	{0x74, 0, 0, 1, 1},
10904 	{0x75, 0xa, 0xa, 0, 0},
10905 	{0x76, 0x1, 0x1, 0, 0},
10906 	{0x77, 0x22, 0x22, 0, 0},
10907 	{0x78, 0x30, 0x30, 0, 0},
10908 	{0x79, 0, 0, 0, 0},
10909 	{0x7A, 0, 0, 0, 0},
10910 	{0x7B, 0, 0, 0, 0},
10911 	{0x7C, 0, 0, 0, 0},
10912 	{0x7D, 0x5, 0x5, 1, 1},
10913 	{0x7E, 0, 0, 0, 0},
10914 	{0x7F, 0, 0, 0, 0},
10915 	{0x80, 0, 0, 0, 0},
10916 	{0x81, 0, 0, 0, 0},
10917 	{0x82, 0, 0, 0, 0},
10918 	{0x83, 0, 0, 0, 0},
10919 	{0x84, 0, 0, 0, 0},
10920 	{0x85, 0, 0, 0, 0},
10921 	{0x86, 0, 0, 0, 0},
10922 	{0x87, 0, 0, 0, 0},
10923 	{0x88, 0, 0, 0, 0},
10924 	{0x89, 0, 0, 0, 0},
10925 	{0x8A, 0, 0, 0, 0},
10926 	{0x8B, 0, 0, 0, 0},
10927 	{0x8C, 0, 0, 0, 0},
10928 	{0x8D, 0, 0, 0, 0},
10929 	{0x8E, 0, 0, 0, 0},
10930 	{0x8F, 0, 0, 0, 0},
10931 	{0x90, 0, 0, 0, 0},
10932 	{0x91, 0, 0, 0, 0},
10933 	{0x92, 0, 0, 0, 0},
10934 	{0x93, 0, 0, 0, 0},
10935 	{0x94, 0, 0, 0, 0},
10936 	{0xFFFF, 0, 0, 0, 0},
10937 };
10938 
10939 static const struct radio_regs regs_SYN_2056_rev11[] = {
10940 	{0x02, 0, 0, 0, 0},
10941 	{0x03, 0, 0, 0, 0},
10942 	{0x04, 0, 0, 0, 0},
10943 	{0x05, 0, 0, 0, 0},
10944 	{0x06, 0, 0, 0, 0},
10945 	{0x07, 0, 0, 0, 0},
10946 	{0x08, 0, 0, 0, 0},
10947 	{0x09, 0x1, 0x1, 0, 0},
10948 	{0x0A, 0, 0, 0, 0},
10949 	{0x0B, 0, 0, 0, 0},
10950 	{0x0C, 0, 0, 0, 0},
10951 	{0x0D, 0, 0, 0, 0},
10952 	{0x0E, 0, 0, 0, 0},
10953 	{0x0F, 0, 0, 0, 0},
10954 	{0x10, 0, 0, 0, 0},
10955 	{0x11, 0, 0, 0, 0},
10956 	{0x12, 0, 0, 0, 0},
10957 	{0x13, 0, 0, 0, 0},
10958 	{0x14, 0, 0, 0, 0},
10959 	{0x15, 0, 0, 0, 0},
10960 	{0x16, 0, 0, 0, 0},
10961 	{0x17, 0, 0, 0, 0},
10962 	{0x18, 0, 0, 0, 0},
10963 	{0x19, 0, 0, 0, 0},
10964 	{0x1A, 0, 0, 0, 0},
10965 	{0x1B, 0, 0, 0, 0},
10966 	{0x1C, 0, 0, 0, 0},
10967 	{0x1D, 0, 0, 0, 0},
10968 	{0x1E, 0, 0, 0, 0},
10969 	{0x1F, 0, 0, 0, 0},
10970 	{0x20, 0, 0, 0, 0},
10971 	{0x21, 0, 0, 0, 0},
10972 	{0x22, 0x60, 0x60, 0, 0},
10973 	{0x23, 0x6, 0x6, 0, 0},
10974 	{0x24, 0xc, 0xc, 0, 0},
10975 	{0x25, 0, 0, 0, 0},
10976 	{0x26, 0, 0, 0, 0},
10977 	{0x27, 0, 0, 0, 0},
10978 	{0x28, 0x1, 0x1, 0, 0},
10979 	{0x29, 0, 0, 0, 0},
10980 	{0x2A, 0, 0, 0, 0},
10981 	{0x2B, 0, 0, 0, 0},
10982 	{0x2C, 0, 0, 0, 0},
10983 	{0x2D, 0, 0, 0, 0},
10984 	{0x2E, 0, 0, 0, 0},
10985 	{0x2F, 0x1f, 0x1f, 0, 0},
10986 	{0x30, 0x15, 0x15, 0, 0},
10987 	{0x31, 0xf, 0xf, 0, 0},
10988 	{0x32, 0, 0, 0, 0},
10989 	{0x33, 0, 0, 0, 0},
10990 	{0x34, 0, 0, 0, 0},
10991 	{0x35, 0, 0, 0, 0},
10992 	{0x36, 0, 0, 0, 0},
10993 	{0x37, 0, 0, 0, 0},
10994 	{0x38, 0, 0, 0, 0},
10995 	{0x39, 0, 0, 0, 0},
10996 	{0x3A, 0, 0, 0, 0},
10997 	{0x3B, 0, 0, 0, 0},
10998 	{0x3C, 0x13, 0x13, 0, 0},
10999 	{0x3D, 0xf, 0xf, 0, 0},
11000 	{0x3E, 0x18, 0x18, 0, 0},
11001 	{0x3F, 0, 0, 0, 0},
11002 	{0x40, 0, 0, 0, 0},
11003 	{0x41, 0x20, 0x20, 0, 0},
11004 	{0x42, 0x20, 0x20, 0, 0},
11005 	{0x43, 0, 0, 0, 0},
11006 	{0x44, 0x77, 0x77, 0, 0},
11007 	{0x45, 0x7, 0x7, 0, 0},
11008 	{0x46, 0x1, 0x1, 0, 0},
11009 	{0x47, 0x6, 0x6, 1, 1},
11010 	{0x48, 0xf, 0xf, 0, 0},
11011 	{0x49, 0x3f, 0x3f, 1, 1},
11012 	{0x4A, 0x32, 0x32, 0, 0},
11013 	{0x4B, 0x6, 0x6, 1, 1},
11014 	{0x4C, 0x6, 0x6, 1, 1},
11015 	{0x4D, 0x4, 0x4, 0, 0},
11016 	{0x4E, 0x2b, 0x2b, 1, 1},
11017 	{0x4F, 0x1, 0x1, 0, 0},
11018 	{0x50, 0x1c, 0x1c, 0, 0},
11019 	{0x51, 0x2, 0x2, 0, 0},
11020 	{0x52, 0x2, 0x2, 0, 0},
11021 	{0x53, 0xf7, 0xf7, 1, 1},
11022 	{0x54, 0xb4, 0xb4, 0, 0},
11023 	{0x55, 0xd2, 0xd2, 0, 0},
11024 	{0x56, 0, 0, 0, 0},
11025 	{0x57, 0, 0, 0, 0},
11026 	{0x58, 0x4, 0x4, 0, 0},
11027 	{0x59, 0x96, 0x96, 0, 0},
11028 	{0x5A, 0x3e, 0x3e, 0, 0},
11029 	{0x5B, 0x3e, 0x3e, 0, 0},
11030 	{0x5C, 0x13, 0x13, 0, 0},
11031 	{0x5D, 0x2, 0x2, 0, 0},
11032 	{0x5E, 0, 0, 0, 0},
11033 	{0x5F, 0x7, 0x7, 0, 0},
11034 	{0x60, 0x7, 0x7, 1, 1},
11035 	{0x61, 0x8, 0x8, 0, 0},
11036 	{0x62, 0x3, 0x3, 0, 0},
11037 	{0x63, 0, 0, 0, 0},
11038 	{0x64, 0, 0, 0, 0},
11039 	{0x65, 0, 0, 0, 0},
11040 	{0x66, 0, 0, 0, 0},
11041 	{0x67, 0, 0, 0, 0},
11042 	{0x68, 0x40, 0x40, 0, 0},
11043 	{0x69, 0, 0, 0, 0},
11044 	{0x6A, 0, 0, 0, 0},
11045 	{0x6B, 0, 0, 0, 0},
11046 	{0x6C, 0, 0, 0, 0},
11047 	{0x6D, 0x1, 0x1, 0, 0},
11048 	{0x6E, 0, 0, 0, 0},
11049 	{0x6F, 0, 0, 0, 0},
11050 	{0x70, 0x60, 0x60, 0, 0},
11051 	{0x71, 0x66, 0x66, 0, 0},
11052 	{0x72, 0xc, 0xc, 0, 0},
11053 	{0x73, 0x66, 0x66, 0, 0},
11054 	{0x74, 0x8f, 0x8f, 1, 1},
11055 	{0x75, 0, 0, 0, 0},
11056 	{0x76, 0xcc, 0xcc, 0, 0},
11057 	{0x77, 0x1, 0x1, 0, 0},
11058 	{0x78, 0x66, 0x66, 0, 0},
11059 	{0x79, 0x66, 0x66, 0, 0},
11060 	{0x7A, 0, 0, 0, 0},
11061 	{0x7B, 0, 0, 0, 0},
11062 	{0x7C, 0, 0, 0, 0},
11063 	{0x7D, 0, 0, 0, 0},
11064 	{0x7E, 0, 0, 0, 0},
11065 	{0x7F, 0, 0, 0, 0},
11066 	{0x80, 0, 0, 0, 0},
11067 	{0x81, 0, 0, 0, 0},
11068 	{0x82, 0, 0, 0, 0},
11069 	{0x83, 0, 0, 0, 0},
11070 	{0x84, 0, 0, 0, 0},
11071 	{0x85, 0xff, 0xff, 0, 0},
11072 	{0x86, 0, 0, 0, 0},
11073 	{0x87, 0, 0, 0, 0},
11074 	{0x88, 0, 0, 0, 0},
11075 	{0x89, 0, 0, 0, 0},
11076 	{0x8A, 0, 0, 0, 0},
11077 	{0x8B, 0, 0, 0, 0},
11078 	{0x8C, 0, 0, 0, 0},
11079 	{0x8D, 0, 0, 0, 0},
11080 	{0x8E, 0, 0, 0, 0},
11081 	{0x8F, 0, 0, 0, 0},
11082 	{0x90, 0, 0, 0, 0},
11083 	{0x91, 0, 0, 0, 0},
11084 	{0x92, 0, 0, 0, 0},
11085 	{0x93, 0, 0, 0, 0},
11086 	{0x94, 0, 0, 0, 0},
11087 	{0x95, 0, 0, 0, 0},
11088 	{0x96, 0, 0, 0, 0},
11089 	{0x97, 0, 0, 0, 0},
11090 	{0x98, 0, 0, 0, 0},
11091 	{0x99, 0, 0, 0, 0},
11092 	{0x9A, 0, 0, 0, 0},
11093 	{0x9B, 0, 0, 0, 0},
11094 	{0x9C, 0, 0, 0, 0},
11095 	{0x9D, 0, 0, 0, 0},
11096 	{0x9E, 0, 0, 0, 0},
11097 	{0x9F, 0x6, 0x6, 0, 0},
11098 	{0xA0, 0x66, 0x66, 0, 0},
11099 	{0xA1, 0x66, 0x66, 0, 0},
11100 	{0xA2, 0x66, 0x66, 0, 0},
11101 	{0xA3, 0x66, 0x66, 0, 0},
11102 	{0xA4, 0x66, 0x66, 0, 0},
11103 	{0xA5, 0x66, 0x66, 0, 0},
11104 	{0xA6, 0x66, 0x66, 0, 0},
11105 	{0xA7, 0x66, 0x66, 0, 0},
11106 	{0xA8, 0x66, 0x66, 0, 0},
11107 	{0xA9, 0x66, 0x66, 0, 0},
11108 	{0xAA, 0x66, 0x66, 0, 0},
11109 	{0xAB, 0x66, 0x66, 0, 0},
11110 	{0xAC, 0x66, 0x66, 0, 0},
11111 	{0xAD, 0x66, 0x66, 0, 0},
11112 	{0xAE, 0x66, 0x66, 0, 0},
11113 	{0xAF, 0x66, 0x66, 0, 0},
11114 	{0xB0, 0x66, 0x66, 0, 0},
11115 	{0xB1, 0x66, 0x66, 0, 0},
11116 	{0xB2, 0x66, 0x66, 0, 0},
11117 	{0xB3, 0xa, 0xa, 0, 0},
11118 	{0xB4, 0, 0, 0, 0},
11119 	{0xB5, 0, 0, 0, 0},
11120 	{0xB6, 0, 0, 0, 0},
11121 	{0xFFFF, 0, 0, 0, 0},
11122 };
11123 
11124 static const struct radio_regs regs_TX_2056_rev11[] = {
11125 	{0x02, 0, 0, 0, 0},
11126 	{0x03, 0, 0, 0, 0},
11127 	{0x04, 0, 0, 0, 0},
11128 	{0x05, 0, 0, 0, 0},
11129 	{0x06, 0, 0, 0, 0},
11130 	{0x07, 0, 0, 0, 0},
11131 	{0x08, 0, 0, 0, 0},
11132 	{0x09, 0, 0, 0, 0},
11133 	{0x0A, 0, 0, 0, 0},
11134 	{0x0B, 0, 0, 0, 0},
11135 	{0x0C, 0, 0, 0, 0},
11136 	{0x0D, 0, 0, 0, 0},
11137 	{0x0E, 0, 0, 0, 0},
11138 	{0x0F, 0, 0, 0, 0},
11139 	{0x10, 0, 0, 0, 0},
11140 	{0x11, 0, 0, 0, 0},
11141 	{0x12, 0, 0, 0, 0},
11142 	{0x13, 0, 0, 0, 0},
11143 	{0x14, 0, 0, 0, 0},
11144 	{0x15, 0, 0, 0, 0},
11145 	{0x16, 0, 0, 0, 0},
11146 	{0x17, 0, 0, 0, 0},
11147 	{0x18, 0, 0, 0, 0},
11148 	{0x19, 0, 0, 0, 0},
11149 	{0x1A, 0, 0, 0, 0},
11150 	{0x1B, 0, 0, 0, 0},
11151 	{0x1C, 0, 0, 0, 0},
11152 	{0x1D, 0, 0, 0, 0},
11153 	{0x1E, 0, 0, 0, 0},
11154 	{0x1F, 0, 0, 0, 0},
11155 	{0x20, 0, 0, 0, 0},
11156 	{0x21, 0x88, 0x88, 0, 0},
11157 	{0x22, 0x88, 0x88, 0, 0},
11158 	{0x23, 0x88, 0x88, 0, 0},
11159 	{0x24, 0x88, 0x88, 0, 0},
11160 	{0x25, 0xc, 0xc, 0, 0},
11161 	{0x26, 0, 0, 0, 0},
11162 	{0x27, 0x3, 0x3, 0, 0},
11163 	{0x28, 0, 0, 0, 0},
11164 	{0x29, 0x3, 0x3, 0, 0},
11165 	{0x2A, 0x37, 0x37, 0, 0},
11166 	{0x2B, 0x3, 0x3, 0, 0},
11167 	{0x2C, 0, 0, 0, 0},
11168 	{0x2D, 0, 0, 0, 0},
11169 	{0x2E, 0x1, 0x1, 0, 0},
11170 	{0x2F, 0x1, 0x1, 0, 0},
11171 	{0x30, 0, 0, 0, 0},
11172 	{0x31, 0, 0, 0, 0},
11173 	{0x32, 0, 0, 0, 0},
11174 	{0x33, 0x11, 0x11, 0, 0},
11175 	{0x34, 0xee, 0xee, 1, 1},
11176 	{0x35, 0, 0, 0, 0},
11177 	{0x36, 0, 0, 0, 0},
11178 	{0x37, 0x3, 0x3, 0, 0},
11179 	{0x38, 0x50, 0x50, 1, 1},
11180 	{0x39, 0, 0, 0, 0},
11181 	{0x3A, 0x50, 0x50, 1, 1},
11182 	{0x3B, 0, 0, 0, 0},
11183 	{0x3C, 0x6e, 0x6e, 0, 0},
11184 	{0x3D, 0xf0, 0xf0, 1, 1},
11185 	{0x3E, 0, 0, 0, 0},
11186 	{0x3F, 0, 0, 0, 0},
11187 	{0x40, 0, 0, 0, 0},
11188 	{0x41, 0x3, 0x3, 0, 0},
11189 	{0x42, 0x3, 0x3, 0, 0},
11190 	{0x43, 0, 0, 0, 0},
11191 	{0x44, 0x1e, 0x1e, 0, 0},
11192 	{0x45, 0, 0, 0, 0},
11193 	{0x46, 0x6e, 0x6e, 0, 0},
11194 	{0x47, 0xf0, 0xf0, 1, 1},
11195 	{0x48, 0, 0, 0, 0},
11196 	{0x49, 0x2, 0x2, 0, 0},
11197 	{0x4A, 0xff, 0xff, 1, 1},
11198 	{0x4B, 0xc, 0xc, 0, 0},
11199 	{0x4C, 0, 0, 0, 0},
11200 	{0x4D, 0x38, 0x38, 0, 0},
11201 	{0x4E, 0x70, 0x70, 1, 1},
11202 	{0x4F, 0x2, 0x2, 0, 0},
11203 	{0x50, 0x88, 0x88, 0, 0},
11204 	{0x51, 0xc, 0xc, 0, 0},
11205 	{0x52, 0, 0, 0, 0},
11206 	{0x53, 0x8, 0x8, 0, 0},
11207 	{0x54, 0x70, 0x70, 1, 1},
11208 	{0x55, 0x2, 0x2, 0, 0},
11209 	{0x56, 0xff, 0xff, 1, 1},
11210 	{0x57, 0, 0, 0, 0},
11211 	{0x58, 0x83, 0x83, 0, 0},
11212 	{0x59, 0x77, 0x77, 1, 1},
11213 	{0x5A, 0, 0, 0, 0},
11214 	{0x5B, 0x2, 0x2, 0, 0},
11215 	{0x5C, 0x88, 0x88, 0, 0},
11216 	{0x5D, 0, 0, 0, 0},
11217 	{0x5E, 0x8, 0x8, 0, 0},
11218 	{0x5F, 0x77, 0x77, 1, 1},
11219 	{0x60, 0x1, 0x1, 0, 0},
11220 	{0x61, 0, 0, 0, 0},
11221 	{0x62, 0x7, 0x7, 0, 0},
11222 	{0x63, 0, 0, 0, 0},
11223 	{0x64, 0x7, 0x7, 0, 0},
11224 	{0x65, 0, 0, 0, 0},
11225 	{0x66, 0, 0, 0, 0},
11226 	{0x67, 0, 0, 1, 1},
11227 	{0x68, 0, 0, 0, 0},
11228 	{0x69, 0xa, 0xa, 0, 0},
11229 	{0x6A, 0, 0, 0, 0},
11230 	{0x6B, 0, 0, 0, 0},
11231 	{0x6C, 0, 0, 0, 0},
11232 	{0x6D, 0, 0, 0, 0},
11233 	{0x6E, 0, 0, 0, 0},
11234 	{0x6F, 0, 0, 0, 0},
11235 	{0x70, 0, 0, 0, 0},
11236 	{0x71, 0x2, 0x2, 0, 0},
11237 	{0x72, 0, 0, 0, 0},
11238 	{0x73, 0, 0, 0, 0},
11239 	{0x74, 0xe, 0xe, 0, 0},
11240 	{0x75, 0xe, 0xe, 0, 0},
11241 	{0x76, 0xe, 0xe, 0, 0},
11242 	{0x77, 0x13, 0x13, 0, 0},
11243 	{0x78, 0x13, 0x13, 0, 0},
11244 	{0x79, 0x1b, 0x1b, 0, 0},
11245 	{0x7A, 0x1b, 0x1b, 0, 0},
11246 	{0x7B, 0x55, 0x55, 0, 0},
11247 	{0x7C, 0x5b, 0x5b, 0, 0},
11248 	{0x7D, 0x30, 0x30, 1, 1},
11249 	{0x7E, 0, 0, 0, 0},
11250 	{0x7F, 0, 0, 0, 0},
11251 	{0x80, 0, 0, 0, 0},
11252 	{0x81, 0, 0, 0, 0},
11253 	{0x82, 0, 0, 0, 0},
11254 	{0x83, 0, 0, 0, 0},
11255 	{0x84, 0, 0, 0, 0},
11256 	{0x85, 0, 0, 0, 0},
11257 	{0x86, 0, 0, 0, 0},
11258 	{0x87, 0, 0, 0, 0},
11259 	{0x88, 0, 0, 0, 0},
11260 	{0x89, 0, 0, 0, 0},
11261 	{0x8A, 0, 0, 0, 0},
11262 	{0x8B, 0, 0, 0, 0},
11263 	{0x8C, 0, 0, 0, 0},
11264 	{0x8D, 0, 0, 0, 0},
11265 	{0x8E, 0, 0, 0, 0},
11266 	{0x8F, 0, 0, 0, 0},
11267 	{0x90, 0, 0, 0, 0},
11268 	{0x91, 0, 0, 0, 0},
11269 	{0x92, 0, 0, 0, 0},
11270 	{0x93, 0x70, 0x70, 0, 0},
11271 	{0x94, 0x70, 0x70, 0, 0},
11272 	{0x95, 0x70, 0x70, 0, 0},
11273 	{0x96, 0x70, 0x70, 0, 0},
11274 	{0x97, 0x70, 0x70, 0, 0},
11275 	{0x98, 0x70, 0x70, 0, 0},
11276 	{0x99, 0x70, 0x70, 0, 0},
11277 	{0x9A, 0x70, 0x70, 0, 0},
11278 	{0xFFFF, 0, 0, 0, 0},
11279 };
11280 
11281 static const struct radio_regs regs_RX_2056_rev11[] = {
11282 	{0x02, 0, 0, 0, 0},
11283 	{0x03, 0, 0, 0, 0},
11284 	{0x04, 0, 0, 0, 0},
11285 	{0x05, 0, 0, 0, 0},
11286 	{0x06, 0, 0, 0, 0},
11287 	{0x07, 0, 0, 0, 0},
11288 	{0x08, 0, 0, 0, 0},
11289 	{0x09, 0, 0, 0, 0},
11290 	{0x0A, 0, 0, 0, 0},
11291 	{0x0B, 0, 0, 0, 0},
11292 	{0x0C, 0, 0, 0, 0},
11293 	{0x0D, 0, 0, 0, 0},
11294 	{0x0E, 0, 0, 0, 0},
11295 	{0x0F, 0, 0, 0, 0},
11296 	{0x10, 0, 0, 0, 0},
11297 	{0x11, 0, 0, 0, 0},
11298 	{0x12, 0, 0, 0, 0},
11299 	{0x13, 0, 0, 0, 0},
11300 	{0x14, 0, 0, 0, 0},
11301 	{0x15, 0, 0, 0, 0},
11302 	{0x16, 0, 0, 0, 0},
11303 	{0x17, 0, 0, 0, 0},
11304 	{0x18, 0, 0, 0, 0},
11305 	{0x19, 0, 0, 0, 0},
11306 	{0x1A, 0, 0, 0, 0},
11307 	{0x1B, 0, 0, 0, 0},
11308 	{0x1C, 0, 0, 0, 0},
11309 	{0x1D, 0, 0, 0, 0},
11310 	{0x1E, 0, 0, 0, 0},
11311 	{0x1F, 0, 0, 0, 0},
11312 	{0x20, 0x3, 0x3, 0, 0},
11313 	{0x21, 0, 0, 0, 0},
11314 	{0x22, 0, 0, 0, 0},
11315 	{0x23, 0x90, 0x90, 0, 0},
11316 	{0x24, 0x55, 0x55, 0, 0},
11317 	{0x25, 0x15, 0x15, 0, 0},
11318 	{0x26, 0x5, 0x5, 0, 0},
11319 	{0x27, 0x15, 0x15, 0, 0},
11320 	{0x28, 0x5, 0x5, 0, 0},
11321 	{0x29, 0x20, 0x20, 0, 0},
11322 	{0x2A, 0x11, 0x11, 0, 0},
11323 	{0x2B, 0x90, 0x90, 0, 0},
11324 	{0x2C, 0, 0, 0, 0},
11325 	{0x2D, 0x88, 0x88, 0, 0},
11326 	{0x2E, 0x32, 0x32, 0, 0},
11327 	{0x2F, 0x77, 0x77, 0, 0},
11328 	{0x30, 0x17, 0x17, 1, 1},
11329 	{0x31, 0xff, 0xff, 1, 1},
11330 	{0x32, 0x20, 0x20, 0, 0},
11331 	{0x33, 0, 0, 0, 0},
11332 	{0x34, 0x88, 0x88, 0, 0},
11333 	{0x35, 0x32, 0x32, 0, 0},
11334 	{0x36, 0x77, 0x77, 0, 0},
11335 	{0x37, 0x17, 0x17, 1, 1},
11336 	{0x38, 0xf0, 0xf0, 1, 1},
11337 	{0x39, 0x20, 0x20, 0, 0},
11338 	{0x3A, 0x8, 0x8, 0, 0},
11339 	{0x3B, 0x55, 0x55, 1, 1},
11340 	{0x3C, 0, 0, 0, 0},
11341 	{0x3D, 0x88, 0x88, 1, 1},
11342 	{0x3E, 0, 0, 0, 0},
11343 	{0x3F, 0x44, 0x44, 0, 0},
11344 	{0x40, 0x7, 0x7, 1, 1},
11345 	{0x41, 0x6, 0x6, 0, 0},
11346 	{0x42, 0x4, 0x4, 0, 0},
11347 	{0x43, 0, 0, 0, 0},
11348 	{0x44, 0x8, 0x8, 0, 0},
11349 	{0x45, 0x55, 0x55, 1, 1},
11350 	{0x46, 0, 0, 0, 0},
11351 	{0x47, 0x11, 0x11, 0, 0},
11352 	{0x48, 0, 0, 0, 0},
11353 	{0x49, 0x44, 0x44, 0, 0},
11354 	{0x4A, 0x7, 0x7, 0, 0},
11355 	{0x4B, 0x6, 0x6, 0, 0},
11356 	{0x4C, 0x4, 0x4, 0, 0},
11357 	{0x4D, 0, 0, 0, 0},
11358 	{0x4E, 0, 0, 0, 0},
11359 	{0x4F, 0x26, 0x26, 1, 1},
11360 	{0x50, 0x26, 0x26, 1, 1},
11361 	{0x51, 0xf, 0xf, 1, 1},
11362 	{0x52, 0xf, 0xf, 1, 1},
11363 	{0x53, 0x44, 0x44, 0, 0},
11364 	{0x54, 0, 0, 0, 0},
11365 	{0x55, 0, 0, 0, 0},
11366 	{0x56, 0x8, 0x8, 0, 0},
11367 	{0x57, 0x8, 0x8, 0, 0},
11368 	{0x58, 0x7, 0x7, 0, 0},
11369 	{0x59, 0x22, 0x22, 0, 0},
11370 	{0x5A, 0x22, 0x22, 0, 0},
11371 	{0x5B, 0x2, 0x2, 0, 0},
11372 	{0x5C, 0x4, 0x4, 1, 1},
11373 	{0x5D, 0x7, 0x7, 0, 0},
11374 	{0x5E, 0x55, 0x55, 0, 0},
11375 	{0x5F, 0x23, 0x23, 0, 0},
11376 	{0x60, 0x41, 0x41, 0, 0},
11377 	{0x61, 0x1, 0x1, 0, 0},
11378 	{0x62, 0xa, 0xa, 0, 0},
11379 	{0x63, 0, 0, 0, 0},
11380 	{0x64, 0, 0, 0, 0},
11381 	{0x65, 0, 0, 0, 0},
11382 	{0x66, 0, 0, 0, 0},
11383 	{0x67, 0, 0, 0, 0},
11384 	{0x68, 0, 0, 0, 0},
11385 	{0x69, 0, 0, 0, 0},
11386 	{0x6A, 0, 0, 0, 0},
11387 	{0x6B, 0xc, 0xc, 0, 0},
11388 	{0x6C, 0, 0, 0, 0},
11389 	{0x6D, 0, 0, 0, 0},
11390 	{0x6E, 0, 0, 0, 0},
11391 	{0x6F, 0, 0, 0, 0},
11392 	{0x70, 0, 0, 0, 0},
11393 	{0x71, 0, 0, 0, 0},
11394 	{0x72, 0x22, 0x22, 0, 0},
11395 	{0x73, 0x22, 0x22, 0, 0},
11396 	{0x74, 0, 0, 1, 1},
11397 	{0x75, 0xa, 0xa, 0, 0},
11398 	{0x76, 0x1, 0x1, 0, 0},
11399 	{0x77, 0x22, 0x22, 0, 0},
11400 	{0x78, 0x30, 0x30, 0, 0},
11401 	{0x79, 0, 0, 0, 0},
11402 	{0x7A, 0, 0, 0, 0},
11403 	{0x7B, 0, 0, 0, 0},
11404 	{0x7C, 0, 0, 0, 0},
11405 	{0x7D, 0x5, 0x5, 1, 1},
11406 	{0x7E, 0, 0, 0, 0},
11407 	{0x7F, 0, 0, 0, 0},
11408 	{0x80, 0, 0, 0, 0},
11409 	{0x81, 0, 0, 0, 0},
11410 	{0x82, 0, 0, 0, 0},
11411 	{0x83, 0, 0, 0, 0},
11412 	{0x84, 0, 0, 0, 0},
11413 	{0x85, 0, 0, 0, 0},
11414 	{0x86, 0, 0, 0, 0},
11415 	{0x87, 0, 0, 0, 0},
11416 	{0x88, 0, 0, 0, 0},
11417 	{0x89, 0, 0, 0, 0},
11418 	{0x8A, 0, 0, 0, 0},
11419 	{0x8B, 0, 0, 0, 0},
11420 	{0x8C, 0, 0, 0, 0},
11421 	{0x8D, 0, 0, 0, 0},
11422 	{0x8E, 0, 0, 0, 0},
11423 	{0x8F, 0, 0, 0, 0},
11424 	{0x90, 0, 0, 0, 0},
11425 	{0x91, 0, 0, 0, 0},
11426 	{0x92, 0, 0, 0, 0},
11427 	{0x93, 0, 0, 0, 0},
11428 	{0x94, 0, 0, 0, 0},
11429 	{0xFFFF, 0, 0, 0, 0},
11430 };
11431 
11432 static struct radio_20xx_regs regs_2057_rev4[] = {
11433 	{0x00, 0x84, 0},
11434 	{0x01, 0, 0},
11435 	{0x02, 0x60, 0},
11436 	{0x03, 0x1f, 0},
11437 	{0x04, 0x4, 0},
11438 	{0x05, 0x2, 0},
11439 	{0x06, 0x1, 0},
11440 	{0x07, 0x1, 0},
11441 	{0x08, 0x1, 0},
11442 	{0x09, 0x69, 0},
11443 	{0x0A, 0x66, 0},
11444 	{0x0B, 0x6, 0},
11445 	{0x0C, 0x18, 0},
11446 	{0x0D, 0x3, 0},
11447 	{0x0E, 0x20, 1},
11448 	{0x0F, 0x20, 0},
11449 	{0x10, 0, 0},
11450 	{0x11, 0x7c, 0},
11451 	{0x12, 0x42, 0},
11452 	{0x13, 0xbd, 0},
11453 	{0x14, 0x7, 0},
11454 	{0x15, 0xf7, 0},
11455 	{0x16, 0x8, 0},
11456 	{0x17, 0x17, 0},
11457 	{0x18, 0x7, 0},
11458 	{0x19, 0, 0},
11459 	{0x1A, 0x2, 0},
11460 	{0x1B, 0x13, 0},
11461 	{0x1C, 0x3e, 0},
11462 	{0x1D, 0x3e, 0},
11463 	{0x1E, 0x96, 0},
11464 	{0x1F, 0x4, 0},
11465 	{0x20, 0, 0},
11466 	{0x21, 0, 0},
11467 	{0x22, 0x17, 0},
11468 	{0x23, 0x4, 0},
11469 	{0x24, 0x1, 0},
11470 	{0x25, 0x6, 0},
11471 	{0x26, 0x4, 0},
11472 	{0x27, 0xd, 0},
11473 	{0x28, 0xd, 0},
11474 	{0x29, 0x30, 0},
11475 	{0x2A, 0x32, 0},
11476 	{0x2B, 0x8, 0},
11477 	{0x2C, 0x1c, 0},
11478 	{0x2D, 0x2, 0},
11479 	{0x2E, 0x4, 0},
11480 	{0x2F, 0x7f, 0},
11481 	{0x30, 0x27, 0},
11482 	{0x31, 0, 1},
11483 	{0x32, 0, 1},
11484 	{0x33, 0, 1},
11485 	{0x34, 0, 0},
11486 	{0x35, 0x26, 1},
11487 	{0x36, 0x18, 0},
11488 	{0x37, 0x7, 0},
11489 	{0x38, 0x66, 0},
11490 	{0x39, 0x66, 0},
11491 	{0x3A, 0x66, 0},
11492 	{0x3B, 0x66, 0},
11493 	{0x3C, 0xff, 1},
11494 	{0x3D, 0xff, 1},
11495 	{0x3E, 0xff, 1},
11496 	{0x3F, 0xff, 1},
11497 	{0x40, 0x16, 0},
11498 	{0x41, 0x7, 0},
11499 	{0x42, 0x19, 0},
11500 	{0x43, 0x7, 0},
11501 	{0x44, 0x6, 0},
11502 	{0x45, 0x3, 0},
11503 	{0x46, 0x1, 0},
11504 	{0x47, 0x7, 0},
11505 	{0x48, 0x33, 0},
11506 	{0x49, 0x5, 0},
11507 	{0x4A, 0x77, 0},
11508 	{0x4B, 0x66, 0},
11509 	{0x4C, 0x66, 0},
11510 	{0x4D, 0, 0},
11511 	{0x4E, 0x4, 0},
11512 	{0x4F, 0xc, 0},
11513 	{0x50, 0, 0},
11514 	{0x51, 0x75, 0},
11515 	{0x56, 0x7, 0},
11516 	{0x57, 0, 0},
11517 	{0x58, 0, 0},
11518 	{0x59, 0xa8, 0},
11519 	{0x5A, 0, 0},
11520 	{0x5B, 0x1f, 0},
11521 	{0x5C, 0x30, 0},
11522 	{0x5D, 0x1, 0},
11523 	{0x5E, 0x30, 0},
11524 	{0x5F, 0x70, 0},
11525 	{0x60, 0, 0},
11526 	{0x61, 0, 0},
11527 	{0x62, 0x33, 1},
11528 	{0x63, 0x19, 0},
11529 	{0x64, 0x62, 0},
11530 	{0x65, 0, 0},
11531 	{0x66, 0x11, 0},
11532 	{0x69, 0, 0},
11533 	{0x6A, 0x7e, 0},
11534 	{0x6B, 0x3f, 0},
11535 	{0x6C, 0x7f, 0},
11536 	{0x6D, 0x78, 0},
11537 	{0x6E, 0xc8, 0},
11538 	{0x6F, 0x88, 0},
11539 	{0x70, 0x8, 0},
11540 	{0x71, 0xf, 0},
11541 	{0x72, 0xbc, 0},
11542 	{0x73, 0x8, 0},
11543 	{0x74, 0x60, 0},
11544 	{0x75, 0x1e, 0},
11545 	{0x76, 0x70, 0},
11546 	{0x77, 0, 0},
11547 	{0x78, 0, 0},
11548 	{0x79, 0, 0},
11549 	{0x7A, 0x33, 0},
11550 	{0x7B, 0x1e, 0},
11551 	{0x7C, 0x62, 0},
11552 	{0x7D, 0x11, 0},
11553 	{0x80, 0x3c, 0},
11554 	{0x81, 0x9c, 0},
11555 	{0x82, 0xa, 0},
11556 	{0x83, 0x9d, 0},
11557 	{0x84, 0xa, 0},
11558 	{0x85, 0, 0},
11559 	{0x86, 0x40, 0},
11560 	{0x87, 0x40, 0},
11561 	{0x88, 0x88, 0},
11562 	{0x89, 0x10, 0},
11563 	{0x8A, 0xf0, 1},
11564 	{0x8B, 0x10, 1},
11565 	{0x8C, 0xf0, 1},
11566 	{0x8D, 0, 0},
11567 	{0x8E, 0, 0},
11568 	{0x8F, 0x10, 0},
11569 	{0x90, 0x55, 0},
11570 	{0x91, 0x3f, 1},
11571 	{0x92, 0x36, 1},
11572 	{0x93, 0, 0},
11573 	{0x94, 0, 0},
11574 	{0x95, 0, 0},
11575 	{0x96, 0x87, 0},
11576 	{0x97, 0x11, 0},
11577 	{0x98, 0, 0},
11578 	{0x99, 0x33, 0},
11579 	{0x9A, 0x88, 0},
11580 	{0x9B, 0, 0},
11581 	{0x9C, 0x87, 0},
11582 	{0x9D, 0x11, 0},
11583 	{0x9E, 0, 0},
11584 	{0x9F, 0x33, 0},
11585 	{0xA0, 0x88, 0},
11586 	{0xA1, 0xe1, 0},
11587 	{0xA2, 0x3f, 0},
11588 	{0xA3, 0x44, 0},
11589 	{0xA4, 0x8c, 1},
11590 	{0xA5, 0x6d, 0},
11591 	{0xA6, 0x22, 0},
11592 	{0xA7, 0xbe, 0},
11593 	{0xA8, 0x55, 1},
11594 	{0xA9, 0xc, 0},
11595 	{0xAA, 0xc, 0},
11596 	{0xAB, 0xaa, 0},
11597 	{0xAC, 0x2, 0},
11598 	{0xAD, 0, 0},
11599 	{0xAE, 0x10, 0},
11600 	{0xAF, 0x1, 1},
11601 	{0xB0, 0, 0},
11602 	{0xB1, 0, 0},
11603 	{0xB2, 0x80, 0},
11604 	{0xB3, 0x60, 0},
11605 	{0xB4, 0x44, 0},
11606 	{0xB5, 0x55, 0},
11607 	{0xB6, 0x1, 0},
11608 	{0xB7, 0x55, 0},
11609 	{0xB8, 0x1, 0},
11610 	{0xB9, 0x5, 0},
11611 	{0xBA, 0x55, 0},
11612 	{0xBB, 0x55, 0},
11613 	{0xC1, 0, 0},
11614 	{0xC2, 0, 0},
11615 	{0xC3, 0, 0},
11616 	{0xC4, 0, 0},
11617 	{0xC5, 0, 0},
11618 	{0xC6, 0, 0},
11619 	{0xC7, 0, 0},
11620 	{0xC8, 0, 0},
11621 	{0xC9, 0, 0},
11622 	{0xCA, 0, 0},
11623 	{0xCB, 0, 0},
11624 	{0xCC, 0, 0},
11625 	{0xCD, 0, 0},
11626 	{0xCE, 0x5e, 0},
11627 	{0xCF, 0xc, 0},
11628 	{0xD0, 0xc, 0},
11629 	{0xD1, 0xc, 0},
11630 	{0xD2, 0, 0},
11631 	{0xD3, 0x2b, 0},
11632 	{0xD4, 0xc, 0},
11633 	{0xD5, 0, 0},
11634 	{0xD6, 0x75, 0},
11635 	{0xDB, 0x7, 0},
11636 	{0xDC, 0, 0},
11637 	{0xDD, 0, 0},
11638 	{0xDE, 0xa8, 0},
11639 	{0xDF, 0, 0},
11640 	{0xE0, 0x1f, 0},
11641 	{0xE1, 0x30, 0},
11642 	{0xE2, 0x1, 0},
11643 	{0xE3, 0x30, 0},
11644 	{0xE4, 0x70, 0},
11645 	{0xE5, 0, 0},
11646 	{0xE6, 0, 0},
11647 	{0xE7, 0x33, 0},
11648 	{0xE8, 0x19, 0},
11649 	{0xE9, 0x62, 0},
11650 	{0xEA, 0, 0},
11651 	{0xEB, 0x11, 0},
11652 	{0xEE, 0, 0},
11653 	{0xEF, 0x7e, 0},
11654 	{0xF0, 0x3f, 0},
11655 	{0xF1, 0x7f, 0},
11656 	{0xF2, 0x78, 0},
11657 	{0xF3, 0xc8, 0},
11658 	{0xF4, 0x88, 0},
11659 	{0xF5, 0x8, 0},
11660 	{0xF6, 0xf, 0},
11661 	{0xF7, 0xbc, 0},
11662 	{0xF8, 0x8, 0},
11663 	{0xF9, 0x60, 0},
11664 	{0xFA, 0x1e, 0},
11665 	{0xFB, 0x70, 0},
11666 	{0xFC, 0, 0},
11667 	{0xFD, 0, 0},
11668 	{0xFE, 0, 0},
11669 	{0xFF, 0x33, 0},
11670 	{0x100, 0x1e, 0},
11671 	{0x101, 0x62, 0},
11672 	{0x102, 0x11, 0},
11673 	{0x105, 0x3c, 0},
11674 	{0x106, 0x9c, 0},
11675 	{0x107, 0xa, 0},
11676 	{0x108, 0x9d, 0},
11677 	{0x109, 0xa, 0},
11678 	{0x10A, 0, 0},
11679 	{0x10B, 0x40, 0},
11680 	{0x10C, 0x40, 0},
11681 	{0x10D, 0x88, 0},
11682 	{0x10E, 0x10, 0},
11683 	{0x10F, 0xf0, 1},
11684 	{0x110, 0x10, 1},
11685 	{0x111, 0xf0, 1},
11686 	{0x112, 0, 0},
11687 	{0x113, 0, 0},
11688 	{0x114, 0x10, 0},
11689 	{0x115, 0x55, 0},
11690 	{0x116, 0x3f, 1},
11691 	{0x117, 0x36, 1},
11692 	{0x118, 0, 0},
11693 	{0x119, 0, 0},
11694 	{0x11A, 0, 0},
11695 	{0x11B, 0x87, 0},
11696 	{0x11C, 0x11, 0},
11697 	{0x11D, 0, 0},
11698 	{0x11E, 0x33, 0},
11699 	{0x11F, 0x88, 0},
11700 	{0x120, 0, 0},
11701 	{0x121, 0x87, 0},
11702 	{0x122, 0x11, 0},
11703 	{0x123, 0, 0},
11704 	{0x124, 0x33, 0},
11705 	{0x125, 0x88, 0},
11706 	{0x126, 0xe1, 0},
11707 	{0x127, 0x3f, 0},
11708 	{0x128, 0x44, 0},
11709 	{0x129, 0x8c, 1},
11710 	{0x12A, 0x6d, 0},
11711 	{0x12B, 0x22, 0},
11712 	{0x12C, 0xbe, 0},
11713 	{0x12D, 0x55, 1},
11714 	{0x12E, 0xc, 0},
11715 	{0x12F, 0xc, 0},
11716 	{0x130, 0xaa, 0},
11717 	{0x131, 0x2, 0},
11718 	{0x132, 0, 0},
11719 	{0x133, 0x10, 0},
11720 	{0x134, 0x1, 1},
11721 	{0x135, 0, 0},
11722 	{0x136, 0, 0},
11723 	{0x137, 0x80, 0},
11724 	{0x138, 0x60, 0},
11725 	{0x139, 0x44, 0},
11726 	{0x13A, 0x55, 0},
11727 	{0x13B, 0x1, 0},
11728 	{0x13C, 0x55, 0},
11729 	{0x13D, 0x1, 0},
11730 	{0x13E, 0x5, 0},
11731 	{0x13F, 0x55, 0},
11732 	{0x140, 0x55, 0},
11733 	{0x146, 0, 0},
11734 	{0x147, 0, 0},
11735 	{0x148, 0, 0},
11736 	{0x149, 0, 0},
11737 	{0x14A, 0, 0},
11738 	{0x14B, 0, 0},
11739 	{0x14C, 0, 0},
11740 	{0x14D, 0, 0},
11741 	{0x14E, 0, 0},
11742 	{0x14F, 0, 0},
11743 	{0x150, 0, 0},
11744 	{0x151, 0, 0},
11745 	{0x152, 0, 0},
11746 	{0x153, 0, 0},
11747 	{0x154, 0xc, 0},
11748 	{0x155, 0xc, 0},
11749 	{0x156, 0xc, 0},
11750 	{0x157, 0, 0},
11751 	{0x158, 0x2b, 0},
11752 	{0x159, 0x84, 0},
11753 	{0x15A, 0x15, 0},
11754 	{0x15B, 0xf, 0},
11755 	{0x15C, 0, 0},
11756 	{0x15D, 0, 0},
11757 	{0x15E, 0, 1},
11758 	{0x15F, 0, 1},
11759 	{0x160, 0, 1},
11760 	{0x161, 0, 1},
11761 	{0x162, 0, 1},
11762 	{0x163, 0, 1},
11763 	{0x164, 0, 0},
11764 	{0x165, 0, 0},
11765 	{0x166, 0, 0},
11766 	{0x167, 0, 0},
11767 	{0x168, 0, 0},
11768 	{0x169, 0x2, 1},
11769 	{0x16A, 0, 1},
11770 	{0x16B, 0, 1},
11771 	{0x16C, 0, 1},
11772 	{0x16D, 0, 0},
11773 	{0x170, 0, 0},
11774 	{0x171, 0x77, 0},
11775 	{0x172, 0x77, 0},
11776 	{0x173, 0x77, 0},
11777 	{0x174, 0x77, 0},
11778 	{0x175, 0, 0},
11779 	{0x176, 0x3, 0},
11780 	{0x177, 0x37, 0},
11781 	{0x178, 0x3, 0},
11782 	{0x179, 0, 0},
11783 	{0x17A, 0x21, 0},
11784 	{0x17B, 0x21, 0},
11785 	{0x17C, 0, 0},
11786 	{0x17D, 0xaa, 0},
11787 	{0x17E, 0, 0},
11788 	{0x17F, 0xaa, 0},
11789 	{0x180, 0, 0},
11790 	{0x190, 0, 0},
11791 	{0x191, 0x77, 0},
11792 	{0x192, 0x77, 0},
11793 	{0x193, 0x77, 0},
11794 	{0x194, 0x77, 0},
11795 	{0x195, 0, 0},
11796 	{0x196, 0x3, 0},
11797 	{0x197, 0x37, 0},
11798 	{0x198, 0x3, 0},
11799 	{0x199, 0, 0},
11800 	{0x19A, 0x21, 0},
11801 	{0x19B, 0x21, 0},
11802 	{0x19C, 0, 0},
11803 	{0x19D, 0xaa, 0},
11804 	{0x19E, 0, 0},
11805 	{0x19F, 0xaa, 0},
11806 	{0x1A0, 0, 0},
11807 	{0x1A1, 0x2, 0},
11808 	{0x1A2, 0xf, 0},
11809 	{0x1A3, 0xf, 0},
11810 	{0x1A4, 0, 1},
11811 	{0x1A5, 0, 1},
11812 	{0x1A6, 0, 1},
11813 	{0x1A7, 0x2, 0},
11814 	{0x1A8, 0xf, 0},
11815 	{0x1A9, 0xf, 0},
11816 	{0x1AA, 0, 1},
11817 	{0x1AB, 0, 1},
11818 	{0x1AC, 0, 1},
11819 	{0xFFFF, 0, 0},
11820 };
11821 
11822 static struct radio_20xx_regs regs_2057_rev5[] = {
11823 	{0x00, 0, 1},
11824 	{0x01, 0x57, 1},
11825 	{0x02, 0x20, 1},
11826 	{0x03, 0x1f, 0},
11827 	{0x04, 0x4, 0},
11828 	{0x05, 0x2, 0},
11829 	{0x06, 0x1, 0},
11830 	{0x07, 0x1, 0},
11831 	{0x08, 0x1, 0},
11832 	{0x09, 0x69, 0},
11833 	{0x0A, 0x66, 0},
11834 	{0x0B, 0x6, 0},
11835 	{0x0C, 0x18, 0},
11836 	{0x0D, 0x3, 0},
11837 	{0x0E, 0x20, 0},
11838 	{0x0F, 0x20, 0},
11839 	{0x10, 0, 0},
11840 	{0x11, 0x7c, 0},
11841 	{0x12, 0x42, 0},
11842 	{0x13, 0xbd, 0},
11843 	{0x14, 0x7, 0},
11844 	{0x15, 0x87, 0},
11845 	{0x16, 0x8, 0},
11846 	{0x17, 0x17, 0},
11847 	{0x18, 0x7, 0},
11848 	{0x19, 0, 0},
11849 	{0x1A, 0x2, 0},
11850 	{0x1B, 0x13, 0},
11851 	{0x1C, 0x3e, 0},
11852 	{0x1D, 0x3e, 0},
11853 	{0x1E, 0x96, 0},
11854 	{0x1F, 0x4, 0},
11855 	{0x20, 0, 0},
11856 	{0x21, 0, 0},
11857 	{0x22, 0x17, 0},
11858 	{0x23, 0x6, 1},
11859 	{0x24, 0x1, 0},
11860 	{0x25, 0x6, 0},
11861 	{0x26, 0x4, 0},
11862 	{0x27, 0xd, 0},
11863 	{0x28, 0xd, 0},
11864 	{0x29, 0x30, 0},
11865 	{0x2A, 0x32, 0},
11866 	{0x2B, 0x8, 0},
11867 	{0x2C, 0x1c, 0},
11868 	{0x2D, 0x2, 0},
11869 	{0x2E, 0x4, 0},
11870 	{0x2F, 0x7f, 0},
11871 	{0x30, 0x27, 0},
11872 	{0x31, 0, 1},
11873 	{0x32, 0, 1},
11874 	{0x33, 0, 1},
11875 	{0x34, 0, 0},
11876 	{0x35, 0x20, 0},
11877 	{0x36, 0x18, 0},
11878 	{0x37, 0x7, 0},
11879 	{0x38, 0x66, 0},
11880 	{0x39, 0x66, 0},
11881 	{0x3C, 0xff, 0},
11882 	{0x3D, 0xff, 0},
11883 	{0x40, 0x16, 0},
11884 	{0x41, 0x7, 0},
11885 	{0x45, 0x3, 0},
11886 	{0x46, 0x1, 0},
11887 	{0x47, 0x7, 0},
11888 	{0x4B, 0x66, 0},
11889 	{0x4C, 0x66, 0},
11890 	{0x4D, 0, 0},
11891 	{0x4E, 0x4, 0},
11892 	{0x4F, 0xc, 0},
11893 	{0x50, 0, 0},
11894 	{0x51, 0x70, 1},
11895 	{0x56, 0x7, 0},
11896 	{0x57, 0, 0},
11897 	{0x58, 0, 0},
11898 	{0x59, 0x88, 1},
11899 	{0x5A, 0, 0},
11900 	{0x5B, 0x1f, 0},
11901 	{0x5C, 0x20, 1},
11902 	{0x5D, 0x1, 0},
11903 	{0x5E, 0x30, 0},
11904 	{0x5F, 0x70, 0},
11905 	{0x60, 0, 0},
11906 	{0x61, 0, 0},
11907 	{0x62, 0x33, 1},
11908 	{0x63, 0xf, 1},
11909 	{0x64, 0xf, 1},
11910 	{0x65, 0, 0},
11911 	{0x66, 0x11, 0},
11912 	{0x80, 0x3c, 0},
11913 	{0x81, 0x1, 1},
11914 	{0x82, 0xa, 0},
11915 	{0x85, 0, 0},
11916 	{0x86, 0x40, 0},
11917 	{0x87, 0x40, 0},
11918 	{0x88, 0x88, 0},
11919 	{0x89, 0x10, 0},
11920 	{0x8A, 0xf0, 0},
11921 	{0x8B, 0x10, 0},
11922 	{0x8C, 0xf0, 0},
11923 	{0x8F, 0x10, 0},
11924 	{0x90, 0x55, 0},
11925 	{0x91, 0x3f, 1},
11926 	{0x92, 0x36, 1},
11927 	{0x93, 0, 0},
11928 	{0x94, 0, 0},
11929 	{0x95, 0, 0},
11930 	{0x96, 0x87, 0},
11931 	{0x97, 0x11, 0},
11932 	{0x98, 0, 0},
11933 	{0x99, 0x33, 0},
11934 	{0x9A, 0x88, 0},
11935 	{0xA1, 0x20, 1},
11936 	{0xA2, 0x3f, 0},
11937 	{0xA3, 0x44, 0},
11938 	{0xA4, 0x8c, 0},
11939 	{0xA5, 0x6c, 0},
11940 	{0xA6, 0x22, 0},
11941 	{0xA7, 0xbe, 0},
11942 	{0xA8, 0x55, 0},
11943 	{0xAA, 0xc, 0},
11944 	{0xAB, 0xaa, 0},
11945 	{0xAC, 0x2, 0},
11946 	{0xAD, 0, 0},
11947 	{0xAE, 0x10, 0},
11948 	{0xAF, 0x1, 0},
11949 	{0xB0, 0, 0},
11950 	{0xB1, 0, 0},
11951 	{0xB2, 0x80, 0},
11952 	{0xB3, 0x60, 0},
11953 	{0xB4, 0x44, 0},
11954 	{0xB5, 0x55, 0},
11955 	{0xB6, 0x1, 0},
11956 	{0xB7, 0x55, 0},
11957 	{0xB8, 0x1, 0},
11958 	{0xB9, 0x5, 0},
11959 	{0xBA, 0x55, 0},
11960 	{0xBB, 0x55, 0},
11961 	{0xC3, 0, 0},
11962 	{0xC4, 0, 0},
11963 	{0xC5, 0, 0},
11964 	{0xC6, 0, 0},
11965 	{0xC7, 0, 0},
11966 	{0xC8, 0, 0},
11967 	{0xC9, 0, 0},
11968 	{0xCA, 0, 0},
11969 	{0xCB, 0, 0},
11970 	{0xCD, 0, 0},
11971 	{0xCE, 0x5e, 0},
11972 	{0xCF, 0xc, 0},
11973 	{0xD0, 0xc, 0},
11974 	{0xD1, 0xc, 0},
11975 	{0xD2, 0, 0},
11976 	{0xD3, 0x2b, 0},
11977 	{0xD4, 0xc, 0},
11978 	{0xD5, 0, 0},
11979 	{0xD6, 0x70, 1},
11980 	{0xDB, 0x7, 0},
11981 	{0xDC, 0, 0},
11982 	{0xDD, 0, 0},
11983 	{0xDE, 0x88, 1},
11984 	{0xDF, 0, 0},
11985 	{0xE0, 0x1f, 0},
11986 	{0xE1, 0x20, 1},
11987 	{0xE2, 0x1, 0},
11988 	{0xE3, 0x30, 0},
11989 	{0xE4, 0x70, 0},
11990 	{0xE5, 0, 0},
11991 	{0xE6, 0, 0},
11992 	{0xE7, 0x33, 0},
11993 	{0xE8, 0xf, 1},
11994 	{0xE9, 0xf, 1},
11995 	{0xEA, 0, 0},
11996 	{0xEB, 0x11, 0},
11997 	{0x105, 0x3c, 0},
11998 	{0x106, 0x1, 1},
11999 	{0x107, 0xa, 0},
12000 	{0x10A, 0, 0},
12001 	{0x10B, 0x40, 0},
12002 	{0x10C, 0x40, 0},
12003 	{0x10D, 0x88, 0},
12004 	{0x10E, 0x10, 0},
12005 	{0x10F, 0xf0, 0},
12006 	{0x110, 0x10, 0},
12007 	{0x111, 0xf0, 0},
12008 	{0x114, 0x10, 0},
12009 	{0x115, 0x55, 0},
12010 	{0x116, 0x3f, 1},
12011 	{0x117, 0x36, 1},
12012 	{0x118, 0, 0},
12013 	{0x119, 0, 0},
12014 	{0x11A, 0, 0},
12015 	{0x11B, 0x87, 0},
12016 	{0x11C, 0x11, 0},
12017 	{0x11D, 0, 0},
12018 	{0x11E, 0x33, 0},
12019 	{0x11F, 0x88, 0},
12020 	{0x126, 0x20, 1},
12021 	{0x127, 0x3f, 0},
12022 	{0x128, 0x44, 0},
12023 	{0x129, 0x8c, 0},
12024 	{0x12A, 0x6c, 0},
12025 	{0x12B, 0x22, 0},
12026 	{0x12C, 0xbe, 0},
12027 	{0x12D, 0x55, 0},
12028 	{0x12F, 0xc, 0},
12029 	{0x130, 0xaa, 0},
12030 	{0x131, 0x2, 0},
12031 	{0x132, 0, 0},
12032 	{0x133, 0x10, 0},
12033 	{0x134, 0x1, 0},
12034 	{0x135, 0, 0},
12035 	{0x136, 0, 0},
12036 	{0x137, 0x80, 0},
12037 	{0x138, 0x60, 0},
12038 	{0x139, 0x44, 0},
12039 	{0x13A, 0x55, 0},
12040 	{0x13B, 0x1, 0},
12041 	{0x13C, 0x55, 0},
12042 	{0x13D, 0x1, 0},
12043 	{0x13E, 0x5, 0},
12044 	{0x13F, 0x55, 0},
12045 	{0x140, 0x55, 0},
12046 	{0x148, 0, 0},
12047 	{0x149, 0, 0},
12048 	{0x14A, 0, 0},
12049 	{0x14B, 0, 0},
12050 	{0x14C, 0, 0},
12051 	{0x14D, 0, 0},
12052 	{0x14E, 0, 0},
12053 	{0x14F, 0, 0},
12054 	{0x150, 0, 0},
12055 	{0x154, 0xc, 0},
12056 	{0x155, 0xc, 0},
12057 	{0x156, 0xc, 0},
12058 	{0x157, 0, 0},
12059 	{0x158, 0x2b, 0},
12060 	{0x159, 0x84, 0},
12061 	{0x15A, 0x15, 0},
12062 	{0x15B, 0xf, 0},
12063 	{0x15C, 0, 0},
12064 	{0x15D, 0, 0},
12065 	{0x15E, 0, 1},
12066 	{0x15F, 0, 1},
12067 	{0x160, 0, 1},
12068 	{0x161, 0, 1},
12069 	{0x162, 0, 1},
12070 	{0x163, 0, 1},
12071 	{0x164, 0, 0},
12072 	{0x165, 0, 0},
12073 	{0x166, 0, 0},
12074 	{0x167, 0, 0},
12075 	{0x168, 0, 0},
12076 	{0x169, 0, 0},
12077 	{0x16A, 0, 1},
12078 	{0x16B, 0, 1},
12079 	{0x16C, 0, 1},
12080 	{0x16D, 0, 0},
12081 	{0x170, 0, 0},
12082 	{0x171, 0x77, 0},
12083 	{0x172, 0x77, 0},
12084 	{0x173, 0x77, 0},
12085 	{0x174, 0x77, 0},
12086 	{0x175, 0, 0},
12087 	{0x176, 0x3, 0},
12088 	{0x177, 0x37, 0},
12089 	{0x178, 0x3, 0},
12090 	{0x179, 0, 0},
12091 	{0x17B, 0x21, 0},
12092 	{0x17C, 0, 0},
12093 	{0x17D, 0xaa, 0},
12094 	{0x17E, 0, 0},
12095 	{0x190, 0, 0},
12096 	{0x191, 0x77, 0},
12097 	{0x192, 0x77, 0},
12098 	{0x193, 0x77, 0},
12099 	{0x194, 0x77, 0},
12100 	{0x195, 0, 0},
12101 	{0x196, 0x3, 0},
12102 	{0x197, 0x37, 0},
12103 	{0x198, 0x3, 0},
12104 	{0x199, 0, 0},
12105 	{0x19B, 0x21, 0},
12106 	{0x19C, 0, 0},
12107 	{0x19D, 0xaa, 0},
12108 	{0x19E, 0, 0},
12109 	{0x1A1, 0x2, 0},
12110 	{0x1A2, 0xf, 0},
12111 	{0x1A3, 0xf, 0},
12112 	{0x1A4, 0, 1},
12113 	{0x1A5, 0, 1},
12114 	{0x1A6, 0, 1},
12115 	{0x1A7, 0x2, 0},
12116 	{0x1A8, 0xf, 0},
12117 	{0x1A9, 0xf, 0},
12118 	{0x1AA, 0, 1},
12119 	{0x1AB, 0, 1},
12120 	{0x1AC, 0, 1},
12121 	{0x1AD, 0x84, 0},
12122 	{0x1AE, 0x60, 0},
12123 	{0x1AF, 0x47, 0},
12124 	{0x1B0, 0x47, 0},
12125 	{0x1B1, 0, 0},
12126 	{0x1B2, 0, 0},
12127 	{0x1B3, 0, 0},
12128 	{0x1B4, 0, 0},
12129 	{0x1B5, 0, 0},
12130 	{0x1B6, 0, 0},
12131 	{0x1B7, 0xc, 1},
12132 	{0x1B8, 0, 0},
12133 	{0x1B9, 0, 0},
12134 	{0x1BA, 0, 0},
12135 	{0x1BB, 0, 0},
12136 	{0x1BC, 0, 0},
12137 	{0x1BD, 0, 0},
12138 	{0x1BE, 0, 0},
12139 	{0x1BF, 0, 0},
12140 	{0x1C0, 0, 0},
12141 	{0x1C1, 0x1, 1},
12142 	{0x1C2, 0x80, 1},
12143 	{0x1C3, 0, 0},
12144 	{0x1C4, 0, 0},
12145 	{0x1C5, 0, 0},
12146 	{0x1C6, 0, 0},
12147 	{0x1C7, 0, 0},
12148 	{0x1C8, 0, 0},
12149 	{0x1C9, 0, 0},
12150 	{0x1CA, 0, 0},
12151 	{0xFFFF, 0, 0}
12152 };
12153 
12154 static struct radio_20xx_regs regs_2057_rev5v1[] = {
12155 	{0x00, 0x15, 1},
12156 	{0x01, 0x57, 1},
12157 	{0x02, 0x20, 1},
12158 	{0x03, 0x1f, 0},
12159 	{0x04, 0x4, 0},
12160 	{0x05, 0x2, 0},
12161 	{0x06, 0x1, 0},
12162 	{0x07, 0x1, 0},
12163 	{0x08, 0x1, 0},
12164 	{0x09, 0x69, 0},
12165 	{0x0A, 0x66, 0},
12166 	{0x0B, 0x6, 0},
12167 	{0x0C, 0x18, 0},
12168 	{0x0D, 0x3, 0},
12169 	{0x0E, 0x20, 0},
12170 	{0x0F, 0x20, 0},
12171 	{0x10, 0, 0},
12172 	{0x11, 0x7c, 0},
12173 	{0x12, 0x42, 0},
12174 	{0x13, 0xbd, 0},
12175 	{0x14, 0x7, 0},
12176 	{0x15, 0x87, 0},
12177 	{0x16, 0x8, 0},
12178 	{0x17, 0x17, 0},
12179 	{0x18, 0x7, 0},
12180 	{0x19, 0, 0},
12181 	{0x1A, 0x2, 0},
12182 	{0x1B, 0x13, 0},
12183 	{0x1C, 0x3e, 0},
12184 	{0x1D, 0x3e, 0},
12185 	{0x1E, 0x96, 0},
12186 	{0x1F, 0x4, 0},
12187 	{0x20, 0, 0},
12188 	{0x21, 0, 0},
12189 	{0x22, 0x17, 0},
12190 	{0x23, 0x6, 1},
12191 	{0x24, 0x1, 0},
12192 	{0x25, 0x6, 0},
12193 	{0x26, 0x4, 0},
12194 	{0x27, 0xd, 0},
12195 	{0x28, 0xd, 0},
12196 	{0x29, 0x30, 0},
12197 	{0x2A, 0x32, 0},
12198 	{0x2B, 0x8, 0},
12199 	{0x2C, 0x1c, 0},
12200 	{0x2D, 0x2, 0},
12201 	{0x2E, 0x4, 0},
12202 	{0x2F, 0x7f, 0},
12203 	{0x30, 0x27, 0},
12204 	{0x31, 0, 1},
12205 	{0x32, 0, 1},
12206 	{0x33, 0, 1},
12207 	{0x34, 0, 0},
12208 	{0x35, 0x20, 0},
12209 	{0x36, 0x18, 0},
12210 	{0x37, 0x7, 0},
12211 	{0x38, 0x66, 0},
12212 	{0x39, 0x66, 0},
12213 	{0x3C, 0xff, 0},
12214 	{0x3D, 0xff, 0},
12215 	{0x40, 0x16, 0},
12216 	{0x41, 0x7, 0},
12217 	{0x45, 0x3, 0},
12218 	{0x46, 0x1, 0},
12219 	{0x47, 0x7, 0},
12220 	{0x4B, 0x66, 0},
12221 	{0x4C, 0x66, 0},
12222 	{0x4D, 0, 0},
12223 	{0x4E, 0x4, 0},
12224 	{0x4F, 0xc, 0},
12225 	{0x50, 0, 0},
12226 	{0x51, 0x70, 1},
12227 	{0x56, 0x7, 0},
12228 	{0x57, 0, 0},
12229 	{0x58, 0, 0},
12230 	{0x59, 0x88, 1},
12231 	{0x5A, 0, 0},
12232 	{0x5B, 0x1f, 0},
12233 	{0x5C, 0x20, 1},
12234 	{0x5D, 0x1, 0},
12235 	{0x5E, 0x30, 0},
12236 	{0x5F, 0x70, 0},
12237 	{0x60, 0, 0},
12238 	{0x61, 0, 0},
12239 	{0x62, 0x33, 1},
12240 	{0x63, 0xf, 1},
12241 	{0x64, 0xf, 1},
12242 	{0x65, 0, 0},
12243 	{0x66, 0x11, 0},
12244 	{0x80, 0x3c, 0},
12245 	{0x81, 0x1, 1},
12246 	{0x82, 0xa, 0},
12247 	{0x85, 0, 0},
12248 	{0x86, 0x40, 0},
12249 	{0x87, 0x40, 0},
12250 	{0x88, 0x88, 0},
12251 	{0x89, 0x10, 0},
12252 	{0x8A, 0xf0, 0},
12253 	{0x8B, 0x10, 0},
12254 	{0x8C, 0xf0, 0},
12255 	{0x8F, 0x10, 0},
12256 	{0x90, 0x55, 0},
12257 	{0x91, 0x3f, 1},
12258 	{0x92, 0x36, 1},
12259 	{0x93, 0, 0},
12260 	{0x94, 0, 0},
12261 	{0x95, 0, 0},
12262 	{0x96, 0x87, 0},
12263 	{0x97, 0x11, 0},
12264 	{0x98, 0, 0},
12265 	{0x99, 0x33, 0},
12266 	{0x9A, 0x88, 0},
12267 	{0xA1, 0x20, 1},
12268 	{0xA2, 0x3f, 0},
12269 	{0xA3, 0x44, 0},
12270 	{0xA4, 0x8c, 0},
12271 	{0xA5, 0x6c, 0},
12272 	{0xA6, 0x22, 0},
12273 	{0xA7, 0xbe, 0},
12274 	{0xA8, 0x55, 0},
12275 	{0xAA, 0xc, 0},
12276 	{0xAB, 0xaa, 0},
12277 	{0xAC, 0x2, 0},
12278 	{0xAD, 0, 0},
12279 	{0xAE, 0x10, 0},
12280 	{0xAF, 0x1, 0},
12281 	{0xB0, 0, 0},
12282 	{0xB1, 0, 0},
12283 	{0xB2, 0x80, 0},
12284 	{0xB3, 0x60, 0},
12285 	{0xB4, 0x44, 0},
12286 	{0xB5, 0x55, 0},
12287 	{0xB6, 0x1, 0},
12288 	{0xB7, 0x55, 0},
12289 	{0xB8, 0x1, 0},
12290 	{0xB9, 0x5, 0},
12291 	{0xBA, 0x55, 0},
12292 	{0xBB, 0x55, 0},
12293 	{0xC3, 0, 0},
12294 	{0xC4, 0, 0},
12295 	{0xC5, 0, 0},
12296 	{0xC6, 0, 0},
12297 	{0xC7, 0, 0},
12298 	{0xC8, 0, 0},
12299 	{0xC9, 0x1, 1},
12300 	{0xCA, 0, 0},
12301 	{0xCB, 0, 0},
12302 	{0xCD, 0, 0},
12303 	{0xCE, 0x5e, 0},
12304 	{0xCF, 0xc, 0},
12305 	{0xD0, 0xc, 0},
12306 	{0xD1, 0xc, 0},
12307 	{0xD2, 0, 0},
12308 	{0xD3, 0x2b, 0},
12309 	{0xD4, 0xc, 0},
12310 	{0xD5, 0, 0},
12311 	{0xD6, 0x70, 1},
12312 	{0xDB, 0x7, 0},
12313 	{0xDC, 0, 0},
12314 	{0xDD, 0, 0},
12315 	{0xDE, 0x88, 1},
12316 	{0xDF, 0, 0},
12317 	{0xE0, 0x1f, 0},
12318 	{0xE1, 0x20, 1},
12319 	{0xE2, 0x1, 0},
12320 	{0xE3, 0x30, 0},
12321 	{0xE4, 0x70, 0},
12322 	{0xE5, 0, 0},
12323 	{0xE6, 0, 0},
12324 	{0xE7, 0x33, 0},
12325 	{0xE8, 0xf, 1},
12326 	{0xE9, 0xf, 1},
12327 	{0xEA, 0, 0},
12328 	{0xEB, 0x11, 0},
12329 	{0x105, 0x3c, 0},
12330 	{0x106, 0x1, 1},
12331 	{0x107, 0xa, 0},
12332 	{0x10A, 0, 0},
12333 	{0x10B, 0x40, 0},
12334 	{0x10C, 0x40, 0},
12335 	{0x10D, 0x88, 0},
12336 	{0x10E, 0x10, 0},
12337 	{0x10F, 0xf0, 0},
12338 	{0x110, 0x10, 0},
12339 	{0x111, 0xf0, 0},
12340 	{0x114, 0x10, 0},
12341 	{0x115, 0x55, 0},
12342 	{0x116, 0x3f, 1},
12343 	{0x117, 0x36, 1},
12344 	{0x118, 0, 0},
12345 	{0x119, 0, 0},
12346 	{0x11A, 0, 0},
12347 	{0x11B, 0x87, 0},
12348 	{0x11C, 0x11, 0},
12349 	{0x11D, 0, 0},
12350 	{0x11E, 0x33, 0},
12351 	{0x11F, 0x88, 0},
12352 	{0x126, 0x20, 1},
12353 	{0x127, 0x3f, 0},
12354 	{0x128, 0x44, 0},
12355 	{0x129, 0x8c, 0},
12356 	{0x12A, 0x6c, 0},
12357 	{0x12B, 0x22, 0},
12358 	{0x12C, 0xbe, 0},
12359 	{0x12D, 0x55, 0},
12360 	{0x12F, 0xc, 0},
12361 	{0x130, 0xaa, 0},
12362 	{0x131, 0x2, 0},
12363 	{0x132, 0, 0},
12364 	{0x133, 0x10, 0},
12365 	{0x134, 0x1, 0},
12366 	{0x135, 0, 0},
12367 	{0x136, 0, 0},
12368 	{0x137, 0x80, 0},
12369 	{0x138, 0x60, 0},
12370 	{0x139, 0x44, 0},
12371 	{0x13A, 0x55, 0},
12372 	{0x13B, 0x1, 0},
12373 	{0x13C, 0x55, 0},
12374 	{0x13D, 0x1, 0},
12375 	{0x13E, 0x5, 0},
12376 	{0x13F, 0x55, 0},
12377 	{0x140, 0x55, 0},
12378 	{0x148, 0, 0},
12379 	{0x149, 0, 0},
12380 	{0x14A, 0, 0},
12381 	{0x14B, 0, 0},
12382 	{0x14C, 0, 0},
12383 	{0x14D, 0, 0},
12384 	{0x14E, 0x1, 1},
12385 	{0x14F, 0, 0},
12386 	{0x150, 0, 0},
12387 	{0x154, 0xc, 0},
12388 	{0x155, 0xc, 0},
12389 	{0x156, 0xc, 0},
12390 	{0x157, 0, 0},
12391 	{0x158, 0x2b, 0},
12392 	{0x159, 0x84, 0},
12393 	{0x15A, 0x15, 0},
12394 	{0x15B, 0xf, 0},
12395 	{0x15C, 0, 0},
12396 	{0x15D, 0, 0},
12397 	{0x15E, 0, 1},
12398 	{0x15F, 0, 1},
12399 	{0x160, 0, 1},
12400 	{0x161, 0, 1},
12401 	{0x162, 0, 1},
12402 	{0x163, 0, 1},
12403 	{0x164, 0, 0},
12404 	{0x165, 0, 0},
12405 	{0x166, 0, 0},
12406 	{0x167, 0, 0},
12407 	{0x168, 0, 0},
12408 	{0x169, 0, 0},
12409 	{0x16A, 0, 1},
12410 	{0x16B, 0, 1},
12411 	{0x16C, 0, 1},
12412 	{0x16D, 0, 0},
12413 	{0x170, 0, 0},
12414 	{0x171, 0x77, 0},
12415 	{0x172, 0x77, 0},
12416 	{0x173, 0x77, 0},
12417 	{0x174, 0x77, 0},
12418 	{0x175, 0, 0},
12419 	{0x176, 0x3, 0},
12420 	{0x177, 0x37, 0},
12421 	{0x178, 0x3, 0},
12422 	{0x179, 0, 0},
12423 	{0x17B, 0x21, 0},
12424 	{0x17C, 0, 0},
12425 	{0x17D, 0xaa, 0},
12426 	{0x17E, 0, 0},
12427 	{0x190, 0, 0},
12428 	{0x191, 0x77, 0},
12429 	{0x192, 0x77, 0},
12430 	{0x193, 0x77, 0},
12431 	{0x194, 0x77, 0},
12432 	{0x195, 0, 0},
12433 	{0x196, 0x3, 0},
12434 	{0x197, 0x37, 0},
12435 	{0x198, 0x3, 0},
12436 	{0x199, 0, 0},
12437 	{0x19B, 0x21, 0},
12438 	{0x19C, 0, 0},
12439 	{0x19D, 0xaa, 0},
12440 	{0x19E, 0, 0},
12441 	{0x1A1, 0x2, 0},
12442 	{0x1A2, 0xf, 0},
12443 	{0x1A3, 0xf, 0},
12444 	{0x1A4, 0, 1},
12445 	{0x1A5, 0, 1},
12446 	{0x1A6, 0, 1},
12447 	{0x1A7, 0x2, 0},
12448 	{0x1A8, 0xf, 0},
12449 	{0x1A9, 0xf, 0},
12450 	{0x1AA, 0, 1},
12451 	{0x1AB, 0, 1},
12452 	{0x1AC, 0, 1},
12453 	{0x1AD, 0x84, 0},
12454 	{0x1AE, 0x60, 0},
12455 	{0x1AF, 0x47, 0},
12456 	{0x1B0, 0x47, 0},
12457 	{0x1B1, 0, 0},
12458 	{0x1B2, 0, 0},
12459 	{0x1B3, 0, 0},
12460 	{0x1B4, 0, 0},
12461 	{0x1B5, 0, 0},
12462 	{0x1B6, 0, 0},
12463 	{0x1B7, 0xc, 1},
12464 	{0x1B8, 0, 0},
12465 	{0x1B9, 0, 0},
12466 	{0x1BA, 0, 0},
12467 	{0x1BB, 0, 0},
12468 	{0x1BC, 0, 0},
12469 	{0x1BD, 0, 0},
12470 	{0x1BE, 0, 0},
12471 	{0x1BF, 0, 0},
12472 	{0x1C0, 0, 0},
12473 	{0x1C1, 0x1, 1},
12474 	{0x1C2, 0x80, 1},
12475 	{0x1C3, 0, 0},
12476 	{0x1C4, 0, 0},
12477 	{0x1C5, 0, 0},
12478 	{0x1C6, 0, 0},
12479 	{0x1C7, 0, 0},
12480 	{0x1C8, 0, 0},
12481 	{0x1C9, 0, 0},
12482 	{0x1CA, 0, 0},
12483 	{0xFFFF, 0, 0}
12484 };
12485 
12486 static struct radio_20xx_regs regs_2057_rev7[] = {
12487 	{0x00, 0, 1},
12488 	{0x01, 0x57, 1},
12489 	{0x02, 0x20, 1},
12490 	{0x03, 0x1f, 0},
12491 	{0x04, 0x4, 0},
12492 	{0x05, 0x2, 0},
12493 	{0x06, 0x1, 0},
12494 	{0x07, 0x1, 0},
12495 	{0x08, 0x1, 0},
12496 	{0x09, 0x69, 0},
12497 	{0x0A, 0x66, 0},
12498 	{0x0B, 0x6, 0},
12499 	{0x0C, 0x18, 0},
12500 	{0x0D, 0x3, 0},
12501 	{0x0E, 0x20, 0},
12502 	{0x0F, 0x20, 0},
12503 	{0x10, 0, 0},
12504 	{0x11, 0x7c, 0},
12505 	{0x12, 0x42, 0},
12506 	{0x13, 0xbd, 0},
12507 	{0x14, 0x7, 0},
12508 	{0x15, 0x87, 0},
12509 	{0x16, 0x8, 0},
12510 	{0x17, 0x17, 0},
12511 	{0x18, 0x7, 0},
12512 	{0x19, 0, 0},
12513 	{0x1A, 0x2, 0},
12514 	{0x1B, 0x13, 0},
12515 	{0x1C, 0x3e, 0},
12516 	{0x1D, 0x3e, 0},
12517 	{0x1E, 0x96, 0},
12518 	{0x1F, 0x4, 0},
12519 	{0x20, 0, 0},
12520 	{0x21, 0, 0},
12521 	{0x22, 0x17, 0},
12522 	{0x23, 0x6, 0},
12523 	{0x24, 0x1, 0},
12524 	{0x25, 0x6, 0},
12525 	{0x26, 0x4, 0},
12526 	{0x27, 0xd, 0},
12527 	{0x28, 0xd, 0},
12528 	{0x29, 0x30, 0},
12529 	{0x2A, 0x32, 0},
12530 	{0x2B, 0x8, 0},
12531 	{0x2C, 0x1c, 0},
12532 	{0x2D, 0x2, 0},
12533 	{0x2E, 0x4, 0},
12534 	{0x2F, 0x7f, 0},
12535 	{0x30, 0x27, 0},
12536 	{0x31, 0, 1},
12537 	{0x32, 0, 1},
12538 	{0x33, 0, 1},
12539 	{0x34, 0, 0},
12540 	{0x35, 0x20, 0},
12541 	{0x36, 0x18, 0},
12542 	{0x37, 0x7, 0},
12543 	{0x38, 0x66, 0},
12544 	{0x39, 0x66, 0},
12545 	{0x3A, 0x66, 0},
12546 	{0x3B, 0x66, 0},
12547 	{0x3C, 0xff, 0},
12548 	{0x3D, 0xff, 0},
12549 	{0x3E, 0xff, 0},
12550 	{0x3F, 0xff, 0},
12551 	{0x40, 0x16, 0},
12552 	{0x41, 0x7, 0},
12553 	{0x42, 0x19, 0},
12554 	{0x43, 0x7, 0},
12555 	{0x44, 0x6, 0},
12556 	{0x45, 0x3, 0},
12557 	{0x46, 0x1, 0},
12558 	{0x47, 0x7, 0},
12559 	{0x48, 0x33, 0},
12560 	{0x49, 0x5, 0},
12561 	{0x4A, 0x77, 0},
12562 	{0x4B, 0x66, 0},
12563 	{0x4C, 0x66, 0},
12564 	{0x4D, 0, 0},
12565 	{0x4E, 0x4, 0},
12566 	{0x4F, 0xc, 0},
12567 	{0x50, 0, 0},
12568 	{0x51, 0x70, 1},
12569 	{0x56, 0x7, 0},
12570 	{0x57, 0, 0},
12571 	{0x58, 0, 0},
12572 	{0x59, 0x88, 1},
12573 	{0x5A, 0, 0},
12574 	{0x5B, 0x1f, 0},
12575 	{0x5C, 0x20, 1},
12576 	{0x5D, 0x1, 0},
12577 	{0x5E, 0x30, 0},
12578 	{0x5F, 0x70, 0},
12579 	{0x60, 0, 0},
12580 	{0x61, 0, 0},
12581 	{0x62, 0x33, 1},
12582 	{0x63, 0xf, 1},
12583 	{0x64, 0x13, 1},
12584 	{0x65, 0, 0},
12585 	{0x66, 0xee, 1},
12586 	{0x69, 0, 0},
12587 	{0x6A, 0x7e, 0},
12588 	{0x6B, 0x3f, 0},
12589 	{0x6C, 0x7f, 0},
12590 	{0x6D, 0x78, 0},
12591 	{0x6E, 0x58, 1},
12592 	{0x6F, 0x88, 0},
12593 	{0x70, 0x8, 0},
12594 	{0x71, 0xf, 0},
12595 	{0x72, 0xbc, 0},
12596 	{0x73, 0x8, 0},
12597 	{0x74, 0x60, 0},
12598 	{0x75, 0x13, 1},
12599 	{0x76, 0x70, 0},
12600 	{0x77, 0, 0},
12601 	{0x78, 0, 0},
12602 	{0x79, 0, 0},
12603 	{0x7A, 0x33, 0},
12604 	{0x7B, 0x13, 1},
12605 	{0x7C, 0x14, 1},
12606 	{0x7D, 0xee, 1},
12607 	{0x80, 0x3c, 0},
12608 	{0x81, 0x1, 1},
12609 	{0x82, 0xa, 0},
12610 	{0x83, 0x9d, 0},
12611 	{0x84, 0xa, 0},
12612 	{0x85, 0, 0},
12613 	{0x86, 0x40, 0},
12614 	{0x87, 0x40, 0},
12615 	{0x88, 0x88, 0},
12616 	{0x89, 0x10, 0},
12617 	{0x8A, 0xf0, 0},
12618 	{0x8B, 0x10, 0},
12619 	{0x8C, 0xf0, 0},
12620 	{0x8D, 0, 0},
12621 	{0x8E, 0, 0},
12622 	{0x8F, 0x10, 0},
12623 	{0x90, 0x55, 0},
12624 	{0x91, 0x3f, 1},
12625 	{0x92, 0x36, 1},
12626 	{0x93, 0, 0},
12627 	{0x94, 0, 0},
12628 	{0x95, 0, 0},
12629 	{0x96, 0x87, 0},
12630 	{0x97, 0x11, 0},
12631 	{0x98, 0, 0},
12632 	{0x99, 0x33, 0},
12633 	{0x9A, 0x88, 0},
12634 	{0x9B, 0, 0},
12635 	{0x9C, 0x87, 0},
12636 	{0x9D, 0x11, 0},
12637 	{0x9E, 0, 0},
12638 	{0x9F, 0x33, 0},
12639 	{0xA0, 0x88, 0},
12640 	{0xA1, 0x20, 1},
12641 	{0xA2, 0x3f, 0},
12642 	{0xA3, 0x44, 0},
12643 	{0xA4, 0x8c, 0},
12644 	{0xA5, 0x6c, 0},
12645 	{0xA6, 0x22, 0},
12646 	{0xA7, 0xbe, 0},
12647 	{0xA8, 0x55, 0},
12648 	{0xAA, 0xc, 0},
12649 	{0xAB, 0xaa, 0},
12650 	{0xAC, 0x2, 0},
12651 	{0xAD, 0, 0},
12652 	{0xAE, 0x10, 0},
12653 	{0xAF, 0x1, 0},
12654 	{0xB0, 0, 0},
12655 	{0xB1, 0, 0},
12656 	{0xB2, 0x80, 0},
12657 	{0xB3, 0x60, 0},
12658 	{0xB4, 0x44, 0},
12659 	{0xB5, 0x55, 0},
12660 	{0xB6, 0x1, 0},
12661 	{0xB7, 0x55, 0},
12662 	{0xB8, 0x1, 0},
12663 	{0xB9, 0x5, 0},
12664 	{0xBA, 0x55, 0},
12665 	{0xBB, 0x55, 0},
12666 	{0xC1, 0, 0},
12667 	{0xC2, 0, 0},
12668 	{0xC3, 0, 0},
12669 	{0xC4, 0, 0},
12670 	{0xC5, 0, 0},
12671 	{0xC6, 0, 0},
12672 	{0xC7, 0, 0},
12673 	{0xC8, 0, 0},
12674 	{0xC9, 0, 0},
12675 	{0xCA, 0, 0},
12676 	{0xCB, 0, 0},
12677 	{0xCC, 0, 0},
12678 	{0xCD, 0, 0},
12679 	{0xCE, 0x5e, 0},
12680 	{0xCF, 0xc, 0},
12681 	{0xD0, 0xc, 0},
12682 	{0xD1, 0xc, 0},
12683 	{0xD2, 0, 0},
12684 	{0xD3, 0x2b, 0},
12685 	{0xD4, 0xc, 0},
12686 	{0xD5, 0, 0},
12687 	{0xD6, 0x70, 1},
12688 	{0xDB, 0x7, 0},
12689 	{0xDC, 0, 0},
12690 	{0xDD, 0, 0},
12691 	{0xDE, 0x88, 1},
12692 	{0xDF, 0, 0},
12693 	{0xE0, 0x1f, 0},
12694 	{0xE1, 0x20, 1},
12695 	{0xE2, 0x1, 0},
12696 	{0xE3, 0x30, 0},
12697 	{0xE4, 0x70, 0},
12698 	{0xE5, 0, 0},
12699 	{0xE6, 0, 0},
12700 	{0xE7, 0x33, 0},
12701 	{0xE8, 0xf, 1},
12702 	{0xE9, 0x13, 1},
12703 	{0xEA, 0, 0},
12704 	{0xEB, 0xee, 1},
12705 	{0xEE, 0, 0},
12706 	{0xEF, 0x7e, 0},
12707 	{0xF0, 0x3f, 0},
12708 	{0xF1, 0x7f, 0},
12709 	{0xF2, 0x78, 0},
12710 	{0xF3, 0x58, 1},
12711 	{0xF4, 0x88, 0},
12712 	{0xF5, 0x8, 0},
12713 	{0xF6, 0xf, 0},
12714 	{0xF7, 0xbc, 0},
12715 	{0xF8, 0x8, 0},
12716 	{0xF9, 0x60, 0},
12717 	{0xFA, 0x13, 1},
12718 	{0xFB, 0x70, 0},
12719 	{0xFC, 0, 0},
12720 	{0xFD, 0, 0},
12721 	{0xFE, 0, 0},
12722 	{0xFF, 0x33, 0},
12723 	{0x100, 0x13, 1},
12724 	{0x101, 0x14, 1},
12725 	{0x102, 0xee, 1},
12726 	{0x105, 0x3c, 0},
12727 	{0x106, 0x1, 1},
12728 	{0x107, 0xa, 0},
12729 	{0x108, 0x9d, 0},
12730 	{0x109, 0xa, 0},
12731 	{0x10A, 0, 0},
12732 	{0x10B, 0x40, 0},
12733 	{0x10C, 0x40, 0},
12734 	{0x10D, 0x88, 0},
12735 	{0x10E, 0x10, 0},
12736 	{0x10F, 0xf0, 0},
12737 	{0x110, 0x10, 0},
12738 	{0x111, 0xf0, 0},
12739 	{0x112, 0, 0},
12740 	{0x113, 0, 0},
12741 	{0x114, 0x10, 0},
12742 	{0x115, 0x55, 0},
12743 	{0x116, 0x3f, 1},
12744 	{0x117, 0x36, 1},
12745 	{0x118, 0, 0},
12746 	{0x119, 0, 0},
12747 	{0x11A, 0, 0},
12748 	{0x11B, 0x87, 0},
12749 	{0x11C, 0x11, 0},
12750 	{0x11D, 0, 0},
12751 	{0x11E, 0x33, 0},
12752 	{0x11F, 0x88, 0},
12753 	{0x120, 0, 0},
12754 	{0x121, 0x87, 0},
12755 	{0x122, 0x11, 0},
12756 	{0x123, 0, 0},
12757 	{0x124, 0x33, 0},
12758 	{0x125, 0x88, 0},
12759 	{0x126, 0x20, 1},
12760 	{0x127, 0x3f, 0},
12761 	{0x128, 0x44, 0},
12762 	{0x129, 0x8c, 0},
12763 	{0x12A, 0x6c, 0},
12764 	{0x12B, 0x22, 0},
12765 	{0x12C, 0xbe, 0},
12766 	{0x12D, 0x55, 0},
12767 	{0x12F, 0xc, 0},
12768 	{0x130, 0xaa, 0},
12769 	{0x131, 0x2, 0},
12770 	{0x132, 0, 0},
12771 	{0x133, 0x10, 0},
12772 	{0x134, 0x1, 0},
12773 	{0x135, 0, 0},
12774 	{0x136, 0, 0},
12775 	{0x137, 0x80, 0},
12776 	{0x138, 0x60, 0},
12777 	{0x139, 0x44, 0},
12778 	{0x13A, 0x55, 0},
12779 	{0x13B, 0x1, 0},
12780 	{0x13C, 0x55, 0},
12781 	{0x13D, 0x1, 0},
12782 	{0x13E, 0x5, 0},
12783 	{0x13F, 0x55, 0},
12784 	{0x140, 0x55, 0},
12785 	{0x146, 0, 0},
12786 	{0x147, 0, 0},
12787 	{0x148, 0, 0},
12788 	{0x149, 0, 0},
12789 	{0x14A, 0, 0},
12790 	{0x14B, 0, 0},
12791 	{0x14C, 0, 0},
12792 	{0x14D, 0, 0},
12793 	{0x14E, 0, 0},
12794 	{0x14F, 0, 0},
12795 	{0x150, 0, 0},
12796 	{0x151, 0, 0},
12797 	{0x154, 0xc, 0},
12798 	{0x155, 0xc, 0},
12799 	{0x156, 0xc, 0},
12800 	{0x157, 0, 0},
12801 	{0x158, 0x2b, 0},
12802 	{0x159, 0x84, 0},
12803 	{0x15A, 0x15, 0},
12804 	{0x15B, 0xf, 0},
12805 	{0x15C, 0, 0},
12806 	{0x15D, 0, 0},
12807 	{0x15E, 0, 1},
12808 	{0x15F, 0, 1},
12809 	{0x160, 0, 1},
12810 	{0x161, 0, 1},
12811 	{0x162, 0, 1},
12812 	{0x163, 0, 1},
12813 	{0x164, 0, 0},
12814 	{0x165, 0, 0},
12815 	{0x166, 0, 0},
12816 	{0x167, 0, 0},
12817 	{0x168, 0, 0},
12818 	{0x169, 0, 0},
12819 	{0x16A, 0, 1},
12820 	{0x16B, 0, 1},
12821 	{0x16C, 0, 1},
12822 	{0x16D, 0, 0},
12823 	{0x170, 0, 0},
12824 	{0x171, 0x77, 0},
12825 	{0x172, 0x77, 0},
12826 	{0x173, 0x77, 0},
12827 	{0x174, 0x77, 0},
12828 	{0x175, 0, 0},
12829 	{0x176, 0x3, 0},
12830 	{0x177, 0x37, 0},
12831 	{0x178, 0x3, 0},
12832 	{0x179, 0, 0},
12833 	{0x17A, 0x21, 0},
12834 	{0x17B, 0x21, 0},
12835 	{0x17C, 0, 0},
12836 	{0x17D, 0xaa, 0},
12837 	{0x17E, 0, 0},
12838 	{0x17F, 0xaa, 0},
12839 	{0x180, 0, 0},
12840 	{0x190, 0, 0},
12841 	{0x191, 0x77, 0},
12842 	{0x192, 0x77, 0},
12843 	{0x193, 0x77, 0},
12844 	{0x194, 0x77, 0},
12845 	{0x195, 0, 0},
12846 	{0x196, 0x3, 0},
12847 	{0x197, 0x37, 0},
12848 	{0x198, 0x3, 0},
12849 	{0x199, 0, 0},
12850 	{0x19A, 0x21, 0},
12851 	{0x19B, 0x21, 0},
12852 	{0x19C, 0, 0},
12853 	{0x19D, 0xaa, 0},
12854 	{0x19E, 0, 0},
12855 	{0x19F, 0xaa, 0},
12856 	{0x1A0, 0, 0},
12857 	{0x1A1, 0x2, 0},
12858 	{0x1A2, 0xf, 0},
12859 	{0x1A3, 0xf, 0},
12860 	{0x1A4, 0, 1},
12861 	{0x1A5, 0, 1},
12862 	{0x1A6, 0, 1},
12863 	{0x1A7, 0x2, 0},
12864 	{0x1A8, 0xf, 0},
12865 	{0x1A9, 0xf, 0},
12866 	{0x1AA, 0, 1},
12867 	{0x1AB, 0, 1},
12868 	{0x1AC, 0, 1},
12869 	{0x1AD, 0x84, 0},
12870 	{0x1AE, 0x60, 0},
12871 	{0x1AF, 0x47, 0},
12872 	{0x1B0, 0x47, 0},
12873 	{0x1B1, 0, 0},
12874 	{0x1B2, 0, 0},
12875 	{0x1B3, 0, 0},
12876 	{0x1B4, 0, 0},
12877 	{0x1B5, 0, 0},
12878 	{0x1B6, 0, 0},
12879 	{0x1B7, 0x5, 1},
12880 	{0x1B8, 0, 0},
12881 	{0x1B9, 0, 0},
12882 	{0x1BA, 0, 0},
12883 	{0x1BB, 0, 0},
12884 	{0x1BC, 0, 0},
12885 	{0x1BD, 0, 0},
12886 	{0x1BE, 0, 0},
12887 	{0x1BF, 0, 0},
12888 	{0x1C0, 0, 0},
12889 	{0x1C1, 0, 0},
12890 	{0x1C2, 0xa0, 1},
12891 	{0x1C3, 0, 0},
12892 	{0x1C4, 0, 0},
12893 	{0x1C5, 0, 0},
12894 	{0x1C6, 0, 0},
12895 	{0x1C7, 0, 0},
12896 	{0x1C8, 0, 0},
12897 	{0x1C9, 0, 0},
12898 	{0x1CA, 0, 0},
12899 	{0xFFFF, 0, 0}
12900 };
12901 
12902 static struct radio_20xx_regs regs_2057_rev8[] = {
12903 	{0x00, 0x8, 1},
12904 	{0x01, 0x57, 1},
12905 	{0x02, 0x20, 1},
12906 	{0x03, 0x1f, 0},
12907 	{0x04, 0x4, 0},
12908 	{0x05, 0x2, 0},
12909 	{0x06, 0x1, 0},
12910 	{0x07, 0x1, 0},
12911 	{0x08, 0x1, 0},
12912 	{0x09, 0x69, 0},
12913 	{0x0A, 0x66, 0},
12914 	{0x0B, 0x6, 0},
12915 	{0x0C, 0x18, 0},
12916 	{0x0D, 0x3, 0},
12917 	{0x0E, 0x20, 0},
12918 	{0x0F, 0x20, 0},
12919 	{0x10, 0, 0},
12920 	{0x11, 0x7c, 0},
12921 	{0x12, 0x42, 0},
12922 	{0x13, 0xbd, 0},
12923 	{0x14, 0x7, 0},
12924 	{0x15, 0x87, 0},
12925 	{0x16, 0x8, 0},
12926 	{0x17, 0x17, 0},
12927 	{0x18, 0x7, 0},
12928 	{0x19, 0, 0},
12929 	{0x1A, 0x2, 0},
12930 	{0x1B, 0x13, 0},
12931 	{0x1C, 0x3e, 0},
12932 	{0x1D, 0x3e, 0},
12933 	{0x1E, 0x96, 0},
12934 	{0x1F, 0x4, 0},
12935 	{0x20, 0, 0},
12936 	{0x21, 0, 0},
12937 	{0x22, 0x17, 0},
12938 	{0x23, 0x6, 0},
12939 	{0x24, 0x1, 0},
12940 	{0x25, 0x6, 0},
12941 	{0x26, 0x4, 0},
12942 	{0x27, 0xd, 0},
12943 	{0x28, 0xd, 0},
12944 	{0x29, 0x30, 0},
12945 	{0x2A, 0x32, 0},
12946 	{0x2B, 0x8, 0},
12947 	{0x2C, 0x1c, 0},
12948 	{0x2D, 0x2, 0},
12949 	{0x2E, 0x4, 0},
12950 	{0x2F, 0x7f, 0},
12951 	{0x30, 0x27, 0},
12952 	{0x31, 0, 1},
12953 	{0x32, 0, 1},
12954 	{0x33, 0, 1},
12955 	{0x34, 0, 0},
12956 	{0x35, 0x20, 0},
12957 	{0x36, 0x18, 0},
12958 	{0x37, 0x7, 0},
12959 	{0x38, 0x66, 0},
12960 	{0x39, 0x66, 0},
12961 	{0x3A, 0x66, 0},
12962 	{0x3B, 0x66, 0},
12963 	{0x3C, 0xff, 0},
12964 	{0x3D, 0xff, 0},
12965 	{0x3E, 0xff, 0},
12966 	{0x3F, 0xff, 0},
12967 	{0x40, 0x16, 0},
12968 	{0x41, 0x7, 0},
12969 	{0x42, 0x19, 0},
12970 	{0x43, 0x7, 0},
12971 	{0x44, 0x6, 0},
12972 	{0x45, 0x3, 0},
12973 	{0x46, 0x1, 0},
12974 	{0x47, 0x7, 0},
12975 	{0x48, 0x33, 0},
12976 	{0x49, 0x5, 0},
12977 	{0x4A, 0x77, 0},
12978 	{0x4B, 0x66, 0},
12979 	{0x4C, 0x66, 0},
12980 	{0x4D, 0, 0},
12981 	{0x4E, 0x4, 0},
12982 	{0x4F, 0xc, 0},
12983 	{0x50, 0, 0},
12984 	{0x51, 0x70, 1},
12985 	{0x56, 0x7, 0},
12986 	{0x57, 0, 0},
12987 	{0x58, 0, 0},
12988 	{0x59, 0x88, 1},
12989 	{0x5A, 0, 0},
12990 	{0x5B, 0x1f, 0},
12991 	{0x5C, 0x20, 1},
12992 	{0x5D, 0x1, 0},
12993 	{0x5E, 0x30, 0},
12994 	{0x5F, 0x70, 0},
12995 	{0x60, 0, 0},
12996 	{0x61, 0, 0},
12997 	{0x62, 0x33, 1},
12998 	{0x63, 0xf, 1},
12999 	{0x64, 0xf, 1},
13000 	{0x65, 0, 0},
13001 	{0x66, 0x11, 0},
13002 	{0x69, 0, 0},
13003 	{0x6A, 0x7e, 0},
13004 	{0x6B, 0x3f, 0},
13005 	{0x6C, 0x7f, 0},
13006 	{0x6D, 0x78, 0},
13007 	{0x6E, 0x58, 1},
13008 	{0x6F, 0x88, 0},
13009 	{0x70, 0x8, 0},
13010 	{0x71, 0xf, 0},
13011 	{0x72, 0xbc, 0},
13012 	{0x73, 0x8, 0},
13013 	{0x74, 0x60, 0},
13014 	{0x75, 0x13, 1},
13015 	{0x76, 0x70, 0},
13016 	{0x77, 0, 0},
13017 	{0x78, 0, 0},
13018 	{0x79, 0, 0},
13019 	{0x7A, 0x33, 0},
13020 	{0x7B, 0x13, 1},
13021 	{0x7C, 0xf, 1},
13022 	{0x7D, 0xee, 1},
13023 	{0x80, 0x3c, 0},
13024 	{0x81, 0x1, 1},
13025 	{0x82, 0xa, 0},
13026 	{0x83, 0x9d, 0},
13027 	{0x84, 0xa, 0},
13028 	{0x85, 0, 0},
13029 	{0x86, 0x40, 0},
13030 	{0x87, 0x40, 0},
13031 	{0x88, 0x88, 0},
13032 	{0x89, 0x10, 0},
13033 	{0x8A, 0xf0, 0},
13034 	{0x8B, 0x10, 0},
13035 	{0x8C, 0xf0, 0},
13036 	{0x8D, 0, 0},
13037 	{0x8E, 0, 0},
13038 	{0x8F, 0x10, 0},
13039 	{0x90, 0x55, 0},
13040 	{0x91, 0x3f, 1},
13041 	{0x92, 0x36, 1},
13042 	{0x93, 0, 0},
13043 	{0x94, 0, 0},
13044 	{0x95, 0, 0},
13045 	{0x96, 0x87, 0},
13046 	{0x97, 0x11, 0},
13047 	{0x98, 0, 0},
13048 	{0x99, 0x33, 0},
13049 	{0x9A, 0x88, 0},
13050 	{0x9B, 0, 0},
13051 	{0x9C, 0x87, 0},
13052 	{0x9D, 0x11, 0},
13053 	{0x9E, 0, 0},
13054 	{0x9F, 0x33, 0},
13055 	{0xA0, 0x88, 0},
13056 	{0xA1, 0x20, 1},
13057 	{0xA2, 0x3f, 0},
13058 	{0xA3, 0x44, 0},
13059 	{0xA4, 0x8c, 0},
13060 	{0xA5, 0x6c, 0},
13061 	{0xA6, 0x22, 0},
13062 	{0xA7, 0xbe, 0},
13063 	{0xA8, 0x55, 0},
13064 	{0xAA, 0xc, 0},
13065 	{0xAB, 0xaa, 0},
13066 	{0xAC, 0x2, 0},
13067 	{0xAD, 0, 0},
13068 	{0xAE, 0x10, 0},
13069 	{0xAF, 0x1, 0},
13070 	{0xB0, 0, 0},
13071 	{0xB1, 0, 0},
13072 	{0xB2, 0x80, 0},
13073 	{0xB3, 0x60, 0},
13074 	{0xB4, 0x44, 0},
13075 	{0xB5, 0x55, 0},
13076 	{0xB6, 0x1, 0},
13077 	{0xB7, 0x55, 0},
13078 	{0xB8, 0x1, 0},
13079 	{0xB9, 0x5, 0},
13080 	{0xBA, 0x55, 0},
13081 	{0xBB, 0x55, 0},
13082 	{0xC1, 0, 0},
13083 	{0xC2, 0, 0},
13084 	{0xC3, 0, 0},
13085 	{0xC4, 0, 0},
13086 	{0xC5, 0, 0},
13087 	{0xC6, 0, 0},
13088 	{0xC7, 0, 0},
13089 	{0xC8, 0, 0},
13090 	{0xC9, 0x1, 1},
13091 	{0xCA, 0, 0},
13092 	{0xCB, 0, 0},
13093 	{0xCC, 0, 0},
13094 	{0xCD, 0, 0},
13095 	{0xCE, 0x5e, 0},
13096 	{0xCF, 0xc, 0},
13097 	{0xD0, 0xc, 0},
13098 	{0xD1, 0xc, 0},
13099 	{0xD2, 0, 0},
13100 	{0xD3, 0x2b, 0},
13101 	{0xD4, 0xc, 0},
13102 	{0xD5, 0, 0},
13103 	{0xD6, 0x70, 1},
13104 	{0xDB, 0x7, 0},
13105 	{0xDC, 0, 0},
13106 	{0xDD, 0, 0},
13107 	{0xDE, 0x88, 1},
13108 	{0xDF, 0, 0},
13109 	{0xE0, 0x1f, 0},
13110 	{0xE1, 0x20, 1},
13111 	{0xE2, 0x1, 0},
13112 	{0xE3, 0x30, 0},
13113 	{0xE4, 0x70, 0},
13114 	{0xE5, 0, 0},
13115 	{0xE6, 0, 0},
13116 	{0xE7, 0x33, 0},
13117 	{0xE8, 0xf, 1},
13118 	{0xE9, 0xf, 1},
13119 	{0xEA, 0, 0},
13120 	{0xEB, 0x11, 0},
13121 	{0xEE, 0, 0},
13122 	{0xEF, 0x7e, 0},
13123 	{0xF0, 0x3f, 0},
13124 	{0xF1, 0x7f, 0},
13125 	{0xF2, 0x78, 0},
13126 	{0xF3, 0x58, 1},
13127 	{0xF4, 0x88, 0},
13128 	{0xF5, 0x8, 0},
13129 	{0xF6, 0xf, 0},
13130 	{0xF7, 0xbc, 0},
13131 	{0xF8, 0x8, 0},
13132 	{0xF9, 0x60, 0},
13133 	{0xFA, 0x13, 1},
13134 	{0xFB, 0x70, 0},
13135 	{0xFC, 0, 0},
13136 	{0xFD, 0, 0},
13137 	{0xFE, 0, 0},
13138 	{0xFF, 0x33, 0},
13139 	{0x100, 0x13, 1},
13140 	{0x101, 0xf, 1},
13141 	{0x102, 0xee, 1},
13142 	{0x105, 0x3c, 0},
13143 	{0x106, 0x1, 1},
13144 	{0x107, 0xa, 0},
13145 	{0x108, 0x9d, 0},
13146 	{0x109, 0xa, 0},
13147 	{0x10A, 0, 0},
13148 	{0x10B, 0x40, 0},
13149 	{0x10C, 0x40, 0},
13150 	{0x10D, 0x88, 0},
13151 	{0x10E, 0x10, 0},
13152 	{0x10F, 0xf0, 0},
13153 	{0x110, 0x10, 0},
13154 	{0x111, 0xf0, 0},
13155 	{0x112, 0, 0},
13156 	{0x113, 0, 0},
13157 	{0x114, 0x10, 0},
13158 	{0x115, 0x55, 0},
13159 	{0x116, 0x3f, 1},
13160 	{0x117, 0x36, 1},
13161 	{0x118, 0, 0},
13162 	{0x119, 0, 0},
13163 	{0x11A, 0, 0},
13164 	{0x11B, 0x87, 0},
13165 	{0x11C, 0x11, 0},
13166 	{0x11D, 0, 0},
13167 	{0x11E, 0x33, 0},
13168 	{0x11F, 0x88, 0},
13169 	{0x120, 0, 0},
13170 	{0x121, 0x87, 0},
13171 	{0x122, 0x11, 0},
13172 	{0x123, 0, 0},
13173 	{0x124, 0x33, 0},
13174 	{0x125, 0x88, 0},
13175 	{0x126, 0x20, 1},
13176 	{0x127, 0x3f, 0},
13177 	{0x128, 0x44, 0},
13178 	{0x129, 0x8c, 0},
13179 	{0x12A, 0x6c, 0},
13180 	{0x12B, 0x22, 0},
13181 	{0x12C, 0xbe, 0},
13182 	{0x12D, 0x55, 0},
13183 	{0x12F, 0xc, 0},
13184 	{0x130, 0xaa, 0},
13185 	{0x131, 0x2, 0},
13186 	{0x132, 0, 0},
13187 	{0x133, 0x10, 0},
13188 	{0x134, 0x1, 0},
13189 	{0x135, 0, 0},
13190 	{0x136, 0, 0},
13191 	{0x137, 0x80, 0},
13192 	{0x138, 0x60, 0},
13193 	{0x139, 0x44, 0},
13194 	{0x13A, 0x55, 0},
13195 	{0x13B, 0x1, 0},
13196 	{0x13C, 0x55, 0},
13197 	{0x13D, 0x1, 0},
13198 	{0x13E, 0x5, 0},
13199 	{0x13F, 0x55, 0},
13200 	{0x140, 0x55, 0},
13201 	{0x146, 0, 0},
13202 	{0x147, 0, 0},
13203 	{0x148, 0, 0},
13204 	{0x149, 0, 0},
13205 	{0x14A, 0, 0},
13206 	{0x14B, 0, 0},
13207 	{0x14C, 0, 0},
13208 	{0x14D, 0, 0},
13209 	{0x14E, 0x1, 1},
13210 	{0x14F, 0, 0},
13211 	{0x150, 0, 0},
13212 	{0x151, 0, 0},
13213 	{0x154, 0xc, 0},
13214 	{0x155, 0xc, 0},
13215 	{0x156, 0xc, 0},
13216 	{0x157, 0, 0},
13217 	{0x158, 0x2b, 0},
13218 	{0x159, 0x84, 0},
13219 	{0x15A, 0x15, 0},
13220 	{0x15B, 0xf, 0},
13221 	{0x15C, 0, 0},
13222 	{0x15D, 0, 0},
13223 	{0x15E, 0, 1},
13224 	{0x15F, 0, 1},
13225 	{0x160, 0, 1},
13226 	{0x161, 0, 1},
13227 	{0x162, 0, 1},
13228 	{0x163, 0, 1},
13229 	{0x164, 0, 0},
13230 	{0x165, 0, 0},
13231 	{0x166, 0, 0},
13232 	{0x167, 0, 0},
13233 	{0x168, 0, 0},
13234 	{0x169, 0, 0},
13235 	{0x16A, 0, 1},
13236 	{0x16B, 0, 1},
13237 	{0x16C, 0, 1},
13238 	{0x16D, 0, 0},
13239 	{0x170, 0, 0},
13240 	{0x171, 0x77, 0},
13241 	{0x172, 0x77, 0},
13242 	{0x173, 0x77, 0},
13243 	{0x174, 0x77, 0},
13244 	{0x175, 0, 0},
13245 	{0x176, 0x3, 0},
13246 	{0x177, 0x37, 0},
13247 	{0x178, 0x3, 0},
13248 	{0x179, 0, 0},
13249 	{0x17A, 0x21, 0},
13250 	{0x17B, 0x21, 0},
13251 	{0x17C, 0, 0},
13252 	{0x17D, 0xaa, 0},
13253 	{0x17E, 0, 0},
13254 	{0x17F, 0xaa, 0},
13255 	{0x180, 0, 0},
13256 	{0x190, 0, 0},
13257 	{0x191, 0x77, 0},
13258 	{0x192, 0x77, 0},
13259 	{0x193, 0x77, 0},
13260 	{0x194, 0x77, 0},
13261 	{0x195, 0, 0},
13262 	{0x196, 0x3, 0},
13263 	{0x197, 0x37, 0},
13264 	{0x198, 0x3, 0},
13265 	{0x199, 0, 0},
13266 	{0x19A, 0x21, 0},
13267 	{0x19B, 0x21, 0},
13268 	{0x19C, 0, 0},
13269 	{0x19D, 0xaa, 0},
13270 	{0x19E, 0, 0},
13271 	{0x19F, 0xaa, 0},
13272 	{0x1A0, 0, 0},
13273 	{0x1A1, 0x2, 0},
13274 	{0x1A2, 0xf, 0},
13275 	{0x1A3, 0xf, 0},
13276 	{0x1A4, 0, 1},
13277 	{0x1A5, 0, 1},
13278 	{0x1A6, 0, 1},
13279 	{0x1A7, 0x2, 0},
13280 	{0x1A8, 0xf, 0},
13281 	{0x1A9, 0xf, 0},
13282 	{0x1AA, 0, 1},
13283 	{0x1AB, 0, 1},
13284 	{0x1AC, 0, 1},
13285 	{0x1AD, 0x84, 0},
13286 	{0x1AE, 0x60, 0},
13287 	{0x1AF, 0x47, 0},
13288 	{0x1B0, 0x47, 0},
13289 	{0x1B1, 0, 0},
13290 	{0x1B2, 0, 0},
13291 	{0x1B3, 0, 0},
13292 	{0x1B4, 0, 0},
13293 	{0x1B5, 0, 0},
13294 	{0x1B6, 0, 0},
13295 	{0x1B7, 0x5, 1},
13296 	{0x1B8, 0, 0},
13297 	{0x1B9, 0, 0},
13298 	{0x1BA, 0, 0},
13299 	{0x1BB, 0, 0},
13300 	{0x1BC, 0, 0},
13301 	{0x1BD, 0, 0},
13302 	{0x1BE, 0, 0},
13303 	{0x1BF, 0, 0},
13304 	{0x1C0, 0, 0},
13305 	{0x1C1, 0, 0},
13306 	{0x1C2, 0xa0, 1},
13307 	{0x1C3, 0, 0},
13308 	{0x1C4, 0, 0},
13309 	{0x1C5, 0, 0},
13310 	{0x1C6, 0, 0},
13311 	{0x1C7, 0, 0},
13312 	{0x1C8, 0, 0},
13313 	{0x1C9, 0, 0},
13314 	{0x1CA, 0, 0},
13315 	{0xFFFF, 0, 0}
13316 };
13317 
13318 static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13319 
13320 static s32 nphy_lnagain_est0[] = { -315, 40370 };
13321 static s32 nphy_lnagain_est1[] = { -224, 23242 };
13322 
13323 static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13324 	{
13325 		{0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13326 		{0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13327 		{0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13328 		{0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13329 		{0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13330 		{0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13331 		{0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13332 		{0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13333 		{0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13334 	},
13335 	{
13336 		{0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13337 		{0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13338 		{0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13339 		{0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13340 		{0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13341 		{0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13342 		{0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13343 		{0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13344 		{0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13345 	}
13346 };
13347 
13348 static const u32 nphy_tpc_txgain[] = {
13349 	0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13350 	0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13351 	0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13352 	0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13353 	0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13354 	0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13355 	0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13356 	0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13357 	0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13358 	0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13359 	0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13360 	0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13361 	0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13362 	0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13363 	0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13364 	0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13365 	0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13366 	0x03902942, 0x03902844, 0x03902842, 0x03902744,
13367 	0x03902742, 0x03902644, 0x03902642, 0x03902544,
13368 	0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13369 	0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13370 	0x03802842, 0x03802744, 0x03802742, 0x03802644,
13371 	0x03802642, 0x03802544, 0x03802542, 0x03802444,
13372 	0x03802442, 0x03802344, 0x03802342, 0x03802244,
13373 	0x03802242, 0x03802144, 0x03802142, 0x03802044,
13374 	0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13375 	0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13376 	0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13377 	0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13378 	0x03801842, 0x03801744, 0x03801742, 0x03801644,
13379 	0x03801642, 0x03801544, 0x03801542, 0x03801444,
13380 	0x03801442, 0x03801344, 0x03801342, 0x00002b00
13381 };
13382 
13383 static const u16 nphy_tpc_loscale[] = {
13384 	256, 256, 271, 271, 287, 256, 256, 271,
13385 	271, 287, 287, 304, 304, 256, 256, 271,
13386 	271, 287, 287, 304, 304, 322, 322, 341,
13387 	341, 362, 362, 383, 383, 256, 256, 271,
13388 	271, 287, 287, 304, 304, 322, 322, 256,
13389 	256, 271, 271, 287, 287, 304, 304, 322,
13390 	322, 341, 341, 362, 362, 256, 256, 271,
13391 	271, 287, 287, 304, 304, 322, 322, 256,
13392 	256, 271, 271, 287, 287, 304, 304, 322,
13393 	322, 341, 341, 362, 362, 256, 256, 271,
13394 	271, 287, 287, 304, 304, 322, 322, 341,
13395 	341, 362, 362, 383, 383, 406, 406, 430,
13396 	430, 455, 455, 482, 482, 511, 511, 541,
13397 	541, 573, 573, 607, 607, 643, 643, 681,
13398 	681, 722, 722, 764, 764, 810, 810, 858,
13399 	858, 908, 908, 962, 962, 1019, 1019, 256
13400 };
13401 
13402 static u32 nphy_tpc_txgain_ipa[] = {
13403 	0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13404 	0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13405 	0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13406 	0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13407 	0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13408 	0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13409 	0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13410 	0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13411 	0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13412 	0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13413 	0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13414 	0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13415 	0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13416 	0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13417 	0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13418 	0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13419 	0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13420 	0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13421 	0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13422 	0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13423 	0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13424 	0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13425 	0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13426 	0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13427 	0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13428 	0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13429 	0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13430 	0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13431 	0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13432 	0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13433 	0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13434 	0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13435 };
13436 
13437 static u32 nphy_tpc_txgain_ipa_rev5[] = {
13438 	0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13439 	0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13440 	0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13441 	0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13442 	0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13443 	0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13444 	0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13445 	0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13446 	0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13447 	0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13448 	0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13449 	0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13450 	0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13451 	0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13452 	0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13453 	0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13454 	0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13455 	0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13456 	0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13457 	0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13458 	0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13459 	0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13460 	0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13461 	0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13462 	0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13463 	0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13464 	0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13465 	0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13466 	0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13467 	0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13468 	0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13469 	0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13470 };
13471 
13472 static u32 nphy_tpc_txgain_ipa_rev6[] = {
13473 	0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13474 	0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13475 	0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13476 	0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13477 	0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13478 	0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13479 	0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13480 	0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13481 	0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13482 	0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13483 	0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13484 	0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13485 	0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13486 	0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13487 	0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13488 	0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13489 	0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13490 	0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13491 	0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13492 	0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13493 	0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13494 	0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13495 	0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13496 	0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13497 	0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13498 	0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13499 	0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13500 	0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13501 	0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13502 	0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13503 	0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13504 	0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13505 };
13506 
13507 static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13508 	0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13509 	0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13510 	0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13511 	0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13512 	0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13513 	0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13514 	0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13515 	0x70470028, 0x70470026, 0x70470024, 0x70470022,
13516 	0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13517 	0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13518 	0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13519 	0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13520 	0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13521 	0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13522 	0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13523 	0x70170019, 0x70170018, 0x70170016, 0x70170015,
13524 	0x70170014, 0x70170013, 0x70170012, 0x70170010,
13525 	0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13526 	0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13527 	0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13528 	0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13529 	0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13530 	0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13531 	0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13532 	0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13533 	0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13534 	0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13535 	0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13536 	0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13537 	0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13538 	0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13539 	0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13540 };
13541 
13542 static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13543 	0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13544 	0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13545 	0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13546 	0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13547 	0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13548 	0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13549 	0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13550 	0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13551 	0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13552 	0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13553 	0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13554 	0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13555 	0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13556 	0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13557 	0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13558 	0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13559 	0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13560 	0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13561 	0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13562 	0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13563 	0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13564 	0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13565 	0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13566 	0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13567 	0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13568 	0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13569 	0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13570 	0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13571 	0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13572 	0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13573 	0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13574 	0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13575 };
13576 
13577 static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13578 	0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13579 	0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13580 	0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13581 	0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13582 	0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13583 	0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13584 	0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13585 	0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13586 	0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13587 	0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13588 	0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13589 	0x30170028, 0x30170026, 0x30170024, 0x30170022,
13590 	0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13591 	0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13592 	0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13593 	0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13594 	0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13595 	0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13596 	0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13597 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13598 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13599 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13600 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13601 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13602 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13603 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13604 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13605 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13606 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13607 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13608 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13609 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13610 };
13611 
13612 static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13613 	0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13614 	0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13615 	0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13616 	0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13617 	0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13618 	0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13619 	0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13620 	0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13621 	0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13622 	0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13623 	0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13624 	0x30170028, 0x30170026, 0x30170024, 0x30170022,
13625 	0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13626 	0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13627 	0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13628 	0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13629 	0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13630 	0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13631 	0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13632 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13633 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13634 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13635 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13636 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13637 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13638 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13639 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13640 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13641 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13642 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13643 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13644 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13645 };
13646 
13647 static u32 nphy_tpc_txgain_ipa_5g[] = {
13648 	0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13649 	0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13650 	0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13651 	0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13652 	0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13653 	0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13654 	0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13655 	0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13656 	0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13657 	0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13658 	0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13659 	0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13660 	0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13661 	0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13662 	0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13663 	0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13664 	0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13665 	0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13666 	0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13667 	0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13668 	0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13669 	0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13670 	0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13671 	0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13672 	0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13673 	0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13674 	0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13675 	0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13676 	0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13677 	0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13678 	0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13679 	0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13680 };
13681 
13682 static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13683 	0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13684 	0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13685 	0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13686 	0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13687 	0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13688 	0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13689 	0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13690 	0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13691 	0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13692 	0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13693 	0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13694 	0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13695 	0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13696 	0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13697 	0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13698 	0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13699 	0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13700 	0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13701 	0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13702 	0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13703 	0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13704 	0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13705 	0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13706 	0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13707 	0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13708 	0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13709 	0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13710 	0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13711 	0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13712 	0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13713 	0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13714 	0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13715 };
13716 
13717 static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13718 	0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13719 	0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13720 	0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13721 	0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13722 	0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13723 	0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13724 	0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13725 	0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13726 	0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13727 	0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13728 	0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13729 	0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13730 	0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13731 	0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13732 	0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13733 	0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13734 	0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13735 	0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13736 	0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13737 	0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13738 	0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13739 	0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13740 	0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13741 	0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13742 	0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13743 	0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13744 	0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13745 	0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13746 	0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13747 	0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13748 	0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13749 	0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13750 };
13751 
13752 static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13753 	-114, -108, -98, -91, -84, -78, -70, -62,
13754 	-54, -46, -39, -31, -23, -15, -8, 0
13755 };
13756 
13757 static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13758 	-100, -95, -89, -83, -77, -70, -63, -56,
13759 	-48, -41, -33, -25, -19, -12, -6, 0
13760 };
13761 
13762 static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13763 	-159, -113, -86, -72, -62, -54, -48, -43,
13764 	-39, -35, -31, -28, -25, -23, -20, -18,
13765 	-17, -15, -13, -11, -10, -8, -7, -6,
13766 	-5, -4, -3, -3, -2, -1, -1, 0
13767 };
13768 
13769 static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13770 	-109, -109, -82, -68, -58, -50, -44, -39,
13771 	-35, -31, -28, -26, -23, -21, -19, -17,
13772 	-16, -14, -13, -11, -10, -9, -8, -7,
13773 	-5, -5, -4, -3, -2, -1, -1, 0
13774 };
13775 
13776 static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13777 	-122, -122, -95, -80, -69, -61, -54, -49,
13778 	-43, -39, -35, -32, -28, -26, -23, -21,
13779 	-18, -16, -15, -13, -11, -10, -8, -7,
13780 	-6, -5, -4, -3, -2, -1, -1, 0
13781 };
13782 
13783 static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13784 	-107, -101, -92, -85, -78, -71, -62, -55,
13785 	-47, -39, -32, -24, -19, -12, -6, 0
13786 };
13787 
13788 static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13789 	-110, -104, -95, -88, -81, -74, -66, -58,
13790 	-50, -44, -36, -28, -23, -15, -8, 0
13791 };
13792 
13793 static u8 pad_gain_codes_used_2057rev5[] = {
13794 	20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13795 	10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13796 };
13797 
13798 static u8 pad_gain_codes_used_2057rev7[] = {
13799 	15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13800 	5, 4, 3, 2, 1
13801 };
13802 
13803 static u8 pad_all_gain_codes_2057[] = {
13804 	31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13805 	21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13806 	11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13807 	1, 0
13808 };
13809 
13810 static u8 pga_all_gain_codes_2057[] = {
13811 	15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13812 };
13813 
13814 static u32 nphy_papd_scaltbl[] = {
13815 	0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13816 	0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13817 	0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13818 	0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13819 	0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13820 	0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13821 	0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13822 	0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13823 	0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13824 	0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13825 	0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13826 	0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13827 	0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13828 	0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13829 	0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13830 	0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13831 };
13832 
13833 static u32 nphy_tpc_txgain_rev3[] = {
13834 	0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13835 	0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13836 	0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13837 	0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13838 	0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13839 	0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13840 	0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13841 	0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13842 	0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13843 	0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13844 	0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13845 	0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13846 	0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13847 	0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13848 	0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13849 	0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13850 	0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13851 	0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13852 	0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13853 	0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13854 	0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13855 	0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13856 	0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13857 	0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13858 	0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13859 	0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13860 	0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13861 	0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13862 	0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13863 	0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13864 	0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13865 	0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13866 };
13867 
13868 static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13869 	0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13870 	0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13871 	0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13872 	0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13873 	0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13874 	0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13875 	0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13876 	0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13877 	0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13878 	0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13879 	0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13880 	0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13881 	0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13882 	0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13883 	0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13884 	0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13885 	0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13886 	0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13887 	0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13888 	0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13889 	0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13890 	0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13891 	0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13892 	0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13893 	0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13894 	0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13895 	0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13896 	0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13897 	0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13898 	0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13899 	0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13900 	0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13901 };
13902 
13903 static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13904 	0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13905 	0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13906 	0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13907 	0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13908 	0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13909 	0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13910 	0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13911 	0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13912 	0x80290031, 0x80210039, 0x80210036, 0x80210033,
13913 	0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13914 	0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13915 	0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13916 	0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13917 	0x80110027, 0x80110024, 0x80110022, 0x80110020,
13918 	0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13919 	0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13920 	0x80090029, 0x80090027, 0x80090025, 0x80090023,
13921 	0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13922 	0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13923 	0x8009061d, 0x8009071d, 0x8009071d, 0x8009071d,
13924 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13925 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13926 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13927 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13928 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13929 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13930 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13931 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13932 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13933 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13934 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13935 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d
13936 };
13937 
13938 static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13939 	0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13940 	0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13941 	0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13942 	0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13943 	0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13944 	0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13945 	0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13946 	0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13947 	0x10290031, 0x10210039, 0x10210036, 0x10210033,
13948 	0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13949 	0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13950 	0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13951 	0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13952 	0x10110027, 0x10110024, 0x10110022, 0x10110020,
13953 	0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13954 	0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13955 	0x10090029, 0x10090027, 0x10090025, 0x10090023,
13956 	0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13957 	0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13958 	0x10090015, 0x10090013, 0x10090012, 0x10090011,
13959 	0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13960 	0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13961 	0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13962 	0x10090008, 0x10090008, 0x10090007, 0x10090007,
13963 	0x10090007, 0x10090006, 0x10090006, 0x10090005,
13964 	0x10090005, 0x10090005, 0x10090005, 0x10090004,
13965 	0x10090004, 0x10090004, 0x10090004, 0x10090003,
13966 	0x10090003, 0x10090003, 0x10090003, 0x10090003,
13967 	0x10090003, 0x10090002, 0x10090002, 0x10090002,
13968 	0x10090002, 0x10090002, 0x10090002, 0x10090002,
13969 	0x10090002, 0x10090002, 0x10090001, 0x10090001,
13970 	0x10090001, 0x10090001, 0x10090001, 0x10090001
13971 };
13972 
13973 static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13974 	0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13975 	0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13976 	0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13977 	0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13978 	0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13979 	0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13980 	0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13981 	0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13982 	0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13983 	0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13984 	0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13985 	0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13986 	0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13987 	0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13988 	0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13989 	0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13990 	0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13991 	0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13992 	0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13993 	0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13994 	0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13995 	0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13996 	0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13997 	0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13998 	0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13999 	0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
14000 	0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
14001 	0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
14002 	0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
14003 	0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
14004 	0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
14005 	0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
14006 };
14007 
14008 static u32 nphy_tpc_5GHz_txgain_rev4[] = {
14009 	0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
14010 	0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
14011 	0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
14012 	0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
14013 	0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
14014 	0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
14015 	0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
14016 	0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
14017 	0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
14018 	0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
14019 	0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
14020 	0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
14021 	0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
14022 	0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
14023 	0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
14024 	0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
14025 	0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
14026 	0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
14027 	0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
14028 	0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
14029 	0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
14030 	0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
14031 	0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
14032 	0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
14033 	0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
14034 	0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
14035 	0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14036 	0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14037 	0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14038 	0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14039 	0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14040 	0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14041 };
14042 
14043 static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14044 	0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14045 	0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14046 	0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14047 	0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14048 	0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14049 	0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14050 	0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14051 	0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14052 	0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14053 	0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14054 	0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14055 	0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14056 	0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14057 	0x09620039, 0x09620037, 0x09620035, 0x09620033,
14058 	0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14059 	0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14060 	0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14061 	0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14062 	0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14063 	0x06620039, 0x06620037, 0x06620035, 0x06620033,
14064 	0x05620046, 0x05620044, 0x05620042, 0x05620040,
14065 	0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14066 	0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14067 	0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14068 	0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14069 	0x03620038, 0x03620037, 0x03620035, 0x03620033,
14070 	0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14071 	0x02620046, 0x02620044, 0x02620043, 0x02620042,
14072 	0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14073 	0x01620043, 0x01620042, 0x01620041, 0x01620040,
14074 	0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14075 	0x0062003b, 0x00620039, 0x00620037, 0x00620035
14076 };
14077 
14078 static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14079 	0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14080 	0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14081 	0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14082 	0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14083 	0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14084 	0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14085 	0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14086 	0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14087 	0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14088 	0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14089 	0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14090 	0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14091 	0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14092 	0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14093 	0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14094 	0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14095 	0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14096 	0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14097 	0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14098 	0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14099 	0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14100 	0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14101 	0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14102 	0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14103 	0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14104 	0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14105 	0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14106 	0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14107 	0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14108 	0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14109 	0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14110 	0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14111 };
14112 
14113 static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14114 static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14115 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14116 	0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a
14117 };
14118 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14119 	0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16
14120 };
14121 
wlc_phy_bist_check_phy(struct brcms_phy_pub * pih)14122 bool wlc_phy_bist_check_phy(struct brcms_phy_pub *pih)
14123 {
14124 	struct brcms_phy *pi = (struct brcms_phy *) pih;
14125 	u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14126 
14127 	if (NREV_GE(pi->pubpi.phy_rev, 16))
14128 		return true;
14129 
14130 	phybist0 = read_phy_reg(pi, 0x0e);
14131 	phybist1 = read_phy_reg(pi, 0x0f);
14132 	phybist2 = read_phy_reg(pi, 0xea);
14133 	phybist3 = read_phy_reg(pi, 0xeb);
14134 	phybist4 = read_phy_reg(pi, 0x156);
14135 
14136 	if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14137 	    (phybist3 == 0) && (phybist4 == 0))
14138 		return true;
14139 
14140 	return false;
14141 }
14142 
wlc_phy_bphy_init_nphy(struct brcms_phy * pi)14143 static void wlc_phy_bphy_init_nphy(struct brcms_phy *pi)
14144 {
14145 	u16 addr, val;
14146 
14147 	val = 0x1e1f;
14148 	for (addr = (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT);
14149 	     addr <= (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT_END); addr++) {
14150 		write_phy_reg(pi, addr, val);
14151 		if (addr == (NPHY_TO_BPHY_OFF + 0x97))
14152 			val = 0x3e3f;
14153 		else
14154 			val -= 0x0202;
14155 	}
14156 
14157 	write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_STEP, 0x668);
14158 }
14159 
14160 void
wlc_phy_table_write_nphy(struct brcms_phy * pi,u32 id,u32 len,u32 offset,u32 width,const void * data)14161 wlc_phy_table_write_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14162 			 u32 width, const void *data)
14163 {
14164 	struct phytbl_info tbl;
14165 
14166 	tbl.tbl_id = id;
14167 	tbl.tbl_len = len;
14168 	tbl.tbl_offset = offset;
14169 	tbl.tbl_width = width;
14170 	tbl.tbl_ptr = data;
14171 	wlc_phy_write_table_nphy(pi, &tbl);
14172 }
14173 
14174 void
wlc_phy_table_read_nphy(struct brcms_phy * pi,u32 id,u32 len,u32 offset,u32 width,void * data)14175 wlc_phy_table_read_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14176 			u32 width, void *data)
14177 {
14178 	struct phytbl_info tbl;
14179 
14180 	tbl.tbl_id = id;
14181 	tbl.tbl_len = len;
14182 	tbl.tbl_offset = offset;
14183 	tbl.tbl_width = width;
14184 	tbl.tbl_ptr = data;
14185 	wlc_phy_read_table_nphy(pi, &tbl);
14186 }
14187 
14188 static void
wlc_phy_static_table_download_nphy(struct brcms_phy * pi)14189 wlc_phy_static_table_download_nphy(struct brcms_phy *pi)
14190 {
14191 	uint idx;
14192 
14193 	if (NREV_GE(pi->pubpi.phy_rev, 16)) {
14194 		for (idx = 0; idx < mimophytbl_info_sz_rev16; idx++)
14195 			wlc_phy_write_table_nphy(pi,
14196 						 &mimophytbl_info_rev16[idx]);
14197 	} else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14198 		for (idx = 0; idx < mimophytbl_info_sz_rev7; idx++)
14199 			wlc_phy_write_table_nphy(pi,
14200 						 &mimophytbl_info_rev7[idx]);
14201 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14202 		for (idx = 0; idx < mimophytbl_info_sz_rev3; idx++)
14203 			wlc_phy_write_table_nphy(pi,
14204 						 &mimophytbl_info_rev3[idx]);
14205 	} else {
14206 		for (idx = 0; idx < mimophytbl_info_sz_rev0; idx++)
14207 			wlc_phy_write_table_nphy(pi,
14208 						 &mimophytbl_info_rev0[idx]);
14209 	}
14210 }
14211 
wlc_phy_tbl_init_nphy(struct brcms_phy * pi)14212 static void wlc_phy_tbl_init_nphy(struct brcms_phy *pi)
14213 {
14214 	uint idx = 0;
14215 	u8 antswctrllut;
14216 
14217 	if (pi->phy_init_por)
14218 		wlc_phy_static_table_download_nphy(pi);
14219 
14220 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14221 
14222 		antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14223 			       pi->srom_fem2g.antswctrllut : pi->srom_fem5g.
14224 			       antswctrllut;
14225 
14226 		switch (antswctrllut) {
14227 		case 0:
14228 
14229 			break;
14230 
14231 		case 1:
14232 
14233 			if (pi->aa2g == 7)
14234 				wlc_phy_table_write_nphy(
14235 					pi,
14236 					NPHY_TBL_ID_ANTSWCTRLLUT,
14237 					2, 0x21, 8,
14238 					&ant_sw_ctrl_tbl_rev8_2o3[0]);
14239 			else
14240 				wlc_phy_table_write_nphy(
14241 					pi,
14242 					NPHY_TBL_ID_ANTSWCTRLLUT,
14243 					2, 0x21, 8,
14244 					&ant_sw_ctrl_tbl_rev8
14245 					[0]);
14246 
14247 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14248 						 2, 0x25, 8,
14249 						 &ant_sw_ctrl_tbl_rev8[2]);
14250 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14251 						 2, 0x29, 8,
14252 						 &ant_sw_ctrl_tbl_rev8[4]);
14253 			break;
14254 
14255 		case 2:
14256 
14257 			wlc_phy_table_write_nphy(
14258 				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14259 				2, 0x1, 8,
14260 				&ant_sw_ctrl_tbl_rev8_2057v7_core0[0]);
14261 			wlc_phy_table_write_nphy(
14262 				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14263 				2, 0x5, 8,
14264 				&ant_sw_ctrl_tbl_rev8_2057v7_core0[2]);
14265 			wlc_phy_table_write_nphy(
14266 				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14267 				2, 0x9, 8,
14268 				&ant_sw_ctrl_tbl_rev8_2057v7_core0[4]);
14269 
14270 			wlc_phy_table_write_nphy(
14271 				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14272 				2, 0x21, 8,
14273 				&ant_sw_ctrl_tbl_rev8_2057v7_core1[0]);
14274 			wlc_phy_table_write_nphy(
14275 				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14276 				2, 0x25, 8,
14277 				&ant_sw_ctrl_tbl_rev8_2057v7_core1[2]);
14278 			wlc_phy_table_write_nphy(
14279 				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14280 				2, 0x29, 8,
14281 				&ant_sw_ctrl_tbl_rev8_2057v7_core1[4]);
14282 			break;
14283 
14284 		default:
14285 			break;
14286 		}
14287 
14288 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14289 		for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14290 
14291 			if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14292 				antswctrllut =
14293 					CHSPEC_IS2G(pi->radio_chanspec) ?
14294 					pi->srom_fem2g.antswctrllut :
14295 					pi->srom_fem5g.antswctrllut;
14296 				switch (antswctrllut) {
14297 				case 0:
14298 					wlc_phy_write_table_nphy(
14299 						pi,
14300 						&mimophytbl_info_rev3_volatile
14301 						[idx]);
14302 					break;
14303 				case 1:
14304 					wlc_phy_write_table_nphy(
14305 						pi,
14306 						&mimophytbl_info_rev3_volatile1
14307 						[idx]);
14308 					break;
14309 				case 2:
14310 					wlc_phy_write_table_nphy(
14311 						pi,
14312 						&mimophytbl_info_rev3_volatile2
14313 						[idx]);
14314 					break;
14315 				case 3:
14316 					wlc_phy_write_table_nphy(
14317 						pi,
14318 						&mimophytbl_info_rev3_volatile3
14319 						[idx]);
14320 					break;
14321 				default:
14322 					break;
14323 				}
14324 			} else {
14325 				wlc_phy_write_table_nphy(
14326 					pi,
14327 					&mimophytbl_info_rev3_volatile[idx]);
14328 			}
14329 		}
14330 	} else {
14331 		for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++)
14332 			wlc_phy_write_table_nphy(pi,
14333 						 &mimophytbl_info_rev0_volatile
14334 						 [idx]);
14335 	}
14336 }
14337 
14338 static void
wlc_phy_write_txmacreg_nphy(struct brcms_phy * pi,u16 holdoff,u16 delay)14339 wlc_phy_write_txmacreg_nphy(struct brcms_phy *pi, u16 holdoff, u16 delay)
14340 {
14341 	write_phy_reg(pi, 0x77, holdoff);
14342 	write_phy_reg(pi, 0xb4, delay);
14343 }
14344 
wlc_phy_nphy_tkip_rifs_war(struct brcms_phy * pi,u8 rifs)14345 void wlc_phy_nphy_tkip_rifs_war(struct brcms_phy *pi, u8 rifs)
14346 {
14347 	u16 holdoff, delay;
14348 
14349 	if (rifs) {
14350 
14351 		holdoff = 0x10;
14352 		delay = 0x258;
14353 	} else {
14354 
14355 		holdoff = 0x15;
14356 		delay = 0x320;
14357 	}
14358 
14359 	wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14360 
14361 	if (pi && pi->sh && (pi->sh->_rifs_phy != rifs))
14362 		pi->sh->_rifs_phy = rifs;
14363 }
14364 
wlc_phy_txpwrctrl_config_nphy(struct brcms_phy * pi)14365 static void wlc_phy_txpwrctrl_config_nphy(struct brcms_phy *pi)
14366 {
14367 
14368 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14369 		pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14370 		pi->phy_5g_pwrgain = true;
14371 		return;
14372 	}
14373 
14374 	pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14375 	pi->phy_5g_pwrgain = false;
14376 
14377 	if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14378 	    NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14379 		pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14380 	else if ((pi->sh->sromrev >= 4)
14381 		 && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14382 		pi->phy_5g_pwrgain = true;
14383 }
14384 
wlc_phy_txpwr_srom_read_ppr_nphy(struct brcms_phy * pi)14385 static void wlc_phy_txpwr_srom_read_ppr_nphy(struct brcms_phy *pi)
14386 {
14387 	u16 bw40po, cddpo, stbcpo, bwduppo;
14388 	uint band_num;
14389 	struct phy_shim_info *shim = pi->sh->physhim;
14390 
14391 	if (pi->sh->sromrev >= 9)
14392 		return;
14393 
14394 	bw40po = (u16) wlapi_getintvar(shim, BRCMS_SROM_BW40PO);
14395 	pi->bw402gpo = bw40po & 0xf;
14396 	pi->bw405gpo = (bw40po & 0xf0) >> 4;
14397 	pi->bw405glpo = (bw40po & 0xf00) >> 8;
14398 	pi->bw405ghpo = (bw40po & 0xf000) >> 12;
14399 
14400 	cddpo = (u16) wlapi_getintvar(shim, BRCMS_SROM_CDDPO);
14401 	pi->cdd2gpo = cddpo & 0xf;
14402 	pi->cdd5gpo = (cddpo & 0xf0) >> 4;
14403 	pi->cdd5glpo = (cddpo & 0xf00) >> 8;
14404 	pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
14405 
14406 	stbcpo = (u16) wlapi_getintvar(shim, BRCMS_SROM_STBCPO);
14407 	pi->stbc2gpo = stbcpo & 0xf;
14408 	pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
14409 	pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
14410 	pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
14411 
14412 	bwduppo = (u16) wlapi_getintvar(shim, BRCMS_SROM_BWDUPPO);
14413 	pi->bwdup2gpo = bwduppo & 0xf;
14414 	pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
14415 	pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
14416 	pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
14417 
14418 	for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
14419 	     band_num++) {
14420 		switch (band_num) {
14421 		case 0:
14422 
14423 			pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
14424 				(s8) wlapi_getintvar(shim,
14425 						     BRCMS_SROM_MAXP2GA0);
14426 			pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
14427 				(s8) wlapi_getintvar(shim,
14428 						     BRCMS_SROM_MAXP2GA1);
14429 			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
14430 				(s16) wlapi_getintvar(shim,
14431 						      BRCMS_SROM_PA2GW0A0);
14432 			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
14433 				(s16) wlapi_getintvar(shim,
14434 						      BRCMS_SROM_PA2GW0A1);
14435 			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
14436 				(s16) wlapi_getintvar(shim,
14437 						      BRCMS_SROM_PA2GW1A0);
14438 			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
14439 				(s16) wlapi_getintvar(shim,
14440 						      BRCMS_SROM_PA2GW1A1);
14441 			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
14442 				(s16) wlapi_getintvar(shim,
14443 						      BRCMS_SROM_PA2GW2A0);
14444 			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
14445 				(s16) wlapi_getintvar(shim,
14446 						      BRCMS_SROM_PA2GW2A1);
14447 			pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
14448 				(s8) wlapi_getintvar(shim, BRCMS_SROM_ITT2GA0);
14449 			pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
14450 				(s8) wlapi_getintvar(shim, BRCMS_SROM_ITT2GA1);
14451 
14452 			pi->cck2gpo = (u16) wlapi_getintvar(shim,
14453 							    BRCMS_SROM_CCK2GPO);
14454 
14455 			pi->ofdm2gpo =
14456 				(u32) wlapi_getintvar(shim,
14457 						      BRCMS_SROM_OFDM2GPO);
14458 
14459 			pi->mcs2gpo[0] =
14460 				(u16) wlapi_getintvar(shim,
14461 						      BRCMS_SROM_MCS2GPO0);
14462 			pi->mcs2gpo[1] =
14463 				(u16) wlapi_getintvar(shim,
14464 						      BRCMS_SROM_MCS2GPO1);
14465 			pi->mcs2gpo[2] =
14466 				(u16) wlapi_getintvar(shim,
14467 						      BRCMS_SROM_MCS2GPO2);
14468 			pi->mcs2gpo[3] =
14469 				(u16) wlapi_getintvar(shim,
14470 						      BRCMS_SROM_MCS2GPO3);
14471 			pi->mcs2gpo[4] =
14472 				(u16) wlapi_getintvar(shim,
14473 						      BRCMS_SROM_MCS2GPO4);
14474 			pi->mcs2gpo[5] =
14475 				(u16) wlapi_getintvar(shim,
14476 						      BRCMS_SROM_MCS2GPO5);
14477 			pi->mcs2gpo[6] =
14478 				(u16) wlapi_getintvar(shim,
14479 						      BRCMS_SROM_MCS2GPO6);
14480 			pi->mcs2gpo[7] =
14481 				(u16) wlapi_getintvar(shim,
14482 						      BRCMS_SROM_MCS2GPO7);
14483 			break;
14484 		case 1:
14485 
14486 			pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
14487 				(s8) wlapi_getintvar(shim, BRCMS_SROM_MAXP5GA0);
14488 			pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
14489 				(s8) wlapi_getintvar(shim,
14490 						     BRCMS_SROM_MAXP5GA1);
14491 			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
14492 				(s16) wlapi_getintvar(shim,
14493 						      BRCMS_SROM_PA5GW0A0);
14494 			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
14495 				(s16) wlapi_getintvar(shim,
14496 						      BRCMS_SROM_PA5GW0A1);
14497 			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
14498 				(s16) wlapi_getintvar(shim,
14499 						      BRCMS_SROM_PA5GW1A0);
14500 			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
14501 				(s16) wlapi_getintvar(shim,
14502 						      BRCMS_SROM_PA5GW1A1);
14503 			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
14504 				(s16) wlapi_getintvar(shim,
14505 						      BRCMS_SROM_PA5GW2A0);
14506 			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
14507 				(s16) wlapi_getintvar(shim,
14508 						      BRCMS_SROM_PA5GW2A1);
14509 			pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
14510 				(s8) wlapi_getintvar(shim, BRCMS_SROM_ITT5GA0);
14511 			pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
14512 				(s8) wlapi_getintvar(shim, BRCMS_SROM_ITT5GA1);
14513 
14514 			pi->ofdm5gpo =
14515 				(u32) wlapi_getintvar(shim,
14516 						      BRCMS_SROM_OFDM5GPO);
14517 
14518 			pi->mcs5gpo[0] =
14519 				(u16) wlapi_getintvar(shim,
14520 						      BRCMS_SROM_MCS5GPO0);
14521 			pi->mcs5gpo[1] =
14522 				(u16) wlapi_getintvar(shim,
14523 						      BRCMS_SROM_MCS5GPO1);
14524 			pi->mcs5gpo[2] =
14525 				(u16) wlapi_getintvar(shim,
14526 						      BRCMS_SROM_MCS5GPO2);
14527 			pi->mcs5gpo[3] =
14528 				(u16) wlapi_getintvar(shim,
14529 						      BRCMS_SROM_MCS5GPO3);
14530 			pi->mcs5gpo[4] =
14531 				(u16) wlapi_getintvar(shim,
14532 						      BRCMS_SROM_MCS5GPO4);
14533 			pi->mcs5gpo[5] =
14534 				(u16) wlapi_getintvar(shim,
14535 						      BRCMS_SROM_MCS5GPO5);
14536 			pi->mcs5gpo[6] =
14537 				(u16) wlapi_getintvar(shim,
14538 						      BRCMS_SROM_MCS5GPO6);
14539 			pi->mcs5gpo[7] =
14540 				(u16) wlapi_getintvar(shim,
14541 						      BRCMS_SROM_MCS5GPO7);
14542 			break;
14543 		case 2:
14544 
14545 			pi->nphy_pwrctrl_info[0].max_pwr_5gl =
14546 				(s8) wlapi_getintvar(shim,
14547 						     BRCMS_SROM_MAXP5GLA0);
14548 			pi->nphy_pwrctrl_info[1].max_pwr_5gl =
14549 				(s8) wlapi_getintvar(shim,
14550 						     BRCMS_SROM_MAXP5GLA1);
14551 			pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
14552 				(s16) wlapi_getintvar(shim,
14553 						      BRCMS_SROM_PA5GLW0A0);
14554 			pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
14555 				(s16) wlapi_getintvar(shim,
14556 						      BRCMS_SROM_PA5GLW0A1);
14557 			pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
14558 				(s16) wlapi_getintvar(shim,
14559 						      BRCMS_SROM_PA5GLW1A0);
14560 			pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
14561 				(s16) wlapi_getintvar(shim,
14562 						      BRCMS_SROM_PA5GLW1A1);
14563 			pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
14564 				(s16) wlapi_getintvar(shim,
14565 						      BRCMS_SROM_PA5GLW2A0);
14566 			pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
14567 				(s16) wlapi_getintvar(shim,
14568 						      BRCMS_SROM_PA5GLW2A1);
14569 			pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
14570 			pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
14571 
14572 			pi->ofdm5glpo =
14573 				(u32) wlapi_getintvar(shim,
14574 						      BRCMS_SROM_OFDM5GLPO);
14575 
14576 			pi->mcs5glpo[0] =
14577 				(u16) wlapi_getintvar(shim,
14578 						      BRCMS_SROM_MCS5GLPO0);
14579 			pi->mcs5glpo[1] =
14580 				(u16) wlapi_getintvar(shim,
14581 						      BRCMS_SROM_MCS5GLPO1);
14582 			pi->mcs5glpo[2] =
14583 				(u16) wlapi_getintvar(shim,
14584 						      BRCMS_SROM_MCS5GLPO2);
14585 			pi->mcs5glpo[3] =
14586 				(u16) wlapi_getintvar(shim,
14587 						      BRCMS_SROM_MCS5GLPO3);
14588 			pi->mcs5glpo[4] =
14589 				(u16) wlapi_getintvar(shim,
14590 						      BRCMS_SROM_MCS5GLPO4);
14591 			pi->mcs5glpo[5] =
14592 				(u16) wlapi_getintvar(shim,
14593 						      BRCMS_SROM_MCS5GLPO5);
14594 			pi->mcs5glpo[6] =
14595 				(u16) wlapi_getintvar(shim,
14596 						      BRCMS_SROM_MCS5GLPO6);
14597 			pi->mcs5glpo[7] =
14598 				(u16) wlapi_getintvar(shim,
14599 						      BRCMS_SROM_MCS5GLPO7);
14600 			break;
14601 		case 3:
14602 
14603 			pi->nphy_pwrctrl_info[0].max_pwr_5gh =
14604 				(s8) wlapi_getintvar(shim,
14605 						     BRCMS_SROM_MAXP5GHA0);
14606 			pi->nphy_pwrctrl_info[1].max_pwr_5gh =
14607 				(s8) wlapi_getintvar(shim,
14608 						     BRCMS_SROM_MAXP5GHA1);
14609 			pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
14610 				(s16) wlapi_getintvar(shim,
14611 						      BRCMS_SROM_PA5GHW0A0);
14612 			pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
14613 				(s16) wlapi_getintvar(shim,
14614 						      BRCMS_SROM_PA5GHW0A1);
14615 			pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
14616 				(s16) wlapi_getintvar(shim,
14617 						      BRCMS_SROM_PA5GHW1A0);
14618 			pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
14619 				(s16) wlapi_getintvar(shim,
14620 						      BRCMS_SROM_PA5GHW1A1);
14621 			pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
14622 				(s16) wlapi_getintvar(shim,
14623 						      BRCMS_SROM_PA5GHW2A0);
14624 			pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
14625 				(s16) wlapi_getintvar(shim,
14626 						      BRCMS_SROM_PA5GHW2A1);
14627 			pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
14628 			pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
14629 
14630 			pi->ofdm5ghpo =
14631 				(u32) wlapi_getintvar(shim,
14632 						      BRCMS_SROM_OFDM5GHPO);
14633 
14634 			pi->mcs5ghpo[0] =
14635 				(u16) wlapi_getintvar(shim,
14636 						      BRCMS_SROM_MCS5GHPO0);
14637 			pi->mcs5ghpo[1] =
14638 				(u16) wlapi_getintvar(shim,
14639 						      BRCMS_SROM_MCS5GHPO1);
14640 			pi->mcs5ghpo[2] =
14641 				(u16) wlapi_getintvar(shim,
14642 						      BRCMS_SROM_MCS5GHPO2);
14643 			pi->mcs5ghpo[3] =
14644 				(u16) wlapi_getintvar(shim,
14645 						      BRCMS_SROM_MCS5GHPO3);
14646 			pi->mcs5ghpo[4] =
14647 				(u16) wlapi_getintvar(shim,
14648 						      BRCMS_SROM_MCS5GHPO4);
14649 			pi->mcs5ghpo[5] =
14650 				(u16) wlapi_getintvar(shim,
14651 						      BRCMS_SROM_MCS5GHPO5);
14652 			pi->mcs5ghpo[6] =
14653 				(u16) wlapi_getintvar(shim,
14654 						      BRCMS_SROM_MCS5GHPO6);
14655 			pi->mcs5ghpo[7] =
14656 				(u16) wlapi_getintvar(shim,
14657 						      BRCMS_SROM_MCS5GHPO7);
14658 			break;
14659 		}
14660 	}
14661 
14662 	wlc_phy_txpwr_apply_nphy(pi);
14663 }
14664 
wlc_phy_txpwr_srom_read_nphy(struct brcms_phy * pi)14665 static bool wlc_phy_txpwr_srom_read_nphy(struct brcms_phy *pi)
14666 {
14667 	struct phy_shim_info *shim = pi->sh->physhim;
14668 
14669 	pi->antswitch = (u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWITCH);
14670 	pi->aa2g = (u8) wlapi_getintvar(shim, BRCMS_SROM_AA2G);
14671 	pi->aa5g = (u8) wlapi_getintvar(shim, BRCMS_SROM_AA5G);
14672 
14673 	pi->srom_fem2g.tssipos = (u8) wlapi_getintvar(shim,
14674 						      BRCMS_SROM_TSSIPOS2G);
14675 	pi->srom_fem2g.extpagain = (u8) wlapi_getintvar(shim,
14676 							BRCMS_SROM_EXTPAGAIN2G);
14677 	pi->srom_fem2g.pdetrange = (u8) wlapi_getintvar(shim,
14678 							BRCMS_SROM_PDETRANGE2G);
14679 	pi->srom_fem2g.triso = (u8) wlapi_getintvar(shim, BRCMS_SROM_TRISO2G);
14680 	pi->srom_fem2g.antswctrllut =
14681 			(u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWCTL2G);
14682 
14683 	pi->srom_fem5g.tssipos = (u8) wlapi_getintvar(shim,
14684 						      BRCMS_SROM_TSSIPOS5G);
14685 	pi->srom_fem5g.extpagain = (u8) wlapi_getintvar(shim,
14686 							BRCMS_SROM_EXTPAGAIN5G);
14687 	pi->srom_fem5g.pdetrange = (u8) wlapi_getintvar(shim,
14688 							BRCMS_SROM_PDETRANGE5G);
14689 	pi->srom_fem5g.triso = (u8) wlapi_getintvar(shim, BRCMS_SROM_TRISO5G);
14690 	if (wlapi_getvar(shim, BRCMS_SROM_ANTSWCTL5G))
14691 		pi->srom_fem5g.antswctrllut =
14692 			(u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWCTL5G);
14693 	else
14694 		pi->srom_fem5g.antswctrllut =
14695 			(u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWCTL2G);
14696 
14697 	wlc_phy_txpower_ipa_upd(pi);
14698 
14699 	pi->phy_txcore_disable_temp =
14700 			(s16) wlapi_getintvar(shim, BRCMS_SROM_TEMPTHRESH);
14701 	if (pi->phy_txcore_disable_temp == 0)
14702 		pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
14703 
14704 	pi->phy_tempsense_offset = (s8) wlapi_getintvar(shim,
14705 							BRCMS_SROM_TEMPOFFSET);
14706 	if (pi->phy_tempsense_offset != 0) {
14707 		if (pi->phy_tempsense_offset >
14708 		    (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET))
14709 			pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
14710 		else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
14711 						     NPHY_SROM_MINTEMPOFFSET))
14712 			pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
14713 		else
14714 			pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
14715 	}
14716 
14717 	pi->phy_txcore_enable_temp =
14718 		pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
14719 
14720 	pi->phycal_tempdelta =
14721 			(u8) wlapi_getintvar(shim, BRCMS_SROM_PHYCAL_TEMPDELTA);
14722 	if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA)
14723 		pi->phycal_tempdelta = 0;
14724 
14725 	wlc_phy_txpwr_srom_read_ppr_nphy(pi);
14726 
14727 	return true;
14728 }
14729 
wlc_phy_attach_nphy(struct brcms_phy * pi)14730 bool wlc_phy_attach_nphy(struct brcms_phy *pi)
14731 {
14732 	uint i;
14733 
14734 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6))
14735 		pi->phyhang_avoid = true;
14736 
14737 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14738 		pi->nphy_gband_spurwar_en = true;
14739 		if (pi->sh->boardflags2 & BFL2_SPUR_WAR)
14740 			pi->nphy_aband_spurwar_en = true;
14741 	}
14742 	if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14743 		if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR)
14744 			pi->nphy_gband_spurwar2_en = true;
14745 	}
14746 
14747 	pi->n_preamble_override = AUTO;
14748 	if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14749 		pi->n_preamble_override = BRCMS_N_PREAMBLE_MIXEDMODE;
14750 
14751 	pi->nphy_txrx_chain = AUTO;
14752 	pi->phy_scraminit = AUTO;
14753 
14754 	pi->nphy_rxcalparams = 0x010100B5;
14755 
14756 	pi->nphy_perical = PHY_PERICAL_MPHASE;
14757 	pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14758 	pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14759 
14760 	pi->nphy_gain_boost = true;
14761 	pi->nphy_elna_gain_config = false;
14762 	pi->radio_is_on = false;
14763 
14764 	for (i = 0; i < pi->pubpi.phy_corenum; i++)
14765 		pi->nphy_txpwrindex[i].index = AUTO;
14766 
14767 	wlc_phy_txpwrctrl_config_nphy(pi);
14768 	if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14769 		pi->hwpwrctrl_capable = true;
14770 
14771 	pi->pi_fptr.init = wlc_phy_init_nphy;
14772 	pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14773 	pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14774 	pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14775 
14776 	if (!wlc_phy_txpwr_srom_read_nphy(pi))
14777 		return false;
14778 
14779 	return true;
14780 }
14781 
get_rf_pwr_offset(struct brcms_phy * pi,s16 pga_gn,s16 pad_gn)14782 static s32 get_rf_pwr_offset(struct brcms_phy *pi, s16 pga_gn, s16 pad_gn)
14783 {
14784 	s32 rfpwr_offset = 0;
14785 
14786 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
14787 		if ((pi->pubpi.radiorev == 3) ||
14788 		    (pi->pubpi.radiorev == 4) ||
14789 		    (pi->pubpi.radiorev == 6))
14790 			rfpwr_offset = (s16)
14791 				       nphy_papd_padgain_dlt_2g_2057rev3n4
14792 				       [pad_gn];
14793 		else if (pi->pubpi.radiorev == 5)
14794 			rfpwr_offset = (s16)
14795 				       nphy_papd_padgain_dlt_2g_2057rev5
14796 				       [pad_gn];
14797 		else if ((pi->pubpi.radiorev == 7)
14798 			 || (pi->pubpi.radiorev ==
14799 			     8))
14800 			rfpwr_offset = (s16)
14801 				       nphy_papd_padgain_dlt_2g_2057rev7
14802 				       [pad_gn];
14803 	} else {
14804 		if ((pi->pubpi.radiorev == 3) ||
14805 		    (pi->pubpi.radiorev == 4) ||
14806 		    (pi->pubpi.radiorev == 6))
14807 			rfpwr_offset = (s16)
14808 				       nphy_papd_pgagain_dlt_5g_2057
14809 				       [pga_gn];
14810 		else if ((pi->pubpi.radiorev == 7)
14811 			 || (pi->pubpi.radiorev ==
14812 			     8))
14813 			rfpwr_offset = (s16)
14814 				       nphy_papd_pgagain_dlt_5g_2057rev7
14815 				       [pga_gn];
14816 	}
14817 	return rfpwr_offset;
14818 }
14819 
wlc_phy_update_mimoconfig_nphy(struct brcms_phy * pi,s32 preamble)14820 static void wlc_phy_update_mimoconfig_nphy(struct brcms_phy *pi, s32 preamble)
14821 {
14822 	bool gf_preamble = false;
14823 	u16 val;
14824 
14825 	if (preamble == BRCMS_N_PREAMBLE_GF)
14826 		gf_preamble = true;
14827 
14828 	val = read_phy_reg(pi, 0xed);
14829 
14830 	val |= RX_GF_MM_AUTO;
14831 	val &= ~RX_GF_OR_MM;
14832 	if (gf_preamble)
14833 		val |= RX_GF_OR_MM;
14834 
14835 	write_phy_reg(pi, 0xed, val);
14836 }
14837 
wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy * pi)14838 static void wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
14839 {
14840 	int j, type;
14841 	u16 addr_offset[] = { 0x186, 0x195, 0x2c5};
14842 
14843 	for (type = 0; type < 3; type++) {
14844 		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14845 			write_phy_reg(pi, addr_offset[type] + j,
14846 				      NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
14847 	}
14848 
14849 	if (pi->bw == WL_CHANSPEC_BW_40) {
14850 		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14851 			write_phy_reg(pi, 0x186 + j,
14852 				      NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14853 	} else {
14854 		if (CHSPEC_IS5G(pi->radio_chanspec)) {
14855 			for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14856 				write_phy_reg(pi, 0x186 + j,
14857 					NPHY_IPA_REV4_txdigi_filtcoeffs[5][j]);
14858 		}
14859 
14860 		if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
14861 			for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14862 				write_phy_reg(pi, 0x2c5 + j,
14863 					NPHY_IPA_REV4_txdigi_filtcoeffs[6][j]);
14864 		}
14865 	}
14866 }
14867 
wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy * pi)14868 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy *pi)
14869 {
14870 	int j;
14871 
14872 	if (pi->bw == WL_CHANSPEC_BW_40) {
14873 		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14874 			write_phy_reg(pi, 0x195 + j,
14875 				      NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
14876 	} else {
14877 		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14878 			write_phy_reg(pi, 0x186 + j,
14879 				      NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14880 	}
14881 }
14882 
14883 static void
wlc_phy_set_rfseq_nphy(struct brcms_phy * pi,u8 cmd,u8 * events,u8 * dlys,u8 len)14884 wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, u8 *events, u8 *dlys,
14885 		       u8 len)
14886 {
14887 	u32 t1_offset, t2_offset;
14888 	u8 ctr;
14889 	u8 end_event =
14890 		NREV_GE(pi->pubpi.phy_rev,
14891 			3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
14892 	u8 end_dly = 1;
14893 
14894 	if (pi->phyhang_avoid)
14895 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
14896 
14897 	t1_offset = cmd << 4;
14898 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
14899 				 events);
14900 	t2_offset = t1_offset + 0x080;
14901 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
14902 				 dlys);
14903 
14904 	for (ctr = len; ctr < 16; ctr++) {
14905 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14906 					 t1_offset + ctr, 8, &end_event);
14907 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14908 					 t2_offset + ctr, 8, &end_dly);
14909 	}
14910 
14911 	if (pi->phyhang_avoid)
14912 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
14913 }
14914 
wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy * pi,u16 offset)14915 static u16 wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy *pi, u16 offset)
14916 {
14917 	u16 lpf_bw_ctl_val = 0;
14918 	u16 rx2tx_lpf_rc_lut_offset = 0;
14919 
14920 	if (offset == 0) {
14921 		if (CHSPEC_IS40(pi->radio_chanspec))
14922 			rx2tx_lpf_rc_lut_offset = 0x159;
14923 		else
14924 			rx2tx_lpf_rc_lut_offset = 0x154;
14925 	} else {
14926 		rx2tx_lpf_rc_lut_offset = offset;
14927 	}
14928 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14929 				(u32) rx2tx_lpf_rc_lut_offset, 16,
14930 				&lpf_bw_ctl_val);
14931 
14932 	lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
14933 
14934 	return lpf_bw_ctl_val;
14935 }
14936 
14937 static void
wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy * pi,u16 field,u16 value,u8 core_mask,u8 off,u8 override_id)14938 wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy *pi, u16 field, u16 value,
14939 				  u8 core_mask, u8 off, u8 override_id)
14940 {
14941 	u8 core_num;
14942 	u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
14943 	u8 val_shift = 0;
14944 
14945 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14946 		en_mask = field;
14947 		for (core_num = 0; core_num < 2; core_num++) {
14948 			if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
14949 
14950 				switch (field) {
14951 				case (0x1 << 2):
14952 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14953 					val_addr = (core_num == 0) ? 0x7a :
14954 						   0x7d;
14955 					val_mask = (0x1 << 1);
14956 					val_shift = 1;
14957 					break;
14958 				case (0x1 << 3):
14959 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14960 					val_addr = (core_num == 0) ? 0x7a :
14961 						   0x7d;
14962 					val_mask = (0x1 << 2);
14963 					val_shift = 2;
14964 					break;
14965 				case (0x1 << 4):
14966 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14967 					val_addr = (core_num == 0) ? 0x7a :
14968 						   0x7d;
14969 					val_mask = (0x1 << 4);
14970 					val_shift = 4;
14971 					break;
14972 				case (0x1 << 5):
14973 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14974 					val_addr = (core_num == 0) ? 0x7a :
14975 						   0x7d;
14976 					val_mask = (0x1 << 5);
14977 					val_shift = 5;
14978 					break;
14979 				case (0x1 << 6):
14980 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14981 					val_addr = (core_num == 0) ? 0x7a :
14982 						   0x7d;
14983 					val_mask = (0x1 << 6);
14984 					val_shift = 6;
14985 					break;
14986 				case (0x1 << 7):
14987 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14988 					val_addr = (core_num == 0) ? 0x7a :
14989 						   0x7d;
14990 					val_mask = (0x1 << 7);
14991 					val_shift = 7;
14992 					break;
14993 				case (0x1 << 10):
14994 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14995 					val_addr = (core_num == 0) ? 0xf8 :
14996 						   0xfa;
14997 					val_mask = (0x7 << 4);
14998 					val_shift = 4;
14999 					break;
15000 				case (0x1 << 11):
15001 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
15002 					val_addr = (core_num == 0) ? 0x7b :
15003 						   0x7e;
15004 					val_mask = (0xffff << 0);
15005 					val_shift = 0;
15006 					break;
15007 				case (0x1 << 12):
15008 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
15009 					val_addr = (core_num == 0) ? 0x7c :
15010 						   0x7f;
15011 					val_mask = (0xffff << 0);
15012 					val_shift = 0;
15013 					break;
15014 				case (0x3 << 13):
15015 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
15016 					val_addr = (core_num == 0) ? 0x348 :
15017 						   0x349;
15018 					val_mask = (0xff << 0);
15019 					val_shift = 0;
15020 					break;
15021 				case (0x1 << 13):
15022 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
15023 					val_addr = (core_num == 0) ? 0x348 :
15024 						   0x349;
15025 					val_mask = (0xf << 0);
15026 					val_shift = 0;
15027 					break;
15028 				default:
15029 					addr = 0xffff;
15030 					break;
15031 				}
15032 			} else if (override_id ==
15033 				   NPHY_REV7_RFCTRLOVERRIDE_ID1) {
15034 
15035 				switch (field) {
15036 				case (0x1 << 1):
15037 					en_addr = (core_num == 0) ? 0x342 :
15038 						  0x343;
15039 					val_addr = (core_num == 0) ? 0x340 :
15040 						   0x341;
15041 					val_mask = (0x1 << 1);
15042 					val_shift = 1;
15043 					break;
15044 				case (0x1 << 3):
15045 					en_addr = (core_num == 0) ? 0x342 :
15046 						  0x343;
15047 					val_addr = (core_num == 0) ? 0x340 :
15048 						   0x341;
15049 					val_mask = (0x1 << 3);
15050 					val_shift = 3;
15051 					break;
15052 				case (0x1 << 5):
15053 					en_addr = (core_num == 0) ? 0x342 :
15054 						  0x343;
15055 					val_addr = (core_num == 0) ? 0x340 :
15056 						   0x341;
15057 					val_mask = (0x1 << 5);
15058 					val_shift = 5;
15059 					break;
15060 				case (0x1 << 4):
15061 					en_addr = (core_num == 0) ? 0x342 :
15062 						  0x343;
15063 					val_addr = (core_num == 0) ? 0x340 :
15064 						   0x341;
15065 					val_mask = (0x1 << 4);
15066 					val_shift = 4;
15067 					break;
15068 				case (0x1 << 2):
15069 
15070 					en_addr = (core_num == 0) ? 0x342 :
15071 						  0x343;
15072 					val_addr = (core_num == 0) ? 0x340 :
15073 						   0x341;
15074 					val_mask = (0x1 << 2);
15075 					val_shift = 2;
15076 					break;
15077 				case (0x1 << 7):
15078 
15079 					en_addr = (core_num == 0) ? 0x342 :
15080 						  0x343;
15081 					val_addr = (core_num == 0) ? 0x340 :
15082 						   0x341;
15083 					val_mask = (0x7 << 8);
15084 					val_shift = 8;
15085 					break;
15086 				case (0x1 << 11):
15087 					en_addr = (core_num == 0) ? 0x342 :
15088 						  0x343;
15089 					val_addr = (core_num == 0) ? 0x340 :
15090 						   0x341;
15091 					val_mask = (0x1 << 14);
15092 					val_shift = 14;
15093 					break;
15094 				case (0x1 << 10):
15095 					en_addr = (core_num == 0) ? 0x342 :
15096 						  0x343;
15097 					val_addr = (core_num == 0) ? 0x340 :
15098 						   0x341;
15099 					val_mask = (0x1 << 13);
15100 					val_shift = 13;
15101 					break;
15102 				case (0x1 << 9):
15103 					en_addr = (core_num == 0) ? 0x342 :
15104 						  0x343;
15105 					val_addr = (core_num == 0) ? 0x340 :
15106 						   0x341;
15107 					val_mask = (0x1 << 12);
15108 					val_shift = 12;
15109 					break;
15110 				case (0x1 << 8):
15111 					en_addr = (core_num == 0) ? 0x342 :
15112 						  0x343;
15113 					val_addr = (core_num == 0) ? 0x340 :
15114 						   0x341;
15115 					val_mask = (0x1 << 11);
15116 					val_shift = 11;
15117 					break;
15118 				case (0x1 << 6):
15119 					en_addr = (core_num == 0) ? 0x342 :
15120 						  0x343;
15121 					val_addr = (core_num == 0) ? 0x340 :
15122 						   0x341;
15123 					val_mask = (0x1 << 6);
15124 					val_shift = 6;
15125 					break;
15126 				case (0x1 << 0):
15127 					en_addr = (core_num == 0) ? 0x342 :
15128 						  0x343;
15129 					val_addr = (core_num == 0) ? 0x340 :
15130 						   0x341;
15131 					val_mask = (0x1 << 0);
15132 					val_shift = 0;
15133 					break;
15134 				default:
15135 					addr = 0xffff;
15136 					break;
15137 				}
15138 			} else if (override_id ==
15139 				   NPHY_REV7_RFCTRLOVERRIDE_ID2) {
15140 
15141 				switch (field) {
15142 				case (0x1 << 3):
15143 					en_addr = (core_num == 0) ? 0x346 :
15144 						  0x347;
15145 					val_addr = (core_num == 0) ? 0x344 :
15146 						   0x345;
15147 					val_mask = (0x1 << 3);
15148 					val_shift = 3;
15149 					break;
15150 				case (0x1 << 1):
15151 					en_addr = (core_num == 0) ? 0x346 :
15152 						  0x347;
15153 					val_addr = (core_num == 0) ? 0x344 :
15154 						   0x345;
15155 					val_mask = (0x1 << 1);
15156 					val_shift = 1;
15157 					break;
15158 				case (0x1 << 0):
15159 					en_addr = (core_num == 0) ? 0x346 :
15160 						  0x347;
15161 					val_addr = (core_num == 0) ? 0x344 :
15162 						   0x345;
15163 					val_mask = (0x1 << 0);
15164 					val_shift = 0;
15165 					break;
15166 				case (0x1 << 2):
15167 					en_addr = (core_num == 0) ? 0x346 :
15168 						  0x347;
15169 					val_addr = (core_num == 0) ? 0x344 :
15170 						   0x345;
15171 					val_mask = (0x1 << 2);
15172 					val_shift = 2;
15173 					break;
15174 				case (0x1 << 4):
15175 					en_addr = (core_num == 0) ? 0x346 :
15176 						  0x347;
15177 					val_addr = (core_num == 0) ? 0x344 :
15178 						   0x345;
15179 					val_mask = (0x1 << 4);
15180 					val_shift = 4;
15181 					break;
15182 				default:
15183 					addr = 0xffff;
15184 					break;
15185 				}
15186 			}
15187 
15188 			if (off) {
15189 				and_phy_reg(pi, en_addr, ~en_mask);
15190 				and_phy_reg(pi, val_addr, ~val_mask);
15191 			} else {
15192 
15193 				if ((core_mask == 0)
15194 				    || (core_mask & (1 << core_num))) {
15195 					or_phy_reg(pi, en_addr, en_mask);
15196 
15197 					if (addr != 0xffff)
15198 						mod_phy_reg(pi, val_addr,
15199 							    val_mask,
15200 							    (value <<
15201 							     val_shift));
15202 				}
15203 			}
15204 		}
15205 	}
15206 }
15207 
wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy * pi)15208 static void wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy *pi)
15209 {
15210 	uint core;
15211 	int ctr;
15212 	s16 gain_delta[2];
15213 	u8 curr_channel;
15214 	u16 minmax_gain[2];
15215 	u16 regval[4];
15216 
15217 	if (pi->phyhang_avoid)
15218 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
15219 
15220 	if (pi->nphy_gain_boost) {
15221 		if ((CHSPEC_IS2G(pi->radio_chanspec))) {
15222 
15223 			gain_delta[0] = 6;
15224 			gain_delta[1] = 6;
15225 		} else {
15226 
15227 			curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
15228 			gain_delta[0] =
15229 				(s16)
15230 				PHY_HW_ROUND(((nphy_lnagain_est0[0] *
15231 					       curr_channel) +
15232 					      nphy_lnagain_est0[1]), 13);
15233 			gain_delta[1] =
15234 				(s16)
15235 				PHY_HW_ROUND(((nphy_lnagain_est1[0] *
15236 					       curr_channel) +
15237 					      nphy_lnagain_est1[1]), 13);
15238 		}
15239 	} else {
15240 
15241 		gain_delta[0] = 0;
15242 		gain_delta[1] = 0;
15243 	}
15244 
15245 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
15246 		if (pi->nphy_elna_gain_config) {
15247 
15248 			regval[0] = nphy_def_lnagains[2] + gain_delta[core];
15249 			regval[1] = nphy_def_lnagains[3] + gain_delta[core];
15250 			regval[2] = nphy_def_lnagains[3] + gain_delta[core];
15251 			regval[3] = nphy_def_lnagains[3] + gain_delta[core];
15252 		} else {
15253 			for (ctr = 0; ctr < 4; ctr++)
15254 				regval[ctr] =
15255 					nphy_def_lnagains[ctr] +
15256 					gain_delta[core];
15257 		}
15258 		wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
15259 
15260 		minmax_gain[core] =
15261 			(u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
15262 	}
15263 
15264 	mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
15265 	mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
15266 
15267 	if (pi->phyhang_avoid)
15268 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
15269 }
15270 
15271 static void
wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy * pi,u8 core)15272 wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy *pi, u8 core)
15273 {
15274 	if (core == PHY_CORE_0) {
15275 		write_phy_reg(pi, 0x38, 0x4);
15276 		if (CHSPEC_IS2G(pi->radio_chanspec))
15277 			write_phy_reg(pi, 0x37, 0x0060);
15278 		else
15279 			write_phy_reg(pi, 0x37, 0x1080);
15280 	} else if (core == PHY_CORE_1) {
15281 		write_phy_reg(pi, 0x2ae, 0x4);
15282 		if (CHSPEC_IS2G(pi->radio_chanspec))
15283 			write_phy_reg(pi, 0x2ad, 0x0060);
15284 		else
15285 			write_phy_reg(pi, 0x2ad, 0x1080);
15286 	}
15287 }
15288 
wlc_phy_war_txchain_upd_nphy(struct brcms_phy * pi,u8 txchain)15289 static void wlc_phy_war_txchain_upd_nphy(struct brcms_phy *pi, u8 txchain)
15290 {
15291 	u8 txchain0, txchain1;
15292 
15293 	txchain0 = txchain & 0x1;
15294 	txchain1 = (txchain & 0x2) >> 1;
15295 	if (!txchain0)
15296 		wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15297 
15298 	if (!txchain1)
15299 		wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15300 }
15301 
wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy * pi)15302 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy *pi)
15303 {
15304 	s8 lna1_gain_db[] = { 8, 13, 17, 22 };
15305 	s8 lna2_gain_db[] = { -2, 7, 11, 15 };
15306 	s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
15307 	s8 tia_gainbits[] = {
15308 		0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15309 
15310 	mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15311 	mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15312 
15313 	mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15314 
15315 	mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
15316 	mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
15317 
15318 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
15319 				 lna1_gain_db);
15320 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
15321 				 lna1_gain_db);
15322 
15323 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
15324 				 lna2_gain_db);
15325 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
15326 				 lna2_gain_db);
15327 
15328 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15329 				 tia_gain_db);
15330 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15331 				 tia_gain_db);
15332 
15333 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15334 				 tia_gainbits);
15335 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15336 				 tia_gainbits);
15337 
15338 	write_phy_reg(pi, 0x37, 0x74);
15339 	write_phy_reg(pi, 0x2ad, 0x74);
15340 	write_phy_reg(pi, 0x38, 0x18);
15341 	write_phy_reg(pi, 0x2ae, 0x18);
15342 
15343 	write_phy_reg(pi, 0x2b, 0xe8);
15344 	write_phy_reg(pi, 0x41, 0xe8);
15345 
15346 	if (CHSPEC_IS20(pi->radio_chanspec)) {
15347 
15348 		mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
15349 		mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
15350 	} else {
15351 
15352 		mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
15353 		mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
15354 	}
15355 }
15356 
wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy * pi)15357 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
15358 {
15359 	u16 currband;
15360 	s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
15361 	s8 *lna1_gain_db = NULL;
15362 	s8 *lna1_gain_db_2 = NULL;
15363 	s8 *lna2_gain_db = NULL;
15364 	s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
15365 	s8 *tia_gain_db;
15366 	s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
15367 	s8 *tia_gainbits;
15368 	u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
15369 	u16 *rfseq_init_gain;
15370 	u16 init_gaincode;
15371 	u16 clip1hi_gaincode;
15372 	u16 clip1md_gaincode = 0;
15373 	u16 clip1md_gaincode_B;
15374 	u16 clip1lo_gaincode;
15375 	u16 clip1lo_gaincode_B;
15376 	u8 crsminl_th = 0;
15377 	u8 crsminu_th;
15378 	u16 nbclip_th = 0;
15379 	u8 w1clip_th;
15380 	u16 freq;
15381 	s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
15382 	u8 chg_nbclip_th = 0;
15383 
15384 	mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15385 	mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15386 
15387 	currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15388 	if (currband == 0) {
15389 
15390 		lna1_gain_db = lna1G_gain_db_rev7;
15391 
15392 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15393 					 lna1_gain_db);
15394 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15395 					 lna1_gain_db);
15396 
15397 		mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
15398 
15399 		if (CHSPEC_IS40(pi->radio_chanspec)) {
15400 			mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
15401 			mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
15402 		}
15403 
15404 		mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15405 
15406 		if (CHSPEC_IS20(pi->radio_chanspec)) {
15407 			mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
15408 			mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
15409 		}
15410 	} else {
15411 
15412 		init_gaincode = 0x9e;
15413 		clip1hi_gaincode = 0x9e;
15414 		clip1md_gaincode_B = 0x24;
15415 		clip1lo_gaincode = 0x8a;
15416 		clip1lo_gaincode_B = 8;
15417 		rfseq_init_gain = rfseqA_init_gain_rev7;
15418 
15419 		tia_gain_db = tiaA_gain_db_rev7;
15420 		tia_gainbits = tiaA_gainbits_rev7;
15421 
15422 		freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
15423 		if (CHSPEC_IS20(pi->radio_chanspec)) {
15424 
15425 			w1clip_th = 25;
15426 			clip1md_gaincode = 0x82;
15427 
15428 			if ((freq <= 5080) || (freq == 5825)) {
15429 
15430 				s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
15431 				s8 lna1A_gain_db_2_rev7[] = {
15432 					11, 17, 22, 25};
15433 				s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15434 
15435 				crsminu_th = 0x3e;
15436 				lna1_gain_db = lna1A_gain_db_rev7;
15437 				lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15438 				lna2_gain_db = lna2A_gain_db_rev7;
15439 			} else if ((freq >= 5500) && (freq <= 5700)) {
15440 
15441 				s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
15442 				s8 lna1A_gain_db_2_rev7[] = {
15443 					12, 18, 22, 26};
15444 				s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
15445 
15446 				crsminu_th = 0x45;
15447 				clip1md_gaincode_B = 0x14;
15448 				nbclip_th = 0xff;
15449 				chg_nbclip_th = 1;
15450 				lna1_gain_db = lna1A_gain_db_rev7;
15451 				lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15452 				lna2_gain_db = lna2A_gain_db_rev7;
15453 			} else {
15454 
15455 				s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
15456 				s8 lna1A_gain_db_2_rev7[] = {
15457 					12, 18, 22, 26};
15458 				s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15459 
15460 				crsminu_th = 0x41;
15461 				lna1_gain_db = lna1A_gain_db_rev7;
15462 				lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15463 				lna2_gain_db = lna2A_gain_db_rev7;
15464 			}
15465 
15466 			if (freq <= 4920) {
15467 				nvar_baseline_offset0 = 5;
15468 				nvar_baseline_offset1 = 5;
15469 			} else if ((freq > 4920) && (freq <= 5320)) {
15470 				nvar_baseline_offset0 = 3;
15471 				nvar_baseline_offset1 = 5;
15472 			} else if ((freq > 5320) && (freq <= 5700)) {
15473 				nvar_baseline_offset0 = 3;
15474 				nvar_baseline_offset1 = 2;
15475 			} else {
15476 				nvar_baseline_offset0 = 4;
15477 				nvar_baseline_offset1 = 0;
15478 			}
15479 		} else {
15480 
15481 			crsminu_th = 0x3a;
15482 			crsminl_th = 0x3a;
15483 			w1clip_th = 20;
15484 
15485 			if ((freq >= 4920) && (freq <= 5320)) {
15486 				nvar_baseline_offset0 = 4;
15487 				nvar_baseline_offset1 = 5;
15488 			} else if ((freq > 5320) && (freq <= 5550)) {
15489 				nvar_baseline_offset0 = 4;
15490 				nvar_baseline_offset1 = 2;
15491 			} else {
15492 				nvar_baseline_offset0 = 5;
15493 				nvar_baseline_offset1 = 3;
15494 			}
15495 		}
15496 
15497 		write_phy_reg(pi, 0x20, init_gaincode);
15498 		write_phy_reg(pi, 0x2a7, init_gaincode);
15499 
15500 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15501 					 pi->pubpi.phy_corenum, 0x106, 16,
15502 					 rfseq_init_gain);
15503 
15504 		write_phy_reg(pi, 0x22, clip1hi_gaincode);
15505 		write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15506 
15507 		write_phy_reg(pi, 0x36, clip1md_gaincode_B);
15508 		write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
15509 
15510 		write_phy_reg(pi, 0x37, clip1lo_gaincode);
15511 		write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15512 		write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
15513 		write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
15514 
15515 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15516 					 tia_gain_db);
15517 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15518 					 tia_gain_db);
15519 
15520 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15521 					 tia_gainbits);
15522 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15523 					 tia_gainbits);
15524 
15525 		mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15526 
15527 		if (chg_nbclip_th == 1) {
15528 			write_phy_reg(pi, 0x2b, nbclip_th);
15529 			write_phy_reg(pi, 0x41, nbclip_th);
15530 		}
15531 
15532 		mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
15533 		mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
15534 
15535 		mod_phy_reg(pi, 0x2e4,
15536 			    (0x3f << 0), (nvar_baseline_offset0 << 0));
15537 
15538 		mod_phy_reg(pi, 0x2e4,
15539 			    (0x3f << 6), (nvar_baseline_offset1 << 6));
15540 
15541 		if (CHSPEC_IS20(pi->radio_chanspec)) {
15542 
15543 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15544 						 lna1_gain_db);
15545 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15546 						 lna1_gain_db_2);
15547 
15548 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15549 						 8, lna2_gain_db);
15550 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15551 						 8, lna2_gain_db);
15552 
15553 			write_phy_reg(pi, 0x24, clip1md_gaincode);
15554 			write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15555 		} else {
15556 			mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15557 		}
15558 	}
15559 }
15560 
wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy * pi)15561 static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
15562 {
15563 	u16 w1th, hpf_code, currband;
15564 	int ctr;
15565 	u8 rfseq_updategainu_events[] = {
15566 		NPHY_RFSEQ_CMD_RX_GAIN,
15567 		NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15568 		NPHY_RFSEQ_CMD_SET_HPF_BW
15569 	};
15570 	u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
15571 	s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
15572 	s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
15573 	s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
15574 	s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
15575 	s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
15576 	s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
15577 	s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
15578 	s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
15579 	s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
15580 	s8 *lna1_gain_db = NULL;
15581 	s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
15582 	s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
15583 	s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
15584 	s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
15585 	s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
15586 	s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
15587 	s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
15588 	s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
15589 	s8 *lna2_gain_db = NULL;
15590 	s8 tiaG_gain_db[] = {
15591 		0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
15592 	s8 tiaA_gain_db[] = {
15593 		0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
15594 	s8 tiaA_gain_db_rev4[] = {
15595 		0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15596 	s8 tiaA_gain_db_rev5[] = {
15597 		0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15598 	s8 tiaA_gain_db_rev6[] = {
15599 		0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15600 	s8 *tia_gain_db;
15601 	s8 tiaG_gainbits[] = {
15602 		0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15603 	s8 tiaA_gainbits[] = {
15604 		0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
15605 	s8 tiaA_gainbits_rev4[] = {
15606 		0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15607 	s8 tiaA_gainbits_rev5[] = {
15608 		0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15609 	s8 tiaA_gainbits_rev6[] = {
15610 		0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15611 	s8 *tia_gainbits;
15612 	s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
15613 	s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
15614 	u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
15615 	u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
15616 	u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
15617 	u16 rfseqG_init_gain_rev5_elna[] = {
15618 		0x013f, 0x013f, 0x013f, 0x013f };
15619 	u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
15620 	u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
15621 	u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
15622 	u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
15623 	u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
15624 	u16 rfseqA_init_gain_rev4_elna[] = {
15625 		0x314f, 0x314f, 0x314f, 0x314f };
15626 	u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
15627 	u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
15628 	u16 *rfseq_init_gain;
15629 	u16 initG_gaincode = 0x627e;
15630 	u16 initG_gaincode_rev4 = 0x527e;
15631 	u16 initG_gaincode_rev5 = 0x427e;
15632 	u16 initG_gaincode_rev5_elna = 0x027e;
15633 	u16 initG_gaincode_rev6 = 0x527e;
15634 	u16 initG_gaincode_rev6_224B0 = 0x427e;
15635 	u16 initG_gaincode_rev6_elna = 0x127e;
15636 	u16 initA_gaincode = 0x52de;
15637 	u16 initA_gaincode_rev4 = 0x629e;
15638 	u16 initA_gaincode_rev4_elna = 0x329e;
15639 	u16 initA_gaincode_rev5 = 0x729e;
15640 	u16 initA_gaincode_rev6 = 0x729e;
15641 	u16 init_gaincode;
15642 	u16 clip1hiG_gaincode = 0x107e;
15643 	u16 clip1hiG_gaincode_rev4 = 0x007e;
15644 	u16 clip1hiG_gaincode_rev5 = 0x1076;
15645 	u16 clip1hiG_gaincode_rev6 = 0x007e;
15646 	u16 clip1hiA_gaincode = 0x00de;
15647 	u16 clip1hiA_gaincode_rev4 = 0x029e;
15648 	u16 clip1hiA_gaincode_rev5 = 0x029e;
15649 	u16 clip1hiA_gaincode_rev6 = 0x029e;
15650 	u16 clip1hi_gaincode;
15651 	u16 clip1mdG_gaincode = 0x0066;
15652 	u16 clip1mdA_gaincode = 0x00ca;
15653 	u16 clip1mdA_gaincode_rev4 = 0x1084;
15654 	u16 clip1mdA_gaincode_rev5 = 0x2084;
15655 	u16 clip1mdA_gaincode_rev6 = 0x2084;
15656 	u16 clip1md_gaincode = 0;
15657 	u16 clip1loG_gaincode = 0x0074;
15658 	u16 clip1loG_gaincode_rev5[] = {
15659 		0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
15660 	};
15661 	u16 clip1loG_gaincode_rev6[] = {
15662 		0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
15663 	};
15664 	u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
15665 	u16 clip1loA_gaincode = 0x00cc;
15666 	u16 clip1loA_gaincode_rev4 = 0x0086;
15667 	u16 clip1loA_gaincode_rev5 = 0x2086;
15668 	u16 clip1loA_gaincode_rev6 = 0x2086;
15669 	u16 clip1lo_gaincode;
15670 	u8 crsminG_th = 0x18;
15671 	u8 crsminG_th_rev5 = 0x18;
15672 	u8 crsminG_th_rev6 = 0x18;
15673 	u8 crsminA_th = 0x1e;
15674 	u8 crsminA_th_rev4 = 0x24;
15675 	u8 crsminA_th_rev5 = 0x24;
15676 	u8 crsminA_th_rev6 = 0x24;
15677 	u8 crsmin_th;
15678 	u8 crsminlG_th = 0x18;
15679 	u8 crsminlG_th_rev5 = 0x18;
15680 	u8 crsminlG_th_rev6 = 0x18;
15681 	u8 crsminlA_th = 0x1e;
15682 	u8 crsminlA_th_rev4 = 0x24;
15683 	u8 crsminlA_th_rev5 = 0x24;
15684 	u8 crsminlA_th_rev6 = 0x24;
15685 	u8 crsminl_th = 0;
15686 	u8 crsminuG_th = 0x18;
15687 	u8 crsminuG_th_rev5 = 0x18;
15688 	u8 crsminuG_th_rev6 = 0x18;
15689 	u8 crsminuA_th = 0x1e;
15690 	u8 crsminuA_th_rev4 = 0x24;
15691 	u8 crsminuA_th_rev5 = 0x24;
15692 	u8 crsminuA_th_rev6 = 0x24;
15693 	u8 crsminuA_th_rev6_224B0 = 0x2d;
15694 	u8 crsminu_th;
15695 	u16 nbclipG_th = 0x20d;
15696 	u16 nbclipG_th_rev4 = 0x1a1;
15697 	u16 nbclipG_th_rev5 = 0x1d0;
15698 	u16 nbclipG_th_rev6 = 0x1d0;
15699 	u16 nbclipA_th = 0x1a1;
15700 	u16 nbclipA_th_rev4 = 0x107;
15701 	u16 nbclipA_th_rev5 = 0x0a9;
15702 	u16 nbclipA_th_rev6 = 0x0f0;
15703 	u16 nbclip_th = 0;
15704 	u8 w1clipG_th = 5;
15705 	u8 w1clipG_th_rev5 = 9;
15706 	u8 w1clipG_th_rev6 = 5;
15707 	u8 w1clipA_th = 25, w1clip_th;
15708 	u8 rssi_gain_default = 0x50;
15709 	u8 rssiG_gain_rev6_224B0 = 0x50;
15710 	u8 rssiA_gain_rev5 = 0x90;
15711 	u8 rssiA_gain_rev6 = 0x90;
15712 	u8 rssi_gain;
15713 	u16 regval[21];
15714 	u8 triso;
15715 
15716 	triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
15717 		pi->srom_fem2g.triso;
15718 
15719 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15720 		if (pi->pubpi.radiorev == 5) {
15721 			wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
15722 		} else if (pi->pubpi.radiorev == 7) {
15723 			wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15724 
15725 			mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
15726 			mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
15727 
15728 		} else if ((pi->pubpi.radiorev == 3)
15729 			   || (pi->pubpi.radiorev == 8)) {
15730 			wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15731 
15732 			if (pi->pubpi.radiorev == 8) {
15733 				mod_phy_reg(pi, 0x283,
15734 					    (0xff << 0), (0x44 << 0));
15735 				mod_phy_reg(pi, 0x280,
15736 					    (0xff << 0), (0x44 << 0));
15737 			}
15738 		} else {
15739 			wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15740 		}
15741 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15742 
15743 		mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
15744 
15745 		mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15746 		mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15747 
15748 		currband =
15749 			read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15750 		if (currband == 0) {
15751 			if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15752 				if (pi->pubpi.radiorev == 11) {
15753 					lna1_gain_db = lna1G_gain_db_rev6_224B0;
15754 					lna2_gain_db = lna2G_gain_db_rev6_224B0;
15755 					rfseq_init_gain =
15756 						rfseqG_init_gain_rev6_224B0;
15757 					init_gaincode =
15758 						initG_gaincode_rev6_224B0;
15759 					clip1hi_gaincode =
15760 						clip1hiG_gaincode_rev6;
15761 					clip1lo_gaincode =
15762 						clip1loG_gaincode_rev6_224B0;
15763 					nbclip_th = nbclipG_th_rev6;
15764 					w1clip_th = w1clipG_th_rev6;
15765 					crsmin_th = crsminG_th_rev6;
15766 					crsminl_th = crsminlG_th_rev6;
15767 					crsminu_th = crsminuG_th_rev6;
15768 					rssi_gain = rssiG_gain_rev6_224B0;
15769 				} else {
15770 					lna1_gain_db = lna1G_gain_db_rev6;
15771 					lna2_gain_db = lna2G_gain_db_rev6;
15772 					if (pi->sh->boardflags & BFL_EXTLNA) {
15773 
15774 						rfseq_init_gain =
15775 						     rfseqG_init_gain_rev6_elna;
15776 						init_gaincode =
15777 						       initG_gaincode_rev6_elna;
15778 					} else {
15779 						rfseq_init_gain =
15780 							rfseqG_init_gain_rev6;
15781 						init_gaincode =
15782 							initG_gaincode_rev6;
15783 					}
15784 					clip1hi_gaincode =
15785 						clip1hiG_gaincode_rev6;
15786 					switch (triso) {
15787 					case 0:
15788 						clip1lo_gaincode =
15789 							clip1loG_gaincode_rev6
15790 							[0];
15791 						break;
15792 					case 1:
15793 						clip1lo_gaincode =
15794 							clip1loG_gaincode_rev6
15795 							[1];
15796 						break;
15797 					case 2:
15798 						clip1lo_gaincode =
15799 							clip1loG_gaincode_rev6
15800 							[2];
15801 						break;
15802 					case 3:
15803 					default:
15804 
15805 						clip1lo_gaincode =
15806 							clip1loG_gaincode_rev6
15807 							[3];
15808 						break;
15809 					case 4:
15810 						clip1lo_gaincode =
15811 							clip1loG_gaincode_rev6
15812 							[4];
15813 						break;
15814 					case 5:
15815 						clip1lo_gaincode =
15816 							clip1loG_gaincode_rev6
15817 							[5];
15818 						break;
15819 					case 6:
15820 						clip1lo_gaincode =
15821 							clip1loG_gaincode_rev6
15822 							[6];
15823 						break;
15824 					case 7:
15825 						clip1lo_gaincode =
15826 							clip1loG_gaincode_rev6
15827 							[7];
15828 						break;
15829 					}
15830 					nbclip_th = nbclipG_th_rev6;
15831 					w1clip_th = w1clipG_th_rev6;
15832 					crsmin_th = crsminG_th_rev6;
15833 					crsminl_th = crsminlG_th_rev6;
15834 					crsminu_th = crsminuG_th_rev6;
15835 					rssi_gain = rssi_gain_default;
15836 				}
15837 			} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15838 				lna1_gain_db = lna1G_gain_db_rev5;
15839 				lna2_gain_db = lna2G_gain_db_rev5;
15840 				if (pi->sh->boardflags & BFL_EXTLNA) {
15841 
15842 					rfseq_init_gain =
15843 						rfseqG_init_gain_rev5_elna;
15844 					init_gaincode =
15845 						initG_gaincode_rev5_elna;
15846 				} else {
15847 					rfseq_init_gain = rfseqG_init_gain_rev5;
15848 					init_gaincode = initG_gaincode_rev5;
15849 				}
15850 				clip1hi_gaincode = clip1hiG_gaincode_rev5;
15851 				switch (triso) {
15852 				case 0:
15853 					clip1lo_gaincode =
15854 						clip1loG_gaincode_rev5[0];
15855 					break;
15856 				case 1:
15857 					clip1lo_gaincode =
15858 						clip1loG_gaincode_rev5[1];
15859 					break;
15860 				case 2:
15861 					clip1lo_gaincode =
15862 						clip1loG_gaincode_rev5[2];
15863 					break;
15864 				case 3:
15865 
15866 					clip1lo_gaincode =
15867 						clip1loG_gaincode_rev5[3];
15868 					break;
15869 				case 4:
15870 					clip1lo_gaincode =
15871 						clip1loG_gaincode_rev5[4];
15872 					break;
15873 				case 5:
15874 					clip1lo_gaincode =
15875 						clip1loG_gaincode_rev5[5];
15876 					break;
15877 				case 6:
15878 					clip1lo_gaincode =
15879 						clip1loG_gaincode_rev5[6];
15880 					break;
15881 				case 7:
15882 					clip1lo_gaincode =
15883 						clip1loG_gaincode_rev5[7];
15884 					break;
15885 				default:
15886 					clip1lo_gaincode =
15887 						clip1loG_gaincode_rev5[3];
15888 					break;
15889 				}
15890 				nbclip_th = nbclipG_th_rev5;
15891 				w1clip_th = w1clipG_th_rev5;
15892 				crsmin_th = crsminG_th_rev5;
15893 				crsminl_th = crsminlG_th_rev5;
15894 				crsminu_th = crsminuG_th_rev5;
15895 				rssi_gain = rssi_gain_default;
15896 			} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15897 				lna1_gain_db = lna1G_gain_db_rev4;
15898 				lna2_gain_db = lna2G_gain_db;
15899 				rfseq_init_gain = rfseqG_init_gain_rev4;
15900 				init_gaincode = initG_gaincode_rev4;
15901 				clip1hi_gaincode = clip1hiG_gaincode_rev4;
15902 				clip1lo_gaincode = clip1loG_gaincode;
15903 				nbclip_th = nbclipG_th_rev4;
15904 				w1clip_th = w1clipG_th;
15905 				crsmin_th = crsminG_th;
15906 				crsminl_th = crsminlG_th;
15907 				crsminu_th = crsminuG_th;
15908 				rssi_gain = rssi_gain_default;
15909 			} else {
15910 				lna1_gain_db = lna1G_gain_db;
15911 				lna2_gain_db = lna2G_gain_db;
15912 				rfseq_init_gain = rfseqG_init_gain;
15913 				init_gaincode = initG_gaincode;
15914 				clip1hi_gaincode = clip1hiG_gaincode;
15915 				clip1lo_gaincode = clip1loG_gaincode;
15916 				nbclip_th = nbclipG_th;
15917 				w1clip_th = w1clipG_th;
15918 				crsmin_th = crsminG_th;
15919 				crsminl_th = crsminlG_th;
15920 				crsminu_th = crsminuG_th;
15921 				rssi_gain = rssi_gain_default;
15922 			}
15923 			tia_gain_db = tiaG_gain_db;
15924 			tia_gainbits = tiaG_gainbits;
15925 			clip1md_gaincode = clip1mdG_gaincode;
15926 		} else {
15927 			if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15928 				lna1_gain_db = lna1A_gain_db_rev6;
15929 				lna2_gain_db = lna2A_gain_db_rev6;
15930 				tia_gain_db = tiaA_gain_db_rev6;
15931 				tia_gainbits = tiaA_gainbits_rev6;
15932 				rfseq_init_gain = rfseqA_init_gain_rev6;
15933 				init_gaincode = initA_gaincode_rev6;
15934 				clip1hi_gaincode = clip1hiA_gaincode_rev6;
15935 				clip1md_gaincode = clip1mdA_gaincode_rev6;
15936 				clip1lo_gaincode = clip1loA_gaincode_rev6;
15937 				crsmin_th = crsminA_th_rev6;
15938 				crsminl_th = crsminlA_th_rev6;
15939 				if ((pi->pubpi.radiorev == 11) &&
15940 				    (CHSPEC_IS40(pi->radio_chanspec) == 0))
15941 					crsminu_th = crsminuA_th_rev6_224B0;
15942 				else
15943 					crsminu_th = crsminuA_th_rev6;
15944 
15945 				nbclip_th = nbclipA_th_rev6;
15946 				rssi_gain = rssiA_gain_rev6;
15947 			} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15948 				lna1_gain_db = lna1A_gain_db_rev5;
15949 				lna2_gain_db = lna2A_gain_db_rev5;
15950 				tia_gain_db = tiaA_gain_db_rev5;
15951 				tia_gainbits = tiaA_gainbits_rev5;
15952 				rfseq_init_gain = rfseqA_init_gain_rev5;
15953 				init_gaincode = initA_gaincode_rev5;
15954 				clip1hi_gaincode = clip1hiA_gaincode_rev5;
15955 				clip1md_gaincode = clip1mdA_gaincode_rev5;
15956 				clip1lo_gaincode = clip1loA_gaincode_rev5;
15957 				crsmin_th = crsminA_th_rev5;
15958 				crsminl_th = crsminlA_th_rev5;
15959 				crsminu_th = crsminuA_th_rev5;
15960 				nbclip_th = nbclipA_th_rev5;
15961 				rssi_gain = rssiA_gain_rev5;
15962 			} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15963 				lna1_gain_db = lna1A_gain_db_rev4;
15964 				lna2_gain_db = lna2A_gain_db_rev4;
15965 				tia_gain_db = tiaA_gain_db_rev4;
15966 				tia_gainbits = tiaA_gainbits_rev4;
15967 				if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
15968 
15969 					rfseq_init_gain =
15970 						rfseqA_init_gain_rev4_elna;
15971 					init_gaincode =
15972 						initA_gaincode_rev4_elna;
15973 				} else {
15974 					rfseq_init_gain = rfseqA_init_gain_rev4;
15975 					init_gaincode = initA_gaincode_rev4;
15976 				}
15977 				clip1hi_gaincode = clip1hiA_gaincode_rev4;
15978 				clip1md_gaincode = clip1mdA_gaincode_rev4;
15979 				clip1lo_gaincode = clip1loA_gaincode_rev4;
15980 				crsmin_th = crsminA_th_rev4;
15981 				crsminl_th = crsminlA_th_rev4;
15982 				crsminu_th = crsminuA_th_rev4;
15983 				nbclip_th = nbclipA_th_rev4;
15984 				rssi_gain = rssi_gain_default;
15985 			} else {
15986 				lna1_gain_db = lna1A_gain_db;
15987 				lna2_gain_db = lna2A_gain_db;
15988 				tia_gain_db = tiaA_gain_db;
15989 				tia_gainbits = tiaA_gainbits;
15990 				rfseq_init_gain = rfseqA_init_gain;
15991 				init_gaincode = initA_gaincode;
15992 				clip1hi_gaincode = clip1hiA_gaincode;
15993 				clip1md_gaincode = clip1mdA_gaincode;
15994 				clip1lo_gaincode = clip1loA_gaincode;
15995 				crsmin_th = crsminA_th;
15996 				crsminl_th = crsminlA_th;
15997 				crsminu_th = crsminuA_th;
15998 				nbclip_th = nbclipA_th;
15999 				rssi_gain = rssi_gain_default;
16000 			}
16001 			w1clip_th = w1clipA_th;
16002 		}
16003 
16004 		write_radio_reg(pi,
16005 				(RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16006 				 RADIO_2056_RX0), 0x17);
16007 		write_radio_reg(pi,
16008 				(RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16009 				 RADIO_2056_RX1), 0x17);
16010 
16011 		write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
16012 				0xf0);
16013 		write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
16014 				0xf0);
16015 
16016 		write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
16017 				0x0);
16018 		write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
16019 				0x0);
16020 
16021 		write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
16022 				rssi_gain);
16023 		write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
16024 				rssi_gain);
16025 
16026 		write_radio_reg(pi,
16027 				(RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16028 				 RADIO_2056_RX0), 0x17);
16029 		write_radio_reg(pi,
16030 				(RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16031 				 RADIO_2056_RX1), 0x17);
16032 
16033 		write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
16034 				0xFF);
16035 		write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
16036 				0xFF);
16037 
16038 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
16039 					 8, lna1_gain_db);
16040 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
16041 					 8, lna1_gain_db);
16042 
16043 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
16044 					 8, lna2_gain_db);
16045 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
16046 					 8, lna2_gain_db);
16047 
16048 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
16049 					 8, tia_gain_db);
16050 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
16051 					 8, tia_gain_db);
16052 
16053 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
16054 					 8, tia_gainbits);
16055 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
16056 					 8, tia_gainbits);
16057 
16058 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
16059 					 8, &lpf_gain_db);
16060 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
16061 					 8, &lpf_gain_db);
16062 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
16063 					 8, &lpf_gainbits);
16064 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
16065 					 8, &lpf_gainbits);
16066 
16067 		write_phy_reg(pi, 0x20, init_gaincode);
16068 		write_phy_reg(pi, 0x2a7, init_gaincode);
16069 
16070 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16071 					 pi->pubpi.phy_corenum, 0x106, 16,
16072 					 rfseq_init_gain);
16073 
16074 		write_phy_reg(pi, 0x22, clip1hi_gaincode);
16075 		write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
16076 
16077 		write_phy_reg(pi, 0x24, clip1md_gaincode);
16078 		write_phy_reg(pi, 0x2ab, clip1md_gaincode);
16079 
16080 		write_phy_reg(pi, 0x37, clip1lo_gaincode);
16081 		write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
16082 
16083 		mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
16084 		mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
16085 		mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
16086 
16087 		write_phy_reg(pi, 0x2b, nbclip_th);
16088 		write_phy_reg(pi, 0x41, nbclip_th);
16089 
16090 		mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
16091 		mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
16092 
16093 		write_phy_reg(pi, 0x150, 0x809c);
16094 
16095 	} else {
16096 
16097 		mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16098 		mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16099 
16100 		write_phy_reg(pi, 0x2b, 0x84);
16101 		write_phy_reg(pi, 0x41, 0x84);
16102 
16103 		if (CHSPEC_IS20(pi->radio_chanspec)) {
16104 			write_phy_reg(pi, 0x6b, 0x2b);
16105 			write_phy_reg(pi, 0x6c, 0x2b);
16106 			write_phy_reg(pi, 0x6d, 0x9);
16107 			write_phy_reg(pi, 0x6e, 0x9);
16108 		}
16109 
16110 		w1th = NPHY_RSSICAL_W1_TARGET - 4;
16111 		mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
16112 		mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
16113 
16114 		if (CHSPEC_IS20(pi->radio_chanspec)) {
16115 			mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
16116 			mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
16117 
16118 			mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
16119 			mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16120 		}
16121 
16122 		write_phy_reg(pi, 0x150, 0x809c);
16123 
16124 		if (pi->nphy_gain_boost)
16125 			if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16126 			    (CHSPEC_IS40(pi->radio_chanspec)))
16127 				hpf_code = 4;
16128 			else
16129 				hpf_code = 5;
16130 		else if (CHSPEC_IS40(pi->radio_chanspec))
16131 			hpf_code = 6;
16132 		else
16133 			hpf_code = 7;
16134 
16135 		mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16136 		mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16137 
16138 		for (ctr = 0; ctr < 4; ctr++)
16139 			regval[ctr] = (hpf_code << 8) | 0x7c;
16140 		wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16141 
16142 		wlc_phy_adjust_lnagaintbl_nphy(pi);
16143 
16144 		if (pi->nphy_elna_gain_config) {
16145 			regval[0] = 0;
16146 			regval[1] = 1;
16147 			regval[2] = 1;
16148 			regval[3] = 1;
16149 			wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16150 			wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16151 
16152 			for (ctr = 0; ctr < 4; ctr++)
16153 				regval[ctr] = (hpf_code << 8) | 0x74;
16154 			wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16155 		}
16156 
16157 		if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16158 			for (ctr = 0; ctr < 21; ctr++)
16159 				regval[ctr] = 3 * ctr;
16160 			wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16161 			wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16162 
16163 			for (ctr = 0; ctr < 21; ctr++)
16164 				regval[ctr] = (u16) ctr;
16165 			wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16166 			wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16167 		}
16168 
16169 		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16170 				       rfseq_updategainu_events,
16171 				       rfseq_updategainu_dlys,
16172 				       sizeof(rfseq_updategainu_events) /
16173 				       sizeof(rfseq_updategainu_events[0]));
16174 
16175 		mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16176 
16177 		if (CHSPEC_IS2G(pi->radio_chanspec))
16178 			mod_phy_reg(pi,
16179 				    (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16180 				    0x7f, 0x4);
16181 	}
16182 }
16183 
wlc_phy_workarounds_nphy(struct brcms_phy * pi)16184 static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
16185 {
16186 	u8 rfseq_rx2tx_events[] = {
16187 		NPHY_RFSEQ_CMD_NOP,
16188 		NPHY_RFSEQ_CMD_RXG_FBW,
16189 		NPHY_RFSEQ_CMD_TR_SWITCH,
16190 		NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16191 		NPHY_RFSEQ_CMD_RXPD_TXPD,
16192 		NPHY_RFSEQ_CMD_TX_GAIN,
16193 		NPHY_RFSEQ_CMD_EXT_PA
16194 	};
16195 	u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
16196 	u8 rfseq_tx2rx_events[] = {
16197 		NPHY_RFSEQ_CMD_NOP,
16198 		NPHY_RFSEQ_CMD_EXT_PA,
16199 		NPHY_RFSEQ_CMD_TX_GAIN,
16200 		NPHY_RFSEQ_CMD_RXPD_TXPD,
16201 		NPHY_RFSEQ_CMD_TR_SWITCH,
16202 		NPHY_RFSEQ_CMD_RXG_FBW,
16203 		NPHY_RFSEQ_CMD_CLR_HIQ_DIS
16204 	};
16205 	u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
16206 	u8 rfseq_tx2rx_events_rev3[] = {
16207 		NPHY_REV3_RFSEQ_CMD_EXT_PA,
16208 		NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16209 		NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16210 		NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16211 		NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16212 		NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16213 		NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16214 		NPHY_REV3_RFSEQ_CMD_END
16215 	};
16216 	u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
16217 	u8 rfseq_rx2tx_events_rev3[] = {
16218 		NPHY_REV3_RFSEQ_CMD_NOP,
16219 		NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16220 		NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16221 		NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16222 		NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16223 		NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16224 		NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16225 		NPHY_REV3_RFSEQ_CMD_EXT_PA,
16226 		NPHY_REV3_RFSEQ_CMD_END
16227 	};
16228 	u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
16229 
16230 	u8 rfseq_rx2tx_events_rev3_ipa[] = {
16231 		NPHY_REV3_RFSEQ_CMD_NOP,
16232 		NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16233 		NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16234 		NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16235 		NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16236 		NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16237 		NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16238 		NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16239 		NPHY_REV3_RFSEQ_CMD_END
16240 	};
16241 	u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16242 	u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
16243 
16244 	s16 alpha0, alpha1, alpha2;
16245 	s16 beta0, beta1, beta2;
16246 	u32 leg_data_weights, ht_data_weights, nss1_data_weights,
16247 	    stbc_data_weights;
16248 	u8 chan_freq_range = 0;
16249 	u16 dac_control = 0x0002;
16250 	u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
16251 	u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
16252 	u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16253 	u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16254 	u16 *aux_adc_vmid;
16255 	u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
16256 	u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
16257 	u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
16258 	u16 *aux_adc_gain;
16259 	u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
16260 	u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
16261 	s32 min_nvar_val = 0x18d;
16262 	s32 min_nvar_offset_6mbps = 20;
16263 	u8 pdetrange;
16264 	u8 triso;
16265 	u16 regval;
16266 	u16 afectrl_adc_ctrl1_rev7 = 0x20;
16267 	u16 afectrl_adc_ctrl2_rev7 = 0x0;
16268 	u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
16269 	u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
16270 	u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
16271 	u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
16272 	u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16273 	u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16274 	u16 ipalvlshift_3p3_war_en = 0;
16275 	u16 rccal_bcap_val, rccal_scap_val;
16276 	u16 rccal_tx20_11b_bcap = 0;
16277 	u16 rccal_tx20_11b_scap = 0;
16278 	u16 rccal_tx20_11n_bcap = 0;
16279 	u16 rccal_tx20_11n_scap = 0;
16280 	u16 rccal_tx40_11n_bcap = 0;
16281 	u16 rccal_tx40_11n_scap = 0;
16282 	u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
16283 	u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
16284 	u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
16285 	u16 tx_lpf_bw_ofdm_20mhz = 0;
16286 	u16 tx_lpf_bw_ofdm_40mhz = 0;
16287 	u16 tx_lpf_bw_11b = 0;
16288 	u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
16289 	u16 txgm_idac_bleed = 0;
16290 	bool rccal_ovrd = false;
16291 	u16 freq;
16292 	int coreNum;
16293 
16294 	if (CHSPEC_IS5G(pi->radio_chanspec))
16295 		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
16296 	else
16297 		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
16298 
16299 	if (pi->phyhang_avoid)
16300 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
16301 
16302 	or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
16303 
16304 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
16305 
16306 		if (NREV_IS(pi->pubpi.phy_rev, 7)) {
16307 			mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
16308 
16309 			mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
16310 			mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
16311 			mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
16312 			mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
16313 			mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
16314 			mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
16315 			mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
16316 			mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
16317 			mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
16318 			mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
16319 			mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
16320 			mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
16321 			mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
16322 			mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
16323 			mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
16324 			mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
16325 		}
16326 
16327 		if (NREV_LE(pi->pubpi.phy_rev, 8)) {
16328 			write_phy_reg(pi, 0x23f, 0x1b0);
16329 			write_phy_reg(pi, 0x240, 0x1b0);
16330 		}
16331 
16332 		if (NREV_GE(pi->pubpi.phy_rev, 8))
16333 			mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
16334 
16335 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16336 					 &dac_control);
16337 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16338 					 &dac_control);
16339 
16340 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16341 					1, 0, 32, &leg_data_weights);
16342 		leg_data_weights = leg_data_weights & 0xffffff;
16343 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16344 					 1, 0, 32, &leg_data_weights);
16345 
16346 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16347 					 2, 0x15e, 16,
16348 					 rfseq_rx2tx_dacbufpu_rev7);
16349 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
16350 					 rfseq_rx2tx_dacbufpu_rev7);
16351 
16352 		if (PHY_IPA(pi))
16353 			wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16354 					       rfseq_rx2tx_events_rev3_ipa,
16355 					       rfseq_rx2tx_dlys_rev3_ipa,
16356 					       sizeof
16357 					       (rfseq_rx2tx_events_rev3_ipa) /
16358 					       sizeof
16359 					       (rfseq_rx2tx_events_rev3_ipa
16360 						[0]));
16361 
16362 		mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
16363 		mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
16364 
16365 		tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
16366 		tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
16367 		tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
16368 
16369 		if (PHY_IPA(pi)) {
16370 
16371 			if (((pi->pubpi.radiorev == 5)
16372 			     && (CHSPEC_IS40(pi->radio_chanspec) == 1))
16373 			    || (pi->pubpi.radiorev == 7)
16374 			    || (pi->pubpi.radiorev == 8)) {
16375 
16376 				rccal_bcap_val =
16377 					read_radio_reg(
16378 						pi,
16379 						RADIO_2057_RCCAL_BCAP_VAL);
16380 				rccal_scap_val =
16381 					read_radio_reg(
16382 						pi,
16383 						RADIO_2057_RCCAL_SCAP_VAL);
16384 
16385 				rccal_tx20_11b_bcap = rccal_bcap_val;
16386 				rccal_tx20_11b_scap = rccal_scap_val;
16387 
16388 				if ((pi->pubpi.radiorev == 5) &&
16389 				    (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
16390 
16391 					rccal_tx20_11n_bcap = rccal_bcap_val;
16392 					rccal_tx20_11n_scap = rccal_scap_val;
16393 					rccal_tx40_11n_bcap = 0xc;
16394 					rccal_tx40_11n_scap = 0xc;
16395 
16396 					rccal_ovrd = true;
16397 
16398 				} else if ((pi->pubpi.radiorev == 7)
16399 					   || (pi->pubpi.radiorev == 8)) {
16400 
16401 					tx_lpf_bw_ofdm_20mhz = 4;
16402 					tx_lpf_bw_11b = 1;
16403 
16404 					if (CHSPEC_IS2G(pi->radio_chanspec)) {
16405 						rccal_tx20_11n_bcap = 0xc;
16406 						rccal_tx20_11n_scap = 0xc;
16407 						rccal_tx40_11n_bcap = 0xa;
16408 						rccal_tx40_11n_scap = 0xa;
16409 					} else {
16410 						rccal_tx20_11n_bcap = 0x14;
16411 						rccal_tx20_11n_scap = 0x14;
16412 						rccal_tx40_11n_bcap = 0xf;
16413 						rccal_tx40_11n_scap = 0xf;
16414 					}
16415 
16416 					rccal_ovrd = true;
16417 				}
16418 			}
16419 
16420 		} else {
16421 
16422 			if (pi->pubpi.radiorev == 5) {
16423 
16424 				tx_lpf_bw_ofdm_20mhz = 1;
16425 				tx_lpf_bw_ofdm_40mhz = 3;
16426 
16427 				rccal_bcap_val =
16428 					read_radio_reg(
16429 						pi,
16430 						RADIO_2057_RCCAL_BCAP_VAL);
16431 				rccal_scap_val =
16432 					read_radio_reg(
16433 						pi,
16434 						RADIO_2057_RCCAL_SCAP_VAL);
16435 
16436 				rccal_tx20_11b_bcap = rccal_bcap_val;
16437 				rccal_tx20_11b_scap = rccal_scap_val;
16438 
16439 				rccal_tx20_11n_bcap = 0x13;
16440 				rccal_tx20_11n_scap = 0x11;
16441 				rccal_tx40_11n_bcap = 0x13;
16442 				rccal_tx40_11n_scap = 0x11;
16443 
16444 				rccal_ovrd = true;
16445 			}
16446 		}
16447 
16448 		if (rccal_ovrd) {
16449 
16450 			rx2tx_lpf_rc_lut_tx20_11b =
16451 				(rccal_tx20_11b_bcap << 8) |
16452 				(rccal_tx20_11b_scap << 3) |
16453 				tx_lpf_bw_11b;
16454 			rx2tx_lpf_rc_lut_tx20_11n =
16455 				(rccal_tx20_11n_bcap << 8) |
16456 				(rccal_tx20_11n_scap << 3) |
16457 				tx_lpf_bw_ofdm_20mhz;
16458 			rx2tx_lpf_rc_lut_tx40_11n =
16459 				(rccal_tx40_11n_bcap << 8) |
16460 				(rccal_tx40_11n_scap << 3) |
16461 				tx_lpf_bw_ofdm_40mhz;
16462 
16463 			for (coreNum = 0; coreNum <= 1; coreNum++) {
16464 				wlc_phy_table_write_nphy(
16465 					pi, NPHY_TBL_ID_RFSEQ,
16466 					1,
16467 					0x152 + coreNum * 0x10,
16468 					16,
16469 					&rx2tx_lpf_rc_lut_tx20_11b);
16470 				wlc_phy_table_write_nphy(
16471 					pi, NPHY_TBL_ID_RFSEQ,
16472 					1,
16473 					0x153 + coreNum * 0x10,
16474 					16,
16475 					&rx2tx_lpf_rc_lut_tx20_11n);
16476 				wlc_phy_table_write_nphy(
16477 					pi, NPHY_TBL_ID_RFSEQ,
16478 					1,
16479 					0x154 + coreNum * 0x10,
16480 					16,
16481 					&rx2tx_lpf_rc_lut_tx20_11n);
16482 				wlc_phy_table_write_nphy(
16483 					pi, NPHY_TBL_ID_RFSEQ,
16484 					1,
16485 					0x155 + coreNum * 0x10,
16486 					16,
16487 					&rx2tx_lpf_rc_lut_tx40_11n);
16488 				wlc_phy_table_write_nphy(
16489 					pi, NPHY_TBL_ID_RFSEQ,
16490 					1,
16491 					0x156 + coreNum * 0x10,
16492 					16,
16493 					&rx2tx_lpf_rc_lut_tx40_11n);
16494 				wlc_phy_table_write_nphy(
16495 					pi, NPHY_TBL_ID_RFSEQ,
16496 					1,
16497 					0x157 + coreNum * 0x10,
16498 					16,
16499 					&rx2tx_lpf_rc_lut_tx40_11n);
16500 				wlc_phy_table_write_nphy(
16501 					pi, NPHY_TBL_ID_RFSEQ,
16502 					1,
16503 					0x158 + coreNum * 0x10,
16504 					16,
16505 					&rx2tx_lpf_rc_lut_tx40_11n);
16506 				wlc_phy_table_write_nphy(
16507 					pi, NPHY_TBL_ID_RFSEQ,
16508 					1,
16509 					0x159 + coreNum * 0x10,
16510 					16,
16511 					&rx2tx_lpf_rc_lut_tx40_11n);
16512 			}
16513 
16514 			wlc_phy_rfctrl_override_nphy_rev7(
16515 				pi, (0x1 << 4),
16516 				1, 0x3, 0,
16517 				NPHY_REV7_RFCTRLOVERRIDE_ID2);
16518 		}
16519 
16520 		write_phy_reg(pi, 0x32f, 0x3);
16521 
16522 		if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
16523 			wlc_phy_rfctrl_override_nphy_rev7(
16524 				pi, (0x1 << 2),
16525 				1, 0x3, 0,
16526 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
16527 
16528 		if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
16529 		    (pi->pubpi.radiorev == 6)) {
16530 			if ((pi->sh->sromrev >= 8)
16531 			    && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
16532 				ipalvlshift_3p3_war_en = 1;
16533 
16534 			if (ipalvlshift_3p3_war_en) {
16535 				write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG,
16536 						0x5);
16537 				write_radio_reg(pi, RADIO_2057_GPAIO_SEL1,
16538 						0x30);
16539 				write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
16540 				or_radio_reg(pi,
16541 					     RADIO_2057_RXTXBIAS_CONFIG_CORE0,
16542 					     0x1);
16543 				or_radio_reg(pi,
16544 					     RADIO_2057_RXTXBIAS_CONFIG_CORE1,
16545 					     0x1);
16546 
16547 				ipa2g_mainbias = 0x1f;
16548 
16549 				ipa2g_casconv = 0x6f;
16550 
16551 				ipa2g_biasfilt = 0xaa;
16552 			} else {
16553 
16554 				ipa2g_mainbias = 0x2b;
16555 
16556 				ipa2g_casconv = 0x7f;
16557 
16558 				ipa2g_biasfilt = 0xee;
16559 			}
16560 
16561 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
16562 				for (coreNum = 0; coreNum <= 1; coreNum++) {
16563 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16564 							 coreNum, IPA2G_IMAIN,
16565 							 ipa2g_mainbias);
16566 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16567 							 coreNum, IPA2G_CASCONV,
16568 							 ipa2g_casconv);
16569 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16570 							 coreNum,
16571 							 IPA2G_BIAS_FILTER,
16572 							 ipa2g_biasfilt);
16573 				}
16574 			}
16575 		}
16576 
16577 		if (PHY_IPA(pi)) {
16578 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
16579 				if ((pi->pubpi.radiorev == 3)
16580 				    || (pi->pubpi.radiorev == 4)
16581 				    || (pi->pubpi.radiorev == 6))
16582 					txgm_idac_bleed = 0x7f;
16583 
16584 				for (coreNum = 0; coreNum <= 1; coreNum++) {
16585 					if (txgm_idac_bleed != 0)
16586 						WRITE_RADIO_REG4(
16587 							pi, RADIO_2057,
16588 							CORE, coreNum,
16589 							TXGM_IDAC_BLEED,
16590 							txgm_idac_bleed);
16591 				}
16592 
16593 				if (pi->pubpi.radiorev == 5) {
16594 
16595 					for (coreNum = 0; coreNum <= 1;
16596 					     coreNum++) {
16597 						WRITE_RADIO_REG4(pi, RADIO_2057,
16598 								 CORE, coreNum,
16599 								 IPA2G_CASCONV,
16600 								 0x13);
16601 						WRITE_RADIO_REG4(pi, RADIO_2057,
16602 								 CORE, coreNum,
16603 								 IPA2G_IMAIN,
16604 								 0x1f);
16605 						WRITE_RADIO_REG4(
16606 							pi, RADIO_2057,
16607 							CORE, coreNum,
16608 							IPA2G_BIAS_FILTER,
16609 							0xee);
16610 						WRITE_RADIO_REG4(pi, RADIO_2057,
16611 								 CORE, coreNum,
16612 								 PAD2G_IDACS,
16613 								 0x8a);
16614 						WRITE_RADIO_REG4(
16615 							pi, RADIO_2057,
16616 							CORE, coreNum,
16617 							PAD_BIAS_FILTER_BWS,
16618 							0x3e);
16619 					}
16620 
16621 				} else if ((pi->pubpi.radiorev == 7)
16622 					   || (pi->pubpi.radiorev == 8)) {
16623 
16624 					if (CHSPEC_IS40(pi->radio_chanspec) ==
16625 					    0) {
16626 						WRITE_RADIO_REG4(pi, RADIO_2057,
16627 								 CORE, 0,
16628 								 IPA2G_IMAIN,
16629 								 0x14);
16630 						WRITE_RADIO_REG4(pi, RADIO_2057,
16631 								 CORE, 1,
16632 								 IPA2G_IMAIN,
16633 								 0x12);
16634 					} else {
16635 						WRITE_RADIO_REG4(pi, RADIO_2057,
16636 								 CORE, 0,
16637 								 IPA2G_IMAIN,
16638 								 0x16);
16639 						WRITE_RADIO_REG4(pi, RADIO_2057,
16640 								 CORE, 1,
16641 								 IPA2G_IMAIN,
16642 								 0x16);
16643 					}
16644 				}
16645 
16646 			} else {
16647 				freq = CHAN5G_FREQ(CHSPEC_CHANNEL(
16648 							pi->radio_chanspec));
16649 				if (((freq >= 5180) && (freq <= 5230))
16650 				    || ((freq >= 5745) && (freq <= 5805))) {
16651 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16652 							 0, IPA5G_BIAS_FILTER,
16653 							 0xff);
16654 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16655 							 1, IPA5G_BIAS_FILTER,
16656 							 0xff);
16657 				}
16658 			}
16659 		} else {
16660 
16661 			if (pi->pubpi.radiorev != 5) {
16662 				for (coreNum = 0; coreNum <= 1; coreNum++) {
16663 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16664 							 coreNum,
16665 							 TXMIX2G_TUNE_BOOST_PU,
16666 							 0x61);
16667 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16668 							 coreNum,
16669 							 TXGM_IDAC_BLEED, 0x70);
16670 				}
16671 			}
16672 		}
16673 
16674 		if (pi->pubpi.radiorev == 4) {
16675 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16676 						 0x05, 16,
16677 						 &afectrl_adc_ctrl1_rev7);
16678 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16679 						 0x15, 16,
16680 						 &afectrl_adc_ctrl1_rev7);
16681 
16682 			for (coreNum = 0; coreNum <= 1; coreNum++) {
16683 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16684 						 AFE_VCM_CAL_MASTER, 0x0);
16685 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16686 						 AFE_SET_VCM_I, 0x3f);
16687 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16688 						 AFE_SET_VCM_Q, 0x3f);
16689 			}
16690 		} else {
16691 			mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
16692 			mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
16693 			mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
16694 			mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
16695 
16696 			mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
16697 			mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
16698 			mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
16699 			mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
16700 
16701 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16702 						 0x05, 16,
16703 						 &afectrl_adc_ctrl2_rev7);
16704 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16705 						 0x15, 16,
16706 						 &afectrl_adc_ctrl2_rev7);
16707 
16708 			mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
16709 			mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
16710 			mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
16711 			mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
16712 		}
16713 
16714 		write_phy_reg(pi, 0x6a, 0x2);
16715 
16716 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
16717 					 &min_nvar_offset_6mbps);
16718 
16719 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
16720 					 &rfseq_pktgn_lpf_hpc_rev7);
16721 
16722 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
16723 					 &rfseq_pktgn_lpf_h_hpc_rev7);
16724 
16725 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
16726 					 &rfseq_htpktgn_lpf_hpc_rev7);
16727 
16728 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
16729 					 &rfseq_cckpktgn_lpf_hpc_rev7);
16730 
16731 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
16732 					 &rfseq_tx2rx_lpf_h_hpc_rev7);
16733 
16734 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
16735 					 &rfseq_rx2tx_lpf_h_hpc_rev7);
16736 
16737 		if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16738 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16739 						 32, &min_nvar_val);
16740 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16741 						 127, 32, &min_nvar_val);
16742 		} else {
16743 			min_nvar_val = noise_var_tbl_rev7[3];
16744 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16745 						 32, &min_nvar_val);
16746 
16747 			min_nvar_val = noise_var_tbl_rev7[127];
16748 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16749 						 127, 32, &min_nvar_val);
16750 		}
16751 
16752 		wlc_phy_workarounds_nphy_gainctrl(pi);
16753 
16754 		pdetrange =
16755 			(CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16756 			pdetrange : pi->srom_fem2g.pdetrange;
16757 
16758 		if (pdetrange == 0) {
16759 			chan_freq_range =
16760 				wlc_phy_get_chan_freq_range_nphy(pi, 0);
16761 			if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16762 				aux_adc_vmid_rev7_core0[3] = 0x70;
16763 				aux_adc_vmid_rev7_core1[3] = 0x70;
16764 				aux_adc_gain_rev7[3] = 2;
16765 			} else {
16766 				aux_adc_vmid_rev7_core0[3] = 0x80;
16767 				aux_adc_vmid_rev7_core1[3] = 0x80;
16768 				aux_adc_gain_rev7[3] = 3;
16769 			}
16770 		} else if (pdetrange == 1) {
16771 			if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16772 				aux_adc_vmid_rev7_core0[3] = 0x7c;
16773 				aux_adc_vmid_rev7_core1[3] = 0x7c;
16774 				aux_adc_gain_rev7[3] = 2;
16775 			} else {
16776 				aux_adc_vmid_rev7_core0[3] = 0x8c;
16777 				aux_adc_vmid_rev7_core1[3] = 0x8c;
16778 				aux_adc_gain_rev7[3] = 1;
16779 			}
16780 		} else if (pdetrange == 2) {
16781 			if (pi->pubpi.radioid == BCM2057_ID) {
16782 				if ((pi->pubpi.radiorev == 5)
16783 				    || (pi->pubpi.radiorev == 7)
16784 				    || (pi->pubpi.radiorev == 8)) {
16785 					if (chan_freq_range ==
16786 					    WL_CHAN_FREQ_RANGE_2G) {
16787 						aux_adc_vmid_rev7_core0[3] =
16788 							0x8c;
16789 						aux_adc_vmid_rev7_core1[3] =
16790 							0x8c;
16791 						aux_adc_gain_rev7[3] = 0;
16792 					} else {
16793 						aux_adc_vmid_rev7_core0[3] =
16794 							0x96;
16795 						aux_adc_vmid_rev7_core1[3] =
16796 							0x96;
16797 						aux_adc_gain_rev7[3] = 0;
16798 					}
16799 				}
16800 			}
16801 
16802 		} else if (pdetrange == 3) {
16803 			if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
16804 				aux_adc_vmid_rev7_core0[3] = 0x89;
16805 				aux_adc_vmid_rev7_core1[3] = 0x89;
16806 				aux_adc_gain_rev7[3] = 0;
16807 			}
16808 
16809 		} else if (pdetrange == 5) {
16810 
16811 			if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16812 				aux_adc_vmid_rev7_core0[3] = 0x80;
16813 				aux_adc_vmid_rev7_core1[3] = 0x80;
16814 				aux_adc_gain_rev7[3] = 3;
16815 			} else {
16816 				aux_adc_vmid_rev7_core0[3] = 0x70;
16817 				aux_adc_vmid_rev7_core1[3] = 0x70;
16818 				aux_adc_gain_rev7[3] = 2;
16819 			}
16820 		}
16821 
16822 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
16823 					 &aux_adc_vmid_rev7_core0);
16824 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
16825 					 &aux_adc_vmid_rev7_core1);
16826 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
16827 					 &aux_adc_gain_rev7);
16828 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
16829 					 &aux_adc_gain_rev7);
16830 
16831 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
16832 
16833 		write_phy_reg(pi, 0x23f, 0x1f8);
16834 		write_phy_reg(pi, 0x240, 0x1f8);
16835 
16836 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16837 					1, 0, 32, &leg_data_weights);
16838 		leg_data_weights = leg_data_weights & 0xffffff;
16839 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16840 					 1, 0, 32, &leg_data_weights);
16841 
16842 		alpha0 = 293;
16843 		alpha1 = 435;
16844 		alpha2 = 261;
16845 		beta0 = 366;
16846 		beta1 = 205;
16847 		beta2 = 32;
16848 		write_phy_reg(pi, 0x145, alpha0);
16849 		write_phy_reg(pi, 0x146, alpha1);
16850 		write_phy_reg(pi, 0x147, alpha2);
16851 		write_phy_reg(pi, 0x148, beta0);
16852 		write_phy_reg(pi, 0x149, beta1);
16853 		write_phy_reg(pi, 0x14a, beta2);
16854 
16855 		write_phy_reg(pi, 0x38, 0xC);
16856 		write_phy_reg(pi, 0x2ae, 0xC);
16857 
16858 		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
16859 				       rfseq_tx2rx_events_rev3,
16860 				       rfseq_tx2rx_dlys_rev3,
16861 				       sizeof(rfseq_tx2rx_events_rev3) /
16862 				       sizeof(rfseq_tx2rx_events_rev3[0]));
16863 
16864 		if (PHY_IPA(pi))
16865 			wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16866 					       rfseq_rx2tx_events_rev3_ipa,
16867 					       rfseq_rx2tx_dlys_rev3_ipa,
16868 					       sizeof
16869 					       (rfseq_rx2tx_events_rev3_ipa) /
16870 					       sizeof
16871 					       (rfseq_rx2tx_events_rev3_ipa
16872 						[0]));
16873 
16874 		if ((pi->sh->hw_phyrxchain != 0x3) &&
16875 		    (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
16876 
16877 			if (PHY_IPA(pi)) {
16878 				rfseq_rx2tx_dlys_rev3[5] = 59;
16879 				rfseq_rx2tx_dlys_rev3[6] = 1;
16880 				rfseq_rx2tx_events_rev3[7] =
16881 					NPHY_REV3_RFSEQ_CMD_END;
16882 			}
16883 
16884 			wlc_phy_set_rfseq_nphy(
16885 				pi, NPHY_RFSEQ_RX2TX,
16886 				rfseq_rx2tx_events_rev3,
16887 				rfseq_rx2tx_dlys_rev3,
16888 				sizeof(rfseq_rx2tx_events_rev3)	/
16889 				sizeof(rfseq_rx2tx_events_rev3[0]));
16890 		}
16891 
16892 		if (CHSPEC_IS2G(pi->radio_chanspec))
16893 			write_phy_reg(pi, 0x6a, 0x2);
16894 		else
16895 			write_phy_reg(pi, 0x6a, 0x9c40);
16896 
16897 		mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
16898 
16899 		if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16900 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16901 						 32, &min_nvar_val);
16902 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16903 						 127, 32, &min_nvar_val);
16904 		} else {
16905 			min_nvar_val = noise_var_tbl_rev3[3];
16906 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16907 						 32, &min_nvar_val);
16908 
16909 			min_nvar_val = noise_var_tbl_rev3[127];
16910 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16911 						 127, 32, &min_nvar_val);
16912 		}
16913 
16914 		wlc_phy_workarounds_nphy_gainctrl(pi);
16915 
16916 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16917 					 &dac_control);
16918 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16919 					 &dac_control);
16920 
16921 		pdetrange =
16922 			(CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16923 			pdetrange : pi->srom_fem2g.pdetrange;
16924 
16925 		if (pdetrange == 0) {
16926 			if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16927 				aux_adc_vmid = aux_adc_vmid_rev4;
16928 				aux_adc_gain = aux_adc_gain_rev4;
16929 			} else {
16930 				aux_adc_vmid = aux_adc_vmid_rev3;
16931 				aux_adc_gain = aux_adc_gain_rev3;
16932 			}
16933 			chan_freq_range =
16934 				wlc_phy_get_chan_freq_range_nphy(pi, 0);
16935 			if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16936 				switch (chan_freq_range) {
16937 				case WL_CHAN_FREQ_RANGE_5GL:
16938 					aux_adc_vmid[3] = 0x89;
16939 					aux_adc_gain[3] = 0;
16940 					break;
16941 				case WL_CHAN_FREQ_RANGE_5GM:
16942 					aux_adc_vmid[3] = 0x89;
16943 					aux_adc_gain[3] = 0;
16944 					break;
16945 				case WL_CHAN_FREQ_RANGE_5GH:
16946 					aux_adc_vmid[3] = 0x89;
16947 					aux_adc_gain[3] = 0;
16948 					break;
16949 				default:
16950 					break;
16951 				}
16952 			}
16953 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16954 						 0x08, 16, aux_adc_vmid);
16955 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16956 						 0x18, 16, aux_adc_vmid);
16957 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16958 						 0x0c, 16, aux_adc_gain);
16959 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16960 						 0x1c, 16, aux_adc_gain);
16961 		} else if (pdetrange == 1) {
16962 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16963 						 0x08, 16, sk_adc_vmid);
16964 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16965 						 0x18, 16, sk_adc_vmid);
16966 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16967 						 0x0c, 16, sk_adc_gain);
16968 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16969 						 0x1c, 16, sk_adc_gain);
16970 		} else if (pdetrange == 2) {
16971 
16972 			u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16973 			u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16974 
16975 			if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16976 				chan_freq_range =
16977 					wlc_phy_get_chan_freq_range_nphy(pi, 0);
16978 				if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16979 					bcm_adc_vmid[3] = 0x8e;
16980 					bcm_adc_gain[3] = 0x03;
16981 				} else {
16982 					bcm_adc_vmid[3] = 0x94;
16983 					bcm_adc_gain[3] = 0x03;
16984 				}
16985 			} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16986 				bcm_adc_vmid[3] = 0x84;
16987 				bcm_adc_gain[3] = 0x02;
16988 			}
16989 
16990 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16991 						 0x08, 16, bcm_adc_vmid);
16992 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16993 						 0x18, 16, bcm_adc_vmid);
16994 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16995 						 0x0c, 16, bcm_adc_gain);
16996 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16997 						 0x1c, 16, bcm_adc_gain);
16998 		} else if (pdetrange == 3) {
16999 			chan_freq_range =
17000 				wlc_phy_get_chan_freq_range_nphy(pi, 0);
17001 			if ((NREV_GE(pi->pubpi.phy_rev, 4))
17002 			    && (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
17003 
17004 				u16 auxadc_vmid[] = {
17005 					0xa2, 0xb4, 0xb4, 0x270
17006 				};
17007 				u16 auxadc_gain[] = {
17008 					0x02, 0x02, 0x02, 0x00
17009 				};
17010 
17011 				wlc_phy_table_write_nphy(pi,
17012 							 NPHY_TBL_ID_AFECTRL, 4,
17013 							 0x08, 16, auxadc_vmid);
17014 				wlc_phy_table_write_nphy(pi,
17015 							 NPHY_TBL_ID_AFECTRL, 4,
17016 							 0x18, 16, auxadc_vmid);
17017 				wlc_phy_table_write_nphy(pi,
17018 							 NPHY_TBL_ID_AFECTRL, 4,
17019 							 0x0c, 16, auxadc_gain);
17020 				wlc_phy_table_write_nphy(pi,
17021 							 NPHY_TBL_ID_AFECTRL, 4,
17022 							 0x1c, 16, auxadc_gain);
17023 			}
17024 		} else if ((pdetrange == 4) || (pdetrange == 5)) {
17025 			u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
17026 			u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
17027 			u16 Vmid[2], Av[2];
17028 
17029 			chan_freq_range =
17030 				wlc_phy_get_chan_freq_range_nphy(pi, 0);
17031 			if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
17032 				Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
17033 				Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
17034 				Av[0] = (pdetrange == 4) ? 2 : 0;
17035 				Av[1] = (pdetrange == 4) ? 2 : 0;
17036 			} else {
17037 				Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
17038 				Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
17039 				Av[0] = (pdetrange == 4) ? 2 : 0;
17040 				Av[1] = (pdetrange == 4) ? 2 : 0;
17041 			}
17042 
17043 			bcm_adc_vmid[3] = Vmid[0];
17044 			bcm_adc_gain[3] = Av[0];
17045 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17046 						 0x08, 16, bcm_adc_vmid);
17047 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17048 						 0x0c, 16, bcm_adc_gain);
17049 
17050 			bcm_adc_vmid[3] = Vmid[1];
17051 			bcm_adc_gain[3] = Av[1];
17052 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17053 						 0x18, 16, bcm_adc_vmid);
17054 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17055 						 0x1c, 16, bcm_adc_gain);
17056 		}
17057 
17058 		write_radio_reg(pi,
17059 				(RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0),
17060 				0x0);
17061 		write_radio_reg(pi,
17062 				(RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1),
17063 				0x0);
17064 
17065 		write_radio_reg(pi,
17066 				(RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0),
17067 				0x6);
17068 		write_radio_reg(pi,
17069 				(RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1),
17070 				0x6);
17071 
17072 		write_radio_reg(pi,
17073 				(RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0),
17074 				0x7);
17075 		write_radio_reg(pi,
17076 				(RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1),
17077 				0x7);
17078 
17079 		write_radio_reg(pi,
17080 				(RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0),
17081 				0x88);
17082 		write_radio_reg(pi,
17083 				(RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1),
17084 				0x88);
17085 
17086 		write_radio_reg(pi,
17087 				(RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0),
17088 				0x0);
17089 		write_radio_reg(pi,
17090 				(RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1),
17091 				0x0);
17092 
17093 		write_radio_reg(pi,
17094 				(RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0),
17095 				0x0);
17096 		write_radio_reg(pi,
17097 				(RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1),
17098 				0x0);
17099 
17100 		triso =
17101 			(CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
17102 			triso : pi->srom_fem2g.triso;
17103 		if (triso == 7) {
17104 			wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
17105 			wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
17106 		}
17107 
17108 		wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
17109 
17110 		if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
17111 		     (CHSPEC_IS5G(pi->radio_chanspec))) ||
17112 		    (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
17113 		      (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
17114 		     (CHSPEC_IS2G(pi->radio_chanspec)))) {
17115 			nss1_data_weights = 0x00088888;
17116 			ht_data_weights = 0x00088888;
17117 			stbc_data_weights = 0x00088888;
17118 		} else {
17119 			nss1_data_weights = 0x88888888;
17120 			ht_data_weights = 0x88888888;
17121 			stbc_data_weights = 0x88888888;
17122 		}
17123 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17124 					 1, 1, 32, &nss1_data_weights);
17125 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17126 					 1, 2, 32, &ht_data_weights);
17127 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17128 					 1, 3, 32, &stbc_data_weights);
17129 
17130 		if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17131 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
17132 				write_radio_reg(pi,
17133 						RADIO_2056_TX_GMBB_IDAC |
17134 						RADIO_2056_TX0, 0x70);
17135 				write_radio_reg(pi,
17136 						RADIO_2056_TX_GMBB_IDAC |
17137 						RADIO_2056_TX1, 0x70);
17138 			}
17139 		}
17140 
17141 		if (!pi->edcrs_threshold_lock) {
17142 			write_phy_reg(pi, 0x224, 0x3eb);
17143 			write_phy_reg(pi, 0x225, 0x3eb);
17144 			write_phy_reg(pi, 0x226, 0x341);
17145 			write_phy_reg(pi, 0x227, 0x341);
17146 			write_phy_reg(pi, 0x228, 0x42b);
17147 			write_phy_reg(pi, 0x229, 0x42b);
17148 			write_phy_reg(pi, 0x22a, 0x381);
17149 			write_phy_reg(pi, 0x22b, 0x381);
17150 			write_phy_reg(pi, 0x22c, 0x42b);
17151 			write_phy_reg(pi, 0x22d, 0x42b);
17152 			write_phy_reg(pi, 0x22e, 0x381);
17153 			write_phy_reg(pi, 0x22f, 0x381);
17154 		}
17155 
17156 		if (NREV_GE(pi->pubpi.phy_rev, 6)) {
17157 
17158 			if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)
17159 				wlapi_bmac_mhf(pi->sh->physhim, MHF4,
17160 					      MHF4_BPHY_TXCORE0,
17161 					      MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);
17162 		}
17163 	} else {
17164 
17165 		if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
17166 		    (pi->sh->boardtype == 0x8b)) {
17167 			uint i;
17168 			u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
17169 			for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
17170 				rfseq_rx2tx_dlys[i] = war_dlys[i];
17171 		}
17172 
17173 		if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
17174 			and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
17175 			and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
17176 		} else {
17177 			or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
17178 			or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
17179 		}
17180 
17181 		regval = 0x000a;
17182 		wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
17183 		wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
17184 
17185 		if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17186 			regval = 0xcdaa;
17187 			wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
17188 			wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
17189 		}
17190 
17191 		if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17192 			regval = 0x0000;
17193 			wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
17194 			wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
17195 
17196 			regval = 0x7aab;
17197 			wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
17198 			wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
17199 
17200 			regval = 0x0800;
17201 			wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
17202 			wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
17203 		}
17204 
17205 		write_phy_reg(pi, 0xf8, 0x02d8);
17206 		write_phy_reg(pi, 0xf9, 0x0301);
17207 		write_phy_reg(pi, 0xfa, 0x02d8);
17208 		write_phy_reg(pi, 0xfb, 0x0301);
17209 
17210 		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
17211 				       rfseq_rx2tx_dlys,
17212 				       sizeof(rfseq_rx2tx_events) /
17213 				       sizeof(rfseq_rx2tx_events[0]));
17214 
17215 		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
17216 				       rfseq_tx2rx_dlys,
17217 				       sizeof(rfseq_tx2rx_events) /
17218 				       sizeof(rfseq_tx2rx_events[0]));
17219 
17220 		wlc_phy_workarounds_nphy_gainctrl(pi);
17221 
17222 		if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17223 
17224 			if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
17225 				wlapi_bmac_mhf(pi->sh->physhim, MHF3,
17226 					       MHF3_NPHY_MLADV_WAR,
17227 					       MHF3_NPHY_MLADV_WAR,
17228 					       BRCM_BAND_ALL);
17229 
17230 		} else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
17231 			write_phy_reg(pi, 0x1e3, 0x0);
17232 			write_phy_reg(pi, 0x1e4, 0x0);
17233 		}
17234 
17235 		if (NREV_LT(pi->pubpi.phy_rev, 2))
17236 			mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
17237 
17238 		alpha0 = 293;
17239 		alpha1 = 435;
17240 		alpha2 = 261;
17241 		beta0 = 366;
17242 		beta1 = 205;
17243 		beta2 = 32;
17244 		write_phy_reg(pi, 0x145, alpha0);
17245 		write_phy_reg(pi, 0x146, alpha1);
17246 		write_phy_reg(pi, 0x147, alpha2);
17247 		write_phy_reg(pi, 0x148, beta0);
17248 		write_phy_reg(pi, 0x149, beta1);
17249 		write_phy_reg(pi, 0x14a, beta2);
17250 
17251 		if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17252 			mod_phy_reg(pi, 0x142, (0xf << 12), 0);
17253 
17254 			write_phy_reg(pi, 0x192, 0xb5);
17255 			write_phy_reg(pi, 0x193, 0xa4);
17256 			write_phy_reg(pi, 0x194, 0x0);
17257 		}
17258 
17259 		if (NREV_IS(pi->pubpi.phy_rev, 2))
17260 			mod_phy_reg(pi, 0x221,
17261 				    NPHY_FORCESIG_DECODEGATEDCLKS,
17262 				    NPHY_FORCESIG_DECODEGATEDCLKS);
17263 	}
17264 
17265 	if (pi->phyhang_avoid)
17266 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
17267 }
17268 
wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy * pi)17269 static void wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
17270 {
17271 	int j, type = 2;
17272 	u16 addr_offset = 0x2c5;
17273 
17274 	for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
17275 		write_phy_reg(pi, addr_offset + j,
17276 			      NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
17277 }
17278 
wlc_phy_clip_det_nphy(struct brcms_phy * pi,u8 write,u16 * vals)17279 static void wlc_phy_clip_det_nphy(struct brcms_phy *pi, u8 write, u16 *vals)
17280 {
17281 
17282 	if (write == 0) {
17283 		vals[0] = read_phy_reg(pi, 0x2c);
17284 		vals[1] = read_phy_reg(pi, 0x42);
17285 	} else {
17286 		write_phy_reg(pi, 0x2c, vals[0]);
17287 		write_phy_reg(pi, 0x42, vals[1]);
17288 	}
17289 }
17290 
wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy * pi)17291 static void wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy *pi)
17292 {
17293 	u8 core;
17294 
17295 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17296 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17297 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
17298 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17299 						 TX_SSI_MASTER, 0x5);
17300 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17301 						 TX_SSI_MUX, 0xe);
17302 
17303 				if (pi->pubpi.radiorev != 5)
17304 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17305 							 core, TSSIA, 0);
17306 
17307 				if (!NREV_IS(pi->pubpi.phy_rev, 7))
17308 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17309 							 core, TSSIG, 0x1);
17310 				else
17311 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17312 							 core, TSSIG, 0x31);
17313 			} else {
17314 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17315 						 TX_SSI_MASTER, 0x9);
17316 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17317 						 TX_SSI_MUX, 0xc);
17318 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17319 						 TSSIG, 0);
17320 
17321 				if (pi->pubpi.radiorev != 5) {
17322 					if (!NREV_IS(pi->pubpi.phy_rev, 7))
17323 						WRITE_RADIO_REG3(pi, RADIO_2057,
17324 								 TX, core,
17325 								 TSSIA, 0x1);
17326 					else
17327 						WRITE_RADIO_REG3(pi, RADIO_2057,
17328 								 TX, core,
17329 								 TSSIA, 0x31);
17330 				}
17331 			}
17332 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
17333 					 0);
17334 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
17335 					 0);
17336 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
17337 					 0x3);
17338 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
17339 					 0x0);
17340 		}
17341 	} else {
17342 		WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
17343 				(CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
17344 				0x80);
17345 		WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
17346 		WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
17347 
17348 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17349 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
17350 					 0x0);
17351 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
17352 					 0x0);
17353 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
17354 					 0x3);
17355 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
17356 					 0x0);
17357 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
17358 					 0x8);
17359 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
17360 					 0x0);
17361 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
17362 					 0x0);
17363 
17364 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
17365 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17366 						 TX_SSI_MASTER, 0x5);
17367 
17368 				if (pi->pubpi.radiorev != 5)
17369 					WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17370 							 core, TSSIA, 0x0);
17371 				if (NREV_GE(pi->pubpi.phy_rev, 5))
17372 					WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17373 							 core, TSSIG, 0x31);
17374 				else
17375 					WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17376 							 core, TSSIG, 0x11);
17377 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17378 						 TX_SSI_MUX, 0xe);
17379 			} else {
17380 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17381 						 TX_SSI_MASTER, 0x9);
17382 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17383 						 TSSIA, 0x31);
17384 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17385 						 TSSIG, 0x0);
17386 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17387 						 TX_SSI_MUX, 0xc);
17388 			}
17389 		}
17390 	}
17391 }
17392 
17393 static void
wlc_phy_rfctrl_override_nphy(struct brcms_phy * pi,u16 field,u16 value,u8 core_mask,u8 off)17394 wlc_phy_rfctrl_override_nphy(struct brcms_phy *pi, u16 field, u16 value,
17395 			     u8 core_mask, u8 off)
17396 {
17397 	u8 core_num;
17398 	u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
17399 		0, val_mask = 0;
17400 	u8 shift = 0, val_shift = 0;
17401 
17402 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
17403 
17404 		en_mask = field;
17405 		for (core_num = 0; core_num < 2; core_num++) {
17406 
17407 			switch (field) {
17408 			case (0x1 << 1):
17409 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17410 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17411 				val_mask = (0x1 << 0);
17412 				val_shift = 0;
17413 				break;
17414 			case (0x1 << 2):
17415 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17416 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17417 				val_mask = (0x1 << 1);
17418 				val_shift = 1;
17419 				break;
17420 			case (0x1 << 3):
17421 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17422 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17423 				val_mask = (0x1 << 2);
17424 				val_shift = 2;
17425 				break;
17426 			case (0x1 << 4):
17427 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17428 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17429 				val_mask = (0x1 << 4);
17430 				val_shift = 4;
17431 				break;
17432 			case (0x1 << 5):
17433 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17434 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17435 				val_mask = (0x1 << 5);
17436 				val_shift = 5;
17437 				break;
17438 			case (0x1 << 6):
17439 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17440 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17441 				val_mask = (0x1 << 6);
17442 				val_shift = 6;
17443 				break;
17444 			case (0x1 << 7):
17445 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17446 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17447 				val_mask = (0x1 << 7);
17448 				val_shift = 7;
17449 				break;
17450 			case (0x1 << 8):
17451 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17452 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17453 				val_mask = (0x7 << 8);
17454 				val_shift = 8;
17455 				break;
17456 			case (0x1 << 11):
17457 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17458 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17459 				val_mask = (0x7 << 13);
17460 				val_shift = 13;
17461 				break;
17462 
17463 			case (0x1 << 9):
17464 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17465 				val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17466 				val_mask = (0x7 << 0);
17467 				val_shift = 0;
17468 				break;
17469 
17470 			case (0x1 << 10):
17471 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17472 				val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17473 				val_mask = (0x7 << 4);
17474 				val_shift = 4;
17475 				break;
17476 
17477 			case (0x1 << 12):
17478 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17479 				val_addr = (core_num == 0) ? 0x7b : 0x7e;
17480 				val_mask = (0xffff << 0);
17481 				val_shift = 0;
17482 				break;
17483 			case (0x1 << 13):
17484 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17485 				val_addr = (core_num == 0) ? 0x7c : 0x7f;
17486 				val_mask = (0xffff << 0);
17487 				val_shift = 0;
17488 				break;
17489 			case (0x1 << 14):
17490 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17491 				val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17492 				val_mask = (0x3 << 6);
17493 				val_shift = 6;
17494 				break;
17495 			case (0x1 << 0):
17496 				en_addr = (core_num == 0) ? 0xe5 : 0xe6;
17497 				val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17498 				val_mask = (0x1 << 15);
17499 				val_shift = 15;
17500 				break;
17501 			default:
17502 				addr = 0xffff;
17503 				break;
17504 			}
17505 
17506 			if (off) {
17507 				and_phy_reg(pi, en_addr, ~en_mask);
17508 				and_phy_reg(pi, val_addr, ~val_mask);
17509 			} else {
17510 
17511 				if ((core_mask == 0)
17512 				    || (core_mask & (1 << core_num))) {
17513 					or_phy_reg(pi, en_addr, en_mask);
17514 
17515 					if (addr != 0xffff)
17516 						mod_phy_reg(pi, val_addr,
17517 							    val_mask,
17518 							    (value <<
17519 							     val_shift));
17520 				}
17521 			}
17522 		}
17523 	} else {
17524 
17525 		if (off) {
17526 			and_phy_reg(pi, 0xec, ~field);
17527 			value = 0x0;
17528 		} else {
17529 			or_phy_reg(pi, 0xec, field);
17530 		}
17531 
17532 		for (core_num = 0; core_num < 2; core_num++) {
17533 
17534 			switch (field) {
17535 			case (0x1 << 1):
17536 			case (0x1 << 9):
17537 			case (0x1 << 12):
17538 			case (0x1 << 13):
17539 			case (0x1 << 14):
17540 				addr = 0x78;
17541 
17542 				core_mask = 0x1;
17543 				break;
17544 			case (0x1 << 2):
17545 			case (0x1 << 3):
17546 			case (0x1 << 4):
17547 			case (0x1 << 5):
17548 			case (0x1 << 6):
17549 			case (0x1 << 7):
17550 			case (0x1 << 8):
17551 				addr = (core_num == 0) ? 0x7a : 0x7d;
17552 				break;
17553 			case (0x1 << 10):
17554 				addr = (core_num == 0) ? 0x7b : 0x7e;
17555 				break;
17556 			case (0x1 << 11):
17557 				addr = (core_num == 0) ? 0x7c : 0x7f;
17558 				break;
17559 			default:
17560 				addr = 0xffff;
17561 			}
17562 
17563 			switch (field) {
17564 			case (0x1 << 1):
17565 				mask = (0x7 << 3);
17566 				shift = 3;
17567 				break;
17568 			case (0x1 << 9):
17569 				mask = (0x1 << 2);
17570 				shift = 2;
17571 				break;
17572 			case (0x1 << 12):
17573 				mask = (0x1 << 8);
17574 				shift = 8;
17575 				break;
17576 			case (0x1 << 13):
17577 				mask = (0x1 << 9);
17578 				shift = 9;
17579 				break;
17580 			case (0x1 << 14):
17581 				mask = (0xf << 12);
17582 				shift = 12;
17583 				break;
17584 			case (0x1 << 2):
17585 				mask = (0x1 << 0);
17586 				shift = 0;
17587 				break;
17588 			case (0x1 << 3):
17589 				mask = (0x1 << 1);
17590 				shift = 1;
17591 				break;
17592 			case (0x1 << 4):
17593 				mask = (0x1 << 2);
17594 				shift = 2;
17595 				break;
17596 			case (0x1 << 5):
17597 				mask = (0x3 << 4);
17598 				shift = 4;
17599 				break;
17600 			case (0x1 << 6):
17601 				mask = (0x3 << 6);
17602 				shift = 6;
17603 				break;
17604 			case (0x1 << 7):
17605 				mask = (0x1 << 8);
17606 				shift = 8;
17607 				break;
17608 			case (0x1 << 8):
17609 				mask = (0x1 << 9);
17610 				shift = 9;
17611 				break;
17612 			case (0x1 << 10):
17613 				mask = 0x1fff;
17614 				shift = 0x0;
17615 				break;
17616 			case (0x1 << 11):
17617 				mask = 0x1fff;
17618 				shift = 0x0;
17619 				break;
17620 			default:
17621 				mask = 0x0;
17622 				shift = 0x0;
17623 				break;
17624 			}
17625 
17626 			if ((addr != 0xffff) && (core_mask & (1 << core_num)))
17627 				mod_phy_reg(pi, addr, mask, (value << shift));
17628 		}
17629 
17630 		or_phy_reg(pi, 0xec, (0x1 << 0));
17631 		or_phy_reg(pi, 0x78, (0x1 << 0));
17632 		udelay(1);
17633 		and_phy_reg(pi, 0xec, ~(0x1 << 0));
17634 	}
17635 }
17636 
wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy * pi)17637 static void wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy *pi)
17638 {
17639 	s32 rssi_buf[4];
17640 	s32 int_val;
17641 
17642 	if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
17643 
17644 		return;
17645 
17646 	if (PHY_IPA(pi))
17647 		wlc_phy_ipa_internal_tssi_setup_nphy(pi);
17648 
17649 	if (NREV_GE(pi->pubpi.phy_rev, 7))
17650 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17651 						  0, 0x3, 0,
17652 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
17653 	else if (NREV_GE(pi->pubpi.phy_rev, 3))
17654 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
17655 
17656 	wlc_phy_stopplayback_nphy(pi);
17657 
17658 	wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
17659 
17660 	udelay(20);
17661 	int_val =
17662 		wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
17663 				       1);
17664 	wlc_phy_stopplayback_nphy(pi);
17665 	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
17666 
17667 	if (NREV_GE(pi->pubpi.phy_rev, 7))
17668 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17669 						  0, 0x3, 1,
17670 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
17671 	else if (NREV_GE(pi->pubpi.phy_rev, 3))
17672 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
17673 
17674 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17675 
17676 		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17677 			(u8) ((int_val >> 24) & 0xff);
17678 		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17679 			(u8) ((int_val >> 24) & 0xff);
17680 
17681 		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17682 			(u8) ((int_val >> 8) & 0xff);
17683 		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17684 			(u8) ((int_val >> 8) & 0xff);
17685 	} else {
17686 		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17687 			(u8) ((int_val >> 24) & 0xff);
17688 
17689 		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17690 			(u8) ((int_val >> 8) & 0xff);
17691 
17692 		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17693 			(u8) ((int_val >> 16) & 0xff);
17694 		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17695 			(u8) ((int_val) & 0xff);
17696 	}
17697 
17698 }
17699 
wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy * pi)17700 static void wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy *pi)
17701 {
17702 	u8 idx, idx2, i, delta_ind;
17703 
17704 	for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++)
17705 		pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
17706 
17707 	for (i = 0; i < 4; i++) {
17708 		idx2 = 0;
17709 
17710 		delta_ind = 0;
17711 
17712 		switch (i) {
17713 		case 0:
17714 
17715 			if (CHSPEC_IS40(pi->radio_chanspec)
17716 			    && NPHY_IS_SROM_REINTERPRET) {
17717 				idx = TXP_FIRST_MCS_40_SISO;
17718 			} else {
17719 				idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17720 				      TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
17721 				delta_ind = 1;
17722 			}
17723 			break;
17724 
17725 		case 1:
17726 
17727 			idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17728 			      TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
17729 			break;
17730 
17731 		case 2:
17732 
17733 			idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17734 			      TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
17735 			break;
17736 
17737 		case 3:
17738 
17739 			idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17740 			      TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
17741 			break;
17742 		}
17743 
17744 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17745 			pi->tx_power_offset[idx];
17746 		idx = idx + delta_ind;
17747 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17748 			pi->tx_power_offset[idx];
17749 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17750 			pi->tx_power_offset[idx];
17751 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17752 			pi->tx_power_offset[idx++];
17753 
17754 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17755 			pi->tx_power_offset[idx++];
17756 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17757 			pi->tx_power_offset[idx];
17758 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17759 			pi->tx_power_offset[idx];
17760 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17761 			pi->tx_power_offset[idx++];
17762 
17763 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17764 			pi->tx_power_offset[idx++];
17765 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17766 			pi->tx_power_offset[idx];
17767 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17768 			pi->tx_power_offset[idx];
17769 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17770 			pi->tx_power_offset[idx++];
17771 
17772 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17773 			pi->tx_power_offset[idx];
17774 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17775 			pi->tx_power_offset[idx++];
17776 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17777 			pi->tx_power_offset[idx];
17778 		idx = idx + 1 - delta_ind;
17779 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17780 			pi->tx_power_offset[idx];
17781 
17782 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17783 			pi->tx_power_offset[idx];
17784 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17785 			pi->tx_power_offset[idx];
17786 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17787 			pi->tx_power_offset[idx];
17788 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17789 			pi->tx_power_offset[idx];
17790 	}
17791 }
17792 
wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy * pi)17793 static void wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy *pi)
17794 {
17795 	u32 idx;
17796 	s16 a1[2], b0[2], b1[2];
17797 	s8 target_pwr_qtrdbm[2];
17798 	s32 num, den, pwr_est;
17799 	u8 chan_freq_range;
17800 	u8 idle_tssi[2];
17801 	u32 tbl_id, tbl_len, tbl_offset;
17802 	u32 regval[64];
17803 	u8 core;
17804 
17805 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17806 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17807 		(void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17808 		udelay(1);
17809 	}
17810 
17811 	if (pi->phyhang_avoid)
17812 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
17813 
17814 	or_phy_reg(pi, 0x122, (0x1 << 0));
17815 
17816 	if (NREV_GE(pi->pubpi.phy_rev, 3))
17817 		and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
17818 	else
17819 		or_phy_reg(pi, 0x1e7, (0x1 << 15));
17820 
17821 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17822 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17823 
17824 	if (pi->sh->sromrev < 4) {
17825 		idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17826 		idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17827 		a1[0] = -424;
17828 		a1[1] = -424;
17829 		b0[0] = 5612;
17830 		b0[1] = 5612;
17831 		b1[1] = -1393;
17832 		b1[0] = -1393;
17833 	} else {
17834 
17835 		chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
17836 		switch (chan_freq_range) {
17837 		case WL_CHAN_FREQ_RANGE_2G:
17838 			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17839 			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17840 			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
17841 			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
17842 			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
17843 			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
17844 			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
17845 			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
17846 			break;
17847 		case WL_CHAN_FREQ_RANGE_5GL:
17848 			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17849 			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17850 			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
17851 			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
17852 			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
17853 			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
17854 			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
17855 			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
17856 			break;
17857 		case WL_CHAN_FREQ_RANGE_5GM:
17858 			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17859 			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17860 			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
17861 			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
17862 			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
17863 			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
17864 			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
17865 			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
17866 			break;
17867 		case WL_CHAN_FREQ_RANGE_5GH:
17868 			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17869 			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17870 			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
17871 			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
17872 			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
17873 			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
17874 			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
17875 			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
17876 			break;
17877 		default:
17878 			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17879 			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17880 			a1[0] = -424;
17881 			a1[1] = -424;
17882 			b0[0] = 5612;
17883 			b0[1] = 5612;
17884 			b1[1] = -1393;
17885 			b1[0] = -1393;
17886 			break;
17887 		}
17888 	}
17889 
17890 	/* use the provided transmit power */
17891 	target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
17892 	target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
17893 
17894 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17895 		if (pi->srom_fem2g.tssipos)
17896 			or_phy_reg(pi, 0x1e9, (0x1 << 14));
17897 
17898 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17899 			for (core = 0; core <= 1; core++) {
17900 				if (PHY_IPA(pi)) {
17901 					if (CHSPEC_IS2G(pi->radio_chanspec))
17902 						WRITE_RADIO_REG3(pi, RADIO_2057,
17903 								 TX, core,
17904 								 TX_SSI_MUX,
17905 								 0xe);
17906 					else
17907 						WRITE_RADIO_REG3(pi, RADIO_2057,
17908 								 TX, core,
17909 								 TX_SSI_MUX,
17910 								 0xc);
17911 				}
17912 			}
17913 		} else {
17914 			if (PHY_IPA(pi)) {
17915 
17916 				write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17917 						RADIO_2056_TX0,
17918 						(CHSPEC_IS5G
17919 						 (pi->radio_chanspec)) ?
17920 						 0xc : 0xe);
17921 				write_radio_reg(pi,
17922 						RADIO_2056_TX_TX_SSI_MUX |
17923 						RADIO_2056_TX1,
17924 						(CHSPEC_IS5G
17925 						 (pi->radio_chanspec)) ?
17926 						 0xc : 0xe);
17927 			} else {
17928 
17929 				write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17930 						RADIO_2056_TX0, 0x11);
17931 				write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17932 						RADIO_2056_TX1, 0x11);
17933 			}
17934 		}
17935 	}
17936 
17937 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17938 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17939 		(void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17940 		udelay(1);
17941 	}
17942 
17943 	if (NREV_GE(pi->pubpi.phy_rev, 7))
17944 		mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17945 			    (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17946 	else
17947 		mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17948 			    (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17949 
17950 	if (NREV_GE(pi->pubpi.phy_rev, 7))
17951 		mod_phy_reg(pi, 0x222, (0xff << 0),
17952 			    (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17953 	else if (NREV_GT(pi->pubpi.phy_rev, 1))
17954 		mod_phy_reg(pi, 0x222, (0xff << 0),
17955 			    (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17956 
17957 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17958 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17959 
17960 	write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
17961 
17962 	write_phy_reg(pi, 0x1e9,
17963 		      (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
17964 
17965 	write_phy_reg(pi, 0x1ea,
17966 		      (target_pwr_qtrdbm[0] << 0) |
17967 		      (target_pwr_qtrdbm[1] << 8));
17968 
17969 	tbl_len = 64;
17970 	tbl_offset = 0;
17971 	for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
17972 	     tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
17973 
17974 		for (idx = 0; idx < tbl_len; idx++) {
17975 			num = 8 *
17976 			      (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
17977 			den = 32768 + a1[tbl_id - 26] * idx;
17978 			pwr_est = max(((4 * num + den / 2) / den), -8);
17979 			if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17980 				if (idx <=
17981 				    (uint) (31 - idle_tssi[tbl_id - 26] + 1))
17982 					pwr_est =
17983 						max(pwr_est,
17984 						    target_pwr_qtrdbm
17985 						    [tbl_id - 26] + 1);
17986 			}
17987 			regval[idx] = (u32) pwr_est;
17988 		}
17989 		wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
17990 					 regval);
17991 	}
17992 
17993 	wlc_phy_txpwr_limit_to_tbl_nphy(pi);
17994 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
17995 				 pi->adj_pwr_tbl_nphy);
17996 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
17997 				 pi->adj_pwr_tbl_nphy);
17998 
17999 	if (pi->phyhang_avoid)
18000 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
18001 }
18002 
wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy * pi)18003 static u32 *wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy *pi)
18004 {
18005 	u32 *tx_pwrctrl_tbl = NULL;
18006 
18007 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18008 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18009 			if ((pi->pubpi.radiorev == 4)
18010 			    || (pi->pubpi.radiorev == 6))
18011 				tx_pwrctrl_tbl =
18012 					nphy_tpc_txgain_ipa_2g_2057rev4n6;
18013 			else if (pi->pubpi.radiorev == 3)
18014 				tx_pwrctrl_tbl =
18015 					nphy_tpc_txgain_ipa_2g_2057rev3;
18016 			else if (pi->pubpi.radiorev == 5)
18017 				tx_pwrctrl_tbl =
18018 					nphy_tpc_txgain_ipa_2g_2057rev5;
18019 			else if ((pi->pubpi.radiorev == 7)
18020 				 || (pi->pubpi.radiorev == 8))
18021 				tx_pwrctrl_tbl =
18022 					nphy_tpc_txgain_ipa_2g_2057rev7;
18023 		} else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18024 			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
18025 		} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18026 			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
18027 		} else {
18028 			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
18029 		}
18030 	} else {
18031 
18032 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18033 			if ((pi->pubpi.radiorev == 3) ||
18034 			    (pi->pubpi.radiorev == 4) ||
18035 			    (pi->pubpi.radiorev == 6))
18036 				tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
18037 			else if ((pi->pubpi.radiorev == 7)
18038 				 || (pi->pubpi.radiorev == 8))
18039 				tx_pwrctrl_tbl =
18040 					nphy_tpc_txgain_ipa_5g_2057rev7;
18041 		} else {
18042 			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
18043 		}
18044 	}
18045 
18046 	return tx_pwrctrl_tbl;
18047 }
18048 
wlc_phy_restore_rssical_nphy(struct brcms_phy * pi)18049 static void wlc_phy_restore_rssical_nphy(struct brcms_phy *pi)
18050 {
18051 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18052 		if (pi->nphy_rssical_chanspec_2G == 0)
18053 			return;
18054 
18055 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18056 			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
18057 				      RADIO_2057_VCM_MASK,
18058 				      pi->rssical_cache.
18059 				      rssical_radio_regs_2G[0]);
18060 			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
18061 				      RADIO_2057_VCM_MASK,
18062 				      pi->rssical_cache.
18063 				      rssical_radio_regs_2G[1]);
18064 		} else {
18065 			mod_radio_reg(pi,
18066 				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
18067 				      RADIO_2056_VCM_MASK,
18068 				      pi->rssical_cache.
18069 				      rssical_radio_regs_2G[0]);
18070 			mod_radio_reg(pi,
18071 				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
18072 				      RADIO_2056_VCM_MASK,
18073 				      pi->rssical_cache.
18074 				      rssical_radio_regs_2G[1]);
18075 		}
18076 
18077 		write_phy_reg(pi, 0x1a6,
18078 			      pi->rssical_cache.rssical_phyregs_2G[0]);
18079 		write_phy_reg(pi, 0x1ac,
18080 			      pi->rssical_cache.rssical_phyregs_2G[1]);
18081 		write_phy_reg(pi, 0x1b2,
18082 			      pi->rssical_cache.rssical_phyregs_2G[2]);
18083 		write_phy_reg(pi, 0x1b8,
18084 			      pi->rssical_cache.rssical_phyregs_2G[3]);
18085 		write_phy_reg(pi, 0x1a4,
18086 			      pi->rssical_cache.rssical_phyregs_2G[4]);
18087 		write_phy_reg(pi, 0x1aa,
18088 			      pi->rssical_cache.rssical_phyregs_2G[5]);
18089 		write_phy_reg(pi, 0x1b0,
18090 			      pi->rssical_cache.rssical_phyregs_2G[6]);
18091 		write_phy_reg(pi, 0x1b6,
18092 			      pi->rssical_cache.rssical_phyregs_2G[7]);
18093 		write_phy_reg(pi, 0x1a5,
18094 			      pi->rssical_cache.rssical_phyregs_2G[8]);
18095 		write_phy_reg(pi, 0x1ab,
18096 			      pi->rssical_cache.rssical_phyregs_2G[9]);
18097 		write_phy_reg(pi, 0x1b1,
18098 			      pi->rssical_cache.rssical_phyregs_2G[10]);
18099 		write_phy_reg(pi, 0x1b7,
18100 			      pi->rssical_cache.rssical_phyregs_2G[11]);
18101 
18102 	} else {
18103 		if (pi->nphy_rssical_chanspec_5G == 0)
18104 			return;
18105 
18106 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18107 			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
18108 				      RADIO_2057_VCM_MASK,
18109 				      pi->rssical_cache.
18110 				      rssical_radio_regs_5G[0]);
18111 			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
18112 				      RADIO_2057_VCM_MASK,
18113 				      pi->rssical_cache.
18114 				      rssical_radio_regs_5G[1]);
18115 		} else {
18116 			mod_radio_reg(pi,
18117 				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
18118 				      RADIO_2056_VCM_MASK,
18119 				      pi->rssical_cache.
18120 				      rssical_radio_regs_5G[0]);
18121 			mod_radio_reg(pi,
18122 				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
18123 				      RADIO_2056_VCM_MASK,
18124 				      pi->rssical_cache.
18125 				      rssical_radio_regs_5G[1]);
18126 		}
18127 
18128 		write_phy_reg(pi, 0x1a6,
18129 			      pi->rssical_cache.rssical_phyregs_5G[0]);
18130 		write_phy_reg(pi, 0x1ac,
18131 			      pi->rssical_cache.rssical_phyregs_5G[1]);
18132 		write_phy_reg(pi, 0x1b2,
18133 			      pi->rssical_cache.rssical_phyregs_5G[2]);
18134 		write_phy_reg(pi, 0x1b8,
18135 			      pi->rssical_cache.rssical_phyregs_5G[3]);
18136 		write_phy_reg(pi, 0x1a4,
18137 			      pi->rssical_cache.rssical_phyregs_5G[4]);
18138 		write_phy_reg(pi, 0x1aa,
18139 			      pi->rssical_cache.rssical_phyregs_5G[5]);
18140 		write_phy_reg(pi, 0x1b0,
18141 			      pi->rssical_cache.rssical_phyregs_5G[6]);
18142 		write_phy_reg(pi, 0x1b6,
18143 			      pi->rssical_cache.rssical_phyregs_5G[7]);
18144 		write_phy_reg(pi, 0x1a5,
18145 			      pi->rssical_cache.rssical_phyregs_5G[8]);
18146 		write_phy_reg(pi, 0x1ab,
18147 			      pi->rssical_cache.rssical_phyregs_5G[9]);
18148 		write_phy_reg(pi, 0x1b1,
18149 			      pi->rssical_cache.rssical_phyregs_5G[10]);
18150 		write_phy_reg(pi, 0x1b7,
18151 			      pi->rssical_cache.rssical_phyregs_5G[11]);
18152 	}
18153 }
18154 
wlc_phy_internal_cal_txgain_nphy(struct brcms_phy * pi)18155 static void wlc_phy_internal_cal_txgain_nphy(struct brcms_phy *pi)
18156 {
18157 	u16 txcal_gain[2];
18158 
18159 	pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
18160 	pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
18161 	wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18162 	wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18163 
18164 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18165 				txcal_gain);
18166 
18167 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18168 		txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
18169 		txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
18170 	} else {
18171 		txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
18172 		txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
18173 	}
18174 
18175 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18176 				 txcal_gain);
18177 }
18178 
wlc_phy_precal_txgain_nphy(struct brcms_phy * pi)18179 static void wlc_phy_precal_txgain_nphy(struct brcms_phy *pi)
18180 {
18181 	bool save_bbmult = false;
18182 	u8 txcal_index_2057_rev5n7 = 0;
18183 	u8 txcal_index_2057_rev3n4n6 = 10;
18184 
18185 	if (pi->use_int_tx_iqlo_cal_nphy) {
18186 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18187 			if ((pi->pubpi.radiorev == 3) ||
18188 			    (pi->pubpi.radiorev == 4) ||
18189 			    (pi->pubpi.radiorev == 6)) {
18190 
18191 				pi->nphy_txcal_pwr_idx[0] =
18192 					txcal_index_2057_rev3n4n6;
18193 				pi->nphy_txcal_pwr_idx[1] =
18194 					txcal_index_2057_rev3n4n6;
18195 				wlc_phy_txpwr_index_nphy(
18196 					pi, 3,
18197 					txcal_index_2057_rev3n4n6,
18198 					false);
18199 			} else {
18200 
18201 				pi->nphy_txcal_pwr_idx[0] =
18202 					txcal_index_2057_rev5n7;
18203 				pi->nphy_txcal_pwr_idx[1] =
18204 					txcal_index_2057_rev5n7;
18205 				wlc_phy_txpwr_index_nphy(
18206 					pi, 3,
18207 					txcal_index_2057_rev5n7,
18208 					false);
18209 			}
18210 			save_bbmult = true;
18211 
18212 		} else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
18213 			wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
18214 			if (pi->sh->hw_phytxchain != 3) {
18215 				pi->nphy_txcal_pwr_idx[1] =
18216 					pi->nphy_txcal_pwr_idx[0];
18217 				wlc_phy_txpwr_index_nphy(pi, 3,
18218 							 pi->
18219 							 nphy_txcal_pwr_idx[0],
18220 							 true);
18221 				save_bbmult = true;
18222 			}
18223 
18224 		} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18225 			if (PHY_IPA(pi)) {
18226 				if (CHSPEC_IS2G(pi->radio_chanspec)) {
18227 					wlc_phy_cal_txgainctrl_nphy(pi, 12,
18228 								    false);
18229 				} else {
18230 					pi->nphy_txcal_pwr_idx[0] = 80;
18231 					pi->nphy_txcal_pwr_idx[1] = 80;
18232 					wlc_phy_txpwr_index_nphy(pi, 3, 80,
18233 								 false);
18234 					save_bbmult = true;
18235 				}
18236 			} else {
18237 				wlc_phy_internal_cal_txgain_nphy(pi);
18238 				save_bbmult = true;
18239 			}
18240 
18241 		} else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18242 			if (PHY_IPA(pi)) {
18243 				if (CHSPEC_IS2G(pi->radio_chanspec))
18244 					wlc_phy_cal_txgainctrl_nphy(pi, 12,
18245 								    false);
18246 				else
18247 					wlc_phy_cal_txgainctrl_nphy(pi, 14,
18248 								    false);
18249 			} else {
18250 				wlc_phy_internal_cal_txgain_nphy(pi);
18251 				save_bbmult = true;
18252 			}
18253 		}
18254 
18255 	} else {
18256 		wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
18257 	}
18258 
18259 	if (save_bbmult)
18260 		wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
18261 					&pi->nphy_txcal_bbmult);
18262 }
18263 
18264 static void
wlc_phy_rfctrlintc_override_nphy(struct brcms_phy * pi,u8 field,u16 value,u8 core_code)18265 wlc_phy_rfctrlintc_override_nphy(struct brcms_phy *pi, u8 field, u16 value,
18266 				 u8 core_code)
18267 {
18268 	u16 mask;
18269 	u16 val;
18270 	u8 core;
18271 
18272 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18273 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18274 			if (core_code == RADIO_MIMO_CORESEL_CORE1
18275 			    && core == PHY_CORE_1)
18276 				continue;
18277 			else if (core_code == RADIO_MIMO_CORESEL_CORE2
18278 				 && core == PHY_CORE_0)
18279 				continue;
18280 
18281 			if (NREV_LT(pi->pubpi.phy_rev, 7)) {
18282 
18283 				mask = (0x1 << 10);
18284 				val = 1 << 10;
18285 				mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18286 					    0x92, mask, val);
18287 			}
18288 
18289 			if (field == NPHY_RfctrlIntc_override_OFF) {
18290 
18291 				write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18292 					      0x92, 0);
18293 
18294 				wlc_phy_force_rfseq_nphy(pi,
18295 							 NPHY_RFSEQ_RESET2RX);
18296 			} else if (field == NPHY_RfctrlIntc_override_TRSW) {
18297 
18298 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18299 
18300 					mask = (0x1 << 6) | (0x1 << 7);
18301 
18302 					val = value << 6;
18303 					mod_phy_reg(pi,
18304 						    (core ==
18305 						     PHY_CORE_0) ? 0x91 : 0x92,
18306 						    mask, val);
18307 
18308 					or_phy_reg(pi,
18309 						   (core ==
18310 						    PHY_CORE_0) ? 0x91 : 0x92,
18311 						   (0x1 << 10));
18312 
18313 					and_phy_reg(pi, 0x2ff, (u16)
18314 						    ~(0x3 << 14));
18315 					or_phy_reg(pi, 0x2ff, (0x1 << 13));
18316 					or_phy_reg(pi, 0x2ff, (0x1 << 0));
18317 				} else {
18318 
18319 					mask = (0x1 << 6) |
18320 					       (0x1 << 7) |
18321 					       (0x1 << 8) | (0x1 << 9);
18322 					val = value << 6;
18323 					mod_phy_reg(pi,
18324 						    (core ==
18325 						     PHY_CORE_0) ? 0x91 : 0x92,
18326 						    mask, val);
18327 
18328 					mask = (0x1 << 0);
18329 					val = 1 << 0;
18330 					mod_phy_reg(pi,
18331 						    (core ==
18332 						     PHY_CORE_0) ? 0xe7 : 0xec,
18333 						    mask, val);
18334 
18335 					mask = (core == PHY_CORE_0) ?
18336 					       (0x1 << 0) : (0x1 << 1);
18337 					val = 1 << ((core == PHY_CORE_0) ?
18338 						    0 : 1);
18339 					mod_phy_reg(pi, 0x78, mask, val);
18340 
18341 					SPINWAIT(((read_phy_reg(pi, 0x78) & val)
18342 						  != 0), 10000);
18343 					if (WARN(read_phy_reg(pi, 0x78) & val,
18344 						 "HW error: override failed"))
18345 						return;
18346 
18347 					mask = (0x1 << 0);
18348 					val = 0 << 0;
18349 					mod_phy_reg(pi,
18350 						    (core ==
18351 						     PHY_CORE_0) ? 0xe7 : 0xec,
18352 						    mask, val);
18353 				}
18354 			} else if (field == NPHY_RfctrlIntc_override_PA) {
18355 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18356 
18357 					mask = (0x1 << 4) | (0x1 << 5);
18358 
18359 					if (CHSPEC_IS5G(pi->radio_chanspec))
18360 						val = value << 5;
18361 					else
18362 						val = value << 4;
18363 
18364 					mod_phy_reg(pi,
18365 						    (core ==
18366 						     PHY_CORE_0) ? 0x91 : 0x92,
18367 						    mask, val);
18368 
18369 					or_phy_reg(pi,
18370 						   (core ==
18371 						    PHY_CORE_0) ? 0x91 : 0x92,
18372 						   (0x1 << 12));
18373 				} else {
18374 
18375 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18376 						mask = (0x1 << 5);
18377 						val = value << 5;
18378 					} else {
18379 						mask = (0x1 << 4);
18380 						val = value << 4;
18381 					}
18382 					mod_phy_reg(pi,
18383 						    (core ==
18384 						     PHY_CORE_0) ? 0x91 : 0x92,
18385 						    mask, val);
18386 				}
18387 			} else if (field ==
18388 				   NPHY_RfctrlIntc_override_EXT_LNA_PU) {
18389 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18390 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18391 
18392 						mask = (0x1 << 0);
18393 						val = value << 0;
18394 						mod_phy_reg(pi,
18395 							    (core ==
18396 							     PHY_CORE_0) ? 0x91
18397 							    : 0x92, mask, val);
18398 
18399 						mask = (0x1 << 2);
18400 						mod_phy_reg(pi,
18401 							    (core ==
18402 							     PHY_CORE_0) ? 0x91
18403 							    : 0x92, mask, 0);
18404 					} else {
18405 
18406 						mask = (0x1 << 2);
18407 						val = value << 2;
18408 						mod_phy_reg(pi,
18409 							    (core ==
18410 							     PHY_CORE_0) ? 0x91
18411 							    : 0x92, mask, val);
18412 
18413 						mask = (0x1 << 0);
18414 						mod_phy_reg(pi,
18415 							    (core ==
18416 							     PHY_CORE_0) ? 0x91
18417 							    : 0x92, mask, 0);
18418 					}
18419 
18420 					mask = (0x1 << 11);
18421 					val = 1 << 11;
18422 					mod_phy_reg(pi,
18423 						    (core ==
18424 						     PHY_CORE_0) ? 0x91 : 0x92,
18425 						    mask, val);
18426 				} else {
18427 
18428 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18429 						mask = (0x1 << 0);
18430 						val = value << 0;
18431 					} else {
18432 						mask = (0x1 << 2);
18433 						val = value << 2;
18434 					}
18435 					mod_phy_reg(pi,
18436 						    (core ==
18437 						     PHY_CORE_0) ? 0x91 : 0x92,
18438 						    mask, val);
18439 				}
18440 			} else if (field ==
18441 				   NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
18442 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18443 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18444 
18445 						mask = (0x1 << 1);
18446 						val = value << 1;
18447 						mod_phy_reg(pi,
18448 							    (core ==
18449 							     PHY_CORE_0) ? 0x91
18450 							    : 0x92, mask, val);
18451 
18452 						mask = (0x1 << 3);
18453 						mod_phy_reg(pi,
18454 							    (core ==
18455 							     PHY_CORE_0) ? 0x91
18456 							    : 0x92, mask, 0);
18457 					} else {
18458 
18459 						mask = (0x1 << 3);
18460 						val = value << 3;
18461 						mod_phy_reg(pi,
18462 							    (core ==
18463 							     PHY_CORE_0) ? 0x91
18464 							    : 0x92, mask, val);
18465 
18466 						mask = (0x1 << 1);
18467 						mod_phy_reg(pi,
18468 							    (core ==
18469 							     PHY_CORE_0) ? 0x91
18470 							    : 0x92, mask, 0);
18471 					}
18472 
18473 					mask = (0x1 << 11);
18474 					val = 1 << 11;
18475 					mod_phy_reg(pi,
18476 						    (core ==
18477 						     PHY_CORE_0) ? 0x91 : 0x92,
18478 						    mask, val);
18479 				} else {
18480 
18481 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18482 						mask = (0x1 << 1);
18483 						val = value << 1;
18484 					} else {
18485 						mask = (0x1 << 3);
18486 						val = value << 3;
18487 					}
18488 					mod_phy_reg(pi,
18489 						    (core ==
18490 						     PHY_CORE_0) ? 0x91 : 0x92,
18491 						    mask, val);
18492 				}
18493 			}
18494 		}
18495 	}
18496 }
18497 
18498 void
wlc_phy_cal_txgainctrl_nphy(struct brcms_phy * pi,s32 dBm_targetpower,bool debug)18499 wlc_phy_cal_txgainctrl_nphy(struct brcms_phy *pi, s32 dBm_targetpower,
18500 			    bool debug)
18501 {
18502 	int gainctrl_loopidx;
18503 	uint core;
18504 	u16 m0m1, curr_m0m1;
18505 	s32 delta_power;
18506 	s32 txpwrindex;
18507 	s32 qdBm_power[2];
18508 	u16 orig_BBConfig;
18509 	u16 phy_saveregs[4];
18510 	u32 freq_test;
18511 	u16 ampl_test = 250;
18512 	uint stepsize;
18513 	bool phyhang_avoid_state = false;
18514 
18515 	if (NREV_GE(pi->pubpi.phy_rev, 7))
18516 		stepsize = 2;
18517 	else
18518 		stepsize = 1;
18519 
18520 	if (CHSPEC_IS40(pi->radio_chanspec))
18521 		freq_test = 5000;
18522 	else
18523 		freq_test = 2500;
18524 
18525 	wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18526 	wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18527 
18528 	if (pi->phyhang_avoid)
18529 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
18530 
18531 	phyhang_avoid_state = pi->phyhang_avoid;
18532 	pi->phyhang_avoid = false;
18533 
18534 	phy_saveregs[0] = read_phy_reg(pi, 0x91);
18535 	phy_saveregs[1] = read_phy_reg(pi, 0x92);
18536 	phy_saveregs[2] = read_phy_reg(pi, 0xe7);
18537 	phy_saveregs[3] = read_phy_reg(pi, 0xec);
18538 	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
18539 					 RADIO_MIMO_CORESEL_CORE1 |
18540 					 RADIO_MIMO_CORESEL_CORE2);
18541 
18542 	if (!debug) {
18543 		wlc_phy_rfctrlintc_override_nphy(pi,
18544 						 NPHY_RfctrlIntc_override_TRSW,
18545 						 0x2, RADIO_MIMO_CORESEL_CORE1);
18546 		wlc_phy_rfctrlintc_override_nphy(pi,
18547 						 NPHY_RfctrlIntc_override_TRSW,
18548 						 0x8, RADIO_MIMO_CORESEL_CORE2);
18549 	} else {
18550 		wlc_phy_rfctrlintc_override_nphy(pi,
18551 						 NPHY_RfctrlIntc_override_TRSW,
18552 						 0x1, RADIO_MIMO_CORESEL_CORE1);
18553 		wlc_phy_rfctrlintc_override_nphy(pi,
18554 						 NPHY_RfctrlIntc_override_TRSW,
18555 						 0x7, RADIO_MIMO_CORESEL_CORE2);
18556 	}
18557 
18558 	orig_BBConfig = read_phy_reg(pi, 0x01);
18559 	mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
18560 
18561 	wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
18562 
18563 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18564 		txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
18565 
18566 		for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
18567 		     gainctrl_loopidx++) {
18568 			wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18569 					     false);
18570 
18571 			if (core == PHY_CORE_0)
18572 				curr_m0m1 = m0m1 & 0xff00;
18573 			else
18574 				curr_m0m1 = m0m1 & 0x00ff;
18575 
18576 			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
18577 			wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
18578 
18579 			udelay(50);
18580 
18581 			wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18582 						 NPHY_CAL_TSSISAMPS);
18583 
18584 			pi->nphy_bb_mult_save = 0;
18585 			wlc_phy_stopplayback_nphy(pi);
18586 
18587 			delta_power = (dBm_targetpower * 4) - qdBm_power[core];
18588 
18589 			txpwrindex -= stepsize * delta_power;
18590 			if (txpwrindex < 0)
18591 				txpwrindex = 0;
18592 			else if (txpwrindex > 127)
18593 				txpwrindex = 127;
18594 
18595 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
18596 				if (NREV_IS(pi->pubpi.phy_rev, 4) &&
18597 				    (pi->srom_fem5g.extpagain == 3)) {
18598 					if (txpwrindex < 30)
18599 						txpwrindex = 30;
18600 				}
18601 			} else {
18602 				if (NREV_GE(pi->pubpi.phy_rev, 5) &&
18603 				    (pi->srom_fem2g.extpagain == 3)) {
18604 					if (txpwrindex < 50)
18605 						txpwrindex = 50;
18606 				}
18607 			}
18608 
18609 			wlc_phy_txpwr_index_nphy(pi, (1 << core),
18610 						 (u8) txpwrindex, true);
18611 		}
18612 
18613 		pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
18614 
18615 		if (debug) {
18616 			u16 radio_gain;
18617 			u16 dbg_m0m1;
18618 
18619 			wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18620 
18621 			wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18622 					     false);
18623 
18624 			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18625 			wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
18626 
18627 			udelay(100);
18628 
18629 			wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18630 						 NPHY_CAL_TSSISAMPS);
18631 
18632 			wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
18633 						&radio_gain);
18634 
18635 			mdelay(4000);
18636 			pi->nphy_bb_mult_save = 0;
18637 			wlc_phy_stopplayback_nphy(pi);
18638 		}
18639 	}
18640 
18641 	wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
18642 	wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
18643 
18644 	wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
18645 
18646 	write_phy_reg(pi, 0x01, orig_BBConfig);
18647 
18648 	write_phy_reg(pi, 0x91, phy_saveregs[0]);
18649 	write_phy_reg(pi, 0x92, phy_saveregs[1]);
18650 	write_phy_reg(pi, 0xe7, phy_saveregs[2]);
18651 	write_phy_reg(pi, 0xec, phy_saveregs[3]);
18652 
18653 	pi->phyhang_avoid = phyhang_avoid_state;
18654 
18655 	if (pi->phyhang_avoid)
18656 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
18657 }
18658 
wlc_phy_savecal_nphy(struct brcms_phy * pi)18659 static void wlc_phy_savecal_nphy(struct brcms_phy *pi)
18660 {
18661 	void *tbl_ptr;
18662 	int coreNum;
18663 	u16 *txcal_radio_regs = NULL;
18664 
18665 	if (pi->phyhang_avoid)
18666 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
18667 
18668 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18669 
18670 		wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18671 					  &pi->calibration_cache.
18672 					  rxcal_coeffs_2G);
18673 
18674 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18675 			txcal_radio_regs =
18676 				pi->calibration_cache.txcal_radio_regs_2G;
18677 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18678 
18679 			pi->calibration_cache.txcal_radio_regs_2G[0] =
18680 				read_radio_reg(pi,
18681 					       RADIO_2056_TX_LOFT_FINE_I |
18682 					       RADIO_2056_TX0);
18683 			pi->calibration_cache.txcal_radio_regs_2G[1] =
18684 				read_radio_reg(pi,
18685 					       RADIO_2056_TX_LOFT_FINE_Q |
18686 					       RADIO_2056_TX0);
18687 			pi->calibration_cache.txcal_radio_regs_2G[2] =
18688 				read_radio_reg(pi,
18689 					       RADIO_2056_TX_LOFT_FINE_I |
18690 					       RADIO_2056_TX1);
18691 			pi->calibration_cache.txcal_radio_regs_2G[3] =
18692 				read_radio_reg(pi,
18693 					       RADIO_2056_TX_LOFT_FINE_Q |
18694 					       RADIO_2056_TX1);
18695 
18696 			pi->calibration_cache.txcal_radio_regs_2G[4] =
18697 				read_radio_reg(pi,
18698 					       RADIO_2056_TX_LOFT_COARSE_I |
18699 					       RADIO_2056_TX0);
18700 			pi->calibration_cache.txcal_radio_regs_2G[5] =
18701 				read_radio_reg(pi,
18702 					       RADIO_2056_TX_LOFT_COARSE_Q |
18703 					       RADIO_2056_TX0);
18704 			pi->calibration_cache.txcal_radio_regs_2G[6] =
18705 				read_radio_reg(pi,
18706 					       RADIO_2056_TX_LOFT_COARSE_I |
18707 					       RADIO_2056_TX1);
18708 			pi->calibration_cache.txcal_radio_regs_2G[7] =
18709 				read_radio_reg(pi,
18710 					       RADIO_2056_TX_LOFT_COARSE_Q |
18711 					       RADIO_2056_TX1);
18712 		} else {
18713 			pi->calibration_cache.txcal_radio_regs_2G[0] =
18714 			       read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18715 			pi->calibration_cache.txcal_radio_regs_2G[1] =
18716 			       read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18717 			pi->calibration_cache.txcal_radio_regs_2G[2] =
18718 			       read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18719 			pi->calibration_cache.txcal_radio_regs_2G[3] =
18720 			       read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18721 		}
18722 
18723 		pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
18724 		tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18725 	} else {
18726 
18727 		wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18728 					  &pi->calibration_cache.
18729 					  rxcal_coeffs_5G);
18730 
18731 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18732 			txcal_radio_regs =
18733 				pi->calibration_cache.txcal_radio_regs_5G;
18734 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18735 
18736 			pi->calibration_cache.txcal_radio_regs_5G[0] =
18737 				read_radio_reg(pi,
18738 					       RADIO_2056_TX_LOFT_FINE_I |
18739 					       RADIO_2056_TX0);
18740 			pi->calibration_cache.txcal_radio_regs_5G[1] =
18741 				read_radio_reg(pi,
18742 					       RADIO_2056_TX_LOFT_FINE_Q |
18743 					       RADIO_2056_TX0);
18744 			pi->calibration_cache.txcal_radio_regs_5G[2] =
18745 				read_radio_reg(pi,
18746 					       RADIO_2056_TX_LOFT_FINE_I |
18747 					       RADIO_2056_TX1);
18748 			pi->calibration_cache.txcal_radio_regs_5G[3] =
18749 				read_radio_reg(pi,
18750 					       RADIO_2056_TX_LOFT_FINE_Q |
18751 					       RADIO_2056_TX1);
18752 
18753 			pi->calibration_cache.txcal_radio_regs_5G[4] =
18754 				read_radio_reg(pi,
18755 					       RADIO_2056_TX_LOFT_COARSE_I |
18756 					       RADIO_2056_TX0);
18757 			pi->calibration_cache.txcal_radio_regs_5G[5] =
18758 				read_radio_reg(pi,
18759 					       RADIO_2056_TX_LOFT_COARSE_Q |
18760 					       RADIO_2056_TX0);
18761 			pi->calibration_cache.txcal_radio_regs_5G[6] =
18762 				read_radio_reg(pi,
18763 					       RADIO_2056_TX_LOFT_COARSE_I |
18764 					       RADIO_2056_TX1);
18765 			pi->calibration_cache.txcal_radio_regs_5G[7] =
18766 				read_radio_reg(pi,
18767 					       RADIO_2056_TX_LOFT_COARSE_Q |
18768 					       RADIO_2056_TX1);
18769 		} else {
18770 			pi->calibration_cache.txcal_radio_regs_5G[0] =
18771 			       read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18772 			pi->calibration_cache.txcal_radio_regs_5G[1] =
18773 			       read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18774 			pi->calibration_cache.txcal_radio_regs_5G[2] =
18775 			       read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18776 			pi->calibration_cache.txcal_radio_regs_5G[3] =
18777 			       read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18778 		}
18779 
18780 		pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
18781 		tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18782 	}
18783 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18784 		for (coreNum = 0; coreNum <= 1; coreNum++) {
18785 
18786 			txcal_radio_regs[2 * coreNum] =
18787 				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18788 						LOFT_FINE_I);
18789 			txcal_radio_regs[2 * coreNum + 1] =
18790 				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18791 						LOFT_FINE_Q);
18792 
18793 			txcal_radio_regs[2 * coreNum + 4] =
18794 				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18795 						LOFT_COARSE_I);
18796 			txcal_radio_regs[2 * coreNum + 5] =
18797 				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18798 						LOFT_COARSE_Q);
18799 		}
18800 	}
18801 
18802 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
18803 
18804 	if (pi->phyhang_avoid)
18805 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
18806 }
18807 
wlc_phy_tx_iq_war_nphy(struct brcms_phy * pi)18808 static void wlc_phy_tx_iq_war_nphy(struct brcms_phy *pi)
18809 {
18810 	struct nphy_iq_comp tx_comp;
18811 
18812 	wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, &tx_comp);
18813 
18814 	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
18815 	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
18816 	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
18817 	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
18818 }
18819 
wlc_phy_restorecal_nphy(struct brcms_phy * pi)18820 static void wlc_phy_restorecal_nphy(struct brcms_phy *pi)
18821 {
18822 	u16 *loft_comp;
18823 	u16 txcal_coeffs_bphy[4];
18824 	u16 *tbl_ptr;
18825 	int coreNum;
18826 	u16 *txcal_radio_regs = NULL;
18827 
18828 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18829 		if (pi->nphy_iqcal_chanspec_2G == 0)
18830 			return;
18831 
18832 		tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18833 		loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
18834 	} else {
18835 		if (pi->nphy_iqcal_chanspec_5G == 0)
18836 			return;
18837 
18838 		tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18839 		loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
18840 	}
18841 
18842 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16, tbl_ptr);
18843 
18844 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18845 		txcal_coeffs_bphy[0] = tbl_ptr[0];
18846 		txcal_coeffs_bphy[1] = tbl_ptr[1];
18847 		txcal_coeffs_bphy[2] = tbl_ptr[2];
18848 		txcal_coeffs_bphy[3] = tbl_ptr[3];
18849 	} else {
18850 		txcal_coeffs_bphy[0] = 0;
18851 		txcal_coeffs_bphy[1] = 0;
18852 		txcal_coeffs_bphy[2] = 0;
18853 		txcal_coeffs_bphy[3] = 0;
18854 	}
18855 
18856 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
18857 				 txcal_coeffs_bphy);
18858 
18859 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
18860 
18861 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
18862 
18863 	if (NREV_LT(pi->pubpi.phy_rev, 2))
18864 		wlc_phy_tx_iq_war_nphy(pi);
18865 
18866 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18867 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18868 			txcal_radio_regs =
18869 				pi->calibration_cache.txcal_radio_regs_2G;
18870 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18871 
18872 			write_radio_reg(pi,
18873 					RADIO_2056_TX_LOFT_FINE_I |
18874 					RADIO_2056_TX0,
18875 					pi->calibration_cache.
18876 					txcal_radio_regs_2G[0]);
18877 			write_radio_reg(pi,
18878 					RADIO_2056_TX_LOFT_FINE_Q |
18879 					RADIO_2056_TX0,
18880 					pi->calibration_cache.
18881 					txcal_radio_regs_2G[1]);
18882 			write_radio_reg(pi,
18883 					RADIO_2056_TX_LOFT_FINE_I |
18884 					RADIO_2056_TX1,
18885 					pi->calibration_cache.
18886 					txcal_radio_regs_2G[2]);
18887 			write_radio_reg(pi,
18888 					RADIO_2056_TX_LOFT_FINE_Q |
18889 					RADIO_2056_TX1,
18890 					pi->calibration_cache.
18891 					txcal_radio_regs_2G[3]);
18892 
18893 			write_radio_reg(pi,
18894 					RADIO_2056_TX_LOFT_COARSE_I |
18895 					RADIO_2056_TX0,
18896 					pi->calibration_cache.
18897 					txcal_radio_regs_2G[4]);
18898 			write_radio_reg(pi,
18899 					RADIO_2056_TX_LOFT_COARSE_Q |
18900 					RADIO_2056_TX0,
18901 					pi->calibration_cache.
18902 					txcal_radio_regs_2G[5]);
18903 			write_radio_reg(pi,
18904 					RADIO_2056_TX_LOFT_COARSE_I |
18905 					RADIO_2056_TX1,
18906 					pi->calibration_cache.
18907 					txcal_radio_regs_2G[6]);
18908 			write_radio_reg(pi,
18909 					RADIO_2056_TX_LOFT_COARSE_Q |
18910 					RADIO_2056_TX1,
18911 					pi->calibration_cache.
18912 					txcal_radio_regs_2G[7]);
18913 		} else {
18914 			write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18915 					pi->calibration_cache.
18916 					txcal_radio_regs_2G[0]);
18917 			write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18918 					pi->calibration_cache.
18919 					txcal_radio_regs_2G[1]);
18920 			write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18921 					pi->calibration_cache.
18922 					txcal_radio_regs_2G[2]);
18923 			write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18924 					pi->calibration_cache.
18925 					txcal_radio_regs_2G[3]);
18926 		}
18927 
18928 		wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18929 					  &pi->calibration_cache.
18930 					  rxcal_coeffs_2G);
18931 	} else {
18932 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18933 			txcal_radio_regs =
18934 				pi->calibration_cache.txcal_radio_regs_5G;
18935 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18936 
18937 			write_radio_reg(pi,
18938 					RADIO_2056_TX_LOFT_FINE_I |
18939 					RADIO_2056_TX0,
18940 					pi->calibration_cache.
18941 					txcal_radio_regs_5G[0]);
18942 			write_radio_reg(pi,
18943 					RADIO_2056_TX_LOFT_FINE_Q |
18944 					RADIO_2056_TX0,
18945 					pi->calibration_cache.
18946 					txcal_radio_regs_5G[1]);
18947 			write_radio_reg(pi,
18948 					RADIO_2056_TX_LOFT_FINE_I |
18949 					RADIO_2056_TX1,
18950 					pi->calibration_cache.
18951 					txcal_radio_regs_5G[2]);
18952 			write_radio_reg(pi,
18953 					RADIO_2056_TX_LOFT_FINE_Q |
18954 					RADIO_2056_TX1,
18955 					pi->calibration_cache.
18956 					txcal_radio_regs_5G[3]);
18957 
18958 			write_radio_reg(pi,
18959 					RADIO_2056_TX_LOFT_COARSE_I |
18960 					RADIO_2056_TX0,
18961 					pi->calibration_cache.
18962 					txcal_radio_regs_5G[4]);
18963 			write_radio_reg(pi,
18964 					RADIO_2056_TX_LOFT_COARSE_Q |
18965 					RADIO_2056_TX0,
18966 					pi->calibration_cache.
18967 					txcal_radio_regs_5G[5]);
18968 			write_radio_reg(pi,
18969 					RADIO_2056_TX_LOFT_COARSE_I |
18970 					RADIO_2056_TX1,
18971 					pi->calibration_cache.
18972 					txcal_radio_regs_5G[6]);
18973 			write_radio_reg(pi,
18974 					RADIO_2056_TX_LOFT_COARSE_Q |
18975 					RADIO_2056_TX1,
18976 					pi->calibration_cache.
18977 					txcal_radio_regs_5G[7]);
18978 		} else {
18979 			write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18980 					pi->calibration_cache.
18981 					txcal_radio_regs_5G[0]);
18982 			write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18983 					pi->calibration_cache.
18984 					txcal_radio_regs_5G[1]);
18985 			write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18986 					pi->calibration_cache.
18987 					txcal_radio_regs_5G[2]);
18988 			write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18989 					pi->calibration_cache.
18990 					txcal_radio_regs_5G[3]);
18991 		}
18992 
18993 		wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18994 					  &pi->calibration_cache.
18995 					  rxcal_coeffs_5G);
18996 	}
18997 
18998 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18999 		for (coreNum = 0; coreNum <= 1; coreNum++) {
19000 
19001 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19002 					 LOFT_FINE_I,
19003 					 txcal_radio_regs[2 * coreNum]);
19004 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19005 					 LOFT_FINE_Q,
19006 					 txcal_radio_regs[2 * coreNum + 1]);
19007 
19008 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19009 					 LOFT_COARSE_I,
19010 					 txcal_radio_regs[2 * coreNum + 4]);
19011 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19012 					 LOFT_COARSE_Q,
19013 					 txcal_radio_regs[2 * coreNum + 5]);
19014 		}
19015 	}
19016 }
19017 
wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy * pi)19018 static void wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy *pi)
19019 {
19020 	u32 idx;
19021 	u16 iqloCalbuf[7];
19022 	u32 iqcomp, locomp, curr_locomp;
19023 	s8 locomp_i, locomp_q;
19024 	s8 curr_locomp_i, curr_locomp_q;
19025 	u32 tbl_id, tbl_len, tbl_offset;
19026 	u32 regval[128];
19027 
19028 	if (pi->phyhang_avoid)
19029 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
19030 
19031 	wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
19032 
19033 	tbl_len = 128;
19034 	tbl_offset = 320;
19035 	for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
19036 	     tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
19037 		iqcomp =
19038 			(tbl_id ==
19039 			 26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
19040 			(iqloCalbuf[1] & 0x3ff)
19041 			: (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
19042 			(iqloCalbuf[3] & 0x3ff);
19043 
19044 		for (idx = 0; idx < tbl_len; idx++)
19045 			regval[idx] = iqcomp;
19046 		wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
19047 					 regval);
19048 	}
19049 
19050 	tbl_offset = 448;
19051 	for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
19052 	     tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
19053 
19054 		locomp =
19055 			(u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
19056 		locomp_i = (s8) ((locomp >> 8) & 0xff);
19057 		locomp_q = (s8) ((locomp) & 0xff);
19058 		for (idx = 0; idx < tbl_len; idx++) {
19059 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19060 				curr_locomp_i = locomp_i;
19061 				curr_locomp_q = locomp_q;
19062 			} else {
19063 				curr_locomp_i = (s8) ((locomp_i *
19064 						       nphy_tpc_loscale[idx] +
19065 						       128) >> 8);
19066 				curr_locomp_q =
19067 					(s8) ((locomp_q *
19068 					       nphy_tpc_loscale[idx] +
19069 					       128) >> 8);
19070 			}
19071 			curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
19072 			curr_locomp |= (u32) (curr_locomp_q & 0xff);
19073 			regval[idx] = curr_locomp;
19074 		}
19075 		wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
19076 					 regval);
19077 	}
19078 
19079 	if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19080 
19081 		wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
19082 		wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
19083 	}
19084 
19085 	if (pi->phyhang_avoid)
19086 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
19087 }
19088 
wlc_phy_txlpfbw_nphy(struct brcms_phy * pi)19089 static void wlc_phy_txlpfbw_nphy(struct brcms_phy *pi)
19090 {
19091 	u8 tx_lpf_bw = 0;
19092 
19093 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
19094 		if (CHSPEC_IS40(pi->radio_chanspec))
19095 			tx_lpf_bw = 3;
19096 		else
19097 			tx_lpf_bw = 1;
19098 
19099 		if (PHY_IPA(pi)) {
19100 			if (CHSPEC_IS40(pi->radio_chanspec))
19101 				tx_lpf_bw = 5;
19102 			else
19103 				tx_lpf_bw = 4;
19104 		}
19105 
19106 		write_phy_reg(pi, 0xe8,
19107 			      (tx_lpf_bw << 0) |
19108 			      (tx_lpf_bw << 3) |
19109 			      (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
19110 
19111 		if (PHY_IPA(pi)) {
19112 
19113 			if (CHSPEC_IS40(pi->radio_chanspec))
19114 				tx_lpf_bw = 4;
19115 			else
19116 				tx_lpf_bw = 1;
19117 
19118 			write_phy_reg(pi, 0xe9,
19119 				      (tx_lpf_bw << 0) |
19120 				      (tx_lpf_bw << 3) |
19121 				      (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
19122 		}
19123 	}
19124 }
19125 
19126 static void
wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy * pi,u16 reduction_factr)19127 wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy *pi, u16 reduction_factr)
19128 {
19129 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
19130 		if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19131 		    CHSPEC_IS40(pi->radio_chanspec)) {
19132 			if (!pi->nphy_anarxlpf_adjusted) {
19133 				write_radio_reg(pi,
19134 						(RADIO_2056_RX_RXLPF_RCCAL_LPC |
19135 						 RADIO_2056_RX0),
19136 						((pi->nphy_rccal_value +
19137 						  reduction_factr) | 0x80));
19138 
19139 				pi->nphy_anarxlpf_adjusted = true;
19140 			}
19141 		} else {
19142 			if (pi->nphy_anarxlpf_adjusted) {
19143 				write_radio_reg(pi,
19144 						(RADIO_2056_RX_RXLPF_RCCAL_LPC |
19145 						 RADIO_2056_RX0),
19146 						(pi->nphy_rccal_value | 0x80));
19147 
19148 				pi->nphy_anarxlpf_adjusted = false;
19149 			}
19150 		}
19151 	}
19152 }
19153 
19154 static void
wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy * pi,int ntones,int * tone_id_buf,u32 * noise_var_buf)19155 wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy *pi, int ntones,
19156 				 int *tone_id_buf, u32 *noise_var_buf)
19157 {
19158 	int i;
19159 	u32 offset;
19160 	int tone_id;
19161 	int tbllen =
19162 		CHSPEC_IS40(pi->radio_chanspec) ?
19163 		NPHY_NOISEVAR_TBLLEN40 : NPHY_NOISEVAR_TBLLEN20;
19164 
19165 	if (pi->nphy_noisevars_adjusted) {
19166 		for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
19167 			tone_id = pi->nphy_saved_noisevars.tone_id[i];
19168 			offset = (tone_id >= 0) ?
19169 				 ((tone_id *
19170 				   2) + 1) : (tbllen + (tone_id * 2) + 1);
19171 			wlc_phy_table_write_nphy(
19172 				pi, NPHY_TBL_ID_NOISEVAR, 1,
19173 				offset, 32,
19174 				&pi->nphy_saved_noisevars.min_noise_vars[i]);
19175 		}
19176 
19177 		pi->nphy_saved_noisevars.bufcount = 0;
19178 		pi->nphy_noisevars_adjusted = false;
19179 	}
19180 
19181 	if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
19182 		pi->nphy_saved_noisevars.bufcount = 0;
19183 
19184 		for (i = 0; i < ntones; i++) {
19185 			tone_id = tone_id_buf[i];
19186 			offset = (tone_id >= 0) ?
19187 				 ((tone_id * 2) + 1) :
19188 				 (tbllen + (tone_id * 2) + 1);
19189 			pi->nphy_saved_noisevars.tone_id[i] = tone_id;
19190 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19191 						offset, 32,
19192 						&pi->nphy_saved_noisevars.
19193 						min_noise_vars[i]);
19194 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19195 						 offset, 32, &noise_var_buf[i]);
19196 			pi->nphy_saved_noisevars.bufcount++;
19197 		}
19198 
19199 		pi->nphy_noisevars_adjusted = true;
19200 	}
19201 }
19202 
wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy * pi,u8 minpwr)19203 static void wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy *pi, u8 minpwr)
19204 {
19205 	u16 regval;
19206 
19207 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19208 		if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19209 		    CHSPEC_IS40(pi->radio_chanspec)) {
19210 			if (!pi->nphy_crsminpwr_adjusted) {
19211 				regval = read_phy_reg(pi, 0x27d);
19212 				pi->nphy_crsminpwr[0] = regval & 0xff;
19213 				regval &= 0xff00;
19214 				regval |= (u16) minpwr;
19215 				write_phy_reg(pi, 0x27d, regval);
19216 
19217 				regval = read_phy_reg(pi, 0x280);
19218 				pi->nphy_crsminpwr[1] = regval & 0xff;
19219 				regval &= 0xff00;
19220 				regval |= (u16) minpwr;
19221 				write_phy_reg(pi, 0x280, regval);
19222 
19223 				regval = read_phy_reg(pi, 0x283);
19224 				pi->nphy_crsminpwr[2] = regval & 0xff;
19225 				regval &= 0xff00;
19226 				regval |= (u16) minpwr;
19227 				write_phy_reg(pi, 0x283, regval);
19228 
19229 				pi->nphy_crsminpwr_adjusted = true;
19230 			}
19231 		} else {
19232 			if (pi->nphy_crsminpwr_adjusted) {
19233 				regval = read_phy_reg(pi, 0x27d);
19234 				regval &= 0xff00;
19235 				regval |= pi->nphy_crsminpwr[0];
19236 				write_phy_reg(pi, 0x27d, regval);
19237 
19238 				regval = read_phy_reg(pi, 0x280);
19239 				regval &= 0xff00;
19240 				regval |= pi->nphy_crsminpwr[1];
19241 				write_phy_reg(pi, 0x280, regval);
19242 
19243 				regval = read_phy_reg(pi, 0x283);
19244 				regval &= 0xff00;
19245 				regval |= pi->nphy_crsminpwr[2];
19246 				write_phy_reg(pi, 0x283, regval);
19247 
19248 				pi->nphy_crsminpwr_adjusted = false;
19249 			}
19250 		}
19251 	}
19252 }
19253 
wlc_phy_spurwar_nphy(struct brcms_phy * pi)19254 static void wlc_phy_spurwar_nphy(struct brcms_phy *pi)
19255 {
19256 	u16 cur_channel = 0;
19257 	int nphy_adj_tone_id_buf[] = { 57, 58 };
19258 	u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
19259 	bool isAdjustNoiseVar = false;
19260 	uint numTonesAdjust = 0;
19261 	u32 tempval = 0;
19262 
19263 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19264 		if (pi->phyhang_avoid)
19265 			wlc_phy_stay_in_carriersearch_nphy(pi, true);
19266 
19267 		cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19268 
19269 		if (pi->nphy_gband_spurwar_en) {
19270 
19271 			wlc_phy_adjust_rx_analpfbw_nphy(
19272 				pi,
19273 				NPHY_ANARXLPFBW_REDUCTIONFACT);
19274 
19275 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
19276 				if ((cur_channel == 11)
19277 				    && CHSPEC_IS40(pi->radio_chanspec))
19278 					wlc_phy_adjust_min_noisevar_nphy(
19279 						pi, 2,
19280 						nphy_adj_tone_id_buf,
19281 						nphy_adj_noise_var_buf);
19282 				else
19283 					wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19284 									 NULL,
19285 									 NULL);
19286 			}
19287 
19288 			wlc_phy_adjust_crsminpwr_nphy(pi,
19289 						     NPHY_ADJUSTED_MINCRSPOWER);
19290 		}
19291 
19292 		if ((pi->nphy_gband_spurwar2_en)
19293 		    && CHSPEC_IS2G(pi->radio_chanspec)) {
19294 
19295 			if (CHSPEC_IS40(pi->radio_chanspec)) {
19296 				switch (cur_channel) {
19297 				case 3:
19298 					nphy_adj_tone_id_buf[0] = 57;
19299 					nphy_adj_tone_id_buf[1] = 58;
19300 					nphy_adj_noise_var_buf[0] = 0x22f;
19301 					nphy_adj_noise_var_buf[1] = 0x25f;
19302 					isAdjustNoiseVar = true;
19303 					break;
19304 				case 4:
19305 					nphy_adj_tone_id_buf[0] = 41;
19306 					nphy_adj_tone_id_buf[1] = 42;
19307 					nphy_adj_noise_var_buf[0] = 0x22f;
19308 					nphy_adj_noise_var_buf[1] = 0x25f;
19309 					isAdjustNoiseVar = true;
19310 					break;
19311 				case 5:
19312 					nphy_adj_tone_id_buf[0] = 25;
19313 					nphy_adj_tone_id_buf[1] = 26;
19314 					nphy_adj_noise_var_buf[0] = 0x24f;
19315 					nphy_adj_noise_var_buf[1] = 0x25f;
19316 					isAdjustNoiseVar = true;
19317 					break;
19318 				case 6:
19319 					nphy_adj_tone_id_buf[0] = 9;
19320 					nphy_adj_tone_id_buf[1] = 10;
19321 					nphy_adj_noise_var_buf[0] = 0x22f;
19322 					nphy_adj_noise_var_buf[1] = 0x24f;
19323 					isAdjustNoiseVar = true;
19324 					break;
19325 				case 7:
19326 					nphy_adj_tone_id_buf[0] = 121;
19327 					nphy_adj_tone_id_buf[1] = 122;
19328 					nphy_adj_noise_var_buf[0] = 0x18f;
19329 					nphy_adj_noise_var_buf[1] = 0x24f;
19330 					isAdjustNoiseVar = true;
19331 					break;
19332 				case 8:
19333 					nphy_adj_tone_id_buf[0] = 105;
19334 					nphy_adj_tone_id_buf[1] = 106;
19335 					nphy_adj_noise_var_buf[0] = 0x22f;
19336 					nphy_adj_noise_var_buf[1] = 0x25f;
19337 					isAdjustNoiseVar = true;
19338 					break;
19339 				case 9:
19340 					nphy_adj_tone_id_buf[0] = 89;
19341 					nphy_adj_tone_id_buf[1] = 90;
19342 					nphy_adj_noise_var_buf[0] = 0x22f;
19343 					nphy_adj_noise_var_buf[1] = 0x24f;
19344 					isAdjustNoiseVar = true;
19345 					break;
19346 				case 10:
19347 					nphy_adj_tone_id_buf[0] = 73;
19348 					nphy_adj_tone_id_buf[1] = 74;
19349 					nphy_adj_noise_var_buf[0] = 0x22f;
19350 					nphy_adj_noise_var_buf[1] = 0x24f;
19351 					isAdjustNoiseVar = true;
19352 					break;
19353 				default:
19354 					isAdjustNoiseVar = false;
19355 					break;
19356 				}
19357 			}
19358 
19359 			if (isAdjustNoiseVar) {
19360 				numTonesAdjust = sizeof(nphy_adj_tone_id_buf) /
19361 						sizeof(nphy_adj_tone_id_buf[0]);
19362 
19363 				wlc_phy_adjust_min_noisevar_nphy(
19364 					pi,
19365 					numTonesAdjust,
19366 					nphy_adj_tone_id_buf,
19367 					nphy_adj_noise_var_buf);
19368 
19369 				tempval = 0;
19370 
19371 			} else {
19372 				wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19373 								 NULL);
19374 			}
19375 		}
19376 
19377 		if ((pi->nphy_aband_spurwar_en) &&
19378 		    (CHSPEC_IS5G(pi->radio_chanspec))) {
19379 			switch (cur_channel) {
19380 			case 54:
19381 				nphy_adj_tone_id_buf[0] = 32;
19382 				nphy_adj_noise_var_buf[0] = 0x25f;
19383 				break;
19384 			case 38:
19385 			case 102:
19386 			case 118:
19387 				nphy_adj_tone_id_buf[0] = 0;
19388 				nphy_adj_noise_var_buf[0] = 0x0;
19389 				break;
19390 			case 134:
19391 				nphy_adj_tone_id_buf[0] = 32;
19392 				nphy_adj_noise_var_buf[0] = 0x21f;
19393 				break;
19394 			case 151:
19395 				nphy_adj_tone_id_buf[0] = 16;
19396 				nphy_adj_noise_var_buf[0] = 0x23f;
19397 				break;
19398 			case 153:
19399 			case 161:
19400 				nphy_adj_tone_id_buf[0] = 48;
19401 				nphy_adj_noise_var_buf[0] = 0x23f;
19402 				break;
19403 			default:
19404 				nphy_adj_tone_id_buf[0] = 0;
19405 				nphy_adj_noise_var_buf[0] = 0x0;
19406 				break;
19407 			}
19408 
19409 			if (nphy_adj_tone_id_buf[0]
19410 			    && nphy_adj_noise_var_buf[0])
19411 				wlc_phy_adjust_min_noisevar_nphy(
19412 					pi, 1,
19413 					nphy_adj_tone_id_buf,
19414 					nphy_adj_noise_var_buf);
19415 			else
19416 				wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19417 								 NULL);
19418 		}
19419 
19420 		if (pi->phyhang_avoid)
19421 			wlc_phy_stay_in_carriersearch_nphy(pi, false);
19422 	}
19423 }
19424 
wlc_phy_init_nphy(struct brcms_phy * pi)19425 void wlc_phy_init_nphy(struct brcms_phy *pi)
19426 {
19427 	u16 val;
19428 	u16 clip1_ths[2];
19429 	struct nphy_txgains target_gain;
19430 	u8 tx_pwr_ctrl_state;
19431 	bool do_nphy_cal = false;
19432 	uint core;
19433 	u32 d11_clk_ctl_st;
19434 	bool do_rssi_cal = false;
19435 
19436 	core = 0;
19437 
19438 	if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19439 		pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19440 
19441 	if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
19442 	    ((pi->sh->chippkg == BCM4717_PKG_ID) ||
19443 	     (pi->sh->chippkg == BCM4718_PKG_ID))) {
19444 		if ((pi->sh->boardflags & BFL_EXTLNA) &&
19445 		    (CHSPEC_IS2G(pi->radio_chanspec)))
19446 			ai_cc_reg(pi->sh->sih,
19447 				  offsetof(struct chipcregs, chipcontrol),
19448 				  0x40, 0x40);
19449 	}
19450 
19451 	if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19452 	    CHSPEC_IS40(pi->radio_chanspec)) {
19453 
19454 		d11_clk_ctl_st = bcma_read32(pi->d11core,
19455 					     D11REGOFFS(clk_ctl_st));
19456 		bcma_mask32(pi->d11core, D11REGOFFS(clk_ctl_st),
19457 			    ~(CCS_FORCEHT | CCS_HTAREQ));
19458 
19459 		bcma_write32(pi->d11core, D11REGOFFS(clk_ctl_st),
19460 			     d11_clk_ctl_st);
19461 	}
19462 
19463 	pi->use_int_tx_iqlo_cal_nphy =
19464 		(PHY_IPA(pi) ||
19465 		 (NREV_GE(pi->pubpi.phy_rev, 7) ||
19466 		  (NREV_GE(pi->pubpi.phy_rev, 5)
19467 		   && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19468 
19469 	pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19470 
19471 	pi->nphy_deaf_count = 0;
19472 
19473 	wlc_phy_tbl_init_nphy(pi);
19474 
19475 	pi->nphy_crsminpwr_adjusted = false;
19476 	pi->nphy_noisevars_adjusted = false;
19477 
19478 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19479 		write_phy_reg(pi, 0xe7, 0);
19480 		write_phy_reg(pi, 0xec, 0);
19481 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19482 			write_phy_reg(pi, 0x342, 0);
19483 			write_phy_reg(pi, 0x343, 0);
19484 			write_phy_reg(pi, 0x346, 0);
19485 			write_phy_reg(pi, 0x347, 0);
19486 		}
19487 		write_phy_reg(pi, 0xe5, 0);
19488 		write_phy_reg(pi, 0xe6, 0);
19489 	} else {
19490 		write_phy_reg(pi, 0xec, 0);
19491 	}
19492 
19493 	write_phy_reg(pi, 0x91, 0);
19494 	write_phy_reg(pi, 0x92, 0);
19495 	if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19496 		write_phy_reg(pi, 0x93, 0);
19497 		write_phy_reg(pi, 0x94, 0);
19498 	}
19499 
19500 	and_phy_reg(pi, 0xa1, ~3);
19501 
19502 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19503 		write_phy_reg(pi, 0x8f, 0);
19504 		write_phy_reg(pi, 0xa5, 0);
19505 	} else {
19506 		write_phy_reg(pi, 0xa5, 0);
19507 	}
19508 
19509 	if (NREV_IS(pi->pubpi.phy_rev, 2))
19510 		mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19511 	else if (NREV_LT(pi->pubpi.phy_rev, 2))
19512 		mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19513 
19514 	write_phy_reg(pi, 0x203, 32);
19515 	write_phy_reg(pi, 0x201, 32);
19516 
19517 	if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19518 		write_phy_reg(pi, 0x20d, 160);
19519 	else
19520 		write_phy_reg(pi, 0x20d, 184);
19521 
19522 	write_phy_reg(pi, 0x13a, 200);
19523 
19524 	write_phy_reg(pi, 0x70, 80);
19525 
19526 	write_phy_reg(pi, 0x1ff, 48);
19527 
19528 	if (NREV_LT(pi->pubpi.phy_rev, 8))
19529 		wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19530 
19531 	wlc_phy_stf_chain_upd_nphy(pi);
19532 
19533 	if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19534 		write_phy_reg(pi, 0x180, 0xaa8);
19535 		write_phy_reg(pi, 0x181, 0x9a4);
19536 	}
19537 
19538 	if (PHY_IPA(pi)) {
19539 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19540 
19541 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19542 				    0x29b, (0x1 << 0), (1) << 0);
19543 
19544 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19545 				    0x29c, (0x1ff << 7),
19546 				    (pi->nphy_papd_epsilon_offset[core]) << 7);
19547 
19548 		}
19549 
19550 		wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19551 	} else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19552 		wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19553 	}
19554 
19555 	wlc_phy_workarounds_nphy(pi);
19556 
19557 	wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19558 
19559 	val = read_phy_reg(pi, 0x01);
19560 	write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19561 	write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19562 	wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19563 
19564 	wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19565 
19566 	wlc_phy_pa_override_nphy(pi, OFF);
19567 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19568 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19569 	wlc_phy_pa_override_nphy(pi, ON);
19570 
19571 	wlc_phy_classifier_nphy(pi, 0, 0);
19572 	wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19573 
19574 	if (CHSPEC_IS2G(pi->radio_chanspec))
19575 		wlc_phy_bphy_init_nphy(pi);
19576 
19577 	tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19578 	wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19579 
19580 	wlc_phy_txpwr_fixpower_nphy(pi);
19581 
19582 	wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19583 
19584 	wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19585 
19586 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19587 		u32 *tx_pwrctrl_tbl = NULL;
19588 		u16 idx;
19589 		s16 pga_gn = 0;
19590 		s16 pad_gn = 0;
19591 		s32 rfpwr_offset;
19592 
19593 		if (PHY_IPA(pi)) {
19594 			tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19595 		} else {
19596 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
19597 				if (NREV_IS(pi->pubpi.phy_rev, 3))
19598 					tx_pwrctrl_tbl =
19599 						nphy_tpc_5GHz_txgain_rev3;
19600 				else if (NREV_IS(pi->pubpi.phy_rev, 4))
19601 					tx_pwrctrl_tbl =
19602 						(pi->srom_fem5g.extpagain ==
19603 						 3) ?
19604 						nphy_tpc_5GHz_txgain_HiPwrEPA :
19605 						nphy_tpc_5GHz_txgain_rev4;
19606 				else
19607 					tx_pwrctrl_tbl =
19608 						nphy_tpc_5GHz_txgain_rev5;
19609 			} else {
19610 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19611 					if (pi->pubpi.radiorev == 5)
19612 						tx_pwrctrl_tbl =
19613 						   nphy_tpc_txgain_epa_2057rev5;
19614 					else if (pi->pubpi.radiorev == 3)
19615 						tx_pwrctrl_tbl =
19616 						   nphy_tpc_txgain_epa_2057rev3;
19617 				} else {
19618 					if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19619 					    (pi->srom_fem2g.extpagain == 3))
19620 						tx_pwrctrl_tbl =
19621 						       nphy_tpc_txgain_HiPwrEPA;
19622 					else
19623 						tx_pwrctrl_tbl =
19624 							nphy_tpc_txgain_rev3;
19625 				}
19626 			}
19627 		}
19628 
19629 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19630 					 192, 32, tx_pwrctrl_tbl);
19631 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19632 					 192, 32, tx_pwrctrl_tbl);
19633 
19634 		pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19635 
19636 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19637 
19638 			for (idx = 0; idx < 128; idx++) {
19639 				pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19640 				pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19641 				rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19642 								 pad_gn);
19643 				wlc_phy_table_write_nphy(
19644 					pi,
19645 					NPHY_TBL_ID_CORE1TXPWRCTL,
19646 					1, 576 + idx, 32,
19647 					&rfpwr_offset);
19648 				wlc_phy_table_write_nphy(
19649 					pi,
19650 					NPHY_TBL_ID_CORE2TXPWRCTL,
19651 					1, 576 + idx, 32,
19652 					&rfpwr_offset);
19653 			}
19654 		} else {
19655 
19656 			for (idx = 0; idx < 128; idx++) {
19657 				pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19658 				if (CHSPEC_IS2G(pi->radio_chanspec))
19659 					rfpwr_offset = (s16)
19660 						 nphy_papd_pga_gain_delta_ipa_2g
19661 								       [pga_gn];
19662 				else
19663 					rfpwr_offset = (s16)
19664 						 nphy_papd_pga_gain_delta_ipa_5g
19665 								       [pga_gn];
19666 
19667 				wlc_phy_table_write_nphy(
19668 					pi,
19669 					NPHY_TBL_ID_CORE1TXPWRCTL,
19670 					1, 576 + idx, 32,
19671 					&rfpwr_offset);
19672 				wlc_phy_table_write_nphy(
19673 					pi,
19674 					NPHY_TBL_ID_CORE2TXPWRCTL,
19675 					1, 576 + idx, 32,
19676 					&rfpwr_offset);
19677 			}
19678 
19679 		}
19680 	} else {
19681 
19682 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19683 					 192, 32, nphy_tpc_txgain);
19684 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19685 					 192, 32, nphy_tpc_txgain);
19686 	}
19687 
19688 	if (pi->sh->phyrxchain != 0x3)
19689 		wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19690 					     pi->sh->phyrxchain);
19691 
19692 	if (PHY_PERICAL_MPHASE_PENDING(pi))
19693 		wlc_phy_cal_perical_mphase_restart(pi);
19694 
19695 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19696 		do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19697 			      (pi->nphy_rssical_chanspec_2G == 0) :
19698 			      (pi->nphy_rssical_chanspec_5G == 0);
19699 
19700 		if (do_rssi_cal)
19701 			wlc_phy_rssi_cal_nphy(pi);
19702 		else
19703 			wlc_phy_restore_rssical_nphy(pi);
19704 	} else {
19705 		wlc_phy_rssi_cal_nphy(pi);
19706 	}
19707 
19708 	if (!SCAN_RM_IN_PROGRESS(pi))
19709 		do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19710 			      (pi->nphy_iqcal_chanspec_2G == 0) :
19711 			      (pi->nphy_iqcal_chanspec_5G == 0);
19712 
19713 	if (!pi->do_initcal)
19714 		do_nphy_cal = false;
19715 
19716 	if (do_nphy_cal) {
19717 
19718 		target_gain = wlc_phy_get_tx_gain_nphy(pi);
19719 
19720 		if (pi->antsel_type == ANTSEL_2x3)
19721 			wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19722 					    true);
19723 
19724 		if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19725 			wlc_phy_rssi_cal_nphy(pi);
19726 
19727 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19728 				pi->nphy_cal_orig_pwr_idx[0] =
19729 					pi->nphy_txpwrindex[PHY_CORE_0]
19730 					.
19731 					index_internal;
19732 				pi->nphy_cal_orig_pwr_idx[1] =
19733 					pi->nphy_txpwrindex[PHY_CORE_1]
19734 					.
19735 					index_internal;
19736 
19737 				wlc_phy_precal_txgain_nphy(pi);
19738 				target_gain =
19739 					wlc_phy_get_tx_gain_nphy(pi);
19740 			}
19741 
19742 			if (wlc_phy_cal_txiqlo_nphy
19743 				    (pi, target_gain, true,
19744 				    false) == 0) {
19745 				if (wlc_phy_cal_rxiq_nphy
19746 					    (pi, target_gain, 2,
19747 					    false) == 0)
19748 					wlc_phy_savecal_nphy(pi);
19749 
19750 			}
19751 		} else if (pi->mphase_cal_phase_id ==
19752 			   MPHASE_CAL_STATE_IDLE) {
19753 			wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19754 					    PHY_PERICAL_PHYINIT);
19755 		}
19756 	} else {
19757 		wlc_phy_restorecal_nphy(pi);
19758 	}
19759 
19760 	wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19761 
19762 	wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19763 
19764 	wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19765 
19766 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19767 
19768 		write_phy_reg(pi, 0x70, 50);
19769 
19770 	wlc_phy_txlpfbw_nphy(pi);
19771 
19772 	wlc_phy_spurwar_nphy(pi);
19773 
19774 }
19775 
wlc_phy_resetcca_nphy(struct brcms_phy * pi)19776 static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19777 {
19778 	u16 val;
19779 
19780 	wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19781 
19782 	val = read_phy_reg(pi, 0x01);
19783 	write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19784 	udelay(1);
19785 	write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19786 
19787 	wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19788 
19789 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19790 }
19791 
wlc_phy_pa_override_nphy(struct brcms_phy * pi,bool en)19792 void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19793 {
19794 	u16 rfctrlintc_override_val;
19795 
19796 	if (!en) {
19797 
19798 		pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19799 		pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19800 
19801 		if (NREV_GE(pi->pubpi.phy_rev, 7))
19802 			rfctrlintc_override_val = 0x1480;
19803 		else if (NREV_GE(pi->pubpi.phy_rev, 3))
19804 			rfctrlintc_override_val =
19805 				CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19806 		else
19807 			rfctrlintc_override_val =
19808 				CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19809 
19810 		write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19811 		write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19812 	} else {
19813 		write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19814 		write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19815 	}
19816 
19817 }
19818 
wlc_phy_stf_chain_upd_nphy(struct brcms_phy * pi)19819 void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19820 {
19821 
19822 	u16 txrx_chain =
19823 		(NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19824 	bool CoreActv_override = false;
19825 
19826 	if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19827 		txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19828 		CoreActv_override = true;
19829 
19830 		if (NREV_LE(pi->pubpi.phy_rev, 2))
19831 			and_phy_reg(pi, 0xa0, ~0x20);
19832 	} else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19833 		txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19834 		CoreActv_override = true;
19835 
19836 		if (NREV_LE(pi->pubpi.phy_rev, 2))
19837 			or_phy_reg(pi, 0xa0, 0x20);
19838 	}
19839 
19840 	mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19841 
19842 	if (CoreActv_override) {
19843 		pi->nphy_perical = PHY_PERICAL_DISABLE;
19844 		or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19845 	} else {
19846 		pi->nphy_perical = PHY_PERICAL_MPHASE;
19847 		and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19848 	}
19849 }
19850 
wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub * pih,u8 rxcore_bitmask)19851 void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19852 {
19853 	u16 regval;
19854 	u16 tbl_buf[16];
19855 	uint i;
19856 	struct brcms_phy *pi = (struct brcms_phy *) pih;
19857 	u16 tbl_opcode;
19858 	bool suspend;
19859 
19860 	pi->sh->phyrxchain = rxcore_bitmask;
19861 
19862 	if (!pi->sh->clk)
19863 		return;
19864 
19865 	suspend = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
19866 			 MCTL_EN_MAC));
19867 	if (!suspend)
19868 		wlapi_suspend_mac_and_wait(pi->sh->physhim);
19869 
19870 	if (pi->phyhang_avoid)
19871 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
19872 
19873 	regval = read_phy_reg(pi, 0xa2);
19874 	regval &= ~(0xf << 4);
19875 	regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19876 	write_phy_reg(pi, 0xa2, regval);
19877 
19878 	if ((rxcore_bitmask & 0x3) != 0x3) {
19879 
19880 		write_phy_reg(pi, 0x20e, 1);
19881 
19882 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19883 			if (pi->rx2tx_biasentry == -1) {
19884 				wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19885 							ARRAY_SIZE(tbl_buf), 80,
19886 							16, tbl_buf);
19887 
19888 				for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19889 					if (tbl_buf[i] ==
19890 					    NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19891 						pi->rx2tx_biasentry = (u8) i;
19892 						tbl_opcode =
19893 							NPHY_REV3_RFSEQ_CMD_NOP;
19894 						wlc_phy_table_write_nphy(
19895 							pi,
19896 							NPHY_TBL_ID_RFSEQ,
19897 							1, i,
19898 							16,
19899 							&tbl_opcode);
19900 						break;
19901 					} else if (tbl_buf[i] ==
19902 						   NPHY_REV3_RFSEQ_CMD_END)
19903 						break;
19904 				}
19905 			}
19906 		}
19907 	} else {
19908 
19909 		write_phy_reg(pi, 0x20e, 30);
19910 
19911 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19912 			if (pi->rx2tx_biasentry != -1) {
19913 				tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19914 				wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19915 							 1, pi->rx2tx_biasentry,
19916 							 16, &tbl_opcode);
19917 				pi->rx2tx_biasentry = -1;
19918 			}
19919 		}
19920 	}
19921 
19922 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19923 
19924 	if (pi->phyhang_avoid)
19925 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
19926 
19927 	if (!suspend)
19928 		wlapi_enable_mac(pi->sh->physhim);
19929 }
19930 
wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub * pih)19931 u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19932 {
19933 	u16 regval, rxen_bits;
19934 	struct brcms_phy *pi = (struct brcms_phy *) pih;
19935 
19936 	regval = read_phy_reg(pi, 0xa2);
19937 	rxen_bits = (regval >> 4) & 0xf;
19938 
19939 	return (u8) rxen_bits;
19940 }
19941 
wlc_phy_n_txpower_ipa_ison(struct brcms_phy * pi)19942 bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19943 {
19944 	return PHY_IPA(pi);
19945 }
19946 
wlc_phy_cal_init_nphy(struct brcms_phy * pi)19947 void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19948 {
19949 }
19950 
wlc_phy_radio_preinit_205x(struct brcms_phy * pi)19951 static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19952 {
19953 
19954 	and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
19955 	and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
19956 
19957 	or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
19958 	or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
19959 
19960 }
19961 
wlc_phy_radio_init_2057(struct brcms_phy * pi)19962 static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
19963 {
19964 	struct radio_20xx_regs *regs_2057_ptr = NULL;
19965 
19966 	if (NREV_IS(pi->pubpi.phy_rev, 7)) {
19967 		regs_2057_ptr = regs_2057_rev4;
19968 	} else if (NREV_IS(pi->pubpi.phy_rev, 8)
19969 		   || NREV_IS(pi->pubpi.phy_rev, 9)) {
19970 		switch (pi->pubpi.radiorev) {
19971 		case 5:
19972 
19973 			if (NREV_IS(pi->pubpi.phy_rev, 8))
19974 				regs_2057_ptr = regs_2057_rev5;
19975 			else if (NREV_IS(pi->pubpi.phy_rev, 9))
19976 				regs_2057_ptr = regs_2057_rev5v1;
19977 			break;
19978 
19979 		case 7:
19980 
19981 			regs_2057_ptr = regs_2057_rev7;
19982 			break;
19983 
19984 		case 8:
19985 
19986 			regs_2057_ptr = regs_2057_rev8;
19987 			break;
19988 
19989 		default:
19990 			break;
19991 		}
19992 	}
19993 
19994 	wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
19995 }
19996 
wlc_phy_radio205x_rcal(struct brcms_phy * pi)19997 static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
19998 {
19999 	u16 rcal_reg = 0;
20000 	int i;
20001 
20002 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20003 
20004 		if (pi->pubpi.radiorev == 5) {
20005 
20006 			and_phy_reg(pi, 0x342, ~(0x1 << 1));
20007 
20008 			udelay(10);
20009 
20010 			mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
20011 			mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
20012 				      0x1);
20013 		}
20014 		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
20015 
20016 		udelay(10);
20017 
20018 		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
20019 
20020 		for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20021 			rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
20022 			if (rcal_reg & 0x1)
20023 				break;
20024 
20025 			udelay(100);
20026 		}
20027 
20028 		if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
20029 			 "HW error: radio calib2"))
20030 			return 0;
20031 
20032 		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
20033 
20034 		rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
20035 
20036 		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
20037 		if (pi->pubpi.radiorev == 5) {
20038 
20039 			mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
20040 			mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
20041 				      0x0);
20042 		}
20043 
20044 		if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
20045 
20046 			mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
20047 				      rcal_reg);
20048 			mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
20049 				      rcal_reg << 2);
20050 		}
20051 
20052 	} else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20053 		u16 savereg;
20054 
20055 		savereg =
20056 			read_radio_reg(
20057 				pi,
20058 				RADIO_2056_SYN_PLL_MAST2 |
20059 				RADIO_2056_SYN);
20060 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
20061 				savereg | 0x7);
20062 		udelay(10);
20063 
20064 		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20065 				0x1);
20066 		udelay(10);
20067 
20068 		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20069 				0x9);
20070 
20071 		for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20072 			rcal_reg = read_radio_reg(
20073 				pi,
20074 				RADIO_2056_SYN_RCAL_CODE_OUT |
20075 				RADIO_2056_SYN);
20076 			if (rcal_reg & 0x80)
20077 				break;
20078 
20079 			udelay(100);
20080 		}
20081 
20082 		if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
20083 			 "HW error: radio calib3"))
20084 			return 0;
20085 
20086 		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20087 				0x1);
20088 
20089 		rcal_reg =
20090 			read_radio_reg(pi,
20091 				       RADIO_2056_SYN_RCAL_CODE_OUT |
20092 				       RADIO_2056_SYN);
20093 
20094 		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20095 				0x0);
20096 
20097 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
20098 				savereg);
20099 
20100 		return rcal_reg & 0x1f;
20101 	}
20102 	return rcal_reg & 0x3e;
20103 }
20104 
wlc_phy_radio2057_rccal(struct brcms_phy * pi)20105 static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
20106 {
20107 	u16 rccal_valid;
20108 	int i;
20109 	bool chip43226_6362A0;
20110 
20111 	chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
20112 			    || (pi->pubpi.radiorev == 4)
20113 			    || (pi->pubpi.radiorev == 6));
20114 
20115 	rccal_valid = 0;
20116 	if (chip43226_6362A0) {
20117 		write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
20118 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
20119 	} else {
20120 		write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
20121 
20122 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
20123 	}
20124 	write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20125 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20126 
20127 	for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20128 		rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20129 		if (rccal_valid & 0x2)
20130 			break;
20131 
20132 		udelay(500);
20133 	}
20134 
20135 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20136 
20137 	rccal_valid = 0;
20138 	if (chip43226_6362A0) {
20139 		write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
20140 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20141 	} else {
20142 		write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
20143 
20144 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
20145 	}
20146 	write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20147 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20148 
20149 	for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20150 		rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20151 		if (rccal_valid & 0x2)
20152 			break;
20153 
20154 		udelay(500);
20155 	}
20156 
20157 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20158 
20159 	rccal_valid = 0;
20160 	if (chip43226_6362A0) {
20161 		write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
20162 
20163 		write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
20164 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20165 	} else {
20166 		write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
20167 		write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20168 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
20169 	}
20170 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20171 
20172 	for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20173 		rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20174 		if (rccal_valid & 0x2)
20175 			break;
20176 
20177 		udelay(500);
20178 	}
20179 
20180 	if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
20181 		return 0;
20182 
20183 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20184 
20185 	return rccal_valid;
20186 }
20187 
wlc_phy_radio_postinit_2057(struct brcms_phy * pi)20188 static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
20189 {
20190 
20191 	mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
20192 
20193 	mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
20194 	mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
20195 	mdelay(2);
20196 	mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
20197 	mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
20198 
20199 	if (pi->phy_init_por) {
20200 		wlc_phy_radio205x_rcal(pi);
20201 		wlc_phy_radio2057_rccal(pi);
20202 	}
20203 
20204 	mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
20205 }
20206 
wlc_phy_radio_init_2056(struct brcms_phy * pi)20207 static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
20208 {
20209 	const struct radio_regs *regs_SYN_2056_ptr = NULL;
20210 	const struct radio_regs *regs_TX_2056_ptr = NULL;
20211 	const struct radio_regs *regs_RX_2056_ptr = NULL;
20212 
20213 	if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20214 		regs_SYN_2056_ptr = regs_SYN_2056;
20215 		regs_TX_2056_ptr = regs_TX_2056;
20216 		regs_RX_2056_ptr = regs_RX_2056;
20217 	} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20218 		regs_SYN_2056_ptr = regs_SYN_2056_A1;
20219 		regs_TX_2056_ptr = regs_TX_2056_A1;
20220 		regs_RX_2056_ptr = regs_RX_2056_A1;
20221 	} else {
20222 		switch (pi->pubpi.radiorev) {
20223 		case 5:
20224 			regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20225 			regs_TX_2056_ptr = regs_TX_2056_rev5;
20226 			regs_RX_2056_ptr = regs_RX_2056_rev5;
20227 			break;
20228 
20229 		case 6:
20230 			regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20231 			regs_TX_2056_ptr = regs_TX_2056_rev6;
20232 			regs_RX_2056_ptr = regs_RX_2056_rev6;
20233 			break;
20234 
20235 		case 7:
20236 		case 9:
20237 			regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20238 			regs_TX_2056_ptr = regs_TX_2056_rev7;
20239 			regs_RX_2056_ptr = regs_RX_2056_rev7;
20240 			break;
20241 
20242 		case 8:
20243 			regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20244 			regs_TX_2056_ptr = regs_TX_2056_rev8;
20245 			regs_RX_2056_ptr = regs_RX_2056_rev8;
20246 			break;
20247 
20248 		case 11:
20249 			regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20250 			regs_TX_2056_ptr = regs_TX_2056_rev11;
20251 			regs_RX_2056_ptr = regs_RX_2056_rev11;
20252 			break;
20253 
20254 		default:
20255 			break;
20256 		}
20257 	}
20258 
20259 	wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20260 
20261 	wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20262 
20263 	wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20264 
20265 	wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20266 
20267 	wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20268 }
20269 
wlc_phy_radio_postinit_2056(struct brcms_phy * pi)20270 static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20271 {
20272 	mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20273 
20274 	mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20275 	mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20276 	udelay(1000);
20277 	mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20278 
20279 	if ((pi->sh->boardflags2 & BFL2_LEGACY)
20280 	    || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20281 		mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20282 	else
20283 		mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20284 
20285 	mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20286 
20287 	if (pi->phy_init_por)
20288 		wlc_phy_radio205x_rcal(pi);
20289 }
20290 
wlc_phy_radio_preinit_2055(struct brcms_phy * pi)20291 static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20292 {
20293 
20294 	and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20295 	or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20296 
20297 	or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20298 }
20299 
wlc_phy_radio_init_2055(struct brcms_phy * pi)20300 static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20301 {
20302 	wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20303 }
20304 
wlc_phy_radio_postinit_2055(struct brcms_phy * pi)20305 static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20306 {
20307 
20308 	and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20309 		      ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20310 
20311 	if (((pi->sh->sromrev >= 4)
20312 	     && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20313 	    || ((pi->sh->sromrev < 4))) {
20314 		and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20315 		and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20316 	}
20317 
20318 	mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20319 	write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20320 
20321 	and_radio_reg(pi, RADIO_2055_CAL_MISC,
20322 		      ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20323 
20324 	or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20325 
20326 	or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20327 
20328 	udelay(1000);
20329 
20330 	or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20331 
20332 	SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20333 		   RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20334 
20335 	if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20336 		  RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20337 		 "HW error: radio calibration1\n"))
20338 		return;
20339 
20340 	and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20341 		      ~(RADIO_2055_CAL_LPO_ENABLE));
20342 
20343 	wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20344 
20345 	write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20346 	write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20347 
20348 	write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20349 	write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20350 
20351 	mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20352 		      RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20353 	mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20354 		      RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20355 	if (pi->nphy_gain_boost) {
20356 		and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20357 			      ~(RADIO_2055_GAINBST_DISABLE));
20358 		and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20359 			      ~(RADIO_2055_GAINBST_DISABLE));
20360 	} else {
20361 		or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20362 			     RADIO_2055_GAINBST_DISABLE);
20363 		or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20364 			     RADIO_2055_GAINBST_DISABLE);
20365 	}
20366 
20367 	udelay(2);
20368 }
20369 
wlc_phy_switch_radio_nphy(struct brcms_phy * pi,bool on)20370 void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20371 {
20372 	if (on) {
20373 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20374 			if (!pi->radio_is_on) {
20375 				wlc_phy_radio_preinit_205x(pi);
20376 				wlc_phy_radio_init_2057(pi);
20377 				wlc_phy_radio_postinit_2057(pi);
20378 			}
20379 
20380 			wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20381 					     pi->radio_chanspec);
20382 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20383 			wlc_phy_radio_preinit_205x(pi);
20384 			wlc_phy_radio_init_2056(pi);
20385 			wlc_phy_radio_postinit_2056(pi);
20386 
20387 			wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20388 					     pi->radio_chanspec);
20389 		} else {
20390 			wlc_phy_radio_preinit_2055(pi);
20391 			wlc_phy_radio_init_2055(pi);
20392 			wlc_phy_radio_postinit_2055(pi);
20393 		}
20394 
20395 		pi->radio_is_on = true;
20396 
20397 	} else {
20398 
20399 		if (NREV_GE(pi->pubpi.phy_rev, 3)
20400 		    && NREV_LT(pi->pubpi.phy_rev, 7)) {
20401 			and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20402 			mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20403 
20404 			write_radio_reg(pi,
20405 					RADIO_2056_TX_PADA_BOOST_TUNE |
20406 					RADIO_2056_TX0, 0);
20407 			write_radio_reg(pi,
20408 					RADIO_2056_TX_PADG_BOOST_TUNE |
20409 					RADIO_2056_TX0, 0);
20410 			write_radio_reg(pi,
20411 					RADIO_2056_TX_PGAA_BOOST_TUNE |
20412 					RADIO_2056_TX0, 0);
20413 			write_radio_reg(pi,
20414 					RADIO_2056_TX_PGAG_BOOST_TUNE |
20415 					RADIO_2056_TX0, 0);
20416 			mod_radio_reg(pi,
20417 				      RADIO_2056_TX_MIXA_BOOST_TUNE |
20418 				      RADIO_2056_TX0, 0xf0, 0);
20419 			write_radio_reg(pi,
20420 					RADIO_2056_TX_MIXG_BOOST_TUNE |
20421 					RADIO_2056_TX0, 0);
20422 
20423 			write_radio_reg(pi,
20424 					RADIO_2056_TX_PADA_BOOST_TUNE |
20425 					RADIO_2056_TX1, 0);
20426 			write_radio_reg(pi,
20427 					RADIO_2056_TX_PADG_BOOST_TUNE |
20428 					RADIO_2056_TX1, 0);
20429 			write_radio_reg(pi,
20430 					RADIO_2056_TX_PGAA_BOOST_TUNE |
20431 					RADIO_2056_TX1, 0);
20432 			write_radio_reg(pi,
20433 					RADIO_2056_TX_PGAG_BOOST_TUNE |
20434 					RADIO_2056_TX1, 0);
20435 			mod_radio_reg(pi,
20436 				      RADIO_2056_TX_MIXA_BOOST_TUNE |
20437 				      RADIO_2056_TX1, 0xf0, 0);
20438 			write_radio_reg(pi,
20439 					RADIO_2056_TX_MIXG_BOOST_TUNE |
20440 					RADIO_2056_TX1, 0);
20441 
20442 			pi->radio_is_on = false;
20443 		}
20444 
20445 		if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20446 			and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20447 			pi->radio_is_on = false;
20448 		}
20449 
20450 	}
20451 }
20452 
20453 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)20454 wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20455 		       const struct chan_info_nphy_radio2057 **t0,
20456 		       const struct chan_info_nphy_radio205x **t1,
20457 		       const struct chan_info_nphy_radio2057_rev5 **t2,
20458 		       const struct chan_info_nphy_2055 **t3)
20459 {
20460 	uint i;
20461 	const struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20462 	const struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20463 	const struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20464 	u32 tbl_len = 0;
20465 
20466 	int freq = 0;
20467 
20468 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20469 
20470 		if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20471 
20472 			chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20473 			tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20474 
20475 		} else if (NREV_IS(pi->pubpi.phy_rev, 8)
20476 			   || NREV_IS(pi->pubpi.phy_rev, 9)) {
20477 			switch (pi->pubpi.radiorev) {
20478 
20479 			case 5:
20480 
20481 				if (pi->pubpi.radiover == 0x0) {
20482 
20483 					chan_info_tbl_p_2 =
20484 						chan_info_nphyrev8_2057_rev5;
20485 					tbl_len = ARRAY_SIZE(
20486 						  chan_info_nphyrev8_2057_rev5);
20487 
20488 				} else if (pi->pubpi.radiover == 0x1) {
20489 
20490 					chan_info_tbl_p_2 =
20491 						chan_info_nphyrev9_2057_rev5v1;
20492 					tbl_len = ARRAY_SIZE(
20493 						chan_info_nphyrev9_2057_rev5v1);
20494 
20495 				}
20496 				break;
20497 
20498 			case 7:
20499 				chan_info_tbl_p_0 =
20500 					chan_info_nphyrev8_2057_rev7;
20501 				tbl_len = ARRAY_SIZE(
20502 						  chan_info_nphyrev8_2057_rev7);
20503 				break;
20504 
20505 			case 8:
20506 				chan_info_tbl_p_0 =
20507 					chan_info_nphyrev8_2057_rev8;
20508 				tbl_len = ARRAY_SIZE(
20509 						  chan_info_nphyrev8_2057_rev8);
20510 				break;
20511 
20512 			default:
20513 				break;
20514 			}
20515 		} else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20516 
20517 			chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20518 			tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20519 		} else {
20520 			goto fail;
20521 		}
20522 
20523 		for (i = 0; i < tbl_len; i++) {
20524 			if (pi->pubpi.radiorev == 5) {
20525 
20526 				if (chan_info_tbl_p_2[i].chan == channel)
20527 					break;
20528 			} else {
20529 
20530 				if (chan_info_tbl_p_0[i].chan == channel)
20531 					break;
20532 			}
20533 		}
20534 
20535 		if (i >= tbl_len)
20536 			goto fail;
20537 
20538 		if (pi->pubpi.radiorev == 5) {
20539 			*t2 = &chan_info_tbl_p_2[i];
20540 			freq = chan_info_tbl_p_2[i].freq;
20541 		} else {
20542 			*t0 = &chan_info_tbl_p_0[i];
20543 			freq = chan_info_tbl_p_0[i].freq;
20544 		}
20545 
20546 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20547 		if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20548 			chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20549 			tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20550 		} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20551 			chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20552 			tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20553 		} else if (NREV_IS(pi->pubpi.phy_rev, 5)
20554 			   || NREV_IS(pi->pubpi.phy_rev, 6)) {
20555 			switch (pi->pubpi.radiorev) {
20556 			case 5:
20557 				chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20558 				tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20559 				break;
20560 			case 6:
20561 				chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20562 				tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20563 				break;
20564 			case 7:
20565 			case 9:
20566 				chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20567 				tbl_len =
20568 					ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20569 				break;
20570 			case 8:
20571 				chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20572 				tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20573 				break;
20574 			case 11:
20575 				chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20576 				tbl_len = ARRAY_SIZE(
20577 						    chan_info_nphyrev6_2056v11);
20578 				break;
20579 			default:
20580 				break;
20581 			}
20582 		}
20583 
20584 		for (i = 0; i < tbl_len; i++) {
20585 			if (chan_info_tbl_p_1[i].chan == channel)
20586 				break;
20587 		}
20588 
20589 		if (i >= tbl_len)
20590 			goto fail;
20591 
20592 		*t1 = &chan_info_tbl_p_1[i];
20593 		freq = chan_info_tbl_p_1[i].freq;
20594 
20595 	} else {
20596 		for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20597 			if (chan_info_nphy_2055[i].chan == channel)
20598 				break;
20599 
20600 		if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20601 			goto fail;
20602 
20603 		*t3 = &chan_info_nphy_2055[i];
20604 		freq = chan_info_nphy_2055[i].freq;
20605 	}
20606 
20607 	*f = freq;
20608 	return true;
20609 
20610 fail:
20611 	*f = WL_CHAN_FREQ_RANGE_2G;
20612 	return false;
20613 }
20614 
wlc_phy_get_chan_freq_range_nphy(struct brcms_phy * pi,uint channel)20615 u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20616 {
20617 	int freq;
20618 	const struct chan_info_nphy_radio2057 *t0 = NULL;
20619 	const struct chan_info_nphy_radio205x *t1 = NULL;
20620 	const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20621 	const struct chan_info_nphy_2055 *t3 = NULL;
20622 
20623 	if (channel == 0)
20624 		channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20625 
20626 	wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20627 
20628 	if (CHSPEC_IS2G(pi->radio_chanspec))
20629 		return WL_CHAN_FREQ_RANGE_2G;
20630 
20631 	if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20632 		return WL_CHAN_FREQ_RANGE_5GL;
20633 	else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20634 		return WL_CHAN_FREQ_RANGE_5GM;
20635 	else
20636 		return WL_CHAN_FREQ_RANGE_5GH;
20637 }
20638 
20639 static void
wlc_phy_chanspec_radio2055_setup(struct brcms_phy * pi,const struct chan_info_nphy_2055 * ci)20640 wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20641 				 const struct chan_info_nphy_2055 *ci)
20642 {
20643 
20644 	write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20645 	write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20646 	write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20647 	write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20648 
20649 	BRCMS_PHY_WAR_PR51571(pi);
20650 
20651 	write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20652 	write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20653 	write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20654 	write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20655 
20656 	BRCMS_PHY_WAR_PR51571(pi);
20657 
20658 	write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20659 	write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20660 	write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20661 	write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20662 
20663 	BRCMS_PHY_WAR_PR51571(pi);
20664 
20665 	write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20666 			ci->RF_core1_lgbuf_a_tune);
20667 	write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20668 			ci->RF_core1_lgbuf_g_tune);
20669 	write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20670 	write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20671 			ci->RF_core1_tx_pga_pad_tn);
20672 
20673 	BRCMS_PHY_WAR_PR51571(pi);
20674 
20675 	write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20676 			ci->RF_core1_tx_mx_bgtrim);
20677 	write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20678 			ci->RF_core2_lgbuf_a_tune);
20679 	write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20680 			ci->RF_core2_lgbuf_g_tune);
20681 	write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20682 
20683 	BRCMS_PHY_WAR_PR51571(pi);
20684 
20685 	write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20686 			ci->RF_core2_tx_pga_pad_tn);
20687 	write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20688 			ci->RF_core2_tx_mx_bgtrim);
20689 
20690 	udelay(50);
20691 
20692 	write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20693 	write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20694 
20695 	BRCMS_PHY_WAR_PR51571(pi);
20696 
20697 	write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20698 
20699 	udelay(300);
20700 }
20701 
20702 static void
wlc_phy_chanspec_radio2056_setup(struct brcms_phy * pi,const struct chan_info_nphy_radio205x * ci)20703 wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20704 				 const struct chan_info_nphy_radio205x *ci)
20705 {
20706 	const struct radio_regs *regs_SYN_2056_ptr = NULL;
20707 
20708 	write_radio_reg(pi,
20709 			RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20710 			ci->RF_SYN_pll_vcocal1);
20711 	write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20712 			ci->RF_SYN_pll_vcocal2);
20713 	write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20714 			ci->RF_SYN_pll_refdiv);
20715 	write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20716 			ci->RF_SYN_pll_mmd2);
20717 	write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20718 			ci->RF_SYN_pll_mmd1);
20719 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20720 			ci->RF_SYN_pll_loopfilter1);
20721 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20722 			ci->RF_SYN_pll_loopfilter2);
20723 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20724 			ci->RF_SYN_pll_loopfilter3);
20725 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20726 			ci->RF_SYN_pll_loopfilter4);
20727 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20728 			ci->RF_SYN_pll_loopfilter5);
20729 	write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20730 			ci->RF_SYN_reserved_addr27);
20731 	write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20732 			ci->RF_SYN_reserved_addr28);
20733 	write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20734 			ci->RF_SYN_reserved_addr29);
20735 	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20736 			ci->RF_SYN_logen_VCOBUF1);
20737 	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20738 			ci->RF_SYN_logen_MIXER2);
20739 	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20740 			ci->RF_SYN_logen_BUF3);
20741 	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20742 			ci->RF_SYN_logen_BUF4);
20743 
20744 	write_radio_reg(pi,
20745 			RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20746 			ci->RF_RX0_lnaa_tune);
20747 	write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20748 			ci->RF_RX0_lnag_tune);
20749 	write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20750 			ci->RF_TX0_intpaa_boost_tune);
20751 	write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20752 			ci->RF_TX0_intpag_boost_tune);
20753 	write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20754 			ci->RF_TX0_pada_boost_tune);
20755 	write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20756 			ci->RF_TX0_padg_boost_tune);
20757 	write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20758 			ci->RF_TX0_pgaa_boost_tune);
20759 	write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20760 			ci->RF_TX0_pgag_boost_tune);
20761 	write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20762 			ci->RF_TX0_mixa_boost_tune);
20763 	write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20764 			ci->RF_TX0_mixg_boost_tune);
20765 
20766 	write_radio_reg(pi,
20767 			RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20768 			ci->RF_RX1_lnaa_tune);
20769 	write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20770 			ci->RF_RX1_lnag_tune);
20771 	write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20772 			ci->RF_TX1_intpaa_boost_tune);
20773 	write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20774 			ci->RF_TX1_intpag_boost_tune);
20775 	write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20776 			ci->RF_TX1_pada_boost_tune);
20777 	write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20778 			ci->RF_TX1_padg_boost_tune);
20779 	write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20780 			ci->RF_TX1_pgaa_boost_tune);
20781 	write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20782 			ci->RF_TX1_pgag_boost_tune);
20783 	write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20784 			ci->RF_TX1_mixa_boost_tune);
20785 	write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20786 			ci->RF_TX1_mixg_boost_tune);
20787 
20788 	if (NREV_IS(pi->pubpi.phy_rev, 3))
20789 		regs_SYN_2056_ptr = regs_SYN_2056;
20790 	else if (NREV_IS(pi->pubpi.phy_rev, 4))
20791 		regs_SYN_2056_ptr = regs_SYN_2056_A1;
20792 	else {
20793 		switch (pi->pubpi.radiorev) {
20794 		case 5:
20795 			regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20796 			break;
20797 		case 6:
20798 			regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20799 			break;
20800 		case 7:
20801 		case 9:
20802 			regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20803 			break;
20804 		case 8:
20805 			regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20806 			break;
20807 		case 11:
20808 			regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20809 			break;
20810 		}
20811 	}
20812 	if (CHSPEC_IS2G(pi->radio_chanspec))
20813 		write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20814 				RADIO_2056_SYN,
20815 				(u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20816 	else
20817 		write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20818 				RADIO_2056_SYN,
20819 				(u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20820 
20821 	if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20822 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
20823 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20824 					RADIO_2056_SYN, 0x1f);
20825 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20826 					RADIO_2056_SYN, 0x1f);
20827 
20828 			write_radio_reg(pi,
20829 					RADIO_2056_SYN_PLL_LOOPFILTER4 |
20830 					RADIO_2056_SYN, 0xb);
20831 			write_radio_reg(pi,
20832 					RADIO_2056_SYN_PLL_CP2 |
20833 					RADIO_2056_SYN, 0x14);
20834 		}
20835 	}
20836 
20837 	if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20838 	    (CHSPEC_IS2G(pi->radio_chanspec))) {
20839 		write_radio_reg(pi,
20840 				RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20841 				0x1f);
20842 		write_radio_reg(pi,
20843 				RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20844 				0x1f);
20845 		write_radio_reg(pi,
20846 				RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20847 				0xb);
20848 		write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20849 				0x20);
20850 	}
20851 
20852 	if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20853 		if (CHSPEC_IS5G(pi->radio_chanspec)) {
20854 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20855 					RADIO_2056_SYN, 0x1f);
20856 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20857 					RADIO_2056_SYN, 0x1f);
20858 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20859 					RADIO_2056_SYN, 0x5);
20860 			write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20861 					RADIO_2056_SYN, 0xc);
20862 		}
20863 	}
20864 
20865 	if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20866 		u16 pag_boost_tune;
20867 		u16 padg_boost_tune;
20868 		u16 pgag_boost_tune;
20869 		u16 mixg_boost_tune;
20870 		u16 bias, cascbias;
20871 		uint core;
20872 
20873 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20874 
20875 			if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20876 
20877 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20878 						 PADG_IDAC, 0xcc);
20879 
20880 				bias = 0x25;
20881 				cascbias = 0x20;
20882 
20883 				if ((pi->sh->chip ==
20884 				     BCM43224_CHIP_ID)
20885 				    || (pi->sh->chip ==
20886 					BCM43225_CHIP_ID)) {
20887 					if (pi->sh->chippkg ==
20888 					    BCM43224_FAB_SMIC) {
20889 						bias = 0x2a;
20890 						cascbias = 0x38;
20891 					}
20892 				}
20893 
20894 				pag_boost_tune = 0x4;
20895 				pgag_boost_tune = 0x03;
20896 				padg_boost_tune = 0x77;
20897 				mixg_boost_tune = 0x65;
20898 
20899 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20900 						 INTPAG_IMAIN_STAT, bias);
20901 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20902 						 INTPAG_IAUX_STAT, bias);
20903 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20904 						 INTPAG_CASCBIAS, cascbias);
20905 
20906 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20907 						 INTPAG_BOOST_TUNE,
20908 						 pag_boost_tune);
20909 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20910 						 PGAG_BOOST_TUNE,
20911 						 pgag_boost_tune);
20912 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20913 						 PADG_BOOST_TUNE,
20914 						 padg_boost_tune);
20915 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20916 						 MIXG_BOOST_TUNE,
20917 						 mixg_boost_tune);
20918 			} else {
20919 
20920 				bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20921 				       0x40 : 0x20;
20922 
20923 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20924 						 INTPAG_IMAIN_STAT, bias);
20925 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20926 						 INTPAG_IAUX_STAT, bias);
20927 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20928 						 INTPAG_CASCBIAS, 0x30);
20929 			}
20930 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20931 					 0xee);
20932 		}
20933 	}
20934 
20935 	if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20936 	    && CHSPEC_IS5G(pi->radio_chanspec)) {
20937 		u16 paa_boost_tune;
20938 		u16 pada_boost_tune;
20939 		u16 pgaa_boost_tune;
20940 		u16 mixa_boost_tune;
20941 		u16 freq, pabias, cascbias;
20942 		uint core;
20943 
20944 		freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20945 
20946 		if (freq < 5150) {
20947 
20948 			paa_boost_tune = 0xa;
20949 			pada_boost_tune = 0x77;
20950 			pgaa_boost_tune = 0xf;
20951 			mixa_boost_tune = 0xf;
20952 		} else if (freq < 5340) {
20953 
20954 			paa_boost_tune = 0x8;
20955 			pada_boost_tune = 0x77;
20956 			pgaa_boost_tune = 0xfb;
20957 			mixa_boost_tune = 0xf;
20958 		} else if (freq < 5650) {
20959 
20960 			paa_boost_tune = 0x0;
20961 			pada_boost_tune = 0x77;
20962 			pgaa_boost_tune = 0xb;
20963 			mixa_boost_tune = 0xf;
20964 		} else {
20965 
20966 			paa_boost_tune = 0x0;
20967 			pada_boost_tune = 0x77;
20968 			if (freq != 5825)
20969 				pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
20970 			else
20971 				pgaa_boost_tune = 6;
20972 
20973 			mixa_boost_tune = 0xf;
20974 		}
20975 
20976 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20977 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20978 					 INTPAA_BOOST_TUNE, paa_boost_tune);
20979 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20980 					 PADA_BOOST_TUNE, pada_boost_tune);
20981 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20982 					 PGAA_BOOST_TUNE, pgaa_boost_tune);
20983 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20984 					 MIXA_BOOST_TUNE, mixa_boost_tune);
20985 
20986 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20987 					 TXSPARE1, 0x30);
20988 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20989 					 PA_SPARE2, 0xee);
20990 
20991 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20992 					 PADA_CASCBIAS, 0x3);
20993 
20994 			cascbias = 0x30;
20995 
20996 			if ((pi->sh->chip == BCM43224_CHIP_ID) ||
20997 			    (pi->sh->chip == BCM43225_CHIP_ID)) {
20998 				if (pi->sh->chippkg == BCM43224_FAB_SMIC)
20999 					cascbias = 0x35;
21000 			}
21001 
21002 			pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
21003 
21004 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21005 					 INTPAA_IAUX_STAT, pabias);
21006 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21007 					 INTPAA_IMAIN_STAT, pabias);
21008 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21009 					 INTPAA_CASCBIAS, cascbias);
21010 		}
21011 	}
21012 
21013 	udelay(50);
21014 
21015 	wlc_phy_radio205x_vcocal_nphy(pi);
21016 }
21017 
wlc_phy_radio205x_vcocal_nphy(struct brcms_phy * pi)21018 void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
21019 {
21020 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21021 		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
21022 		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
21023 		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
21024 			      (1 << 2));
21025 		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
21026 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21027 		write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
21028 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
21029 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
21030 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
21031 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
21032 	}
21033 
21034 	udelay(300);
21035 }
21036 
21037 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)21038 wlc_phy_chanspec_radio2057_setup(
21039 	struct brcms_phy *pi,
21040 	const struct chan_info_nphy_radio2057 *ci,
21041 	const struct chan_info_nphy_radio2057_rev5 *
21042 	ci2)
21043 {
21044 	int coreNum;
21045 	u16 txmix2g_tune_boost_pu = 0;
21046 	u16 pad2g_tune_pus = 0;
21047 
21048 	if (pi->pubpi.radiorev == 5) {
21049 
21050 		write_radio_reg(pi,
21051 				RADIO_2057_VCOCAL_COUNTVAL0,
21052 				ci2->RF_vcocal_countval0);
21053 		write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
21054 				ci2->RF_vcocal_countval1);
21055 		write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
21056 				ci2->RF_rfpll_refmaster_sparextalsize);
21057 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21058 				ci2->RF_rfpll_loopfilter_r1);
21059 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21060 				ci2->RF_rfpll_loopfilter_c2);
21061 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21062 				ci2->RF_rfpll_loopfilter_c1);
21063 		write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
21064 				ci2->RF_cp_kpd_idac);
21065 		write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
21066 		write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
21067 		write_radio_reg(pi,
21068 				RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
21069 		write_radio_reg(pi,
21070 				RADIO_2057_LOGEN_MX2G_TUNE,
21071 				ci2->RF_logen_mx2g_tune);
21072 		write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
21073 				ci2->RF_logen_indbuf2g_tune);
21074 
21075 		write_radio_reg(pi,
21076 				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
21077 				ci2->RF_txmix2g_tune_boost_pu_core0);
21078 		write_radio_reg(pi,
21079 				RADIO_2057_PAD2G_TUNE_PUS_CORE0,
21080 				ci2->RF_pad2g_tune_pus_core0);
21081 		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
21082 				ci2->RF_lna2g_tune_core0);
21083 
21084 		write_radio_reg(pi,
21085 				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
21086 				ci2->RF_txmix2g_tune_boost_pu_core1);
21087 		write_radio_reg(pi,
21088 				RADIO_2057_PAD2G_TUNE_PUS_CORE1,
21089 				ci2->RF_pad2g_tune_pus_core1);
21090 		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
21091 				ci2->RF_lna2g_tune_core1);
21092 
21093 	} else {
21094 
21095 		write_radio_reg(pi,
21096 				RADIO_2057_VCOCAL_COUNTVAL0,
21097 				ci->RF_vcocal_countval0);
21098 		write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
21099 				ci->RF_vcocal_countval1);
21100 		write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
21101 				ci->RF_rfpll_refmaster_sparextalsize);
21102 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21103 				ci->RF_rfpll_loopfilter_r1);
21104 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21105 				ci->RF_rfpll_loopfilter_c2);
21106 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21107 				ci->RF_rfpll_loopfilter_c1);
21108 		write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
21109 		write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
21110 		write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
21111 		write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
21112 		write_radio_reg(pi,
21113 				RADIO_2057_LOGEN_MX2G_TUNE,
21114 				ci->RF_logen_mx2g_tune);
21115 		write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
21116 				ci->RF_logen_mx5g_tune);
21117 		write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
21118 				ci->RF_logen_indbuf2g_tune);
21119 		write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
21120 				ci->RF_logen_indbuf5g_tune);
21121 
21122 		write_radio_reg(pi,
21123 				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
21124 				ci->RF_txmix2g_tune_boost_pu_core0);
21125 		write_radio_reg(pi,
21126 				RADIO_2057_PAD2G_TUNE_PUS_CORE0,
21127 				ci->RF_pad2g_tune_pus_core0);
21128 		write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
21129 				ci->RF_pga_boost_tune_core0);
21130 		write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
21131 				ci->RF_txmix5g_boost_tune_core0);
21132 		write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
21133 				ci->RF_pad5g_tune_misc_pus_core0);
21134 		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
21135 				ci->RF_lna2g_tune_core0);
21136 		write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
21137 				ci->RF_lna5g_tune_core0);
21138 
21139 		write_radio_reg(pi,
21140 				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
21141 				ci->RF_txmix2g_tune_boost_pu_core1);
21142 		write_radio_reg(pi,
21143 				RADIO_2057_PAD2G_TUNE_PUS_CORE1,
21144 				ci->RF_pad2g_tune_pus_core1);
21145 		write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
21146 				ci->RF_pga_boost_tune_core1);
21147 		write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
21148 				ci->RF_txmix5g_boost_tune_core1);
21149 		write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
21150 				ci->RF_pad5g_tune_misc_pus_core1);
21151 		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
21152 				ci->RF_lna2g_tune_core1);
21153 		write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
21154 				ci->RF_lna5g_tune_core1);
21155 	}
21156 
21157 	if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
21158 
21159 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
21160 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21161 					0x3f);
21162 			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21163 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21164 					0x8);
21165 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21166 					0x8);
21167 		} else {
21168 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21169 					0x1f);
21170 			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21171 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21172 					0x8);
21173 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21174 					0x8);
21175 		}
21176 	} else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
21177 		   (pi->pubpi.radiorev == 8)) {
21178 
21179 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
21180 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21181 					0x1b);
21182 			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
21183 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21184 					0xa);
21185 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21186 					0xa);
21187 		} else {
21188 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21189 					0x1f);
21190 			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21191 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21192 					0x8);
21193 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21194 					0x8);
21195 		}
21196 
21197 	}
21198 
21199 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
21200 		if (PHY_IPA(pi)) {
21201 			if (pi->pubpi.radiorev == 3)
21202 				txmix2g_tune_boost_pu = 0x6b;
21203 
21204 			if (pi->pubpi.radiorev == 5)
21205 				pad2g_tune_pus = 0x73;
21206 
21207 		} else {
21208 			if (pi->pubpi.radiorev != 5) {
21209 				pad2g_tune_pus = 0x3;
21210 
21211 				txmix2g_tune_boost_pu = 0x61;
21212 			}
21213 		}
21214 
21215 		for (coreNum = 0; coreNum <= 1; coreNum++) {
21216 
21217 			if (txmix2g_tune_boost_pu != 0)
21218 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21219 						 TXMIX2G_TUNE_BOOST_PU,
21220 						 txmix2g_tune_boost_pu);
21221 
21222 			if (pad2g_tune_pus != 0)
21223 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21224 						 PAD2G_TUNE_PUS,
21225 						 pad2g_tune_pus);
21226 		}
21227 	}
21228 
21229 	udelay(50);
21230 
21231 	wlc_phy_radio205x_vcocal_nphy(pi);
21232 }
21233 
21234 static void
wlc_phy_chanspec_nphy_setup(struct brcms_phy * pi,u16 chanspec,const struct nphy_sfo_cfg * ci)21235 wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21236 			    const struct nphy_sfo_cfg *ci)
21237 {
21238 	u16 val;
21239 
21240 	val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21241 	if (CHSPEC_IS5G(chanspec) && !val) {
21242 
21243 		val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21244 		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21245 		      (val | MAC_PHY_FORCE_CLK));
21246 
21247 		or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21248 			   (BBCFG_RESETCCA | BBCFG_RESETRX));
21249 
21250 		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21251 
21252 		or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21253 	} else if (!CHSPEC_IS5G(chanspec) && val) {
21254 
21255 		and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21256 
21257 		val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21258 		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21259 		      (val | MAC_PHY_FORCE_CLK));
21260 
21261 		and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21262 			    (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
21263 
21264 		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21265 	}
21266 
21267 	write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21268 	write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21269 	write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21270 
21271 	write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21272 	write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21273 	write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21274 
21275 	if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21276 		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21277 
21278 		or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21279 	} else {
21280 		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21281 					NPHY_ClassifierCtrl_ofdm_en);
21282 
21283 		if (CHSPEC_IS2G(chanspec))
21284 			and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21285 	}
21286 
21287 	if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21288 		wlc_phy_txpwr_fixpower_nphy(pi);
21289 
21290 	if (NREV_LT(pi->pubpi.phy_rev, 3))
21291 		wlc_phy_adjust_lnagaintbl_nphy(pi);
21292 
21293 	wlc_phy_txlpfbw_nphy(pi);
21294 
21295 	if (NREV_GE(pi->pubpi.phy_rev, 3)
21296 	    && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21297 		u8 spuravoid = 0;
21298 
21299 		val = CHSPEC_CHANNEL(chanspec);
21300 		if (!CHSPEC_IS40(pi->radio_chanspec)) {
21301 			if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21302 				if ((val == 13) || (val == 14) || (val == 153))
21303 					spuravoid = 1;
21304 			} else if (((val >= 5) && (val <= 8)) || (val == 13)
21305 				   || (val == 14)) {
21306 				spuravoid = 1;
21307 			}
21308 		} else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21309 			if (val == 54)
21310 				spuravoid = 1;
21311 		} else {
21312 			if (pi->nphy_aband_spurwar_en &&
21313 			    ((val == 38) || (val == 102)
21314 			     || (val == 118)))
21315 				spuravoid = 1;
21316 		}
21317 
21318 		if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21319 			spuravoid = 1;
21320 
21321 		wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
21322 		si_pmu_spuravoid_pllupdate(pi->sh->sih, spuravoid);
21323 		wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21324 
21325 		if ((pi->sh->chip == BCM43224_CHIP_ID) ||
21326 		    (pi->sh->chip == BCM43225_CHIP_ID)) {
21327 			if (spuravoid == 1) {
21328 				bcma_write16(pi->d11core,
21329 					     D11REGOFFS(tsf_clk_frac_l),
21330 					     0x5341);
21331 				bcma_write16(pi->d11core,
21332 					     D11REGOFFS(tsf_clk_frac_h), 0x8);
21333 			} else {
21334 				bcma_write16(pi->d11core,
21335 					     D11REGOFFS(tsf_clk_frac_l),
21336 					     0x8889);
21337 				bcma_write16(pi->d11core,
21338 					     D11REGOFFS(tsf_clk_frac_h), 0x8);
21339 			}
21340 		}
21341 
21342 		wlapi_bmac_core_phypll_reset(pi->sh->physhim);
21343 
21344 		mod_phy_reg(pi, 0x01, (0x1 << 15),
21345 			    ((spuravoid > 0) ? (0x1 << 15) : 0));
21346 
21347 		wlc_phy_resetcca_nphy(pi);
21348 
21349 		pi->phy_isspuravoid = (spuravoid > 0);
21350 	}
21351 
21352 	if (NREV_LT(pi->pubpi.phy_rev, 7))
21353 		write_phy_reg(pi, 0x17e, 0x3830);
21354 
21355 	wlc_phy_spurwar_nphy(pi);
21356 }
21357 
wlc_phy_chanspec_set_nphy(struct brcms_phy * pi,u16 chanspec)21358 void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21359 {
21360 	int freq;
21361 	const struct chan_info_nphy_radio2057 *t0 = NULL;
21362 	const struct chan_info_nphy_radio205x *t1 = NULL;
21363 	const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21364 	const struct chan_info_nphy_2055 *t3 = NULL;
21365 
21366 	if (!wlc_phy_chan2freq_nphy
21367 		    (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21368 		return;
21369 
21370 	wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21371 
21372 	if (CHSPEC_BW(chanspec) != pi->bw)
21373 		wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21374 
21375 	if (CHSPEC_IS40(chanspec)) {
21376 		if (CHSPEC_SB_UPPER(chanspec)) {
21377 			or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21378 			if (NREV_GE(pi->pubpi.phy_rev, 7))
21379 				or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21380 		} else {
21381 			and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21382 			if (NREV_GE(pi->pubpi.phy_rev, 7))
21383 				and_phy_reg(pi, 0x310,
21384 					    (~PRIM_SEL_UP20 & 0xffff));
21385 		}
21386 	}
21387 
21388 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21389 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21390 
21391 			if ((pi->pubpi.radiorev <= 4)
21392 			    || (pi->pubpi.radiorev == 6)) {
21393 				mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21394 					      0x2,
21395 					      (CHSPEC_IS5G(chanspec) ? (1 << 1)
21396 					       : 0));
21397 				mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21398 					      0x2,
21399 					      (CHSPEC_IS5G(chanspec) ? (1 << 1)
21400 					       : 0));
21401 			}
21402 
21403 			wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21404 			wlc_phy_chanspec_nphy_setup(pi, chanspec,
21405 				(pi->pubpi.radiorev == 5) ?
21406 				(const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21407 				(const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21408 
21409 		} else {
21410 
21411 			mod_radio_reg(pi,
21412 				      RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21413 				      0x4,
21414 				      (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21415 			wlc_phy_chanspec_radio2056_setup(pi, t1);
21416 
21417 			wlc_phy_chanspec_nphy_setup(pi, chanspec,
21418 				(const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21419 		}
21420 
21421 	} else {
21422 
21423 		mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21424 			      (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21425 			       : (0x05 << 4)));
21426 
21427 		wlc_phy_chanspec_radio2055_setup(pi, t3);
21428 		wlc_phy_chanspec_nphy_setup(pi, chanspec,
21429 					    (const struct nphy_sfo_cfg *)
21430 					     &(t3->PHY_BW1a));
21431 	}
21432 
21433 }
21434 
wlc_phy_antsel_init(struct brcms_phy_pub * ppi,bool lut_init)21435 void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21436 {
21437 	struct brcms_phy *pi = (struct brcms_phy *) ppi;
21438 	u16 mask = 0xfc00;
21439 	u32 mc = 0;
21440 
21441 	if (NREV_GE(pi->pubpi.phy_rev, 7))
21442 		return;
21443 
21444 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21445 		u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21446 
21447 		if (!lut_init)
21448 			return;
21449 
21450 		if (pi->srom_fem2g.antswctrllut == 0) {
21451 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21452 						 1, 0x02, 16, &v0);
21453 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21454 						 1, 0x03, 16, &v1);
21455 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21456 						 1, 0x08, 16, &v2);
21457 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21458 						 1, 0x0C, 16, &v3);
21459 		}
21460 
21461 		if (pi->srom_fem5g.antswctrllut == 0) {
21462 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21463 						 1, 0x12, 16, &v0);
21464 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21465 						 1, 0x13, 16, &v1);
21466 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21467 						 1, 0x18, 16, &v2);
21468 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21469 						 1, 0x1C, 16, &v3);
21470 		}
21471 	} else {
21472 
21473 		write_phy_reg(pi, 0xc8, 0x0);
21474 		write_phy_reg(pi, 0xc9, 0x0);
21475 
21476 		ai_gpiocontrol(pi->sh->sih, mask, mask, GPIO_DRV_PRIORITY);
21477 
21478 		mc = bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
21479 		mc &= ~MCTL_GPOUT_SEL_MASK;
21480 		bcma_write32(pi->d11core, D11REGOFFS(maccontrol), mc);
21481 
21482 		bcma_set16(pi->d11core, D11REGOFFS(psm_gpio_oe), mask);
21483 
21484 		bcma_mask16(pi->d11core, D11REGOFFS(psm_gpio_out), ~mask);
21485 
21486 		if (lut_init) {
21487 			write_phy_reg(pi, 0xf8, 0x02d8);
21488 			write_phy_reg(pi, 0xf9, 0x0301);
21489 			write_phy_reg(pi, 0xfa, 0x02d8);
21490 			write_phy_reg(pi, 0xfb, 0x0301);
21491 		}
21492 	}
21493 }
21494 
wlc_phy_classifier_nphy(struct brcms_phy * pi,u16 mask,u16 val)21495 u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21496 {
21497 	u16 curr_ctl, new_ctl;
21498 	bool suspended = false;
21499 
21500 	if (D11REV_IS(pi->sh->corerev, 16)) {
21501 		suspended = (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
21502 			     MCTL_EN_MAC) ? false : true;
21503 		if (!suspended)
21504 			wlapi_suspend_mac_and_wait(pi->sh->physhim);
21505 	}
21506 
21507 	curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21508 
21509 	new_ctl = (curr_ctl & (~mask)) | (val & mask);
21510 
21511 	mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21512 
21513 	if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21514 		wlapi_enable_mac(pi->sh->physhim);
21515 
21516 	return new_ctl;
21517 }
21518 
wlc_phy_force_rfseq_nphy(struct brcms_phy * pi,u8 cmd)21519 void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21520 {
21521 	u16 trigger_mask, status_mask;
21522 	u16 orig_RfseqCoreActv;
21523 
21524 	switch (cmd) {
21525 	case NPHY_RFSEQ_RX2TX:
21526 		trigger_mask = NPHY_RfseqTrigger_rx2tx;
21527 		status_mask = NPHY_RfseqStatus_rx2tx;
21528 		break;
21529 	case NPHY_RFSEQ_TX2RX:
21530 		trigger_mask = NPHY_RfseqTrigger_tx2rx;
21531 		status_mask = NPHY_RfseqStatus_tx2rx;
21532 		break;
21533 	case NPHY_RFSEQ_RESET2RX:
21534 		trigger_mask = NPHY_RfseqTrigger_reset2rx;
21535 		status_mask = NPHY_RfseqStatus_reset2rx;
21536 		break;
21537 	case NPHY_RFSEQ_UPDATEGAINH:
21538 		trigger_mask = NPHY_RfseqTrigger_updategainh;
21539 		status_mask = NPHY_RfseqStatus_updategainh;
21540 		break;
21541 	case NPHY_RFSEQ_UPDATEGAINL:
21542 		trigger_mask = NPHY_RfseqTrigger_updategainl;
21543 		status_mask = NPHY_RfseqStatus_updategainl;
21544 		break;
21545 	case NPHY_RFSEQ_UPDATEGAINU:
21546 		trigger_mask = NPHY_RfseqTrigger_updategainu;
21547 		status_mask = NPHY_RfseqStatus_updategainu;
21548 		break;
21549 	default:
21550 		return;
21551 	}
21552 
21553 	orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21554 	or_phy_reg(pi, 0xa1,
21555 		   (NPHY_RfseqMode_CoreActv_override |
21556 		    NPHY_RfseqMode_Trigger_override));
21557 	or_phy_reg(pi, 0xa3, trigger_mask);
21558 	SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21559 	write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21560 	WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21561 }
21562 
21563 static void
wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy * pi,u16 cmd,u16 value,u8 core_mask,u8 off)21564 wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21565 				     u8 core_mask, u8 off)
21566 {
21567 	u16 rfmxgain = 0, lpfgain = 0;
21568 	u16 tgain = 0;
21569 
21570 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21571 
21572 		switch (cmd) {
21573 		case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21574 			wlc_phy_rfctrl_override_nphy_rev7(
21575 				pi, (0x1 << 5),
21576 				value, core_mask, off,
21577 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21578 			wlc_phy_rfctrl_override_nphy_rev7(
21579 				pi, (0x1 << 4), value,
21580 				core_mask, off,
21581 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21582 			wlc_phy_rfctrl_override_nphy_rev7(
21583 				pi, (0x1 << 3), value,
21584 				core_mask, off,
21585 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21586 			break;
21587 		case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21588 			wlc_phy_rfctrl_override_nphy_rev7(
21589 				pi, (0x1 << 2),
21590 				value, core_mask, off,
21591 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21592 			wlc_phy_rfctrl_override_nphy_rev7(
21593 				pi, (0x1 << 1), value,
21594 				core_mask, off,
21595 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21596 			wlc_phy_rfctrl_override_nphy_rev7(
21597 				pi, (0x1 << 0), value,
21598 				core_mask, off,
21599 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21600 			wlc_phy_rfctrl_override_nphy_rev7(
21601 				pi, (0x1 << 1), value,
21602 				core_mask, off,
21603 				NPHY_REV7_RFCTRLOVERRIDE_ID2);
21604 			wlc_phy_rfctrl_override_nphy_rev7(
21605 				pi, (0x1 << 11), 0,
21606 				core_mask, off,
21607 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21608 			break;
21609 		case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21610 			wlc_phy_rfctrl_override_nphy_rev7(
21611 				pi, (0x1 << 2),
21612 				value, core_mask, off,
21613 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21614 			wlc_phy_rfctrl_override_nphy_rev7(
21615 				pi, (0x1 << 1), value,
21616 				core_mask, off,
21617 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21618 			wlc_phy_rfctrl_override_nphy_rev7(
21619 				pi, (0x1 << 0), value,
21620 				core_mask, off,
21621 				NPHY_REV7_RFCTRLOVERRIDE_ID2);
21622 			wlc_phy_rfctrl_override_nphy_rev7(
21623 				pi, (0x1 << 2), value,
21624 				core_mask, off,
21625 				NPHY_REV7_RFCTRLOVERRIDE_ID2);
21626 			wlc_phy_rfctrl_override_nphy_rev7(
21627 				pi, (0x1 << 11), 1,
21628 				core_mask, off,
21629 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21630 			break;
21631 		case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21632 			rfmxgain = value & 0x000ff;
21633 			lpfgain = value & 0x0ff00;
21634 			lpfgain = lpfgain >> 8;
21635 
21636 			wlc_phy_rfctrl_override_nphy_rev7(
21637 				pi, (0x1 << 11),
21638 				rfmxgain, core_mask,
21639 				off,
21640 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21641 			wlc_phy_rfctrl_override_nphy_rev7(
21642 				pi, (0x3 << 13),
21643 				lpfgain, core_mask,
21644 				off,
21645 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21646 			break;
21647 		case NPHY_REV7_RfctrlOverride_cmd_txgain:
21648 			tgain = value & 0x7fff;
21649 			lpfgain = value & 0x8000;
21650 			lpfgain = lpfgain >> 14;
21651 
21652 			wlc_phy_rfctrl_override_nphy_rev7(
21653 				pi, (0x1 << 12),
21654 				tgain, core_mask, off,
21655 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21656 			wlc_phy_rfctrl_override_nphy_rev7(
21657 				pi, (0x1 << 13),
21658 				lpfgain, core_mask,
21659 				off,
21660 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21661 			break;
21662 		}
21663 	}
21664 }
21665 
21666 static void
wlc_phy_scale_offset_rssi_nphy(struct brcms_phy * pi,u16 scale,s8 offset,u8 coresel,u8 rail,u8 rssi_type)21667 wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21668 			       u8 coresel, u8 rail, u8 rssi_type)
21669 {
21670 	u16 valuetostuff;
21671 
21672 	offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21673 		 NPHY_RSSICAL_MAXREAD : offset;
21674 	offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21675 		 -NPHY_RSSICAL_MAXREAD - 1 : offset;
21676 
21677 	valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21678 
21679 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21680 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21681 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21682 		write_phy_reg(pi, 0x1a6, valuetostuff);
21683 
21684 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21685 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21686 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21687 		write_phy_reg(pi, 0x1ac, valuetostuff);
21688 
21689 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21690 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21691 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21692 		write_phy_reg(pi, 0x1b2, valuetostuff);
21693 
21694 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21695 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21696 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21697 		write_phy_reg(pi, 0x1b8, valuetostuff);
21698 
21699 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21700 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21701 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21702 		write_phy_reg(pi, 0x1a4, valuetostuff);
21703 
21704 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21705 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21706 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21707 		write_phy_reg(pi, 0x1aa, valuetostuff);
21708 
21709 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21710 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21711 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21712 		write_phy_reg(pi, 0x1b0, valuetostuff);
21713 
21714 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21715 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21716 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21717 		write_phy_reg(pi, 0x1b6, valuetostuff);
21718 
21719 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21720 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21721 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21722 		write_phy_reg(pi, 0x1a5, valuetostuff);
21723 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21724 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21725 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21726 		write_phy_reg(pi, 0x1ab, valuetostuff);
21727 
21728 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21729 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21730 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21731 		write_phy_reg(pi, 0x1b1, valuetostuff);
21732 
21733 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21734 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21735 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21736 		write_phy_reg(pi, 0x1b7, valuetostuff);
21737 
21738 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21739 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21740 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21741 		write_phy_reg(pi, 0x1a7, valuetostuff);
21742 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21743 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21744 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21745 		write_phy_reg(pi, 0x1ad, valuetostuff);
21746 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21747 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21748 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21749 		write_phy_reg(pi, 0x1b3, valuetostuff);
21750 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21751 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21752 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21753 		write_phy_reg(pi, 0x1b9, valuetostuff);
21754 
21755 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21756 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21757 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21758 		write_phy_reg(pi, 0x1a8, valuetostuff);
21759 
21760 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21761 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21762 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21763 		write_phy_reg(pi, 0x1ae, valuetostuff);
21764 
21765 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21766 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21767 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21768 		write_phy_reg(pi, 0x1b4, valuetostuff);
21769 
21770 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21771 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21772 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21773 		write_phy_reg(pi, 0x1ba, valuetostuff);
21774 
21775 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21776 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21777 	    (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21778 		write_phy_reg(pi, 0x1a9, valuetostuff);
21779 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21780 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21781 	    (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21782 		write_phy_reg(pi, 0x1b5, valuetostuff);
21783 
21784 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21785 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21786 	    (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21787 		write_phy_reg(pi, 0x1af, valuetostuff);
21788 
21789 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21790 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21791 	    (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21792 		write_phy_reg(pi, 0x1bb, valuetostuff);
21793 }
21794 
brcms_phy_wr_tx_mux(struct brcms_phy * pi,u8 core)21795 static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21796 {
21797 	if (PHY_IPA(pi)) {
21798 		if (NREV_GE(pi->pubpi.phy_rev, 7))
21799 			write_radio_reg(pi,
21800 					((core == PHY_CORE_0) ?
21801 					 RADIO_2057_TX0_TX_SSI_MUX :
21802 					 RADIO_2057_TX1_TX_SSI_MUX),
21803 					(CHSPEC_IS5G(pi->radio_chanspec) ?
21804 					0xc : 0xe));
21805 		else
21806 			write_radio_reg(pi,
21807 					RADIO_2056_TX_TX_SSI_MUX |
21808 					((core == PHY_CORE_0) ?
21809 					 RADIO_2056_TX0 : RADIO_2056_TX1),
21810 					(CHSPEC_IS5G(pi->radio_chanspec) ?
21811 					0xc : 0xe));
21812 	} else {
21813 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21814 			write_radio_reg(pi,
21815 					((core == PHY_CORE_0) ?
21816 					 RADIO_2057_TX0_TX_SSI_MUX :
21817 					 RADIO_2057_TX1_TX_SSI_MUX),
21818 					0x11);
21819 
21820 			if (pi->pubpi.radioid == BCM2057_ID)
21821 				write_radio_reg(pi,
21822 						RADIO_2057_IQTEST_SEL_PU, 0x1);
21823 
21824 		} else {
21825 			write_radio_reg(pi,
21826 					RADIO_2056_TX_TX_SSI_MUX |
21827 					((core == PHY_CORE_0) ?
21828 					 RADIO_2056_TX0 : RADIO_2056_TX1),
21829 					0x11);
21830 		}
21831 	}
21832 }
21833 
wlc_phy_rssisel_nphy(struct brcms_phy * pi,u8 core_code,u8 rssi_type)21834 void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21835 {
21836 	u16 mask, val;
21837 	u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21838 	    startseq;
21839 	u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21840 	    rfctrlovr_trigger_val;
21841 	u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21842 	u16 rfctrlcmd_val, rfctrlovr_val;
21843 	u8 core;
21844 
21845 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21846 		if (core_code == RADIO_MIMO_CORESEL_OFF) {
21847 			mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21848 			mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21849 
21850 			mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21851 			mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21852 
21853 			mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21854 			mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21855 
21856 			mask = (0x1 << 2) |
21857 			       (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21858 			mod_phy_reg(pi, 0xf9, mask, 0);
21859 			mod_phy_reg(pi, 0xfb, mask, 0);
21860 
21861 		} else {
21862 			for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21863 				if (core_code == RADIO_MIMO_CORESEL_CORE1
21864 				    && core == PHY_CORE_1)
21865 					continue;
21866 				else if (core_code == RADIO_MIMO_CORESEL_CORE2
21867 					 && core == PHY_CORE_0)
21868 					continue;
21869 
21870 				mod_phy_reg(pi, (core == PHY_CORE_0) ?
21871 					    0x8f : 0xa5, (0x1 << 9), 1 << 9);
21872 
21873 				if (rssi_type == NPHY_RSSI_SEL_W1 ||
21874 				    rssi_type == NPHY_RSSI_SEL_W2 ||
21875 				    rssi_type == NPHY_RSSI_SEL_NB) {
21876 					mod_phy_reg(pi,
21877 						    (core ==
21878 						     PHY_CORE_0) ? 0xa6 : 0xa7,
21879 						    (0x3 << 8), 0);
21880 
21881 					mask = (0x1 << 2) |
21882 					       (0x1 << 3) |
21883 					       (0x1 << 4) | (0x1 << 5);
21884 					mod_phy_reg(pi,
21885 						    (core ==
21886 						     PHY_CORE_0) ? 0xf9 : 0xfb,
21887 						    mask, 0);
21888 
21889 					if (rssi_type == NPHY_RSSI_SEL_W1) {
21890 						if (CHSPEC_IS5G(
21891 							  pi->radio_chanspec)) {
21892 							mask = (0x1 << 2);
21893 							val = 1 << 2;
21894 						} else {
21895 							mask = (0x1 << 3);
21896 							val = 1 << 3;
21897 						}
21898 					} else if (rssi_type ==
21899 						   NPHY_RSSI_SEL_W2) {
21900 						mask = (0x1 << 4);
21901 						val = 1 << 4;
21902 					} else {
21903 						mask = (0x1 << 5);
21904 						val = 1 << 5;
21905 					}
21906 					mod_phy_reg(pi,
21907 						    (core ==
21908 						     PHY_CORE_0) ? 0xf9 : 0xfb,
21909 						    mask, val);
21910 
21911 					mask = (0x1 << 5);
21912 					val = 1 << 5;
21913 					mod_phy_reg(pi, (core == PHY_CORE_0) ?
21914 						    0xe5 : 0xe6, mask, val);
21915 				} else {
21916 					if (rssi_type == NPHY_RSSI_SEL_TBD) {
21917 						mask = (0x3 << 8);
21918 						val = 1 << 8;
21919 						mod_phy_reg(pi,
21920 							    (core ==
21921 							     PHY_CORE_0) ? 0xa6
21922 							    : 0xa7, mask, val);
21923 						mask = (0x3 << 10);
21924 						val = 1 << 10;
21925 						mod_phy_reg(pi,
21926 							    (core ==
21927 							     PHY_CORE_0) ? 0xa6
21928 							    : 0xa7, mask, val);
21929 					} else if (rssi_type ==
21930 						   NPHY_RSSI_SEL_IQ) {
21931 						mask = (0x3 << 8);
21932 						val = 2 << 8;
21933 						mod_phy_reg(pi,
21934 							    (core ==
21935 							     PHY_CORE_0) ? 0xa6
21936 							    : 0xa7, mask, val);
21937 						mask = (0x3 << 10);
21938 						val = 2 << 10;
21939 						mod_phy_reg(pi,
21940 							    (core ==
21941 							     PHY_CORE_0) ? 0xa6
21942 							    : 0xa7, mask, val);
21943 					} else {
21944 						mask = (0x3 << 8);
21945 						val = 3 << 8;
21946 						mod_phy_reg(pi,
21947 							    (core ==
21948 							     PHY_CORE_0) ? 0xa6
21949 							    : 0xa7, mask, val);
21950 						mask = (0x3 << 10);
21951 						val = 3 << 10;
21952 						mod_phy_reg(pi,
21953 							    (core ==
21954 							     PHY_CORE_0) ? 0xa6
21955 							    : 0xa7, mask, val);
21956 						brcms_phy_wr_tx_mux(pi, core);
21957 						afectrlovr_rssi_val = 1 << 9;
21958 						mod_phy_reg(pi,
21959 							   (core ==
21960 							    PHY_CORE_0) ? 0x8f
21961 							   : 0xa5, (0x1 << 9),
21962 							   afectrlovr_rssi_val);
21963 					}
21964 				}
21965 			}
21966 		}
21967 	} else {
21968 
21969 		if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21970 		    (rssi_type == NPHY_RSSI_SEL_W2) ||
21971 		    (rssi_type == NPHY_RSSI_SEL_NB))
21972 			val = 0x0;
21973 		else if (rssi_type == NPHY_RSSI_SEL_TBD)
21974 			val = 0x1;
21975 		else if (rssi_type == NPHY_RSSI_SEL_IQ)
21976 			val = 0x2;
21977 		else
21978 			val = 0x3;
21979 
21980 		mask = ((0x3 << 12) | (0x3 << 14));
21981 		val = (val << 12) | (val << 14);
21982 		mod_phy_reg(pi, 0xa6, mask, val);
21983 		mod_phy_reg(pi, 0xa7, mask, val);
21984 
21985 		if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21986 		    (rssi_type == NPHY_RSSI_SEL_W2) ||
21987 		    (rssi_type == NPHY_RSSI_SEL_NB)) {
21988 			if (rssi_type == NPHY_RSSI_SEL_W1)
21989 				val = 0x1;
21990 			if (rssi_type == NPHY_RSSI_SEL_W2)
21991 				val = 0x2;
21992 			if (rssi_type == NPHY_RSSI_SEL_NB)
21993 				val = 0x3;
21994 
21995 			mask = (0x3 << 4);
21996 			val = (val << 4);
21997 			mod_phy_reg(pi, 0x7a, mask, val);
21998 			mod_phy_reg(pi, 0x7d, mask, val);
21999 		}
22000 
22001 		if (core_code == RADIO_MIMO_CORESEL_OFF) {
22002 			afectrlovr_rssi_val = 0;
22003 			rfctrlcmd_rxen_val = 0;
22004 			rfctrlcmd_coresel_val = 0;
22005 			rfctrlovr_rssi_val = 0;
22006 			rfctrlovr_rxen_val = 0;
22007 			rfctrlovr_coresel_val = 0;
22008 			rfctrlovr_trigger_val = 0;
22009 			startseq = 0;
22010 		} else {
22011 			afectrlovr_rssi_val = 1;
22012 			rfctrlcmd_rxen_val = 1;
22013 			rfctrlcmd_coresel_val = core_code;
22014 			rfctrlovr_rssi_val = 1;
22015 			rfctrlovr_rxen_val = 1;
22016 			rfctrlovr_coresel_val = 1;
22017 			rfctrlovr_trigger_val = 1;
22018 			startseq = 1;
22019 		}
22020 
22021 		afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
22022 		afectrlovr_rssi_val = (afectrlovr_rssi_val <<
22023 				       12) | (afectrlovr_rssi_val << 13);
22024 		mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
22025 			    afectrlovr_rssi_val);
22026 
22027 		if ((rssi_type == NPHY_RSSI_SEL_W1) ||
22028 		    (rssi_type == NPHY_RSSI_SEL_W2) ||
22029 		    (rssi_type == NPHY_RSSI_SEL_NB)) {
22030 			rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
22031 			rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
22032 					(rfctrlcmd_coresel_val << 3);
22033 
22034 			rfctrlovr_mask = ((0x1 << 5) |
22035 					  (0x1 << 12) |
22036 					  (0x1 << 1) | (0x1 << 0));
22037 			rfctrlovr_val = (rfctrlovr_rssi_val <<
22038 					 5) |
22039 					(rfctrlovr_rxen_val << 12) |
22040 					(rfctrlovr_coresel_val << 1) |
22041 					(rfctrlovr_trigger_val << 0);
22042 
22043 			mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
22044 			mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
22045 
22046 			mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
22047 			udelay(20);
22048 
22049 			mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22050 		}
22051 	}
22052 }
22053 
22054 int
wlc_phy_poll_rssi_nphy(struct brcms_phy * pi,u8 rssi_type,s32 * rssi_buf,u8 nsamps)22055 wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
22056 		       u8 nsamps)
22057 {
22058 	s16 rssi0, rssi1;
22059 	u16 afectrlCore1_save = 0;
22060 	u16 afectrlCore2_save = 0;
22061 	u16 afectrlOverride1_save = 0;
22062 	u16 afectrlOverride2_save = 0;
22063 	u16 rfctrlOverrideAux0_save = 0;
22064 	u16 rfctrlOverrideAux1_save = 0;
22065 	u16 rfctrlMiscReg1_save = 0;
22066 	u16 rfctrlMiscReg2_save = 0;
22067 	u16 rfctrlcmd_save = 0;
22068 	u16 rfctrloverride_save = 0;
22069 	u16 rfctrlrssiothers1_save = 0;
22070 	u16 rfctrlrssiothers2_save = 0;
22071 	s8 tmp_buf[4];
22072 	u8 ctr = 0, samp = 0;
22073 	s32 rssi_out_val;
22074 	u16 gpiosel_orig;
22075 
22076 	afectrlCore1_save = read_phy_reg(pi, 0xa6);
22077 	afectrlCore2_save = read_phy_reg(pi, 0xa7);
22078 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22079 		rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22080 		rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22081 		afectrlOverride1_save = read_phy_reg(pi, 0x8f);
22082 		afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22083 		rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22084 		rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22085 	} else {
22086 		afectrlOverride1_save = read_phy_reg(pi, 0xa5);
22087 		rfctrlcmd_save = read_phy_reg(pi, 0x78);
22088 		rfctrloverride_save = read_phy_reg(pi, 0xec);
22089 		rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
22090 		rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
22091 	}
22092 
22093 	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22094 
22095 	gpiosel_orig = read_phy_reg(pi, 0xca);
22096 	if (NREV_LT(pi->pubpi.phy_rev, 2))
22097 		write_phy_reg(pi, 0xca, 5);
22098 
22099 	for (ctr = 0; ctr < 4; ctr++)
22100 		rssi_buf[ctr] = 0;
22101 
22102 	for (samp = 0; samp < nsamps; samp++) {
22103 		if (NREV_LT(pi->pubpi.phy_rev, 2)) {
22104 			rssi0 = read_phy_reg(pi, 0x1c9);
22105 			rssi1 = read_phy_reg(pi, 0x1ca);
22106 		} else {
22107 			rssi0 = read_phy_reg(pi, 0x219);
22108 			rssi1 = read_phy_reg(pi, 0x21a);
22109 		}
22110 
22111 		ctr = 0;
22112 		tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
22113 		tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
22114 		tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
22115 		tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
22116 
22117 		for (ctr = 0; ctr < 4; ctr++)
22118 			rssi_buf[ctr] += tmp_buf[ctr];
22119 
22120 	}
22121 
22122 	rssi_out_val = rssi_buf[3] & 0xff;
22123 	rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
22124 	rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
22125 	rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
22126 
22127 	if (NREV_LT(pi->pubpi.phy_rev, 2))
22128 		write_phy_reg(pi, 0xca, gpiosel_orig);
22129 
22130 	write_phy_reg(pi, 0xa6, afectrlCore1_save);
22131 	write_phy_reg(pi, 0xa7, afectrlCore2_save);
22132 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22133 		write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
22134 		write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
22135 		write_phy_reg(pi, 0x8f, afectrlOverride1_save);
22136 		write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22137 		write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
22138 		write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
22139 	} else {
22140 		write_phy_reg(pi, 0xa5, afectrlOverride1_save);
22141 		write_phy_reg(pi, 0x78, rfctrlcmd_save);
22142 		write_phy_reg(pi, 0xec, rfctrloverride_save);
22143 		write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
22144 		write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
22145 	}
22146 
22147 	return rssi_out_val;
22148 }
22149 
wlc_phy_tempsense_nphy(struct brcms_phy * pi)22150 s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
22151 {
22152 	u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
22153 	u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
22154 	u16 pwrdet_rxtx_core1_save;
22155 	u16 pwrdet_rxtx_core2_save;
22156 	u16 afectrlCore1_save;
22157 	u16 afectrlCore2_save;
22158 	u16 afectrlOverride_save;
22159 	u16 afectrlOverride2_save;
22160 	u16 pd_pll_ts_save;
22161 	u16 gpioSel_save;
22162 	s32 radio_temp[4];
22163 	s32 radio_temp2[4];
22164 	u16 syn_tempprocsense_save;
22165 	s16 offset = 0;
22166 
22167 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22168 		u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
22169 		u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
22170 		u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
22171 		s32 auxADC_Vl;
22172 		u16 RfctrlOverride5_save, RfctrlOverride6_save;
22173 		u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
22174 		u16 RSSIMultCoef0QPowerDet_save;
22175 		u16 tempsense_Rcal;
22176 
22177 		syn_tempprocsense_save =
22178 			read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
22179 
22180 		afectrlCore1_save = read_phy_reg(pi, 0xa6);
22181 		afectrlCore2_save = read_phy_reg(pi, 0xa7);
22182 		afectrlOverride_save = read_phy_reg(pi, 0x8f);
22183 		afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22184 		RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
22185 		RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22186 		RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22187 		RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22188 		RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22189 
22190 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22191 					&auxADC_Vmid_save);
22192 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22193 					&auxADC_Av_save);
22194 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22195 					&auxADC_rssi_ctrlL_save);
22196 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22197 					&auxADC_rssi_ctrlH_save);
22198 
22199 		write_phy_reg(pi, 0x1ae, 0x0);
22200 
22201 		auxADC_rssi_ctrlL = 0x0;
22202 		auxADC_rssi_ctrlH = 0x20;
22203 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22204 					 &auxADC_rssi_ctrlL);
22205 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22206 					 &auxADC_rssi_ctrlH);
22207 
22208 		tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22209 
22210 		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22211 				tempsense_Rcal | 0x01);
22212 
22213 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22214 						  1, 0, 0,
22215 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
22216 		mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22217 		mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22218 		mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22219 		mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22220 
22221 		mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22222 		mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22223 		mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22224 		mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22225 		udelay(5);
22226 		mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22227 		mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22228 		mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22229 		mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22230 		mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22231 		mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22232 		mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22233 		mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22234 		mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22235 		mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22236 
22237 		auxADC_Vmid = 0xA3;
22238 		auxADC_Av = 0x0;
22239 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22240 					 &auxADC_Vmid);
22241 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22242 					 &auxADC_Av);
22243 
22244 		udelay(3);
22245 
22246 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22247 		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22248 				tempsense_Rcal | 0x03);
22249 
22250 		udelay(5);
22251 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22252 
22253 		auxADC_Av = 0x7;
22254 		if (radio_temp[1] + radio_temp2[1] < -30) {
22255 			auxADC_Vmid = 0x45;
22256 			auxADC_Vl = 263;
22257 		} else if (radio_temp[1] + radio_temp2[1] < -9) {
22258 			auxADC_Vmid = 0x200;
22259 			auxADC_Vl = 467;
22260 		} else if (radio_temp[1] + radio_temp2[1] < 11) {
22261 			auxADC_Vmid = 0x266;
22262 			auxADC_Vl = 634;
22263 		} else {
22264 			auxADC_Vmid = 0x2D5;
22265 			auxADC_Vl = 816;
22266 		}
22267 
22268 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22269 					 &auxADC_Vmid);
22270 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22271 					 &auxADC_Av);
22272 
22273 		udelay(3);
22274 
22275 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22276 		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22277 				tempsense_Rcal | 0x01);
22278 
22279 		udelay(5);
22280 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22281 
22282 		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22283 				syn_tempprocsense_save);
22284 
22285 		write_phy_reg(pi, 0xa6, afectrlCore1_save);
22286 		write_phy_reg(pi, 0xa7, afectrlCore2_save);
22287 		write_phy_reg(pi, 0x8f, afectrlOverride_save);
22288 		write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22289 		write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22290 		write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22291 		write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22292 		write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22293 		write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22294 
22295 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22296 					 &auxADC_Vmid_save);
22297 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22298 					 &auxADC_Av_save);
22299 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22300 					 &auxADC_rssi_ctrlL_save);
22301 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22302 					 &auxADC_rssi_ctrlH_save);
22303 
22304 		radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22305 				 + 82 * (auxADC_Vl) - 28861 +
22306 				 128) / 256;
22307 
22308 		offset = (s16) pi->phy_tempsense_offset;
22309 
22310 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22311 		syn_tempprocsense_save =
22312 			read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22313 
22314 		afectrlCore1_save = read_phy_reg(pi, 0xa6);
22315 		afectrlCore2_save = read_phy_reg(pi, 0xa7);
22316 		afectrlOverride_save = read_phy_reg(pi, 0x8f);
22317 		afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22318 		gpioSel_save = read_phy_reg(pi, 0xca);
22319 
22320 		write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22321 
22322 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22323 		if (NREV_LT(pi->pubpi.phy_rev, 7))
22324 			write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22325 
22326 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22327 		if (NREV_GE(pi->pubpi.phy_rev, 7))
22328 			write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22329 		else
22330 			write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22331 
22332 		radio_temp[0] =
22333 			(126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22334 
22335 		write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22336 				syn_tempprocsense_save);
22337 
22338 		write_phy_reg(pi, 0xca, gpioSel_save);
22339 		write_phy_reg(pi, 0xa6, afectrlCore1_save);
22340 		write_phy_reg(pi, 0xa7, afectrlCore2_save);
22341 		write_phy_reg(pi, 0x8f, afectrlOverride_save);
22342 		write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22343 
22344 		offset = (s16) pi->phy_tempsense_offset;
22345 	} else {
22346 
22347 		pwrdet_rxtx_core1_save =
22348 			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22349 		pwrdet_rxtx_core2_save =
22350 			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22351 		core1_txrf_iqcal1_save =
22352 			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22353 		core1_txrf_iqcal2_save =
22354 			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22355 		core2_txrf_iqcal1_save =
22356 			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22357 		core2_txrf_iqcal2_save =
22358 			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22359 		pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22360 
22361 		afectrlCore1_save = read_phy_reg(pi, 0xa6);
22362 		afectrlCore2_save = read_phy_reg(pi, 0xa7);
22363 		afectrlOverride_save = read_phy_reg(pi, 0xa5);
22364 		gpioSel_save = read_phy_reg(pi, 0xca);
22365 
22366 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22367 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22368 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22369 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22370 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22371 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22372 		write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22373 
22374 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22375 		xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22376 
22377 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22378 		xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22379 
22380 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22381 		xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22382 
22383 		radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22384 		radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22385 		radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22386 		radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22387 
22388 		radio_temp[0] =
22389 			(radio_temp[0] + radio_temp[1] + radio_temp[2] +
22390 			 radio_temp[3]);
22391 
22392 		radio_temp[0] =
22393 			(radio_temp[0] +
22394 			 (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22395 
22396 		radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22397 
22398 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22399 				pwrdet_rxtx_core1_save);
22400 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22401 				pwrdet_rxtx_core2_save);
22402 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22403 				core1_txrf_iqcal1_save);
22404 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22405 				core2_txrf_iqcal1_save);
22406 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22407 				core1_txrf_iqcal2_save);
22408 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22409 				core2_txrf_iqcal2_save);
22410 		write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22411 
22412 		write_phy_reg(pi, 0xca, gpioSel_save);
22413 		write_phy_reg(pi, 0xa6, afectrlCore1_save);
22414 		write_phy_reg(pi, 0xa7, afectrlCore2_save);
22415 		write_phy_reg(pi, 0xa5, afectrlOverride_save);
22416 	}
22417 
22418 	return (s16) radio_temp[0] + offset;
22419 }
22420 
22421 static void
wlc_phy_set_rssi_2055_vcm(struct brcms_phy * pi,u8 rssi_type,u8 * vcm_buf)22422 wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22423 {
22424 	u8 core;
22425 
22426 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22427 		if (rssi_type == NPHY_RSSI_SEL_NB) {
22428 			if (core == PHY_CORE_0) {
22429 				mod_radio_reg(pi,
22430 					      RADIO_2055_CORE1_B0_NBRSSI_VCM,
22431 					      RADIO_2055_NBRSSI_VCM_I_MASK,
22432 					      vcm_buf[2 *
22433 						      core] <<
22434 					      RADIO_2055_NBRSSI_VCM_I_SHIFT);
22435 				mod_radio_reg(pi,
22436 					      RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22437 					      RADIO_2055_NBRSSI_VCM_Q_MASK,
22438 					      vcm_buf[2 * core +
22439 						      1] <<
22440 					      RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22441 			} else {
22442 				mod_radio_reg(pi,
22443 					      RADIO_2055_CORE2_B0_NBRSSI_VCM,
22444 					      RADIO_2055_NBRSSI_VCM_I_MASK,
22445 					      vcm_buf[2 *
22446 						      core] <<
22447 					      RADIO_2055_NBRSSI_VCM_I_SHIFT);
22448 				mod_radio_reg(pi,
22449 					      RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22450 					      RADIO_2055_NBRSSI_VCM_Q_MASK,
22451 					      vcm_buf[2 * core +
22452 						      1] <<
22453 					      RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22454 			}
22455 		} else {
22456 			if (core == PHY_CORE_0)
22457 				mod_radio_reg(pi,
22458 					      RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22459 					      RADIO_2055_WBRSSI_VCM_IQ_MASK,
22460 					      vcm_buf[2 *
22461 						      core] <<
22462 					      RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22463 			else
22464 				mod_radio_reg(pi,
22465 					      RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22466 					      RADIO_2055_WBRSSI_VCM_IQ_MASK,
22467 					      vcm_buf[2 *
22468 						      core] <<
22469 					      RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22470 		}
22471 	}
22472 }
22473 
wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy * pi)22474 static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22475 {
22476 	u16 classif_state;
22477 	u16 clip_state[2];
22478 	u16 clip_off[] = { 0xffff, 0xffff };
22479 	s32 target_code;
22480 	u8 vcm, min_vcm;
22481 	u8 vcm_final = 0;
22482 	u8 result_idx;
22483 	s32 poll_results[8][4] = {
22484 		{0, 0, 0, 0},
22485 		{0, 0, 0, 0},
22486 		{0, 0, 0, 0},
22487 		{0, 0, 0, 0},
22488 		{0, 0, 0, 0},
22489 		{0, 0, 0, 0},
22490 		{0, 0, 0, 0},
22491 		{0, 0, 0, 0}
22492 	};
22493 	s32 poll_result_core[4] = { 0, 0, 0, 0 };
22494 	s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22495 	s32 fine_digital_offset[4];
22496 	s32 poll_results_min[4] = { 0, 0, 0, 0 };
22497 	s32 min_poll;
22498 	u8 vcm_level_max;
22499 	u8 core;
22500 	u8 wb_cnt;
22501 	u8 rssi_type;
22502 	u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22503 	u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22504 	u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22505 	u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22506 	u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22507 	u16 NPHY_RfctrlCmd_save;
22508 	u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22509 	u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22510 	u8 rxcore_state;
22511 	u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22512 	u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22513 	u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22514 	u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22515 
22516 	NPHY_REV7_RfctrlOverride3_save =
22517 		NPHY_REV7_RfctrlOverride4_save =
22518 		NPHY_REV7_RfctrlOverride5_save =
22519 		NPHY_REV7_RfctrlOverride6_save =
22520 		NPHY_REV7_RfctrlMiscReg3_save =
22521 		NPHY_REV7_RfctrlMiscReg4_save =
22522 		NPHY_REV7_RfctrlMiscReg5_save =
22523 		NPHY_REV7_RfctrlMiscReg6_save = 0;
22524 
22525 	classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22526 	wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22527 	wlc_phy_clip_det_nphy(pi, 0, clip_state);
22528 	wlc_phy_clip_det_nphy(pi, 1, clip_off);
22529 
22530 	NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22531 	NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22532 	NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22533 	NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22534 	NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22535 	NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22536 	NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22537 	NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22538 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22539 		NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22540 		NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22541 		NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22542 		NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22543 	}
22544 	NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22545 	NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22546 	NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22547 	NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22548 	NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22549 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22550 		NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22551 		NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22552 		NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22553 		NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22554 	}
22555 	NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22556 	NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22557 
22558 	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22559 					 RADIO_MIMO_CORESEL_ALLRXTX);
22560 	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22561 					 RADIO_MIMO_CORESEL_ALLRXTX);
22562 
22563 	if (NREV_GE(pi->pubpi.phy_rev, 7))
22564 		wlc_phy_rfctrl_override_1tomany_nphy(
22565 			pi,
22566 			NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22567 			0, 0, 0);
22568 	else
22569 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22570 
22571 	if (NREV_GE(pi->pubpi.phy_rev, 7))
22572 		wlc_phy_rfctrl_override_1tomany_nphy(
22573 			pi,
22574 			NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22575 			1, 0, 0);
22576 	else
22577 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22578 
22579 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22580 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22581 						  1, 0, 0,
22582 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
22583 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22584 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
22585 	} else {
22586 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22587 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22588 	}
22589 
22590 	if (CHSPEC_IS5G(pi->radio_chanspec)) {
22591 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22592 			wlc_phy_rfctrl_override_nphy_rev7(
22593 				pi, (0x1 << 5),
22594 				0, 0, 0,
22595 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22596 			wlc_phy_rfctrl_override_nphy_rev7(
22597 				pi, (0x1 << 4), 1, 0,
22598 				0,
22599 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22600 		} else {
22601 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22602 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22603 		}
22604 
22605 	} else {
22606 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22607 			wlc_phy_rfctrl_override_nphy_rev7(
22608 				pi, (0x1 << 4),
22609 				0, 0, 0,
22610 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22611 			wlc_phy_rfctrl_override_nphy_rev7(
22612 				pi, (0x1 << 5), 1, 0,
22613 				0,
22614 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22615 		} else {
22616 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22617 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22618 		}
22619 	}
22620 
22621 	rxcore_state = wlc_phy_rxcore_getstate_nphy(
22622 		(struct brcms_phy_pub *) pi);
22623 
22624 	vcm_level_max = 8;
22625 
22626 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22627 
22628 		if ((rxcore_state & (1 << core)) == 0)
22629 			continue;
22630 
22631 		wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22632 					       core ==
22633 					       PHY_CORE_0 ?
22634 					       RADIO_MIMO_CORESEL_CORE1 :
22635 					       RADIO_MIMO_CORESEL_CORE2,
22636 					       NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22637 		wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22638 					       core ==
22639 					       PHY_CORE_0 ?
22640 					       RADIO_MIMO_CORESEL_CORE1 :
22641 					       RADIO_MIMO_CORESEL_CORE2,
22642 					       NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22643 
22644 		for (vcm = 0; vcm < vcm_level_max; vcm++) {
22645 			if (NREV_GE(pi->pubpi.phy_rev, 7))
22646 				mod_radio_reg(pi, (core == PHY_CORE_0) ?
22647 					      RADIO_2057_NB_MASTER_CORE0 :
22648 					      RADIO_2057_NB_MASTER_CORE1,
22649 					      RADIO_2057_VCM_MASK, vcm);
22650 			else
22651 				mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22652 					      ((core ==
22653 						PHY_CORE_0) ? RADIO_2056_RX0 :
22654 					       RADIO_2056_RX1),
22655 					      RADIO_2056_VCM_MASK,
22656 					      vcm << RADIO_2056_RSSI_VCM_SHIFT);
22657 
22658 			wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22659 					       &poll_results[vcm][0],
22660 					       NPHY_RSSICAL_NPOLL);
22661 		}
22662 
22663 		for (result_idx = 0; result_idx < 4; result_idx++) {
22664 			if ((core == result_idx / 2) &&
22665 			    (result_idx % 2 == 0)) {
22666 
22667 				min_d = NPHY_RSSICAL_MAXD;
22668 				min_vcm = 0;
22669 				min_poll =
22670 					NPHY_RSSICAL_MAXREAD *
22671 					NPHY_RSSICAL_NPOLL + 1;
22672 				for (vcm = 0; vcm < vcm_level_max; vcm++) {
22673 					curr_d =
22674 						poll_results[vcm][result_idx] *
22675 						poll_results[vcm][result_idx] +
22676 						poll_results[vcm][result_idx +
22677 								  1] *
22678 						poll_results[vcm][result_idx +
22679 								  1];
22680 					if (curr_d < min_d) {
22681 						min_d = curr_d;
22682 						min_vcm = vcm;
22683 					}
22684 					if (poll_results[vcm][result_idx] <
22685 					    min_poll)
22686 						min_poll =
22687 							poll_results[vcm]
22688 							[result_idx];
22689 				}
22690 				vcm_final = min_vcm;
22691 				poll_results_min[result_idx] = min_poll;
22692 			}
22693 		}
22694 
22695 		if (NREV_GE(pi->pubpi.phy_rev, 7))
22696 			mod_radio_reg(pi, (core == PHY_CORE_0) ?
22697 				      RADIO_2057_NB_MASTER_CORE0 :
22698 				      RADIO_2057_NB_MASTER_CORE1,
22699 				      RADIO_2057_VCM_MASK, vcm_final);
22700 		else
22701 			mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22702 				      ((core ==
22703 					PHY_CORE_0) ? RADIO_2056_RX0 :
22704 				       RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22705 				      vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22706 
22707 		for (result_idx = 0; result_idx < 4; result_idx++) {
22708 			if (core == result_idx / 2) {
22709 				fine_digital_offset[result_idx] =
22710 					(NPHY_RSSICAL_NB_TARGET *
22711 					 NPHY_RSSICAL_NPOLL) -
22712 					poll_results[vcm_final][result_idx];
22713 				if (fine_digital_offset[result_idx] < 0) {
22714 					fine_digital_offset[result_idx] =
22715 						abs(fine_digital_offset
22716 						    [result_idx]);
22717 					fine_digital_offset[result_idx] +=
22718 						(NPHY_RSSICAL_NPOLL / 2);
22719 					fine_digital_offset[result_idx] /=
22720 						NPHY_RSSICAL_NPOLL;
22721 					fine_digital_offset[result_idx] =
22722 						-fine_digital_offset[
22723 								    result_idx];
22724 				} else {
22725 					fine_digital_offset[result_idx] +=
22726 						(NPHY_RSSICAL_NPOLL / 2);
22727 					fine_digital_offset[result_idx] /=
22728 						NPHY_RSSICAL_NPOLL;
22729 				}
22730 
22731 				if (poll_results_min[result_idx] ==
22732 				    NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22733 					fine_digital_offset[result_idx] =
22734 						(NPHY_RSSICAL_NB_TARGET -
22735 						 NPHY_RSSICAL_MAXREAD - 1);
22736 
22737 				wlc_phy_scale_offset_rssi_nphy(
22738 					pi, 0x0,
22739 					(s8)
22740 					fine_digital_offset
22741 					[result_idx],
22742 					(result_idx / 2 == 0) ?
22743 					RADIO_MIMO_CORESEL_CORE1 :
22744 					RADIO_MIMO_CORESEL_CORE2,
22745 					(result_idx % 2 == 0) ?
22746 					NPHY_RAIL_I : NPHY_RAIL_Q,
22747 					NPHY_RSSI_SEL_NB);
22748 			}
22749 		}
22750 
22751 	}
22752 
22753 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22754 
22755 		if ((rxcore_state & (1 << core)) == 0)
22756 			continue;
22757 
22758 		for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22759 			if (wb_cnt == 0) {
22760 				rssi_type = NPHY_RSSI_SEL_W1;
22761 				target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22762 			} else {
22763 				rssi_type = NPHY_RSSI_SEL_W2;
22764 				target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22765 			}
22766 
22767 			wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22768 						       core ==
22769 						       PHY_CORE_0 ?
22770 						       RADIO_MIMO_CORESEL_CORE1
22771 						       :
22772 						       RADIO_MIMO_CORESEL_CORE2,
22773 						       NPHY_RAIL_I, rssi_type);
22774 			wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22775 						       core ==
22776 						       PHY_CORE_0 ?
22777 						       RADIO_MIMO_CORESEL_CORE1
22778 						       :
22779 						       RADIO_MIMO_CORESEL_CORE2,
22780 						       NPHY_RAIL_Q, rssi_type);
22781 
22782 			wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22783 					       NPHY_RSSICAL_NPOLL);
22784 
22785 			for (result_idx = 0; result_idx < 4; result_idx++) {
22786 				if (core == result_idx / 2) {
22787 					fine_digital_offset[result_idx] =
22788 						(target_code *
22789 						 NPHY_RSSICAL_NPOLL) -
22790 						poll_result_core[result_idx];
22791 					if (fine_digital_offset[result_idx] <
22792 					    0) {
22793 						fine_digital_offset[result_idx]
22794 							= abs(
22795 							    fine_digital_offset
22796 							    [result_idx]);
22797 						fine_digital_offset[result_idx]
22798 							+= (NPHY_RSSICAL_NPOLL
22799 							    / 2);
22800 						fine_digital_offset[result_idx]
22801 							/= NPHY_RSSICAL_NPOLL;
22802 						fine_digital_offset[result_idx]
22803 							= -fine_digital_offset
22804 								[result_idx];
22805 					} else {
22806 						fine_digital_offset[result_idx]
22807 							+= (NPHY_RSSICAL_NPOLL
22808 							    / 2);
22809 						fine_digital_offset[result_idx]
22810 							/= NPHY_RSSICAL_NPOLL;
22811 					}
22812 
22813 					wlc_phy_scale_offset_rssi_nphy(
22814 						pi, 0x0,
22815 						(s8)
22816 						fine_digital_offset
22817 						[core *
22818 						 2],
22819 						(core == PHY_CORE_0) ?
22820 						RADIO_MIMO_CORESEL_CORE1 :
22821 						RADIO_MIMO_CORESEL_CORE2,
22822 						(result_idx % 2 == 0) ?
22823 						NPHY_RAIL_I :
22824 						NPHY_RAIL_Q,
22825 						rssi_type);
22826 				}
22827 			}
22828 
22829 		}
22830 	}
22831 
22832 	write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22833 	write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22834 
22835 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22836 
22837 	mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22838 	mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22839 	mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22840 
22841 	mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22842 	mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22843 	mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22844 
22845 	write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22846 	write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22847 	write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22848 	write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22849 	write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22850 	write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22851 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22852 		write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22853 		write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22854 		write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22855 		write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22856 	}
22857 	write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22858 	write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22859 	write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22860 	write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22861 	write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22862 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22863 		write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22864 		write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22865 		write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22866 		write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22867 	}
22868 	write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22869 	write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22870 
22871 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
22872 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22873 			pi->rssical_cache.rssical_radio_regs_2G[0] =
22874 				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22875 			pi->rssical_cache.rssical_radio_regs_2G[1] =
22876 				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22877 		} else {
22878 			pi->rssical_cache.rssical_radio_regs_2G[0] =
22879 				read_radio_reg(pi,
22880 					       RADIO_2056_RX_RSSI_MISC |
22881 					       RADIO_2056_RX0);
22882 			pi->rssical_cache.rssical_radio_regs_2G[1] =
22883 				read_radio_reg(pi,
22884 					       RADIO_2056_RX_RSSI_MISC |
22885 					       RADIO_2056_RX1);
22886 		}
22887 
22888 		pi->rssical_cache.rssical_phyregs_2G[0] =
22889 			read_phy_reg(pi, 0x1a6);
22890 		pi->rssical_cache.rssical_phyregs_2G[1] =
22891 			read_phy_reg(pi, 0x1ac);
22892 		pi->rssical_cache.rssical_phyregs_2G[2] =
22893 			read_phy_reg(pi, 0x1b2);
22894 		pi->rssical_cache.rssical_phyregs_2G[3] =
22895 			read_phy_reg(pi, 0x1b8);
22896 		pi->rssical_cache.rssical_phyregs_2G[4] =
22897 			read_phy_reg(pi, 0x1a4);
22898 		pi->rssical_cache.rssical_phyregs_2G[5] =
22899 			read_phy_reg(pi, 0x1aa);
22900 		pi->rssical_cache.rssical_phyregs_2G[6] =
22901 			read_phy_reg(pi, 0x1b0);
22902 		pi->rssical_cache.rssical_phyregs_2G[7] =
22903 			read_phy_reg(pi, 0x1b6);
22904 		pi->rssical_cache.rssical_phyregs_2G[8] =
22905 			read_phy_reg(pi, 0x1a5);
22906 		pi->rssical_cache.rssical_phyregs_2G[9] =
22907 			read_phy_reg(pi, 0x1ab);
22908 		pi->rssical_cache.rssical_phyregs_2G[10] =
22909 			read_phy_reg(pi, 0x1b1);
22910 		pi->rssical_cache.rssical_phyregs_2G[11] =
22911 			read_phy_reg(pi, 0x1b7);
22912 
22913 		pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22914 	} else {
22915 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22916 			pi->rssical_cache.rssical_radio_regs_5G[0] =
22917 				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22918 			pi->rssical_cache.rssical_radio_regs_5G[1] =
22919 				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22920 		} else {
22921 			pi->rssical_cache.rssical_radio_regs_5G[0] =
22922 				read_radio_reg(pi,
22923 					       RADIO_2056_RX_RSSI_MISC |
22924 					       RADIO_2056_RX0);
22925 			pi->rssical_cache.rssical_radio_regs_5G[1] =
22926 				read_radio_reg(pi,
22927 					       RADIO_2056_RX_RSSI_MISC |
22928 					       RADIO_2056_RX1);
22929 		}
22930 
22931 		pi->rssical_cache.rssical_phyregs_5G[0] =
22932 			read_phy_reg(pi, 0x1a6);
22933 		pi->rssical_cache.rssical_phyregs_5G[1] =
22934 			read_phy_reg(pi, 0x1ac);
22935 		pi->rssical_cache.rssical_phyregs_5G[2] =
22936 			read_phy_reg(pi, 0x1b2);
22937 		pi->rssical_cache.rssical_phyregs_5G[3] =
22938 			read_phy_reg(pi, 0x1b8);
22939 		pi->rssical_cache.rssical_phyregs_5G[4] =
22940 			read_phy_reg(pi, 0x1a4);
22941 		pi->rssical_cache.rssical_phyregs_5G[5] =
22942 			read_phy_reg(pi, 0x1aa);
22943 		pi->rssical_cache.rssical_phyregs_5G[6] =
22944 			read_phy_reg(pi, 0x1b0);
22945 		pi->rssical_cache.rssical_phyregs_5G[7] =
22946 			read_phy_reg(pi, 0x1b6);
22947 		pi->rssical_cache.rssical_phyregs_5G[8] =
22948 			read_phy_reg(pi, 0x1a5);
22949 		pi->rssical_cache.rssical_phyregs_5G[9] =
22950 			read_phy_reg(pi, 0x1ab);
22951 		pi->rssical_cache.rssical_phyregs_5G[10] =
22952 			read_phy_reg(pi, 0x1b1);
22953 		pi->rssical_cache.rssical_phyregs_5G[11] =
22954 			read_phy_reg(pi, 0x1b7);
22955 
22956 		pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22957 	}
22958 
22959 	wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22960 	wlc_phy_clip_det_nphy(pi, 1, clip_state);
22961 }
22962 
wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy * pi,u8 rssi_type)22963 static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
22964 {
22965 	s32 target_code;
22966 	u16 classif_state;
22967 	u16 clip_state[2];
22968 	u16 rssi_ctrl_state[2], pd_state[2];
22969 	u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
22970 	u16 rfctrlintc_override_val;
22971 	u16 clip_off[] = { 0xffff, 0xffff };
22972 	u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
22973 	u8 vcm, min_vcm, vcm_tmp[4];
22974 	u8 vcm_final[4] = { 0, 0, 0, 0 };
22975 	u8 result_idx, ctr;
22976 	s32 poll_results[4][4] = {
22977 		{0, 0, 0, 0},
22978 		{0, 0, 0, 0},
22979 		{0, 0, 0, 0},
22980 		{0, 0, 0, 0}
22981 	};
22982 	s32 poll_miniq[4][2] = {
22983 		{0, 0},
22984 		{0, 0},
22985 		{0, 0},
22986 		{0, 0}
22987 	};
22988 	s32 min_d, curr_d;
22989 	s32 fine_digital_offset[4];
22990 	s32 poll_results_min[4] = { 0, 0, 0, 0 };
22991 	s32 min_poll;
22992 
22993 	switch (rssi_type) {
22994 	case NPHY_RSSI_SEL_NB:
22995 		target_code = NPHY_RSSICAL_NB_TARGET;
22996 		break;
22997 	case NPHY_RSSI_SEL_W1:
22998 		target_code = NPHY_RSSICAL_W1_TARGET;
22999 		break;
23000 	case NPHY_RSSI_SEL_W2:
23001 		target_code = NPHY_RSSICAL_W2_TARGET;
23002 		break;
23003 	default:
23004 		return;
23005 		break;
23006 	}
23007 
23008 	classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
23009 	wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
23010 	wlc_phy_clip_det_nphy(pi, 0, clip_state);
23011 	wlc_phy_clip_det_nphy(pi, 1, clip_off);
23012 
23013 	rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
23014 	rfctrlintc_override_val =
23015 		CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
23016 
23017 	rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
23018 	rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
23019 	write_phy_reg(pi, 0x91, rfctrlintc_override_val);
23020 	write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
23021 
23022 	rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
23023 	rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
23024 	write_phy_reg(pi, 0x92, rfctrlintc_override_val);
23025 	write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
23026 
23027 	pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
23028 		  RADIO_2055_WBRSSI_G2_PD;
23029 	pd_state[0] =
23030 		read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
23031 	pd_state[1] =
23032 		read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
23033 	mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
23034 	mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
23035 	rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
23036 			 RADIO_2055_WBRSSI_G2_SEL;
23037 	rssi_ctrl_state[0] =
23038 		read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
23039 	rssi_ctrl_state[1] =
23040 		read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
23041 	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
23042 
23043 	wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
23044 				       NPHY_RAIL_I, rssi_type);
23045 	wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
23046 				       NPHY_RAIL_Q, rssi_type);
23047 
23048 	for (vcm = 0; vcm < 4; vcm++) {
23049 
23050 		vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
23051 		if (rssi_type != NPHY_RSSI_SEL_W2)
23052 			wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
23053 
23054 		wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
23055 				       NPHY_RSSICAL_NPOLL);
23056 
23057 		if ((rssi_type == NPHY_RSSI_SEL_W1)
23058 		    || (rssi_type == NPHY_RSSI_SEL_W2)) {
23059 			for (ctr = 0; ctr < 2; ctr++)
23060 				poll_miniq[vcm][ctr] =
23061 					min(poll_results[vcm][ctr * 2 + 0],
23062 					    poll_results[vcm][ctr * 2 + 1]);
23063 		}
23064 	}
23065 
23066 	for (result_idx = 0; result_idx < 4; result_idx++) {
23067 		min_d = NPHY_RSSICAL_MAXD;
23068 		min_vcm = 0;
23069 		min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
23070 		for (vcm = 0; vcm < 4; vcm++) {
23071 			curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
23072 				      poll_results[vcm][result_idx] :
23073 				      poll_miniq[vcm][result_idx / 2]) -
23074 				     (target_code * NPHY_RSSICAL_NPOLL));
23075 			if (curr_d < min_d) {
23076 				min_d = curr_d;
23077 				min_vcm = vcm;
23078 			}
23079 			if (poll_results[vcm][result_idx] < min_poll)
23080 				min_poll = poll_results[vcm][result_idx];
23081 		}
23082 		vcm_final[result_idx] = min_vcm;
23083 		poll_results_min[result_idx] = min_poll;
23084 	}
23085 
23086 	if (rssi_type != NPHY_RSSI_SEL_W2)
23087 		wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
23088 
23089 	for (result_idx = 0; result_idx < 4; result_idx++) {
23090 		fine_digital_offset[result_idx] =
23091 			(target_code * NPHY_RSSICAL_NPOLL) -
23092 			poll_results[vcm_final[result_idx]][result_idx];
23093 		if (fine_digital_offset[result_idx] < 0) {
23094 			fine_digital_offset[result_idx] =
23095 				abs(fine_digital_offset[result_idx]);
23096 			fine_digital_offset[result_idx] +=
23097 				(NPHY_RSSICAL_NPOLL / 2);
23098 			fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23099 			fine_digital_offset[result_idx] =
23100 				-fine_digital_offset[result_idx];
23101 		} else {
23102 			fine_digital_offset[result_idx] +=
23103 				(NPHY_RSSICAL_NPOLL / 2);
23104 			fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23105 		}
23106 
23107 		if (poll_results_min[result_idx] ==
23108 		    NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
23109 			fine_digital_offset[result_idx] =
23110 				(target_code - NPHY_RSSICAL_MAXREAD - 1);
23111 
23112 		wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
23113 					       (s8)
23114 					       fine_digital_offset[result_idx],
23115 					       (result_idx / 2 ==
23116 						0) ? RADIO_MIMO_CORESEL_CORE1 :
23117 					       RADIO_MIMO_CORESEL_CORE2,
23118 					       (result_idx % 2 ==
23119 						0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
23120 					       rssi_type);
23121 	}
23122 
23123 	mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
23124 	mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
23125 	if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
23126 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23127 				     NPHY_RSSI_SEL_NB);
23128 	else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
23129 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23130 				     NPHY_RSSI_SEL_W1);
23131 	else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G2_SEL)
23132 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23133 				     NPHY_RSSI_SEL_W2);
23134 	else
23135 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23136 				     NPHY_RSSI_SEL_W2);
23137 	if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
23138 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23139 				     NPHY_RSSI_SEL_NB);
23140 	else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
23141 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23142 				     NPHY_RSSI_SEL_W1);
23143 	else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G2_SEL)
23144 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23145 				     NPHY_RSSI_SEL_W2);
23146 	else
23147 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23148 				     NPHY_RSSI_SEL_W2);
23149 
23150 	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
23151 
23152 	write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
23153 	write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
23154 	write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
23155 	write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
23156 
23157 	wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
23158 	wlc_phy_clip_det_nphy(pi, 1, clip_state);
23159 
23160 	wlc_phy_resetcca_nphy(pi);
23161 }
23162 
wlc_phy_rssi_cal_nphy(struct brcms_phy * pi)23163 void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
23164 {
23165 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23166 		wlc_phy_rssi_cal_nphy_rev3(pi);
23167 	} else {
23168 		wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
23169 		wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
23170 		wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
23171 	}
23172 }
23173 
23174 int
wlc_phy_rssi_compute_nphy(struct brcms_phy * pi,struct d11rxhdr * rxh)23175 wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
23176 {
23177 	s16 rxpwr, rxpwr0, rxpwr1;
23178 	s16 phyRx0_l, phyRx2_l;
23179 
23180 	rxpwr = 0;
23181 	rxpwr0 = rxh->PhyRxStatus_1 & PRXS1_nphy_PWR0_MASK;
23182 	rxpwr1 = (rxh->PhyRxStatus_1 & PRXS1_nphy_PWR1_MASK) >> 8;
23183 
23184 	if (rxpwr0 > 127)
23185 		rxpwr0 -= 256;
23186 	if (rxpwr1 > 127)
23187 		rxpwr1 -= 256;
23188 
23189 	phyRx0_l = rxh->PhyRxStatus_0 & 0x00ff;
23190 	phyRx2_l = rxh->PhyRxStatus_2 & 0x00ff;
23191 	if (phyRx2_l > 127)
23192 		phyRx2_l -= 256;
23193 
23194 	if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
23195 		rxpwr0 = rxpwr1;
23196 		rxpwr1 = phyRx2_l;
23197 	}
23198 
23199 	if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
23200 		rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23201 	else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23202 		rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23203 	else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23204 		rxpwr = (rxpwr0 + rxpwr1) >> 1;
23205 
23206 	return rxpwr;
23207 }
23208 
23209 static void
wlc_phy_loadsampletable_nphy(struct brcms_phy * pi,struct cordic_iq * tone_buf,u16 num_samps)23210 wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23211 			     u16 num_samps)
23212 {
23213 	u16 t;
23214 	u32 *data_buf = NULL;
23215 
23216 	data_buf = kmalloc(sizeof(u32) * num_samps, GFP_ATOMIC);
23217 	if (data_buf == NULL)
23218 		return;
23219 
23220 	if (pi->phyhang_avoid)
23221 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
23222 
23223 	for (t = 0; t < num_samps; t++)
23224 		data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23225 			      (((unsigned int)tone_buf[t].q) & 0x3ff);
23226 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23227 				 data_buf);
23228 
23229 	kfree(data_buf);
23230 
23231 	if (pi->phyhang_avoid)
23232 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
23233 }
23234 
23235 static u16
wlc_phy_gen_load_samples_nphy(struct brcms_phy * pi,u32 f_kHz,u16 max_val,u8 dac_test_mode)23236 wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23237 			      u8 dac_test_mode)
23238 {
23239 	u8 phy_bw, is_phybw40;
23240 	u16 num_samps, t, spur;
23241 	s32 theta = 0, rot = 0;
23242 	u32 tbl_len;
23243 	struct cordic_iq *tone_buf = NULL;
23244 
23245 	is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23246 	phy_bw = (is_phybw40 == 1) ? 40 : 20;
23247 	tbl_len = (phy_bw << 3);
23248 
23249 	if (dac_test_mode == 1) {
23250 		spur = read_phy_reg(pi, 0x01);
23251 		spur = (spur >> 15) & 1;
23252 		phy_bw = (spur == 1) ? 82 : 80;
23253 		phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23254 
23255 		tbl_len = (phy_bw << 1);
23256 	}
23257 
23258 	tone_buf = kmalloc(sizeof(struct cordic_iq) * tbl_len, GFP_ATOMIC);
23259 	if (tone_buf == NULL)
23260 		return 0;
23261 
23262 	num_samps = (u16) tbl_len;
23263 	rot = ((f_kHz * 36) / phy_bw) / 100;
23264 	theta = 0;
23265 
23266 	for (t = 0; t < num_samps; t++) {
23267 
23268 		tone_buf[t] = cordic_calc_iq(theta);
23269 
23270 		theta += rot;
23271 
23272 		tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
23273 		tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
23274 	}
23275 
23276 	wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23277 
23278 	kfree(tone_buf);
23279 
23280 	return num_samps;
23281 }
23282 
23283 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)23284 wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23285 			u16 wait, u8 iqmode, u8 dac_test_mode,
23286 			bool modify_bbmult)
23287 {
23288 	u16 bb_mult;
23289 	u8 phy_bw, sample_cmd;
23290 	u16 orig_RfseqCoreActv;
23291 	u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
23292 	    lpf_bw_ctl_miscreg4;
23293 
23294 	if (pi->phyhang_avoid)
23295 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
23296 
23297 	phy_bw = 20;
23298 	if (CHSPEC_IS40(pi->radio_chanspec))
23299 		phy_bw = 40;
23300 
23301 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23302 
23303 		lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23304 		lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23305 		if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
23306 			lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23307 					      (0x7 << 8);
23308 			lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23309 					      (0x7 << 8);
23310 		} else {
23311 			wlc_phy_rfctrl_override_nphy_rev7(
23312 				pi,
23313 				(0x1 << 7),
23314 				wlc_phy_read_lpf_bw_ctl_nphy
23315 					(pi,
23316 					0), 0, 0,
23317 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
23318 
23319 			pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23320 
23321 			lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23322 					      (0x7 << 8);
23323 			lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23324 					      (0x7 << 8);
23325 		}
23326 	}
23327 
23328 	if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23329 
23330 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23331 					&bb_mult);
23332 		pi->nphy_bb_mult_save =
23333 			BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23334 	}
23335 
23336 	if (modify_bbmult) {
23337 		bb_mult = (phy_bw == 20) ? 100 : 71;
23338 		bb_mult = (bb_mult << 8) + bb_mult;
23339 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23340 					 &bb_mult);
23341 	}
23342 
23343 	if (pi->phyhang_avoid)
23344 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
23345 
23346 	write_phy_reg(pi, 0xc6, num_samps - 1);
23347 
23348 	if (loops != 0xffff)
23349 		write_phy_reg(pi, 0xc4, loops - 1);
23350 	else
23351 		write_phy_reg(pi, 0xc4, loops);
23352 
23353 	write_phy_reg(pi, 0xc5, wait);
23354 
23355 	orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23356 	or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23357 	if (iqmode) {
23358 
23359 		and_phy_reg(pi, 0xc2, 0x7FFF);
23360 
23361 		or_phy_reg(pi, 0xc2, 0x8000);
23362 	} else {
23363 
23364 		sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23365 		write_phy_reg(pi, 0xc3, sample_cmd);
23366 	}
23367 
23368 	SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23369 
23370 	write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23371 }
23372 
23373 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)23374 wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23375 		     u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23376 {
23377 	u16 num_samps;
23378 	u16 loops = 0xffff;
23379 	u16 wait = 0;
23380 
23381 	num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23382 						  dac_test_mode);
23383 	if (num_samps == 0)
23384 		return -EBADE;
23385 
23386 	wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23387 				dac_test_mode, modify_bbmult);
23388 
23389 	return 0;
23390 }
23391 
wlc_phy_stopplayback_nphy(struct brcms_phy * pi)23392 void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23393 {
23394 	u16 playback_status;
23395 	u16 bb_mult;
23396 
23397 	if (pi->phyhang_avoid)
23398 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
23399 
23400 	playback_status = read_phy_reg(pi, 0xc7);
23401 	if (playback_status & 0x1)
23402 		or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23403 	else if (playback_status & 0x2)
23404 		and_phy_reg(pi, 0xc2,
23405 			    (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23406 
23407 	and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23408 
23409 	if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23410 
23411 		bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23412 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23413 					 &bb_mult);
23414 
23415 		pi->nphy_bb_mult_save = 0;
23416 	}
23417 
23418 	if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23419 		if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23420 			wlc_phy_rfctrl_override_nphy_rev7(
23421 				pi,
23422 				(0x1 << 7),
23423 				0, 0, 1,
23424 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
23425 			pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23426 		}
23427 	}
23428 
23429 	if (pi->phyhang_avoid)
23430 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
23431 }
23432 
brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy * pi)23433 static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23434 {
23435 	u32 *tx_pwrctrl_tbl = NULL;
23436 	uint phyrev = pi->pubpi.phy_rev;
23437 
23438 	if (PHY_IPA(pi)) {
23439 		tx_pwrctrl_tbl =
23440 			wlc_phy_get_ipa_gaintbl_nphy(pi);
23441 	} else {
23442 		if (CHSPEC_IS5G(pi->radio_chanspec)) {
23443 			if (NREV_IS(phyrev, 3))
23444 				tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23445 			else if (NREV_IS(phyrev, 4))
23446 				tx_pwrctrl_tbl =
23447 					(pi->srom_fem5g.extpagain == 3) ?
23448 					nphy_tpc_5GHz_txgain_HiPwrEPA :
23449 					nphy_tpc_5GHz_txgain_rev4;
23450 			else
23451 				tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23452 		} else {
23453 			if (NREV_GE(phyrev, 7)) {
23454 				if (pi->pubpi.radiorev == 3)
23455 					tx_pwrctrl_tbl =
23456 						nphy_tpc_txgain_epa_2057rev3;
23457 				else if (pi->pubpi.radiorev == 5)
23458 					tx_pwrctrl_tbl =
23459 						nphy_tpc_txgain_epa_2057rev5;
23460 			} else {
23461 				if (NREV_GE(phyrev, 5) &&
23462 				   (pi->srom_fem2g.extpagain ==	3))
23463 					tx_pwrctrl_tbl =
23464 						nphy_tpc_txgain_HiPwrEPA;
23465 				else
23466 					tx_pwrctrl_tbl =
23467 						nphy_tpc_txgain_rev3;
23468 			}
23469 		}
23470 	}
23471 	return tx_pwrctrl_tbl;
23472 }
23473 
wlc_phy_get_tx_gain_nphy(struct brcms_phy * pi)23474 struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23475 {
23476 	u16 base_idx[2], curr_gain[2];
23477 	u8 core_no;
23478 	struct nphy_txgains target_gain;
23479 	u32 *tx_pwrctrl_tbl = NULL;
23480 
23481 	if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23482 		if (pi->phyhang_avoid)
23483 			wlc_phy_stay_in_carriersearch_nphy(pi, true);
23484 
23485 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23486 					curr_gain);
23487 
23488 		if (pi->phyhang_avoid)
23489 			wlc_phy_stay_in_carriersearch_nphy(pi, false);
23490 
23491 		for (core_no = 0; core_no < 2; core_no++) {
23492 			if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23493 				target_gain.ipa[core_no] =
23494 					curr_gain[core_no] & 0x0007;
23495 				target_gain.pad[core_no] =
23496 					((curr_gain[core_no] & 0x00F8) >> 3);
23497 				target_gain.pga[core_no] =
23498 					((curr_gain[core_no] & 0x0F00) >> 8);
23499 				target_gain.txgm[core_no] =
23500 					((curr_gain[core_no] & 0x7000) >> 12);
23501 				target_gain.txlpf[core_no] =
23502 					((curr_gain[core_no] & 0x8000) >> 15);
23503 			} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23504 				target_gain.ipa[core_no] =
23505 					curr_gain[core_no] & 0x000F;
23506 				target_gain.pad[core_no] =
23507 					((curr_gain[core_no] & 0x00F0) >> 4);
23508 				target_gain.pga[core_no] =
23509 					((curr_gain[core_no] & 0x0F00) >> 8);
23510 				target_gain.txgm[core_no] =
23511 					((curr_gain[core_no] & 0x7000) >> 12);
23512 			} else {
23513 				target_gain.ipa[core_no] =
23514 					curr_gain[core_no] & 0x0003;
23515 				target_gain.pad[core_no] =
23516 					((curr_gain[core_no] & 0x000C) >> 2);
23517 				target_gain.pga[core_no] =
23518 					((curr_gain[core_no] & 0x0070) >> 4);
23519 				target_gain.txgm[core_no] =
23520 					((curr_gain[core_no] & 0x0380) >> 7);
23521 			}
23522 		}
23523 	} else {
23524 		uint phyrev = pi->pubpi.phy_rev;
23525 
23526 		base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23527 		base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23528 		for (core_no = 0; core_no < 2; core_no++) {
23529 			if (NREV_GE(phyrev, 3)) {
23530 				tx_pwrctrl_tbl =
23531 					brcms_phy_get_tx_pwrctrl_tbl(pi);
23532 				if (NREV_GE(phyrev, 7)) {
23533 					target_gain.ipa[core_no] =
23534 						(tx_pwrctrl_tbl
23535 						 [base_idx[core_no]]
23536 						 >> 16) & 0x7;
23537 					target_gain.pad[core_no] =
23538 						(tx_pwrctrl_tbl
23539 						 [base_idx[core_no]]
23540 						 >> 19) & 0x1f;
23541 					target_gain.pga[core_no] =
23542 						(tx_pwrctrl_tbl
23543 						 [base_idx[core_no]]
23544 						 >> 24) & 0xf;
23545 					target_gain.txgm[core_no] =
23546 						(tx_pwrctrl_tbl
23547 						 [base_idx[core_no]]
23548 						 >> 28) & 0x7;
23549 					target_gain.txlpf[core_no] =
23550 						(tx_pwrctrl_tbl
23551 						 [base_idx[core_no]]
23552 						 >> 31) & 0x1;
23553 				} else {
23554 					target_gain.ipa[core_no] =
23555 						(tx_pwrctrl_tbl
23556 						 [base_idx[core_no]]
23557 						 >> 16) & 0xf;
23558 					target_gain.pad[core_no] =
23559 						(tx_pwrctrl_tbl
23560 						 [base_idx[core_no]]
23561 						 >> 20) & 0xf;
23562 					target_gain.pga[core_no] =
23563 						(tx_pwrctrl_tbl
23564 						 [base_idx[core_no]]
23565 						 >> 24) & 0xf;
23566 					target_gain.txgm[core_no] =
23567 						(tx_pwrctrl_tbl
23568 						[base_idx[core_no]]
23569 						 >> 28) & 0x7;
23570 				}
23571 			} else {
23572 				target_gain.ipa[core_no] =
23573 					(nphy_tpc_txgain[base_idx[core_no]] >>
23574 					 16) & 0x3;
23575 				target_gain.pad[core_no] =
23576 					(nphy_tpc_txgain[base_idx[core_no]] >>
23577 					 18) & 0x3;
23578 				target_gain.pga[core_no] =
23579 					(nphy_tpc_txgain[base_idx[core_no]] >>
23580 					 20) & 0x7;
23581 				target_gain.txgm[core_no] =
23582 					(nphy_tpc_txgain[base_idx[core_no]] >>
23583 					 23) & 0x7;
23584 			}
23585 		}
23586 	}
23587 
23588 	return target_gain;
23589 }
23590 
23591 static void
wlc_phy_iqcal_gainparams_nphy(struct brcms_phy * pi,u16 core_no,struct nphy_txgains target_gain,struct nphy_iqcal_params * params)23592 wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23593 			      struct nphy_txgains target_gain,
23594 			      struct nphy_iqcal_params *params)
23595 {
23596 	u8 k;
23597 	int idx;
23598 	u16 gain_index;
23599 	u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23600 
23601 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23602 		if (NREV_GE(pi->pubpi.phy_rev, 7))
23603 			params->txlpf = target_gain.txlpf[core_no];
23604 
23605 		params->txgm = target_gain.txgm[core_no];
23606 		params->pga = target_gain.pga[core_no];
23607 		params->pad = target_gain.pad[core_no];
23608 		params->ipa = target_gain.ipa[core_no];
23609 		if (NREV_GE(pi->pubpi.phy_rev, 7))
23610 			params->cal_gain =
23611 				((params->txlpf << 15) | (params->txgm << 12) |
23612 				 (params->pga << 8) |
23613 				 (params->pad << 3) | (params->ipa));
23614 		else
23615 			params->cal_gain =
23616 				((params->txgm << 12) | (params->pga << 8) |
23617 				 (params->pad << 4) | (params->ipa));
23618 
23619 		params->ncorr[0] = 0x79;
23620 		params->ncorr[1] = 0x79;
23621 		params->ncorr[2] = 0x79;
23622 		params->ncorr[3] = 0x79;
23623 		params->ncorr[4] = 0x79;
23624 	} else {
23625 
23626 		gain_index = ((target_gain.pad[core_no] << 0) |
23627 			      (target_gain.pga[core_no] << 4) |
23628 			      (target_gain.txgm[core_no] << 8));
23629 
23630 		idx = -1;
23631 		for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23632 			if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23633 			    gain_index) {
23634 				idx = k;
23635 				break;
23636 			}
23637 		}
23638 
23639 		params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23640 		params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23641 		params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23642 		params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23643 				    (params->pad << 2));
23644 		params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23645 		params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23646 		params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23647 		params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23648 	}
23649 }
23650 
wlc_phy_txcal_radio_setup_nphy(struct brcms_phy * pi)23651 static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23652 {
23653 	u16 jtag_core, core;
23654 
23655 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23656 
23657 		for (core = 0; core <= 1; core++) {
23658 
23659 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23660 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23661 						TX_SSI_MASTER);
23662 
23663 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23664 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23665 						IQCAL_VCM_HG);
23666 
23667 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23668 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23669 						IQCAL_IDAC);
23670 
23671 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23672 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23673 						TSSI_VCM);
23674 
23675 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23676 
23677 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23678 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23679 						TX_SSI_MUX);
23680 
23681 			if (pi->pubpi.radiorev != 5)
23682 				pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23683 					READ_RADIO_REG3(pi, RADIO_2057, TX,
23684 							core,
23685 							TSSIA);
23686 
23687 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23688 			       READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23689 
23690 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23691 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23692 						TSSI_MISC1);
23693 
23694 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
23695 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23696 						 TX_SSI_MASTER, 0x0a);
23697 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23698 						 IQCAL_VCM_HG, 0x43);
23699 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23700 						 IQCAL_IDAC, 0x55);
23701 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23702 						 TSSI_VCM, 0x00);
23703 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23704 						 TSSIG, 0x00);
23705 				if (pi->use_int_tx_iqlo_cal_nphy) {
23706 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23707 							 core, TX_SSI_MUX, 0x4);
23708 					if (!(pi->
23709 					internal_tx_iqlo_cal_tapoff_intpa_nphy))
23710 						WRITE_RADIO_REG3(pi, RADIO_2057,
23711 								 TX, core,
23712 								 TSSIA, 0x31);
23713 					else
23714 						WRITE_RADIO_REG3(pi, RADIO_2057,
23715 								 TX, core,
23716 								 TSSIA, 0x21);
23717 				}
23718 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23719 						 TSSI_MISC1, 0x00);
23720 			} else {
23721 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23722 						 TX_SSI_MASTER, 0x06);
23723 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23724 						 IQCAL_VCM_HG, 0x43);
23725 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23726 						 IQCAL_IDAC, 0x55);
23727 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23728 						 TSSI_VCM, 0x00);
23729 
23730 				if (pi->pubpi.radiorev != 5)
23731 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23732 							 core, TSSIA, 0x00);
23733 				if (pi->use_int_tx_iqlo_cal_nphy) {
23734 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23735 							 core, TX_SSI_MUX,
23736 							 0x06);
23737 					if (!(pi->
23738 					internal_tx_iqlo_cal_tapoff_intpa_nphy))
23739 						WRITE_RADIO_REG3(pi, RADIO_2057,
23740 								 TX, core,
23741 								 TSSIG, 0x31);
23742 					else
23743 						WRITE_RADIO_REG3(pi, RADIO_2057,
23744 								 TX, core,
23745 								 TSSIG, 0x21);
23746 				}
23747 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23748 						 TSSI_MISC1, 0x00);
23749 			}
23750 		}
23751 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23752 
23753 		for (core = 0; core <= 1; core++) {
23754 			jtag_core =
23755 				(core ==
23756 				 PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23757 
23758 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23759 				read_radio_reg(pi,
23760 					       RADIO_2056_TX_TX_SSI_MASTER |
23761 					       jtag_core);
23762 
23763 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23764 				read_radio_reg(pi,
23765 					       RADIO_2056_TX_IQCAL_VCM_HG |
23766 					       jtag_core);
23767 
23768 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23769 				read_radio_reg(pi,
23770 					       RADIO_2056_TX_IQCAL_IDAC |
23771 					       jtag_core);
23772 
23773 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23774 				read_radio_reg(
23775 					pi,
23776 					RADIO_2056_TX_TSSI_VCM |
23777 					jtag_core);
23778 
23779 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23780 				read_radio_reg(pi,
23781 					       RADIO_2056_TX_TX_AMP_DET |
23782 					       jtag_core);
23783 
23784 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23785 				read_radio_reg(pi,
23786 					       RADIO_2056_TX_TX_SSI_MUX |
23787 					       jtag_core);
23788 
23789 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23790 				read_radio_reg(pi,
23791 					       RADIO_2056_TX_TSSIA | jtag_core);
23792 
23793 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23794 				read_radio_reg(pi,
23795 					       RADIO_2056_TX_TSSIG | jtag_core);
23796 
23797 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23798 				read_radio_reg(pi,
23799 					       RADIO_2056_TX_TSSI_MISC1 |
23800 					       jtag_core);
23801 
23802 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23803 				read_radio_reg(pi,
23804 					       RADIO_2056_TX_TSSI_MISC2 |
23805 					       jtag_core);
23806 
23807 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23808 				read_radio_reg(pi,
23809 					       RADIO_2056_TX_TSSI_MISC3 |
23810 					       jtag_core);
23811 
23812 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
23813 				write_radio_reg(pi,
23814 						RADIO_2056_TX_TX_SSI_MASTER |
23815 						jtag_core, 0x0a);
23816 				write_radio_reg(pi,
23817 						RADIO_2056_TX_IQCAL_VCM_HG |
23818 						jtag_core, 0x40);
23819 				write_radio_reg(pi,
23820 						RADIO_2056_TX_IQCAL_IDAC |
23821 						jtag_core, 0x55);
23822 				write_radio_reg(pi,
23823 						RADIO_2056_TX_TSSI_VCM |
23824 						jtag_core, 0x00);
23825 				write_radio_reg(pi,
23826 						RADIO_2056_TX_TX_AMP_DET |
23827 						jtag_core, 0x00);
23828 
23829 				if (PHY_IPA(pi)) {
23830 					write_radio_reg(
23831 						pi,
23832 						RADIO_2056_TX_TX_SSI_MUX
23833 						| jtag_core, 0x4);
23834 					write_radio_reg(pi,
23835 							RADIO_2056_TX_TSSIA |
23836 							jtag_core, 0x1);
23837 				} else {
23838 					write_radio_reg(
23839 						pi,
23840 						RADIO_2056_TX_TX_SSI_MUX
23841 						| jtag_core, 0x00);
23842 					write_radio_reg(pi,
23843 							RADIO_2056_TX_TSSIA |
23844 							jtag_core, 0x2f);
23845 				}
23846 				write_radio_reg(pi,
23847 						RADIO_2056_TX_TSSIG | jtag_core,
23848 						0x00);
23849 				write_radio_reg(pi,
23850 						RADIO_2056_TX_TSSI_MISC1 |
23851 						jtag_core, 0x00);
23852 
23853 				write_radio_reg(pi,
23854 						RADIO_2056_TX_TSSI_MISC2 |
23855 						jtag_core, 0x00);
23856 				write_radio_reg(pi,
23857 						RADIO_2056_TX_TSSI_MISC3 |
23858 						jtag_core, 0x00);
23859 			} else {
23860 				write_radio_reg(pi,
23861 						RADIO_2056_TX_TX_SSI_MASTER |
23862 						jtag_core, 0x06);
23863 				write_radio_reg(pi,
23864 						RADIO_2056_TX_IQCAL_VCM_HG |
23865 						jtag_core, 0x40);
23866 				write_radio_reg(pi,
23867 						RADIO_2056_TX_IQCAL_IDAC |
23868 						jtag_core, 0x55);
23869 				write_radio_reg(pi,
23870 						RADIO_2056_TX_TSSI_VCM |
23871 						jtag_core, 0x00);
23872 				write_radio_reg(pi,
23873 						RADIO_2056_TX_TX_AMP_DET |
23874 						jtag_core, 0x00);
23875 				write_radio_reg(pi,
23876 						RADIO_2056_TX_TSSIA | jtag_core,
23877 						0x00);
23878 
23879 				if (PHY_IPA(pi)) {
23880 
23881 					write_radio_reg(
23882 						pi,
23883 						RADIO_2056_TX_TX_SSI_MUX
23884 						| jtag_core, 0x06);
23885 					if (NREV_LT(pi->pubpi.phy_rev, 5))
23886 						write_radio_reg(
23887 							pi,
23888 							RADIO_2056_TX_TSSIG
23889 							| jtag_core,
23890 							0x11);
23891 					else
23892 						write_radio_reg(
23893 							pi,
23894 							RADIO_2056_TX_TSSIG
23895 							| jtag_core,
23896 							0x1);
23897 				} else {
23898 					write_radio_reg(
23899 						pi,
23900 						RADIO_2056_TX_TX_SSI_MUX
23901 						| jtag_core, 0x00);
23902 					write_radio_reg(pi,
23903 							RADIO_2056_TX_TSSIG |
23904 							jtag_core, 0x20);
23905 				}
23906 
23907 				write_radio_reg(pi,
23908 						RADIO_2056_TX_TSSI_MISC1 |
23909 						jtag_core, 0x00);
23910 				write_radio_reg(pi,
23911 						RADIO_2056_TX_TSSI_MISC2 |
23912 						jtag_core, 0x00);
23913 				write_radio_reg(pi,
23914 						RADIO_2056_TX_TSSI_MISC3 |
23915 						jtag_core, 0x00);
23916 			}
23917 		}
23918 	} else {
23919 
23920 		pi->tx_rx_cal_radio_saveregs[0] =
23921 			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23922 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23923 		pi->tx_rx_cal_radio_saveregs[1] =
23924 			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23925 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23926 
23927 		pi->tx_rx_cal_radio_saveregs[2] =
23928 			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23929 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23930 		pi->tx_rx_cal_radio_saveregs[3] =
23931 			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23932 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23933 
23934 		pi->tx_rx_cal_radio_saveregs[4] =
23935 			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23936 		pi->tx_rx_cal_radio_saveregs[5] =
23937 			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23938 
23939 		if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23940 		    0) {
23941 
23942 			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23943 			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23944 		} else {
23945 
23946 			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23947 			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23948 		}
23949 
23950 		if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23951 
23952 			or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23953 			or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23954 		} else {
23955 
23956 			and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23957 			and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23958 		}
23959 	}
23960 }
23961 
wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy * pi)23962 static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
23963 {
23964 	u16 jtag_core, core;
23965 
23966 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23967 		for (core = 0; core <= 1; core++) {
23968 
23969 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23970 					 TX_SSI_MASTER,
23971 					 pi->
23972 					 tx_rx_cal_radio_saveregs[(core * 11) +
23973 								  0]);
23974 
23975 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23976 					 pi->
23977 					 tx_rx_cal_radio_saveregs[(core * 11) +
23978 								  1]);
23979 
23980 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23981 					 pi->
23982 					 tx_rx_cal_radio_saveregs[(core * 11) +
23983 								  2]);
23984 
23985 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23986 					 pi->
23987 					 tx_rx_cal_radio_saveregs[(core * 11) +
23988 								  3]);
23989 
23990 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23991 					 pi->
23992 					 tx_rx_cal_radio_saveregs[(core * 11) +
23993 								  5]);
23994 
23995 			if (pi->pubpi.radiorev != 5)
23996 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23997 						 TSSIA,
23998 						 pi->tx_rx_cal_radio_saveregs
23999 							     [(core * 11) + 6]);
24000 
24001 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
24002 					 pi->
24003 					 tx_rx_cal_radio_saveregs[(core * 11) +
24004 								  7]);
24005 
24006 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
24007 					 pi->
24008 					 tx_rx_cal_radio_saveregs[(core * 11) +
24009 								  8]);
24010 		}
24011 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24012 		for (core = 0; core <= 1; core++) {
24013 			jtag_core = (core == PHY_CORE_0) ?
24014 				     RADIO_2056_TX0 : RADIO_2056_TX1;
24015 
24016 			write_radio_reg(pi,
24017 					RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
24018 					pi->
24019 					tx_rx_cal_radio_saveregs[(core * 11) +
24020 								 0]);
24021 
24022 			write_radio_reg(pi,
24023 					RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
24024 					pi->
24025 					tx_rx_cal_radio_saveregs[(core * 11) +
24026 								 1]);
24027 
24028 			write_radio_reg(pi,
24029 					RADIO_2056_TX_IQCAL_IDAC | jtag_core,
24030 					pi->
24031 					tx_rx_cal_radio_saveregs[(core * 11) +
24032 								 2]);
24033 
24034 			write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
24035 					pi->
24036 					tx_rx_cal_radio_saveregs[(core * 11) +
24037 								 3]);
24038 
24039 			write_radio_reg(pi,
24040 					RADIO_2056_TX_TX_AMP_DET | jtag_core,
24041 					pi->
24042 					tx_rx_cal_radio_saveregs[(core * 11) +
24043 								 4]);
24044 
24045 			write_radio_reg(pi,
24046 					RADIO_2056_TX_TX_SSI_MUX | jtag_core,
24047 					pi->
24048 					tx_rx_cal_radio_saveregs[(core * 11) +
24049 								 5]);
24050 
24051 			write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
24052 					pi->
24053 					tx_rx_cal_radio_saveregs[(core * 11) +
24054 								 6]);
24055 
24056 			write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
24057 					pi->
24058 					tx_rx_cal_radio_saveregs[(core * 11) +
24059 								 7]);
24060 
24061 			write_radio_reg(pi,
24062 					RADIO_2056_TX_TSSI_MISC1 | jtag_core,
24063 					pi->
24064 					tx_rx_cal_radio_saveregs[(core * 11) +
24065 								 8]);
24066 
24067 			write_radio_reg(pi,
24068 					RADIO_2056_TX_TSSI_MISC2 | jtag_core,
24069 					pi->
24070 					tx_rx_cal_radio_saveregs[(core * 11) +
24071 								 9]);
24072 
24073 			write_radio_reg(pi,
24074 					RADIO_2056_TX_TSSI_MISC3 | jtag_core,
24075 					pi->
24076 					tx_rx_cal_radio_saveregs[(core * 11) +
24077 								 10]);
24078 		}
24079 	} else {
24080 
24081 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
24082 				pi->tx_rx_cal_radio_saveregs[0]);
24083 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
24084 				pi->tx_rx_cal_radio_saveregs[1]);
24085 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
24086 				pi->tx_rx_cal_radio_saveregs[2]);
24087 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
24088 				pi->tx_rx_cal_radio_saveregs[3]);
24089 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
24090 				pi->tx_rx_cal_radio_saveregs[4]);
24091 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
24092 				pi->tx_rx_cal_radio_saveregs[5]);
24093 	}
24094 }
24095 
wlc_phy_txcal_physetup_nphy(struct brcms_phy * pi)24096 static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
24097 {
24098 	u16 val, mask;
24099 
24100 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24101 		pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24102 		pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24103 
24104 		mask = ((0x3 << 8) | (0x3 << 10));
24105 		val = (0x2 << 8);
24106 		val |= (0x2 << 10);
24107 		mod_phy_reg(pi, 0xa6, mask, val);
24108 		mod_phy_reg(pi, 0xa7, mask, val);
24109 
24110 		val = read_phy_reg(pi, 0x8f);
24111 		pi->tx_rx_cal_phy_saveregs[2] = val;
24112 		val |= ((0x1 << 9) | (0x1 << 10));
24113 		write_phy_reg(pi, 0x8f, val);
24114 
24115 		val = read_phy_reg(pi, 0xa5);
24116 		pi->tx_rx_cal_phy_saveregs[3] = val;
24117 		val |= ((0x1 << 9) | (0x1 << 10));
24118 		write_phy_reg(pi, 0xa5, val);
24119 
24120 		pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
24121 		mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
24122 
24123 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24124 					&val);
24125 		pi->tx_rx_cal_phy_saveregs[5] = val;
24126 		val = 0;
24127 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24128 					 &val);
24129 
24130 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24131 					&val);
24132 		pi->tx_rx_cal_phy_saveregs[6] = val;
24133 		val = 0;
24134 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24135 					 &val);
24136 
24137 		pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
24138 		pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
24139 
24140 		if (!(pi->use_int_tx_iqlo_cal_nphy))
24141 			wlc_phy_rfctrlintc_override_nphy(
24142 				pi,
24143 				NPHY_RfctrlIntc_override_PA,
24144 				1,
24145 				RADIO_MIMO_CORESEL_CORE1
24146 				|
24147 				RADIO_MIMO_CORESEL_CORE2);
24148 		else
24149 			wlc_phy_rfctrlintc_override_nphy(
24150 				pi,
24151 				NPHY_RfctrlIntc_override_PA,
24152 				0,
24153 				RADIO_MIMO_CORESEL_CORE1
24154 				|
24155 				RADIO_MIMO_CORESEL_CORE2);
24156 
24157 		wlc_phy_rfctrlintc_override_nphy(pi,
24158 						 NPHY_RfctrlIntc_override_TRSW,
24159 						 0x2, RADIO_MIMO_CORESEL_CORE1);
24160 		wlc_phy_rfctrlintc_override_nphy(pi,
24161 						 NPHY_RfctrlIntc_override_TRSW,
24162 						 0x8, RADIO_MIMO_CORESEL_CORE2);
24163 
24164 		pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
24165 		pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
24166 		mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
24167 			    0x29b, (0x1 << 0), (0) << 0);
24168 
24169 		mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
24170 			    0x29b, (0x1 << 0), (0) << 0);
24171 
24172 		if (NREV_IS(pi->pubpi.phy_rev, 7)
24173 		    || NREV_GE(pi->pubpi.phy_rev, 8))
24174 			wlc_phy_rfctrl_override_nphy_rev7(
24175 				pi, (0x1 << 7),
24176 				wlc_phy_read_lpf_bw_ctl_nphy
24177 					(pi,
24178 					0), 0, 0,
24179 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
24180 
24181 		if (pi->use_int_tx_iqlo_cal_nphy
24182 		    && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24183 
24184 			if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24185 
24186 				mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24187 					      1 << 4);
24188 
24189 				if (CHSPEC_IS2G(pi->radio_chanspec)) {
24190 					mod_radio_reg(
24191 						pi,
24192 						RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24193 						1, 0);
24194 					mod_radio_reg(
24195 						pi,
24196 						RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24197 						1, 0);
24198 				} else {
24199 					mod_radio_reg(
24200 					     pi,
24201 					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24202 					     1, 0);
24203 					mod_radio_reg(
24204 					     pi,
24205 					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24206 					     1, 0);
24207 				}
24208 			} else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24209 				wlc_phy_rfctrl_override_nphy_rev7(
24210 					pi,
24211 					(0x1 << 3), 0,
24212 					0x3, 0,
24213 					NPHY_REV7_RFCTRLOVERRIDE_ID0);
24214 			}
24215 		}
24216 	} else {
24217 		pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24218 		pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24219 
24220 		mask = ((0x3 << 12) | (0x3 << 14));
24221 		val = (0x2 << 12);
24222 		val |= (0x2 << 14);
24223 		mod_phy_reg(pi, 0xa6, mask, val);
24224 		mod_phy_reg(pi, 0xa7, mask, val);
24225 
24226 		val = read_phy_reg(pi, 0xa5);
24227 		pi->tx_rx_cal_phy_saveregs[2] = val;
24228 		val |= ((0x1 << 12) | (0x1 << 13));
24229 		write_phy_reg(pi, 0xa5, val);
24230 
24231 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24232 					&val);
24233 		pi->tx_rx_cal_phy_saveregs[3] = val;
24234 		val |= 0x2000;
24235 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24236 					 &val);
24237 
24238 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24239 					&val);
24240 		pi->tx_rx_cal_phy_saveregs[4] = val;
24241 		val |= 0x2000;
24242 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24243 					 &val);
24244 
24245 		pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24246 		pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24247 		val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24248 		write_phy_reg(pi, 0x91, val);
24249 		write_phy_reg(pi, 0x92, val);
24250 	}
24251 }
24252 
wlc_phy_txcal_phycleanup_nphy(struct brcms_phy * pi)24253 static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24254 {
24255 	u16 mask;
24256 
24257 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24258 		write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24259 		write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24260 		write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24261 		write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24262 		write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24263 
24264 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24265 					 &pi->tx_rx_cal_phy_saveregs[5]);
24266 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24267 					 &pi->tx_rx_cal_phy_saveregs[6]);
24268 
24269 		write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24270 		write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24271 
24272 		write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24273 		write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24274 
24275 		if (NREV_IS(pi->pubpi.phy_rev, 7)
24276 		    || NREV_GE(pi->pubpi.phy_rev, 8))
24277 			wlc_phy_rfctrl_override_nphy_rev7(
24278 				pi, (0x1 << 7), 0, 0,
24279 				1,
24280 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
24281 
24282 		wlc_phy_resetcca_nphy(pi);
24283 
24284 		if (pi->use_int_tx_iqlo_cal_nphy
24285 		    && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24286 
24287 			if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24288 				if (CHSPEC_IS2G(pi->radio_chanspec)) {
24289 					mod_radio_reg(
24290 						pi,
24291 						RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24292 						1, 1);
24293 					mod_radio_reg(
24294 						pi,
24295 						RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24296 						1, 1);
24297 				} else {
24298 					mod_radio_reg(
24299 					     pi,
24300 					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24301 					     1, 1);
24302 					mod_radio_reg(
24303 					     pi,
24304 					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24305 					     1, 1);
24306 				}
24307 
24308 				mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24309 					      0);
24310 			} else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24311 				wlc_phy_rfctrl_override_nphy_rev7(
24312 					pi,
24313 					(0x1 << 3), 0,
24314 					0x3, 1,
24315 					NPHY_REV7_RFCTRLOVERRIDE_ID0);
24316 			}
24317 		}
24318 	} else {
24319 		mask = ((0x3 << 12) | (0x3 << 14));
24320 		mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24321 		mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24322 		write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24323 
24324 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24325 					 &pi->tx_rx_cal_phy_saveregs[3]);
24326 
24327 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24328 					 &pi->tx_rx_cal_phy_saveregs[4]);
24329 
24330 		write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24331 		write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24332 	}
24333 }
24334 
24335 void
wlc_phy_est_tonepwr_nphy(struct brcms_phy * pi,s32 * qdBm_pwrbuf,u8 num_samps)24336 wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24337 {
24338 	u16 tssi_reg;
24339 	s32 temp, pwrindex[2];
24340 	s32 idle_tssi[2];
24341 	s32 rssi_buf[4];
24342 	s32 tssival[2];
24343 	u8 tssi_type;
24344 
24345 	tssi_reg = read_phy_reg(pi, 0x1e9);
24346 
24347 	temp = (s32) (tssi_reg & 0x3f);
24348 	idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24349 
24350 	temp = (s32) ((tssi_reg >> 8) & 0x3f);
24351 	idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24352 
24353 	tssi_type =
24354 		CHSPEC_IS5G(pi->radio_chanspec) ?
24355 		(u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24356 
24357 	wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24358 
24359 	tssival[0] = rssi_buf[0] / ((s32) num_samps);
24360 	tssival[1] = rssi_buf[2] / ((s32) num_samps);
24361 
24362 	pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24363 	pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24364 
24365 	if (pwrindex[0] < 0)
24366 		pwrindex[0] = 0;
24367 	else if (pwrindex[0] > 63)
24368 		pwrindex[0] = 63;
24369 
24370 	if (pwrindex[1] < 0)
24371 		pwrindex[1] = 0;
24372 	else if (pwrindex[1] > 63)
24373 		pwrindex[1] = 63;
24374 
24375 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24376 				(u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24377 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24378 				(u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24379 }
24380 
wlc_phy_update_txcal_ladder_nphy(struct brcms_phy * pi,u16 core)24381 static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24382 {
24383 	int index;
24384 	u32 bbmult_scale;
24385 	u16 bbmult;
24386 	u16 tblentry;
24387 
24388 	struct nphy_txiqcal_ladder ladder_lo[] = {
24389 		{3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24390 		{25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24391 		{25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24392 	};
24393 
24394 	struct nphy_txiqcal_ladder ladder_iq[] = {
24395 		{3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24396 		{25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24397 		{100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24398 	};
24399 
24400 	bbmult = (core == PHY_CORE_0) ?
24401 		 ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24402 		 (pi->nphy_txcal_bbmult & 0xff);
24403 
24404 	for (index = 0; index < 18; index++) {
24405 		bbmult_scale = ladder_lo[index].percent * bbmult;
24406 		bbmult_scale /= 100;
24407 
24408 		tblentry =
24409 			((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24410 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24411 					 &tblentry);
24412 
24413 		bbmult_scale = ladder_iq[index].percent * bbmult;
24414 		bbmult_scale /= 100;
24415 
24416 		tblentry =
24417 			((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24418 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24419 					 16, &tblentry);
24420 	}
24421 }
24422 
wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy * pi,u8 core)24423 static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24424 {
24425 	u16 tmp;
24426 	tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24427 
24428 	tmp = (tmp & (0x7f << 8)) >> 8;
24429 	return (u8) tmp;
24430 }
24431 
24432 static void
wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy * pi,u8 idx0,u8 idx1)24433 wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24434 {
24435 	mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24436 
24437 	if (NREV_GT(pi->pubpi.phy_rev, 1))
24438 		mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24439 }
24440 
wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy * pi)24441 static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24442 {
24443 	u16 m0m1;
24444 
24445 	wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24446 
24447 	return m0m1;
24448 }
24449 
wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy * pi,u8 m0,u8 m1)24450 static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24451 {
24452 	u16 m0m1 = (u16) ((m0 << 8) | m1);
24453 
24454 	wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24455 	wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24456 }
24457 
24458 static void
wlc_phy_papd_cal_setup_nphy(struct brcms_phy * pi,struct nphy_papd_restore_state * state,u8 core)24459 wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24460 			    struct nphy_papd_restore_state *state, u8 core)
24461 {
24462 	s32 tone_freq;
24463 	u8 off_core;
24464 	u16 mixgain = 0;
24465 
24466 	off_core = core ^ 0x1;
24467 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24468 
24469 		if (NREV_IS(pi->pubpi.phy_rev, 7)
24470 		    || NREV_GE(pi->pubpi.phy_rev, 8))
24471 			wlc_phy_rfctrl_override_nphy_rev7(
24472 				pi, (0x1 << 7),
24473 				wlc_phy_read_lpf_bw_ctl_nphy
24474 					(pi,
24475 					0), 0, 0,
24476 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
24477 
24478 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24479 			if (pi->pubpi.radiorev == 5)
24480 				mixgain = (core == 0) ? 0x20 : 0x00;
24481 			else if ((pi->pubpi.radiorev == 7)
24482 				 || (pi->pubpi.radiorev == 8))
24483 				mixgain = 0x00;
24484 			else if ((pi->pubpi.radiorev <= 4)
24485 				 || (pi->pubpi.radiorev == 6))
24486 				mixgain = 0x00;
24487 		} else {
24488 			if ((pi->pubpi.radiorev == 4) ||
24489 			    (pi->pubpi.radiorev == 6))
24490 				mixgain = 0x50;
24491 			else if ((pi->pubpi.radiorev == 3)
24492 				 || (pi->pubpi.radiorev == 7)
24493 				 || (pi->pubpi.radiorev == 8))
24494 				mixgain = 0x0;
24495 		}
24496 
24497 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24498 						  mixgain, (1 << core), 0,
24499 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24500 
24501 		wlc_phy_rfctrl_override_1tomany_nphy(
24502 			pi,
24503 			NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24504 			1, (1 << core), 0);
24505 		wlc_phy_rfctrl_override_1tomany_nphy(
24506 			pi,
24507 			NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24508 			0, (1 << off_core), 0);
24509 
24510 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24511 						  0, 0x3, 0,
24512 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24513 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24514 						  (1 << core), 0,
24515 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24516 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24517 						  (1 << core), 0,
24518 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24519 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24520 						  (1 << core), 0,
24521 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24522 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24523 						  (1 << core), 0,
24524 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24525 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24526 						  (1 << core), 0,
24527 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24528 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24529 						  (1 << core), 0,
24530 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24531 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24532 						  (1 << core), 0,
24533 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24534 
24535 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24536 						  0, (1 << core), 0,
24537 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24538 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24539 						  (1 << core), 0,
24540 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24541 
24542 		state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24543 						    0xa6 : 0xa7);
24544 		state->afeoverride[core] =
24545 			read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24546 		state->afectrl[off_core] =
24547 			read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24548 		state->afeoverride[off_core] =
24549 			read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24550 
24551 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24552 			    (0x1 << 2), 0);
24553 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24554 				 0xa5), (0x1 << 2), (0x1 << 2));
24555 
24556 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24557 			    (0x1 << 2), (0x1 << 2));
24558 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24559 				 0x8f), (0x1 << 2), (0x1 << 2));
24560 
24561 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24562 			state->pwrup[core] =
24563 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24564 						TXRXCOUPLE_2G_PWRUP);
24565 			state->atten[core] =
24566 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24567 						TXRXCOUPLE_2G_ATTEN);
24568 			state->pwrup[off_core] =
24569 				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24570 						TXRXCOUPLE_2G_PWRUP);
24571 			state->atten[off_core] =
24572 				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24573 						TXRXCOUPLE_2G_ATTEN);
24574 
24575 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24576 					 TXRXCOUPLE_2G_PWRUP, 0xc);
24577 
24578 			if ((pi->pubpi.radiorev == 3) ||
24579 			    (pi->pubpi.radiorev == 4) ||
24580 			    (pi->pubpi.radiorev == 6))
24581 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24582 						 TXRXCOUPLE_2G_ATTEN, 0xf0);
24583 			else if (pi->pubpi.radiorev == 5)
24584 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24585 						 TXRXCOUPLE_2G_ATTEN,
24586 						 (core == 0) ? 0xf7 : 0xf2);
24587 			else if ((pi->pubpi.radiorev == 7)
24588 				 || (pi->pubpi.radiorev == 8))
24589 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24590 						 TXRXCOUPLE_2G_ATTEN, 0xf0);
24591 
24592 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24593 					 TXRXCOUPLE_2G_PWRUP, 0x0);
24594 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24595 					 TXRXCOUPLE_2G_ATTEN, 0xff);
24596 		} else {
24597 			state->pwrup[core] =
24598 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24599 						TXRXCOUPLE_5G_PWRUP);
24600 			state->atten[core] =
24601 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24602 						TXRXCOUPLE_5G_ATTEN);
24603 			state->pwrup[off_core] =
24604 				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24605 						TXRXCOUPLE_5G_PWRUP);
24606 			state->atten[off_core] =
24607 				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24608 						TXRXCOUPLE_5G_ATTEN);
24609 
24610 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24611 					 TXRXCOUPLE_5G_PWRUP, 0xc);
24612 
24613 			if ((pi->pubpi.radiorev == 7)
24614 			    || (pi->pubpi.radiorev == 8))
24615 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24616 						 TXRXCOUPLE_5G_ATTEN, 0xf4);
24617 
24618 			else
24619 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24620 						 TXRXCOUPLE_5G_ATTEN, 0xf0);
24621 
24622 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24623 					 TXRXCOUPLE_5G_PWRUP, 0x0);
24624 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24625 					 TXRXCOUPLE_5G_ATTEN, 0xff);
24626 		}
24627 
24628 		tone_freq = 4000;
24629 
24630 		wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24631 
24632 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24633 			    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24634 
24635 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24636 			    0x2a4, (0x1 << 13), (1) << 13);
24637 
24638 		mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24639 			    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24640 
24641 		mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24642 			    0x2a4, (0x1 << 13), (0) << 13);
24643 
24644 	} else {
24645 
24646 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24647 
24648 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24649 
24650 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24651 
24652 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24653 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24654 
24655 		state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24656 						    0xa6 : 0xa7);
24657 		state->afeoverride[core] =
24658 			read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24659 
24660 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24661 			    (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24662 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24663 				 0xa5),
24664 			    (0x1 << 0) |
24665 			    (0x1 << 1) |
24666 			    (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24667 
24668 		state->vga_master[core] =
24669 			READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24670 		WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24671 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24672 			state->fbmix[core] =
24673 				READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24674 						TXFBMIX_G);
24675 			state->intpa_master[core] =
24676 				READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24677 						INTPAG_MASTER);
24678 
24679 			WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24680 					 0x03);
24681 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24682 					 INTPAG_MASTER, 0x04);
24683 		} else {
24684 			state->fbmix[core] =
24685 				READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24686 						TXFBMIX_A);
24687 			state->intpa_master[core] =
24688 				READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24689 						INTPAA_MASTER);
24690 
24691 			WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24692 					 0x03);
24693 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24694 					 INTPAA_MASTER, 0x04);
24695 
24696 		}
24697 
24698 		tone_freq = 4000;
24699 
24700 		wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24701 
24702 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24703 			    0x29b, (0x1 << 0), (1) << 0);
24704 
24705 		mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24706 			    0x29b, (0x1 << 0), (0) << 0);
24707 
24708 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24709 	}
24710 }
24711 
24712 static void
wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy * pi,struct nphy_papd_restore_state * state)24713 wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24714 			      struct nphy_papd_restore_state *state)
24715 {
24716 	u8 core;
24717 
24718 	wlc_phy_stopplayback_nphy(pi);
24719 
24720 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24721 
24722 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24723 
24724 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
24725 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24726 						 TXRXCOUPLE_2G_PWRUP, 0);
24727 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24728 						 TXRXCOUPLE_2G_ATTEN,
24729 						 state->atten[core]);
24730 			} else {
24731 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24732 						 TXRXCOUPLE_5G_PWRUP, 0);
24733 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24734 						 TXRXCOUPLE_5G_ATTEN,
24735 						 state->atten[core]);
24736 			}
24737 		}
24738 
24739 		if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24740 			wlc_phy_rfctrl_override_nphy_rev7(
24741 				pi, (0x1 << 2),
24742 				1, 0x3, 0,
24743 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
24744 		else
24745 			wlc_phy_rfctrl_override_nphy_rev7(
24746 				pi, (0x1 << 2),
24747 				0, 0x3, 1,
24748 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
24749 
24750 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24751 						  0, 0x3, 1,
24752 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24753 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24754 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24755 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24756 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24757 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24758 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24759 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24760 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24761 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24762 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24763 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24764 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24765 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24766 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24767 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24768 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24769 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24770 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24771 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24772 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24773 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24774 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24775 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24776 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24777 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24778 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24779 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24780 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24781 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24782 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24783 
24784 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24785 
24786 			write_phy_reg(pi, (core == PHY_CORE_0) ?
24787 				      0xa6 : 0xa7, state->afectrl[core]);
24788 			write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24789 				      0xa5, state->afeoverride[core]);
24790 		}
24791 
24792 		wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24793 					    (state->mm & 0xff));
24794 
24795 		if (NREV_IS(pi->pubpi.phy_rev, 7)
24796 		    || NREV_GE(pi->pubpi.phy_rev, 8))
24797 			wlc_phy_rfctrl_override_nphy_rev7(
24798 				pi, (0x1 << 7), 0, 0,
24799 				1,
24800 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
24801 	} else {
24802 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24803 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24804 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24805 
24806 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24807 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24808 
24809 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24810 
24811 			WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24812 					 state->vga_master[core]);
24813 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
24814 				WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24815 						 TXFBMIX_G, state->fbmix[core]);
24816 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24817 						 INTPAG_MASTER,
24818 						 state->intpa_master[core]);
24819 			} else {
24820 				WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24821 						 TXFBMIX_A, state->fbmix[core]);
24822 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24823 						 INTPAA_MASTER,
24824 						 state->intpa_master[core]);
24825 			}
24826 
24827 			write_phy_reg(pi, (core == PHY_CORE_0) ?
24828 				      0xa6 : 0xa7, state->afectrl[core]);
24829 			write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24830 				      0xa5, state->afeoverride[core]);
24831 		}
24832 
24833 		wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24834 					    (state->mm & 0xff));
24835 
24836 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24837 	}
24838 }
24839 
24840 static void
wlc_phy_a1_nphy(struct brcms_phy * pi,u8 core,u32 winsz,u32 start,u32 end)24841 wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24842 		u32 end)
24843 {
24844 	u32 *buf, *src, *dst, sz;
24845 
24846 	sz = end - start + 1;
24847 
24848 	buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24849 	if (NULL == buf)
24850 		return;
24851 
24852 	src = buf;
24853 	dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24854 
24855 	wlc_phy_table_read_nphy(pi,
24856 				(core ==
24857 				 PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24858 				 NPHY_TBL_ID_EPSILONTBL1),
24859 				NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24860 
24861 	do {
24862 		u32 phy_a1, phy_a2;
24863 		s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24864 
24865 		phy_a1 = end - min(end, (winsz >> 1));
24866 		phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24867 			       end + (winsz >> 1));
24868 		phy_a3 = phy_a2 - phy_a1 + 1;
24869 		phy_a6 = 0;
24870 		phy_a7 = 0;
24871 
24872 		do {
24873 			wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24874 						    &phy_a5);
24875 			phy_a6 += phy_a4;
24876 			phy_a7 += phy_a5;
24877 		} while (phy_a2-- != phy_a1);
24878 
24879 		phy_a6 /= phy_a3;
24880 		phy_a7 /= phy_a3;
24881 		dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24882 	} while (end-- != start);
24883 
24884 	wlc_phy_table_write_nphy(pi,
24885 				 (core ==
24886 				  PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24887 				 NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24888 
24889 	kfree(buf);
24890 }
24891 
24892 static void
wlc_phy_a2_nphy(struct brcms_phy * pi,struct nphy_ipa_txcalgains * txgains,enum phy_cal_mode cal_mode,u8 core)24893 wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24894 		enum phy_cal_mode cal_mode, u8 core)
24895 {
24896 	u16 phy_a1, phy_a2, phy_a3;
24897 	u16 phy_a4, phy_a5;
24898 	bool phy_a6;
24899 	u8 phy_a7, m[2];
24900 	u32 phy_a8 = 0;
24901 	struct nphy_txgains phy_a9;
24902 
24903 	if (NREV_LT(pi->pubpi.phy_rev, 3))
24904 		return;
24905 
24906 	phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24907 
24908 	phy_a6 = ((cal_mode == CAL_GCTRL)
24909 		  || (cal_mode == CAL_SOFT)) ? true : false;
24910 
24911 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24912 
24913 		phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24914 
24915 		if (CHSPEC_IS2G(pi->radio_chanspec))
24916 			phy_a5 = ((phy_a9.txlpf[core] << 15) |
24917 				  (phy_a9.txgm[core] << 12) |
24918 				  (phy_a9.pga[core] << 8) |
24919 				  (txgains->gains.pad[core] << 3) |
24920 				  (phy_a9.ipa[core]));
24921 		else
24922 			phy_a5 = ((phy_a9.txlpf[core] << 15) |
24923 				  (phy_a9.txgm[core] << 12) |
24924 				  (txgains->gains.pga[core] << 8) |
24925 				  (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24926 
24927 		wlc_phy_rfctrl_override_1tomany_nphy(
24928 			pi,
24929 			NPHY_REV7_RfctrlOverride_cmd_txgain,
24930 			phy_a5, (1 << core), 0);
24931 
24932 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24933 			if ((pi->pubpi.radiorev <= 4)
24934 			    || (pi->pubpi.radiorev == 6))
24935 				m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24936 					  60 : 79;
24937 			else
24938 				m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24939 					  45 : 64;
24940 		} else {
24941 			m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24942 		}
24943 
24944 		m[phy_a7] = 0;
24945 		wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24946 
24947 		phy_a2 = 63;
24948 
24949 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24950 			if ((pi->pubpi.radiorev == 4)
24951 			    || (pi->pubpi.radiorev == 6)) {
24952 				phy_a1 = 30;
24953 				phy_a3 = 30;
24954 			} else {
24955 				phy_a1 = 25;
24956 				phy_a3 = 25;
24957 			}
24958 		} else {
24959 			if ((pi->pubpi.radiorev == 5)
24960 			    || (pi->pubpi.radiorev == 7)
24961 			    || (pi->pubpi.radiorev == 8)) {
24962 				phy_a1 = 25;
24963 				phy_a3 = 25;
24964 			} else {
24965 				phy_a1 = 35;
24966 				phy_a3 = 35;
24967 			}
24968 		}
24969 
24970 		if (cal_mode == CAL_GCTRL) {
24971 			if ((pi->pubpi.radiorev == 5)
24972 			    && (CHSPEC_IS2G(pi->radio_chanspec)))
24973 				phy_a1 = 55;
24974 			else if (((pi->pubpi.radiorev == 7) &&
24975 				  (CHSPEC_IS2G(pi->radio_chanspec))) ||
24976 				 ((pi->pubpi.radiorev == 8) &&
24977 				  (CHSPEC_IS2G(pi->radio_chanspec))))
24978 				phy_a1 = 60;
24979 			else
24980 				phy_a1 = 63;
24981 
24982 		} else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
24983 
24984 			phy_a1 = 35;
24985 			phy_a3 = 35;
24986 		}
24987 
24988 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24989 			    0x29b, (0x1 << 0), (1) << 0);
24990 
24991 		mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24992 			    0x29b, (0x1 << 0), (0) << 0);
24993 
24994 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24995 			    0x2a4, (0x1 << 13), (1) << 13);
24996 
24997 		mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24998 			    0x2a4, (0x1 << 13), (0) << 13);
24999 
25000 		write_phy_reg(pi, 0x2a1, 0x80);
25001 		write_phy_reg(pi, 0x2a2, 0x100);
25002 
25003 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25004 			    0x2a4, (0x7 << 4), (11) << 4);
25005 
25006 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25007 			    0x2a4, (0x7 << 8), (11) << 8);
25008 
25009 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25010 			    0x2a4, (0x7 << 0), (0x3) << 0);
25011 
25012 		write_phy_reg(pi, 0x2e5, 0x20);
25013 
25014 		mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
25015 
25016 		mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
25017 
25018 		mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
25019 
25020 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25021 						  1, ((core == 0) ? 1 : 2), 0,
25022 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
25023 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25024 						  0, ((core == 0) ? 2 : 1), 0,
25025 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
25026 
25027 		write_phy_reg(pi, 0x2be, 1);
25028 		SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
25029 
25030 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25031 						  0, 0x3, 0,
25032 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
25033 
25034 		wlc_phy_table_write_nphy(pi,
25035 					 (core ==
25036 					  PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
25037 					 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
25038 					 32, &phy_a8);
25039 
25040 		if (cal_mode != CAL_GCTRL) {
25041 			if (CHSPEC_IS5G(pi->radio_chanspec))
25042 				wlc_phy_a1_nphy(pi, core, 5, 0, 35);
25043 		}
25044 
25045 		wlc_phy_rfctrl_override_1tomany_nphy(
25046 			pi,
25047 			NPHY_REV7_RfctrlOverride_cmd_txgain,
25048 			phy_a5, (1 << core), 1);
25049 
25050 	} else {
25051 
25052 		if (txgains) {
25053 			if (txgains->useindex) {
25054 				phy_a4 = 15 - ((txgains->index) >> 3);
25055 				if (CHSPEC_IS2G(pi->radio_chanspec)) {
25056 					if (NREV_GE(pi->pubpi.phy_rev, 6))
25057 						phy_a5 = 0x00f7 | (phy_a4 << 8);
25058 
25059 					else
25060 					if (NREV_IS(pi->pubpi.phy_rev, 5))
25061 						phy_a5 = 0x10f7 | (phy_a4 << 8);
25062 					else
25063 						phy_a5 = 0x50f7 | (phy_a4 << 8);
25064 				} else {
25065 					phy_a5 = 0x70f7 | (phy_a4 << 8);
25066 				}
25067 				wlc_phy_rfctrl_override_nphy(pi,
25068 							     (0x1 << 13),
25069 							     phy_a5,
25070 							     (1 << core), 0);
25071 			} else {
25072 				wlc_phy_rfctrl_override_nphy(pi,
25073 							     (0x1 << 13),
25074 							     0x5bf7,
25075 							     (1 << core), 0);
25076 			}
25077 		}
25078 
25079 		if (CHSPEC_IS2G(pi->radio_chanspec))
25080 			m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
25081 		else
25082 			m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
25083 
25084 		m[phy_a7] = 0;
25085 		wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
25086 
25087 		phy_a2 = 63;
25088 
25089 		if (cal_mode == CAL_FULL) {
25090 			phy_a1 = 25;
25091 			phy_a3 = 25;
25092 		} else if (cal_mode == CAL_SOFT) {
25093 			phy_a1 = 25;
25094 			phy_a3 = 25;
25095 		} else if (cal_mode == CAL_GCTRL) {
25096 			phy_a1 = 63;
25097 			phy_a3 = 25;
25098 		} else {
25099 
25100 			phy_a1 = 25;
25101 			phy_a3 = 25;
25102 		}
25103 
25104 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
25105 			    0x29b, (0x1 << 0), (1) << 0);
25106 
25107 		mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
25108 			    0x29b, (0x1 << 0), (0) << 0);
25109 
25110 		if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25111 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25112 				    0x2a4, (0x1 << 13), (1) << 13);
25113 
25114 			mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25115 				    0x2a4, (0x1 << 13), (0) << 13);
25116 
25117 			write_phy_reg(pi, 0x2a1, 0x20);
25118 			write_phy_reg(pi, 0x2a2, 0x60);
25119 
25120 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25121 				    0x2a4, (0xf << 4), (9) << 4);
25122 
25123 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25124 				    0x2a4, (0xf << 8), (9) << 8);
25125 
25126 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25127 				    0x2a4, (0xf << 0), (0x2) << 0);
25128 
25129 			write_phy_reg(pi, 0x2e5, 0x20);
25130 		} else {
25131 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25132 				    0x2a4, (0x1 << 11), (1) << 11);
25133 
25134 			mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25135 				    0x2a4, (0x1 << 11), (0) << 11);
25136 
25137 			write_phy_reg(pi, 0x2a1, 0x80);
25138 			write_phy_reg(pi, 0x2a2, 0x600);
25139 
25140 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25141 				    0x2a4, (0x7 << 4), (0) << 4);
25142 
25143 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25144 				    0x2a4, (0x7 << 8), (0) << 8);
25145 
25146 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25147 				    0x2a4, (0x7 << 0), (0x3) << 0);
25148 
25149 			mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
25150 
25151 		}
25152 
25153 		mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
25154 
25155 		mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
25156 
25157 		mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
25158 
25159 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
25160 
25161 		write_phy_reg(pi, 0x2be, 1);
25162 		SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
25163 
25164 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
25165 
25166 		wlc_phy_table_write_nphy(pi,
25167 					 (core ==
25168 					  PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
25169 					 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
25170 					 32, &phy_a8);
25171 
25172 		if (cal_mode != CAL_GCTRL)
25173 			wlc_phy_a1_nphy(pi, core, 5, 0, 40);
25174 	}
25175 }
25176 
wlc_phy_a3_nphy(struct brcms_phy * pi,u8 start_gain,u8 core)25177 static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
25178 {
25179 	int phy_a1;
25180 	int phy_a2;
25181 	bool phy_a3;
25182 	struct nphy_ipa_txcalgains phy_a4;
25183 	bool phy_a5 = false;
25184 	bool phy_a6 = true;
25185 	s32 phy_a7, phy_a8;
25186 	u32 phy_a9;
25187 	int phy_a10;
25188 	bool phy_a11 = false;
25189 	int phy_a12;
25190 	u8 phy_a13 = 0;
25191 	u8 phy_a14;
25192 	u8 *phy_a15 = NULL;
25193 
25194 	phy_a4.useindex = true;
25195 	phy_a12 = start_gain;
25196 
25197 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25198 
25199 		phy_a2 = 20;
25200 		phy_a1 = 1;
25201 
25202 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
25203 			if (pi->pubpi.radiorev == 5) {
25204 
25205 				phy_a15 = pad_gain_codes_used_2057rev5;
25206 				phy_a13 =
25207 					sizeof(pad_gain_codes_used_2057rev5) /
25208 					sizeof(pad_gain_codes_used_2057rev5
25209 						[0]) - 1;
25210 
25211 			} else if ((pi->pubpi.radiorev == 7)
25212 				   || (pi->pubpi.radiorev == 8)) {
25213 
25214 				phy_a15 = pad_gain_codes_used_2057rev7;
25215 				phy_a13 =
25216 					sizeof(pad_gain_codes_used_2057rev7) /
25217 					sizeof(pad_gain_codes_used_2057rev7
25218 						[0]) - 1;
25219 
25220 			} else {
25221 
25222 				phy_a15 = pad_all_gain_codes_2057;
25223 				phy_a13 = sizeof(pad_all_gain_codes_2057) /
25224 					  sizeof(pad_all_gain_codes_2057[0]) -
25225 					  1;
25226 			}
25227 
25228 		} else {
25229 
25230 			phy_a15 = pga_all_gain_codes_2057;
25231 			phy_a13 = sizeof(pga_all_gain_codes_2057) /
25232 				  sizeof(pga_all_gain_codes_2057[0]) - 1;
25233 		}
25234 
25235 		phy_a14 = 0;
25236 
25237 		for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25238 			if (CHSPEC_IS2G(pi->radio_chanspec))
25239 				phy_a4.gains.pad[core] =
25240 					(u16) phy_a15[phy_a12];
25241 			else
25242 				phy_a4.gains.pga[core] =
25243 					(u16) phy_a15[phy_a12];
25244 
25245 			wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25246 
25247 			wlc_phy_table_read_nphy(pi,
25248 						(core ==
25249 						 PHY_CORE_0 ?
25250 						 NPHY_TBL_ID_EPSILONTBL0 :
25251 						 NPHY_TBL_ID_EPSILONTBL1), 1,
25252 						63, 32, &phy_a9);
25253 
25254 			wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25255 
25256 			phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25257 				  (phy_a8 == 4095) || (phy_a8 == -4096));
25258 
25259 			if (!phy_a6 && (phy_a3 != phy_a5)) {
25260 				if (!phy_a3)
25261 					phy_a12 -= (u8) phy_a1;
25262 
25263 				phy_a11 = true;
25264 				break;
25265 			}
25266 
25267 			if (phy_a3)
25268 				phy_a12 += (u8) phy_a1;
25269 			else
25270 				phy_a12 -= (u8) phy_a1;
25271 
25272 			if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25273 				if (phy_a12 < phy_a14)
25274 					phy_a12 = phy_a14;
25275 				else
25276 					phy_a12 = phy_a13;
25277 
25278 				phy_a11 = true;
25279 				break;
25280 			}
25281 
25282 			phy_a6 = false;
25283 			phy_a5 = phy_a3;
25284 		}
25285 
25286 	} else {
25287 		phy_a2 = 10;
25288 		phy_a1 = 8;
25289 		for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25290 			phy_a4.index = (u8) phy_a12;
25291 			wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25292 
25293 			wlc_phy_table_read_nphy(pi,
25294 						(core ==
25295 						 PHY_CORE_0 ?
25296 						 NPHY_TBL_ID_EPSILONTBL0 :
25297 						 NPHY_TBL_ID_EPSILONTBL1), 1,
25298 						63, 32, &phy_a9);
25299 
25300 			wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25301 
25302 			phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25303 				  (phy_a8 == 4095) || (phy_a8 == -4096));
25304 
25305 			if (!phy_a6 && (phy_a3 != phy_a5)) {
25306 				if (!phy_a3)
25307 					phy_a12 -= (u8) phy_a1;
25308 
25309 				phy_a11 = true;
25310 				break;
25311 			}
25312 
25313 			if (phy_a3)
25314 				phy_a12 += (u8) phy_a1;
25315 			else
25316 				phy_a12 -= (u8) phy_a1;
25317 
25318 			if ((phy_a12 < 0) || (phy_a12 > 127)) {
25319 				if (phy_a12 < 0)
25320 					phy_a12 = 0;
25321 				else
25322 					phy_a12 = 127;
25323 
25324 				phy_a11 = true;
25325 				break;
25326 			}
25327 
25328 			phy_a6 = false;
25329 			phy_a5 = phy_a3;
25330 		}
25331 
25332 	}
25333 
25334 	if (NREV_GE(pi->pubpi.phy_rev, 7))
25335 		return (u8) phy_a15[phy_a12];
25336 	else
25337 		return (u8) phy_a12;
25338 
25339 }
25340 
wlc_phy_a4(struct brcms_phy * pi,bool full_cal)25341 static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25342 {
25343 	struct nphy_ipa_txcalgains phy_b1[2];
25344 	struct nphy_papd_restore_state phy_b2;
25345 	bool phy_b3;
25346 	u8 phy_b4;
25347 	u8 phy_b5;
25348 	s16 phy_b6, phy_b7, phy_b8;
25349 	u16 phy_b9;
25350 	s16 phy_b10, phy_b11, phy_b12;
25351 
25352 	phy_b11 = 0;
25353 	phy_b12 = 0;
25354 	phy_b7 = 0;
25355 	phy_b8 = 0;
25356 	phy_b6 = 0;
25357 
25358 	if (pi->nphy_papd_skip == 1)
25359 		return;
25360 
25361 	phy_b3 = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
25362 			MCTL_EN_MAC));
25363 	if (!phy_b3)
25364 		wlapi_suspend_mac_and_wait(pi->sh->physhim);
25365 
25366 	wlc_phy_stay_in_carriersearch_nphy(pi, true);
25367 
25368 	pi->nphy_force_papd_cal = false;
25369 
25370 	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25371 		pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25372 			wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25373 
25374 	pi->nphy_papd_last_cal = pi->sh->now;
25375 	pi->nphy_papd_recal_counter++;
25376 
25377 	phy_b4 = pi->nphy_txpwrctrl;
25378 	wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25379 
25380 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25381 				 nphy_papd_scaltbl);
25382 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25383 				 nphy_papd_scaltbl);
25384 
25385 	phy_b9 = read_phy_reg(pi, 0x01);
25386 	mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25387 
25388 	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25389 		s32 i, val = 0;
25390 		for (i = 0; i < 64; i++)
25391 			wlc_phy_table_write_nphy(pi,
25392 						 ((phy_b5 ==
25393 						   PHY_CORE_0) ?
25394 						  NPHY_TBL_ID_EPSILONTBL0 :
25395 						  NPHY_TBL_ID_EPSILONTBL1), 1,
25396 						 i, 32, &val);
25397 	}
25398 
25399 	wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25400 
25401 	phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25402 	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25403 		wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25404 
25405 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25406 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25407 				if ((pi->pubpi.radiorev == 3)
25408 				    || (pi->pubpi.radiorev == 4)
25409 				    || (pi->pubpi.radiorev == 6)) {
25410 					pi->nphy_papd_cal_gain_index[phy_b5] =
25411 						23;
25412 				} else if (pi->pubpi.radiorev == 5) {
25413 					pi->nphy_papd_cal_gain_index[phy_b5] =
25414 						0;
25415 					pi->nphy_papd_cal_gain_index[phy_b5] =
25416 						wlc_phy_a3_nphy(
25417 							pi,
25418 							pi->
25419 							nphy_papd_cal_gain_index
25420 							[phy_b5],
25421 							phy_b5);
25422 
25423 				} else if ((pi->pubpi.radiorev == 7)
25424 					   || (pi->pubpi.radiorev == 8)) {
25425 
25426 					pi->nphy_papd_cal_gain_index[phy_b5] =
25427 						0;
25428 					pi->nphy_papd_cal_gain_index[phy_b5] =
25429 						wlc_phy_a3_nphy(
25430 							pi,
25431 							pi->
25432 							nphy_papd_cal_gain_index
25433 							[phy_b5],
25434 							phy_b5);
25435 
25436 				}
25437 
25438 				phy_b1[phy_b5].gains.pad[phy_b5] =
25439 					pi->nphy_papd_cal_gain_index[phy_b5];
25440 
25441 			} else {
25442 				pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25443 				pi->nphy_papd_cal_gain_index[phy_b5] =
25444 					wlc_phy_a3_nphy(
25445 						pi,
25446 						pi->
25447 						nphy_papd_cal_gain_index
25448 						[phy_b5], phy_b5);
25449 				phy_b1[phy_b5].gains.pga[phy_b5] =
25450 					pi->nphy_papd_cal_gain_index[phy_b5];
25451 			}
25452 		} else {
25453 			phy_b1[phy_b5].useindex = true;
25454 			phy_b1[phy_b5].index = 16;
25455 			phy_b1[phy_b5].index =
25456 				wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25457 						phy_b5);
25458 
25459 			pi->nphy_papd_cal_gain_index[phy_b5] =
25460 				15 - ((phy_b1[phy_b5].index) >> 3);
25461 		}
25462 
25463 		switch (pi->nphy_papd_cal_type) {
25464 		case 0:
25465 			wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25466 			break;
25467 		case 1:
25468 			wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25469 			break;
25470 		}
25471 
25472 		if (NREV_GE(pi->pubpi.phy_rev, 7))
25473 			wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25474 	}
25475 
25476 	if (NREV_LT(pi->pubpi.phy_rev, 7))
25477 		wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25478 
25479 	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25480 		int eps_offset = 0;
25481 
25482 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25483 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25484 				if (pi->pubpi.radiorev == 3)
25485 					eps_offset = -2;
25486 				else if (pi->pubpi.radiorev == 5)
25487 					eps_offset = 3;
25488 				else
25489 					eps_offset = -1;
25490 			} else {
25491 				eps_offset = 2;
25492 			}
25493 
25494 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25495 				phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25496 				phy_b10 = 0;
25497 				if ((pi->pubpi.radiorev == 3) ||
25498 				    (pi->pubpi.radiorev == 4) ||
25499 				    (pi->pubpi.radiorev == 6)) {
25500 					phy_b12 = -(
25501 					    nphy_papd_padgain_dlt_2g_2057rev3n4
25502 							     [phy_b8] + 1) / 2;
25503 					phy_b10 = -1;
25504 				} else if (pi->pubpi.radiorev == 5) {
25505 					phy_b12 = -(
25506 					    nphy_papd_padgain_dlt_2g_2057rev5
25507 							     [phy_b8] + 1) / 2;
25508 				} else if ((pi->pubpi.radiorev == 7) ||
25509 					   (pi->pubpi.radiorev == 8)) {
25510 					phy_b12 = -(
25511 					    nphy_papd_padgain_dlt_2g_2057rev7
25512 							     [phy_b8] + 1) / 2;
25513 				}
25514 			} else {
25515 				phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25516 				if ((pi->pubpi.radiorev == 3) ||
25517 				    (pi->pubpi.radiorev == 4) ||
25518 				    (pi->pubpi.radiorev == 6))
25519 					phy_b11 =
25520 						-(nphy_papd_pgagain_dlt_5g_2057
25521 						  [phy_b7]
25522 						  + 1) / 2;
25523 				else if ((pi->pubpi.radiorev == 7)
25524 					 || (pi->pubpi.radiorev == 8))
25525 					phy_b11 = -(
25526 					      nphy_papd_pgagain_dlt_5g_2057rev7
25527 							     [phy_b7] + 1) / 2;
25528 
25529 				phy_b10 = -9;
25530 			}
25531 
25532 			if (CHSPEC_IS2G(pi->radio_chanspec))
25533 				phy_b6 =
25534 					-60 + 27 + eps_offset + phy_b12 +
25535 					phy_b10;
25536 			else
25537 				phy_b6 =
25538 					-60 + 27 + eps_offset + phy_b11 +
25539 					phy_b10;
25540 
25541 			mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25542 				    0x29c, (0x1ff << 7), (phy_b6) << 7);
25543 
25544 			pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25545 		} else {
25546 			if (NREV_LT(pi->pubpi.phy_rev, 5))
25547 				eps_offset = 4;
25548 			else
25549 				eps_offset = 2;
25550 
25551 			phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25552 
25553 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25554 				phy_b11 =
25555 					-(nphy_papd_pga_gain_delta_ipa_2g[
25556 						  phy_b7] +
25557 					  1) / 2;
25558 				phy_b10 = 0;
25559 			} else {
25560 				phy_b11 =
25561 					-(nphy_papd_pga_gain_delta_ipa_5g[
25562 						  phy_b7] +
25563 					  1) / 2;
25564 				phy_b10 = -9;
25565 			}
25566 
25567 			phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25568 
25569 			mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25570 				    0x29c, (0x1ff << 7), (phy_b6) << 7);
25571 
25572 			pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25573 		}
25574 	}
25575 
25576 	mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25577 		    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25578 
25579 	mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25580 		    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25581 
25582 	if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25583 		mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25584 			    0x2a4, (0x1 << 13), (0) << 13);
25585 
25586 		mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25587 			    0x2a4, (0x1 << 13), (0) << 13);
25588 
25589 	} else {
25590 		mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25591 			    0x2a4, (0x1 << 11), (0) << 11);
25592 
25593 		mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25594 			    0x2a4, (0x1 << 11), (0) << 11);
25595 
25596 	}
25597 	pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25598 
25599 	write_phy_reg(pi, 0x01, phy_b9);
25600 
25601 	wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25602 
25603 	wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25604 	if (phy_b4 == PHY_TPC_HW_OFF) {
25605 		wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25606 					 (s8) (pi->nphy_txpwrindex[0].
25607 					       index_internal), false);
25608 		wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25609 					 (s8) (pi->nphy_txpwrindex[1].
25610 					       index_internal), false);
25611 	}
25612 
25613 	wlc_phy_stay_in_carriersearch_nphy(pi, false);
25614 
25615 	if (!phy_b3)
25616 		wlapi_enable_mac(pi->sh->physhim);
25617 }
25618 
wlc_phy_cal_perical_nphy_run(struct brcms_phy * pi,u8 caltype)25619 void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25620 {
25621 	struct nphy_txgains target_gain;
25622 	u8 tx_pwr_ctrl_state;
25623 	bool fullcal = true;
25624 	bool restore_tx_gain = false;
25625 	bool mphase;
25626 
25627 	if (PHY_MUTED(pi))
25628 		return;
25629 
25630 	if (caltype == PHY_PERICAL_AUTO)
25631 		fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25632 	else if (caltype == PHY_PERICAL_PARTIAL)
25633 		fullcal = false;
25634 
25635 	if (pi->cal_type_override != PHY_PERICAL_AUTO)
25636 		fullcal =
25637 			(pi->cal_type_override ==
25638 			 PHY_PERICAL_FULL) ? true : false;
25639 
25640 	if ((pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT)) {
25641 		if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25642 			wlc_phy_cal_perical_mphase_restart(pi);
25643 	}
25644 
25645 	if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL))
25646 		wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25647 
25648 	wlapi_suspend_mac_and_wait(pi->sh->physhim);
25649 
25650 	wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25651 
25652 	if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25653 	    (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25654 		pi->nphy_cal_orig_pwr_idx[0] =
25655 			(u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25656 		pi->nphy_cal_orig_pwr_idx[1] =
25657 			(u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25658 
25659 		if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25660 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25661 						0x110, 16,
25662 						pi->nphy_cal_orig_tx_gain);
25663 		} else {
25664 			pi->nphy_cal_orig_tx_gain[0] = 0;
25665 			pi->nphy_cal_orig_tx_gain[1] = 0;
25666 		}
25667 	}
25668 	target_gain = wlc_phy_get_tx_gain_nphy(pi);
25669 	tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25670 	wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25671 
25672 	if (pi->antsel_type == ANTSEL_2x3)
25673 		wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25674 
25675 	mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25676 	if (!mphase) {
25677 
25678 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25679 			wlc_phy_precal_txgain_nphy(pi);
25680 			pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25681 			restore_tx_gain = true;
25682 
25683 			target_gain = pi->nphy_cal_target_gain;
25684 		}
25685 		if (0 ==
25686 		    wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25687 					    mphase)) {
25688 			if (PHY_IPA(pi))
25689 				wlc_phy_a4(pi, true);
25690 
25691 			wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25692 			wlapi_enable_mac(pi->sh->physhim);
25693 			wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25694 					     10000);
25695 			wlapi_suspend_mac_and_wait(pi->sh->physhim);
25696 			wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25697 
25698 			if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25699 					(pi->first_cal_after_assoc ||
25700 					(pi->cal_type_override ==
25701 					 PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25702 				wlc_phy_savecal_nphy(pi);
25703 
25704 				wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25705 
25706 				pi->nphy_perical_last = pi->sh->now;
25707 			}
25708 		}
25709 		if (caltype != PHY_PERICAL_AUTO)
25710 			wlc_phy_rssi_cal_nphy(pi);
25711 
25712 		if (pi->first_cal_after_assoc
25713 		    || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25714 			pi->first_cal_after_assoc = false;
25715 			wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25716 			wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25717 		}
25718 
25719 		if (NREV_GE(pi->pubpi.phy_rev, 3))
25720 			wlc_phy_radio205x_vcocal_nphy(pi);
25721 	} else {
25722 		switch (pi->mphase_cal_phase_id) {
25723 		case MPHASE_CAL_STATE_INIT:
25724 			pi->nphy_perical_last = pi->sh->now;
25725 			pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25726 
25727 			if (NREV_GE(pi->pubpi.phy_rev, 3))
25728 				wlc_phy_precal_txgain_nphy(pi);
25729 
25730 			pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25731 			pi->mphase_cal_phase_id++;
25732 			break;
25733 
25734 		case MPHASE_CAL_STATE_TXPHASE0:
25735 		case MPHASE_CAL_STATE_TXPHASE1:
25736 		case MPHASE_CAL_STATE_TXPHASE2:
25737 		case MPHASE_CAL_STATE_TXPHASE3:
25738 		case MPHASE_CAL_STATE_TXPHASE4:
25739 		case MPHASE_CAL_STATE_TXPHASE5:
25740 			if ((pi->radar_percal_mask & 0x10) != 0)
25741 				pi->nphy_rxcal_active = true;
25742 
25743 			if (wlc_phy_cal_txiqlo_nphy
25744 				    (pi, pi->nphy_cal_target_gain, fullcal,
25745 				    true) != 0) {
25746 
25747 				wlc_phy_cal_perical_mphase_reset(pi);
25748 				break;
25749 			}
25750 
25751 			if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25752 			    (pi->mphase_cal_phase_id ==
25753 			     MPHASE_CAL_STATE_TXPHASE4))
25754 				pi->mphase_cal_phase_id += 2;
25755 			else
25756 				pi->mphase_cal_phase_id++;
25757 			break;
25758 
25759 		case MPHASE_CAL_STATE_PAPDCAL:
25760 			if ((pi->radar_percal_mask & 0x2) != 0)
25761 				pi->nphy_rxcal_active = true;
25762 
25763 			if (PHY_IPA(pi))
25764 				wlc_phy_a4(pi, true);
25765 
25766 			pi->mphase_cal_phase_id++;
25767 			break;
25768 
25769 		case MPHASE_CAL_STATE_RXCAL:
25770 			if ((pi->radar_percal_mask & 0x1) != 0)
25771 				pi->nphy_rxcal_active = true;
25772 			if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25773 						  (pi->first_cal_after_assoc ||
25774 						   (pi->cal_type_override ==
25775 						    PHY_PERICAL_FULL)) ? 2 : 0,
25776 						  false) == 0)
25777 				wlc_phy_savecal_nphy(pi);
25778 
25779 			pi->mphase_cal_phase_id++;
25780 			break;
25781 
25782 		case MPHASE_CAL_STATE_RSSICAL:
25783 			if ((pi->radar_percal_mask & 0x4) != 0)
25784 				pi->nphy_rxcal_active = true;
25785 			wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25786 			wlc_phy_rssi_cal_nphy(pi);
25787 
25788 			if (NREV_GE(pi->pubpi.phy_rev, 3))
25789 				wlc_phy_radio205x_vcocal_nphy(pi);
25790 
25791 			restore_tx_gain = true;
25792 
25793 			if (pi->first_cal_after_assoc)
25794 				pi->mphase_cal_phase_id++;
25795 			else
25796 				wlc_phy_cal_perical_mphase_reset(pi);
25797 
25798 			break;
25799 
25800 		case MPHASE_CAL_STATE_IDLETSSI:
25801 			if ((pi->radar_percal_mask & 0x8) != 0)
25802 				pi->nphy_rxcal_active = true;
25803 
25804 			if (pi->first_cal_after_assoc) {
25805 				pi->first_cal_after_assoc = false;
25806 				wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25807 				wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25808 			}
25809 
25810 			wlc_phy_cal_perical_mphase_reset(pi);
25811 			break;
25812 
25813 		default:
25814 			wlc_phy_cal_perical_mphase_reset(pi);
25815 			break;
25816 		}
25817 	}
25818 
25819 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25820 		if (restore_tx_gain) {
25821 			if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25822 
25823 				wlc_phy_txpwr_index_nphy(pi, 1,
25824 							 pi->
25825 							 nphy_cal_orig_pwr_idx
25826 							 [0], false);
25827 				wlc_phy_txpwr_index_nphy(pi, 2,
25828 							 pi->
25829 							 nphy_cal_orig_pwr_idx
25830 							 [1], false);
25831 
25832 				pi->nphy_txpwrindex[0].index = -1;
25833 				pi->nphy_txpwrindex[1].index = -1;
25834 			} else {
25835 				wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25836 							 (s8) (pi->
25837 							       nphy_txpwrindex
25838 							       [0].
25839 							       index_internal),
25840 							 false);
25841 				wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25842 							 (s8) (pi->
25843 							       nphy_txpwrindex
25844 							       [1].
25845 							       index_internal),
25846 							 false);
25847 			}
25848 		}
25849 	}
25850 
25851 	wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25852 	wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25853 	wlapi_enable_mac(pi->sh->physhim);
25854 }
25855 
25856 int
wlc_phy_cal_txiqlo_nphy(struct brcms_phy * pi,struct nphy_txgains target_gain,bool fullcal,bool mphase)25857 wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25858 			bool fullcal, bool mphase)
25859 {
25860 	u16 val;
25861 	u16 tbl_buf[11];
25862 	u8 cal_cnt;
25863 	u16 cal_cmd;
25864 	u8 num_cals, max_cal_cmds;
25865 	u16 core_no, cal_type;
25866 	u16 diq_start = 0;
25867 	u8 phy_bw;
25868 	u16 max_val;
25869 	u16 tone_freq;
25870 	u16 gain_save[2];
25871 	u16 cal_gain[2];
25872 	struct nphy_iqcal_params cal_params[2];
25873 	u32 tbl_len;
25874 	void *tbl_ptr;
25875 	bool ladder_updated[2];
25876 	u8 mphase_cal_lastphase = 0;
25877 	int bcmerror = 0;
25878 	bool phyhang_avoid_state = false;
25879 
25880 	u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
25881 		0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25882 		0x1902,
25883 		0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25884 		0x6407
25885 	};
25886 
25887 	u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
25888 		0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25889 		0x3200,
25890 		0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25891 		0x6407
25892 	};
25893 
25894 	u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
25895 		0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25896 		0x1202,
25897 		0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25898 		0x4707
25899 	};
25900 
25901 	u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
25902 		0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25903 		0x2300,
25904 		0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25905 		0x4707
25906 	};
25907 
25908 	u16 tbl_tx_iqlo_cal_startcoefs[] = {
25909 		0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25910 		0x0000
25911 	};
25912 
25913 	u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
25914 		0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25915 		0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25916 	};
25917 
25918 	u16 tbl_tx_iqlo_cal_cmds_recal[] = {
25919 		0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25920 		0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25921 	};
25922 
25923 	u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
25924 		0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25925 		0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25926 		0x0000
25927 	};
25928 
25929 	u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
25930 		0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25931 		0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25932 	};
25933 
25934 	u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
25935 		0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25936 		0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25937 	};
25938 
25939 	wlc_phy_stay_in_carriersearch_nphy(pi, true);
25940 
25941 	if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25942 		phyhang_avoid_state = pi->phyhang_avoid;
25943 		pi->phyhang_avoid = false;
25944 	}
25945 
25946 	if (CHSPEC_IS40(pi->radio_chanspec))
25947 		phy_bw = 40;
25948 	else
25949 		phy_bw = 20;
25950 
25951 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25952 
25953 	for (core_no = 0; core_no <= 1; core_no++) {
25954 		wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25955 					      &cal_params[core_no]);
25956 		cal_gain[core_no] = cal_params[core_no].cal_gain;
25957 	}
25958 
25959 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25960 
25961 	wlc_phy_txcal_radio_setup_nphy(pi);
25962 
25963 	wlc_phy_txcal_physetup_nphy(pi);
25964 
25965 	ladder_updated[0] = ladder_updated[1] = false;
25966 	if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
25967 	      (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
25968 	       && (CHSPEC_IS2G(pi->radio_chanspec))))) {
25969 
25970 		if (phy_bw == 40) {
25971 			tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
25972 			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
25973 		} else {
25974 			tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
25975 			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
25976 		}
25977 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
25978 					 16, tbl_ptr);
25979 
25980 		if (phy_bw == 40) {
25981 			tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
25982 			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
25983 		} else {
25984 			tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
25985 			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
25986 		}
25987 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
25988 					 16, tbl_ptr);
25989 	}
25990 
25991 	if (NREV_GE(pi->pubpi.phy_rev, 7))
25992 		write_phy_reg(pi, 0xc2, 0x8ad9);
25993 	else
25994 		write_phy_reg(pi, 0xc2, 0x8aa9);
25995 
25996 	max_val = 250;
25997 	tone_freq = (phy_bw == 20) ? 2500 : 5000;
25998 
25999 	if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
26000 		wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
26001 		bcmerror = 0;
26002 	} else {
26003 		bcmerror =
26004 			wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
26005 					     false);
26006 	}
26007 
26008 	if (bcmerror == 0) {
26009 
26010 		if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
26011 			tbl_ptr = pi->mphase_txcal_bestcoeffs;
26012 			tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
26013 			if (NREV_LT(pi->pubpi.phy_rev, 3))
26014 				tbl_len -= 2;
26015 		} else {
26016 			if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
26017 
26018 				tbl_ptr = pi->nphy_txiqlocal_bestc;
26019 				tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
26020 				if (NREV_LT(pi->pubpi.phy_rev, 3))
26021 					tbl_len -= 2;
26022 			} else {
26023 
26024 				fullcal = true;
26025 
26026 				if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26027 					tbl_ptr =
26028 					    tbl_tx_iqlo_cal_startcoefs_nphyrev3;
26029 					tbl_len = ARRAY_SIZE(
26030 					   tbl_tx_iqlo_cal_startcoefs_nphyrev3);
26031 				} else {
26032 					tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
26033 					tbl_len = ARRAY_SIZE(
26034 						    tbl_tx_iqlo_cal_startcoefs);
26035 				}
26036 			}
26037 		}
26038 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
26039 					 16, tbl_ptr);
26040 
26041 		if (fullcal) {
26042 			max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26043 				       ARRAY_SIZE(
26044 				tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
26045 				       ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
26046 		} else {
26047 			max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26048 				       ARRAY_SIZE(
26049 				tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
26050 				       ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
26051 		}
26052 
26053 		if (mphase) {
26054 			cal_cnt = pi->mphase_txcal_cmdidx;
26055 			if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
26056 				num_cals = cal_cnt + pi->mphase_txcal_numcmds;
26057 			else
26058 				num_cals = max_cal_cmds;
26059 		} else {
26060 			cal_cnt = 0;
26061 			num_cals = max_cal_cmds;
26062 		}
26063 
26064 		for (; cal_cnt < num_cals; cal_cnt++) {
26065 
26066 			if (fullcal) {
26067 				cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26068 					  tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
26069 					  [cal_cnt] :
26070 					  tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
26071 			} else {
26072 				cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26073 					  tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
26074 					cal_cnt]
26075 					  : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
26076 			}
26077 
26078 			core_no = ((cal_cmd & 0x3000) >> 12);
26079 			cal_type = ((cal_cmd & 0x0F00) >> 8);
26080 
26081 			if (NREV_GE(pi->pubpi.phy_rev, 6) ||
26082 			    (NREV_IS(pi->pubpi.phy_rev, 5) &&
26083 			     PHY_IPA(pi)
26084 			     && (CHSPEC_IS2G(pi->radio_chanspec)))) {
26085 				if (!ladder_updated[core_no]) {
26086 					wlc_phy_update_txcal_ladder_nphy(
26087 						pi,
26088 						core_no);
26089 					ladder_updated[core_no] = true;
26090 				}
26091 			}
26092 
26093 			val =
26094 				(cal_params[core_no].
26095 				 ncorr[cal_type] << 8) | NPHY_N_GCTL;
26096 			write_phy_reg(pi, 0xc1, val);
26097 
26098 			if ((cal_type == 1) || (cal_type == 3)
26099 			    || (cal_type == 4)) {
26100 
26101 				wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26102 							1, 69 + core_no, 16,
26103 							tbl_buf);
26104 
26105 				diq_start = tbl_buf[0];
26106 
26107 				tbl_buf[0] = 0;
26108 				wlc_phy_table_write_nphy(pi,
26109 							 NPHY_TBL_ID_IQLOCAL, 1,
26110 							 69 + core_no, 16,
26111 							 tbl_buf);
26112 			}
26113 
26114 			write_phy_reg(pi, 0xc0, cal_cmd);
26115 
26116 			SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
26117 				 20000);
26118 			if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
26119 				 "HW error: txiq calib"))
26120 				return -EIO;
26121 
26122 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26123 						tbl_len, 96, 16, tbl_buf);
26124 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26125 						 tbl_len, 64, 16, tbl_buf);
26126 
26127 			if ((cal_type == 1) || (cal_type == 3)
26128 			    || (cal_type == 4)) {
26129 
26130 				tbl_buf[0] = diq_start;
26131 
26132 			}
26133 
26134 		}
26135 
26136 		if (mphase) {
26137 			pi->mphase_txcal_cmdidx = num_cals;
26138 			if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
26139 				pi->mphase_txcal_cmdidx = 0;
26140 		}
26141 
26142 		mphase_cal_lastphase =
26143 			(NREV_LE(pi->pubpi.phy_rev, 2)) ?
26144 			MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
26145 
26146 		if (!mphase
26147 		    || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
26148 
26149 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
26150 						16, tbl_buf);
26151 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26152 						 16, tbl_buf);
26153 
26154 			if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26155 
26156 				tbl_buf[0] = 0;
26157 				tbl_buf[1] = 0;
26158 				tbl_buf[2] = 0;
26159 				tbl_buf[3] = 0;
26160 
26161 			}
26162 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26163 						 16, tbl_buf);
26164 
26165 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
26166 						16, tbl_buf);
26167 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26168 						 16, tbl_buf);
26169 
26170 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26171 						 16, tbl_buf);
26172 
26173 			tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
26174 			if (NREV_LT(pi->pubpi.phy_rev, 3))
26175 				tbl_len -= 2;
26176 
26177 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26178 						tbl_len, 96, 16,
26179 						pi->nphy_txiqlocal_bestc);
26180 
26181 			pi->nphy_txiqlocal_coeffsvalid = true;
26182 			pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
26183 		} else {
26184 			tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
26185 			if (NREV_LT(pi->pubpi.phy_rev, 3))
26186 				tbl_len -= 2;
26187 
26188 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26189 						tbl_len, 96, 16,
26190 						pi->mphase_txcal_bestcoeffs);
26191 		}
26192 
26193 		wlc_phy_stopplayback_nphy(pi);
26194 
26195 		write_phy_reg(pi, 0xc2, 0x0000);
26196 
26197 	}
26198 
26199 	wlc_phy_txcal_phycleanup_nphy(pi);
26200 
26201 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26202 				 gain_save);
26203 
26204 	wlc_phy_txcal_radio_cleanup_nphy(pi);
26205 
26206 	if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26207 		if (!mphase
26208 		    || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
26209 			wlc_phy_tx_iq_war_nphy(pi);
26210 	}
26211 
26212 	if (NREV_GE(pi->pubpi.phy_rev, 4))
26213 		pi->phyhang_avoid = phyhang_avoid_state;
26214 
26215 	wlc_phy_stay_in_carriersearch_nphy(pi, false);
26216 
26217 	return bcmerror;
26218 }
26219 
wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy * pi)26220 static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
26221 {
26222 	u16 tbl_buf[7];
26223 
26224 	if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
26225 	    (pi->nphy_txiqlocal_coeffsvalid)) {
26226 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26227 					ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
26228 
26229 		if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26230 		    (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26231 		    (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26232 		    (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26233 
26234 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26235 						 16, pi->nphy_txiqlocal_bestc);
26236 
26237 			tbl_buf[0] = 0;
26238 			tbl_buf[1] = 0;
26239 			tbl_buf[2] = 0;
26240 			tbl_buf[3] = 0;
26241 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26242 						 16, tbl_buf);
26243 
26244 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26245 						 16,
26246 						 &pi->nphy_txiqlocal_bestc[5]);
26247 
26248 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26249 						 16,
26250 						 &pi->nphy_txiqlocal_bestc[5]);
26251 		}
26252 	}
26253 }
26254 
26255 void
wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy * pi,u8 write,struct nphy_iq_comp * pcomp)26256 wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26257 			  struct nphy_iq_comp *pcomp)
26258 {
26259 	if (write) {
26260 		write_phy_reg(pi, 0x9a, pcomp->a0);
26261 		write_phy_reg(pi, 0x9b, pcomp->b0);
26262 		write_phy_reg(pi, 0x9c, pcomp->a1);
26263 		write_phy_reg(pi, 0x9d, pcomp->b1);
26264 	} else {
26265 		pcomp->a0 = read_phy_reg(pi, 0x9a);
26266 		pcomp->b0 = read_phy_reg(pi, 0x9b);
26267 		pcomp->a1 = read_phy_reg(pi, 0x9c);
26268 		pcomp->b1 = read_phy_reg(pi, 0x9d);
26269 	}
26270 }
26271 
26272 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)26273 wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26274 		       u16 num_samps, u8 wait_time, u8 wait_for_crs)
26275 {
26276 	u8 core;
26277 
26278 	write_phy_reg(pi, 0x12b, num_samps);
26279 	mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26280 	mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26281 		    (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26282 
26283 	mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26284 
26285 	SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26286 		 10000);
26287 	if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26288 		 "HW error: rxiq est"))
26289 		return;
26290 
26291 	if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26292 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26293 			est[core].i_pwr =
26294 				(read_phy_reg(pi,
26295 					      NPHY_IqestipwrAccHi(core)) << 16)
26296 				| read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26297 			est[core].q_pwr =
26298 				(read_phy_reg(pi,
26299 					      NPHY_IqestqpwrAccHi(core)) << 16)
26300 				| read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26301 			est[core].iq_prod =
26302 				(read_phy_reg(pi,
26303 					      NPHY_IqestIqAccHi(core)) << 16) |
26304 				read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26305 		}
26306 	}
26307 }
26308 
26309 #define CAL_RETRY_CNT 2
wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy * pi,u8 core_mask)26310 static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26311 {
26312 	u8 curr_core;
26313 	struct phy_iq_est est[PHY_CORE_MAX];
26314 	struct nphy_iq_comp old_comp, new_comp;
26315 	s32 iq = 0;
26316 	u32 ii = 0, qq = 0;
26317 	s16 iq_nbits, qq_nbits, brsh, arsh;
26318 	s32 a, b, temp;
26319 	int bcmerror = 0;
26320 	uint cal_retry = 0;
26321 
26322 	if (core_mask == 0x0)
26323 		return;
26324 
26325 	wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26326 	new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26327 	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26328 
26329 cal_try:
26330 	wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26331 
26332 	new_comp = old_comp;
26333 
26334 	for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26335 
26336 		if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26337 			iq = est[curr_core].iq_prod;
26338 			ii = est[curr_core].i_pwr;
26339 			qq = est[curr_core].q_pwr;
26340 		} else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26341 			iq = est[curr_core].iq_prod;
26342 			ii = est[curr_core].i_pwr;
26343 			qq = est[curr_core].q_pwr;
26344 		} else {
26345 			continue;
26346 		}
26347 
26348 		if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26349 			bcmerror = -EBADE;
26350 			break;
26351 		}
26352 
26353 		iq_nbits = wlc_phy_nbits(iq);
26354 		qq_nbits = wlc_phy_nbits(qq);
26355 
26356 		arsh = 10 - (30 - iq_nbits);
26357 		if (arsh >= 0) {
26358 			a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26359 			temp = (s32) (ii >> arsh);
26360 			if (temp == 0) {
26361 				bcmerror = -EBADE;
26362 				break;
26363 			}
26364 		} else {
26365 			a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26366 			temp = (s32) (ii << -arsh);
26367 			if (temp == 0) {
26368 				bcmerror = -EBADE;
26369 				break;
26370 			}
26371 		}
26372 
26373 		a /= temp;
26374 
26375 		brsh = qq_nbits - 31 + 20;
26376 		if (brsh >= 0) {
26377 			b = (qq << (31 - qq_nbits));
26378 			temp = (s32) (ii >> brsh);
26379 			if (temp == 0) {
26380 				bcmerror = -EBADE;
26381 				break;
26382 			}
26383 		} else {
26384 			b = (qq << (31 - qq_nbits));
26385 			temp = (s32) (ii << -brsh);
26386 			if (temp == 0) {
26387 				bcmerror = -EBADE;
26388 				break;
26389 			}
26390 		}
26391 		b /= temp;
26392 		b -= a * a;
26393 		b = (s32) int_sqrt((unsigned long) b);
26394 		b -= (1 << 10);
26395 
26396 		if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26397 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26398 				new_comp.a0 = (s16) a & 0x3ff;
26399 				new_comp.b0 = (s16) b & 0x3ff;
26400 			} else {
26401 
26402 				new_comp.a0 = (s16) b & 0x3ff;
26403 				new_comp.b0 = (s16) a & 0x3ff;
26404 			}
26405 		}
26406 		if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26407 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26408 				new_comp.a1 = (s16) a & 0x3ff;
26409 				new_comp.b1 = (s16) b & 0x3ff;
26410 			} else {
26411 
26412 				new_comp.a1 = (s16) b & 0x3ff;
26413 				new_comp.b1 = (s16) a & 0x3ff;
26414 			}
26415 		}
26416 	}
26417 
26418 	if (bcmerror != 0) {
26419 		pr_debug("%s: Failed, cnt = %d\n", __func__, cal_retry);
26420 
26421 		if (cal_retry < CAL_RETRY_CNT) {
26422 			cal_retry++;
26423 			goto cal_try;
26424 		}
26425 
26426 		new_comp = old_comp;
26427 	}
26428 
26429 	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26430 }
26431 
wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy * pi,u8 rx_core)26432 static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26433 {
26434 	u16 offtune_val;
26435 	u16 bias_g = 0;
26436 	u16 bias_a = 0;
26437 
26438 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26439 		if (rx_core == PHY_CORE_0) {
26440 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26441 				pi->tx_rx_cal_radio_saveregs[0] =
26442 					read_radio_reg(pi,
26443 					    RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26444 				pi->tx_rx_cal_radio_saveregs[1] =
26445 					read_radio_reg(pi,
26446 					    RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26447 
26448 				write_radio_reg(pi,
26449 					RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26450 					0x3);
26451 				write_radio_reg(pi,
26452 					RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26453 					0xaf);
26454 
26455 			} else {
26456 				pi->tx_rx_cal_radio_saveregs[0] =
26457 					read_radio_reg(pi,
26458 					    RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26459 				pi->tx_rx_cal_radio_saveregs[1] =
26460 					read_radio_reg(pi,
26461 					    RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26462 
26463 				write_radio_reg(
26464 					pi,
26465 					RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26466 					0x3);
26467 				write_radio_reg(
26468 					pi,
26469 					RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26470 					0x7f);
26471 			}
26472 
26473 		} else {
26474 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26475 				pi->tx_rx_cal_radio_saveregs[0] =
26476 					read_radio_reg(pi,
26477 					    RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26478 				pi->tx_rx_cal_radio_saveregs[1] =
26479 					read_radio_reg(pi,
26480 					    RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26481 
26482 				write_radio_reg(
26483 					pi,
26484 					RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26485 					0x3);
26486 				write_radio_reg(
26487 					pi,
26488 					RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26489 					0xaf);
26490 
26491 			} else {
26492 				pi->tx_rx_cal_radio_saveregs[0] =
26493 					read_radio_reg(pi,
26494 					    RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26495 				pi->tx_rx_cal_radio_saveregs[1] =
26496 					read_radio_reg(pi,
26497 					    RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26498 
26499 				write_radio_reg(pi,
26500 					RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26501 					0x3);
26502 				write_radio_reg(pi,
26503 					RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26504 					0x7f);
26505 			}
26506 		}
26507 
26508 	} else {
26509 		if (rx_core == PHY_CORE_0) {
26510 			pi->tx_rx_cal_radio_saveregs[0] =
26511 				read_radio_reg(pi,
26512 					       RADIO_2056_TX_RXIQCAL_TXMUX |
26513 					       RADIO_2056_TX1);
26514 			pi->tx_rx_cal_radio_saveregs[1] =
26515 				read_radio_reg(pi,
26516 					       RADIO_2056_RX_RXIQCAL_RXMUX |
26517 					       RADIO_2056_RX0);
26518 
26519 			if (pi->pubpi.radiorev >= 5) {
26520 				pi->tx_rx_cal_radio_saveregs[2] =
26521 					read_radio_reg(pi,
26522 						       RADIO_2056_RX_RXSPARE2 |
26523 						       RADIO_2056_RX0);
26524 				pi->tx_rx_cal_radio_saveregs[3] =
26525 					read_radio_reg(pi,
26526 						       RADIO_2056_TX_TXSPARE2 |
26527 						       RADIO_2056_TX1);
26528 			}
26529 
26530 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26531 
26532 				if (pi->pubpi.radiorev >= 5) {
26533 					pi->tx_rx_cal_radio_saveregs[4] =
26534 						read_radio_reg(pi,
26535 						      RADIO_2056_RX_LNAA_MASTER
26536 						      | RADIO_2056_RX0);
26537 
26538 					write_radio_reg(
26539 						pi,
26540 						RADIO_2056_RX_LNAA_MASTER
26541 						| RADIO_2056_RX0, 0x40);
26542 
26543 					write_radio_reg(pi,
26544 						RADIO_2056_TX_TXSPARE2 |
26545 						RADIO_2056_TX1, bias_a);
26546 
26547 					write_radio_reg(pi,
26548 						RADIO_2056_RX_RXSPARE2 |
26549 						RADIO_2056_RX0, bias_a);
26550 				} else {
26551 					pi->tx_rx_cal_radio_saveregs[4] =
26552 						read_radio_reg(pi,
26553 							RADIO_2056_RX_LNAA_TUNE
26554 							| RADIO_2056_RX0);
26555 
26556 					offtune_val =
26557 						(pi->tx_rx_cal_radio_saveregs
26558 						 [2] & 0xF0) >> 8;
26559 					offtune_val =
26560 						(offtune_val <= 0x7) ? 0xF : 0;
26561 
26562 					mod_radio_reg(pi,
26563 						      RADIO_2056_RX_LNAA_TUNE |
26564 						      RADIO_2056_RX0, 0xF0,
26565 						      (offtune_val << 8));
26566 				}
26567 
26568 				write_radio_reg(pi,
26569 						RADIO_2056_TX_RXIQCAL_TXMUX |
26570 						RADIO_2056_TX1, 0x9);
26571 				write_radio_reg(pi,
26572 						RADIO_2056_RX_RXIQCAL_RXMUX |
26573 						RADIO_2056_RX0, 0x9);
26574 			} else {
26575 				if (pi->pubpi.radiorev >= 5) {
26576 					pi->tx_rx_cal_radio_saveregs[4] =
26577 						read_radio_reg(
26578 						      pi,
26579 						      RADIO_2056_RX_LNAG_MASTER
26580 						    | RADIO_2056_RX0);
26581 
26582 					write_radio_reg(
26583 						pi,
26584 						RADIO_2056_RX_LNAG_MASTER
26585 						| RADIO_2056_RX0, 0x40);
26586 
26587 					write_radio_reg(
26588 						pi,
26589 						RADIO_2056_TX_TXSPARE2
26590 						|
26591 						RADIO_2056_TX1, bias_g);
26592 
26593 					write_radio_reg(
26594 						pi,
26595 						RADIO_2056_RX_RXSPARE2
26596 						|
26597 						RADIO_2056_RX0, bias_g);
26598 
26599 				} else {
26600 					pi->tx_rx_cal_radio_saveregs[4] =
26601 						read_radio_reg(
26602 							pi,
26603 							RADIO_2056_RX_LNAG_TUNE
26604 							| RADIO_2056_RX0);
26605 
26606 					offtune_val =
26607 						(pi->
26608 						 tx_rx_cal_radio_saveregs[2] &
26609 						 0xF0) >> 8;
26610 					offtune_val =
26611 						(offtune_val <= 0x7) ? 0xF : 0;
26612 
26613 					mod_radio_reg(pi,
26614 						      RADIO_2056_RX_LNAG_TUNE |
26615 						      RADIO_2056_RX0, 0xF0,
26616 						      (offtune_val << 8));
26617 				}
26618 
26619 				write_radio_reg(pi,
26620 						RADIO_2056_TX_RXIQCAL_TXMUX |
26621 						RADIO_2056_TX1, 0x6);
26622 				write_radio_reg(pi,
26623 						RADIO_2056_RX_RXIQCAL_RXMUX |
26624 						RADIO_2056_RX0, 0x6);
26625 			}
26626 
26627 		} else {
26628 			pi->tx_rx_cal_radio_saveregs[0] =
26629 				read_radio_reg(pi,
26630 					       RADIO_2056_TX_RXIQCAL_TXMUX |
26631 					       RADIO_2056_TX0);
26632 			pi->tx_rx_cal_radio_saveregs[1] =
26633 				read_radio_reg(pi,
26634 					       RADIO_2056_RX_RXIQCAL_RXMUX |
26635 					       RADIO_2056_RX1);
26636 
26637 			if (pi->pubpi.radiorev >= 5) {
26638 				pi->tx_rx_cal_radio_saveregs[2] =
26639 					read_radio_reg(pi,
26640 						       RADIO_2056_RX_RXSPARE2 |
26641 						       RADIO_2056_RX1);
26642 				pi->tx_rx_cal_radio_saveregs[3] =
26643 					read_radio_reg(pi,
26644 						       RADIO_2056_TX_TXSPARE2 |
26645 						       RADIO_2056_TX0);
26646 			}
26647 
26648 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26649 
26650 				if (pi->pubpi.radiorev >= 5) {
26651 					pi->tx_rx_cal_radio_saveregs[4] =
26652 						read_radio_reg(
26653 						       pi,
26654 						       RADIO_2056_RX_LNAA_MASTER
26655 						       | RADIO_2056_RX1);
26656 
26657 					write_radio_reg(
26658 						pi,
26659 						RADIO_2056_RX_LNAA_MASTER |
26660 						RADIO_2056_RX1, 0x40);
26661 
26662 					write_radio_reg(
26663 						pi,
26664 						RADIO_2056_TX_TXSPARE2
26665 						|
26666 						RADIO_2056_TX0, bias_a);
26667 
26668 					write_radio_reg(
26669 						pi,
26670 						RADIO_2056_RX_RXSPARE2
26671 						|
26672 						RADIO_2056_RX1, bias_a);
26673 				} else {
26674 					pi->tx_rx_cal_radio_saveregs[4] =
26675 						read_radio_reg(
26676 							pi,
26677 							RADIO_2056_RX_LNAA_TUNE
26678 							| RADIO_2056_RX1);
26679 
26680 					offtune_val =
26681 						(pi->
26682 						 tx_rx_cal_radio_saveregs[2] &
26683 						 0xF0) >> 8;
26684 					offtune_val =
26685 						(offtune_val <= 0x7) ? 0xF : 0;
26686 
26687 					mod_radio_reg(pi,
26688 						      RADIO_2056_RX_LNAA_TUNE |
26689 						      RADIO_2056_RX1, 0xF0,
26690 						      (offtune_val << 8));
26691 				}
26692 
26693 				write_radio_reg(pi,
26694 						RADIO_2056_TX_RXIQCAL_TXMUX |
26695 						RADIO_2056_TX0, 0x9);
26696 				write_radio_reg(pi,
26697 						RADIO_2056_RX_RXIQCAL_RXMUX |
26698 						RADIO_2056_RX1, 0x9);
26699 			} else {
26700 				if (pi->pubpi.radiorev >= 5) {
26701 					pi->tx_rx_cal_radio_saveregs[4] =
26702 						read_radio_reg(
26703 						      pi,
26704 						      RADIO_2056_RX_LNAG_MASTER
26705 						    | RADIO_2056_RX1);
26706 
26707 					write_radio_reg(
26708 						pi,
26709 						RADIO_2056_RX_LNAG_MASTER
26710 						| RADIO_2056_RX1, 0x40);
26711 
26712 					write_radio_reg(
26713 						pi,
26714 						RADIO_2056_TX_TXSPARE2
26715 						|
26716 						RADIO_2056_TX0, bias_g);
26717 
26718 					write_radio_reg(
26719 						pi,
26720 						RADIO_2056_RX_RXSPARE2
26721 						|
26722 						RADIO_2056_RX1, bias_g);
26723 				} else {
26724 					pi->tx_rx_cal_radio_saveregs[4] =
26725 						read_radio_reg(
26726 							pi,
26727 							RADIO_2056_RX_LNAG_TUNE
26728 							| RADIO_2056_RX1);
26729 
26730 					offtune_val =
26731 						(pi->
26732 						 tx_rx_cal_radio_saveregs[2] &
26733 						 0xF0) >> 8;
26734 					offtune_val =
26735 						(offtune_val <= 0x7) ? 0xF : 0;
26736 
26737 					mod_radio_reg(pi,
26738 						      RADIO_2056_RX_LNAG_TUNE |
26739 						      RADIO_2056_RX1, 0xF0,
26740 						      (offtune_val << 8));
26741 				}
26742 
26743 				write_radio_reg(pi,
26744 						RADIO_2056_TX_RXIQCAL_TXMUX |
26745 						RADIO_2056_TX0, 0x6);
26746 				write_radio_reg(pi,
26747 						RADIO_2056_RX_RXIQCAL_RXMUX |
26748 						RADIO_2056_RX1, 0x6);
26749 			}
26750 		}
26751 	}
26752 }
26753 
wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy * pi,u8 rx_core)26754 static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26755 {
26756 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26757 		if (rx_core == PHY_CORE_0) {
26758 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26759 				write_radio_reg(
26760 					pi,
26761 					RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26762 					pi->
26763 					tx_rx_cal_radio_saveregs[0]);
26764 				write_radio_reg(
26765 					pi,
26766 					RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26767 					pi->
26768 					tx_rx_cal_radio_saveregs[1]);
26769 
26770 			} else {
26771 				write_radio_reg(
26772 					pi,
26773 					RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26774 					pi->
26775 					tx_rx_cal_radio_saveregs[0]);
26776 				write_radio_reg(
26777 					pi,
26778 					RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26779 					pi->
26780 					tx_rx_cal_radio_saveregs[1]);
26781 			}
26782 
26783 		} else {
26784 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26785 				write_radio_reg(
26786 					pi,
26787 					RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26788 					pi->
26789 					tx_rx_cal_radio_saveregs[0]);
26790 				write_radio_reg(
26791 					pi,
26792 					RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26793 					pi->
26794 					tx_rx_cal_radio_saveregs[1]);
26795 
26796 			} else {
26797 				write_radio_reg(
26798 					pi,
26799 					RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26800 					pi->
26801 					tx_rx_cal_radio_saveregs[0]);
26802 				write_radio_reg(
26803 					pi,
26804 					RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26805 					pi->
26806 					tx_rx_cal_radio_saveregs[1]);
26807 			}
26808 		}
26809 
26810 	} else {
26811 		if (rx_core == PHY_CORE_0) {
26812 			write_radio_reg(pi,
26813 					RADIO_2056_TX_RXIQCAL_TXMUX |
26814 					RADIO_2056_TX1,
26815 					pi->tx_rx_cal_radio_saveregs[0]);
26816 
26817 			write_radio_reg(pi,
26818 					RADIO_2056_RX_RXIQCAL_RXMUX |
26819 					RADIO_2056_RX0,
26820 					pi->tx_rx_cal_radio_saveregs[1]);
26821 
26822 			if (pi->pubpi.radiorev >= 5) {
26823 				write_radio_reg(pi,
26824 						RADIO_2056_RX_RXSPARE2 |
26825 						RADIO_2056_RX0,
26826 						pi->
26827 						tx_rx_cal_radio_saveregs[2]);
26828 
26829 				write_radio_reg(pi,
26830 						RADIO_2056_TX_TXSPARE2 |
26831 						RADIO_2056_TX1,
26832 						pi->
26833 						tx_rx_cal_radio_saveregs[3]);
26834 			}
26835 
26836 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26837 				if (pi->pubpi.radiorev >= 5)
26838 					write_radio_reg(
26839 						pi,
26840 						RADIO_2056_RX_LNAA_MASTER
26841 						| RADIO_2056_RX0,
26842 						pi->
26843 						tx_rx_cal_radio_saveregs
26844 						[4]);
26845 				else
26846 					write_radio_reg(
26847 						pi,
26848 						RADIO_2056_RX_LNAA_TUNE
26849 						| RADIO_2056_RX0,
26850 						pi->
26851 						tx_rx_cal_radio_saveregs
26852 						[4]);
26853 			} else {
26854 				if (pi->pubpi.radiorev >= 5)
26855 					write_radio_reg(
26856 						pi,
26857 						RADIO_2056_RX_LNAG_MASTER
26858 						| RADIO_2056_RX0,
26859 						pi->
26860 						tx_rx_cal_radio_saveregs
26861 						[4]);
26862 				else
26863 					write_radio_reg(
26864 						pi,
26865 						RADIO_2056_RX_LNAG_TUNE
26866 						| RADIO_2056_RX0,
26867 						pi->
26868 						tx_rx_cal_radio_saveregs
26869 						[4]);
26870 			}
26871 
26872 		} else {
26873 			write_radio_reg(pi,
26874 					RADIO_2056_TX_RXIQCAL_TXMUX |
26875 					RADIO_2056_TX0,
26876 					pi->tx_rx_cal_radio_saveregs[0]);
26877 
26878 			write_radio_reg(pi,
26879 					RADIO_2056_RX_RXIQCAL_RXMUX |
26880 					RADIO_2056_RX1,
26881 					pi->tx_rx_cal_radio_saveregs[1]);
26882 
26883 			if (pi->pubpi.radiorev >= 5) {
26884 				write_radio_reg(pi,
26885 						RADIO_2056_RX_RXSPARE2 |
26886 						RADIO_2056_RX1,
26887 						pi->
26888 						tx_rx_cal_radio_saveregs[2]);
26889 
26890 				write_radio_reg(pi,
26891 						RADIO_2056_TX_TXSPARE2 |
26892 						RADIO_2056_TX0,
26893 						pi->
26894 						tx_rx_cal_radio_saveregs[3]);
26895 			}
26896 
26897 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26898 				if (pi->pubpi.radiorev >= 5)
26899 					write_radio_reg(
26900 						pi,
26901 						RADIO_2056_RX_LNAA_MASTER
26902 						| RADIO_2056_RX1,
26903 						pi->
26904 						tx_rx_cal_radio_saveregs
26905 						[4]);
26906 				else
26907 					write_radio_reg(
26908 						pi,
26909 						RADIO_2056_RX_LNAA_TUNE
26910 						| RADIO_2056_RX1,
26911 						pi->
26912 						tx_rx_cal_radio_saveregs
26913 						[4]);
26914 			} else {
26915 				if (pi->pubpi.radiorev >= 5)
26916 					write_radio_reg(
26917 						pi,
26918 						RADIO_2056_RX_LNAG_MASTER
26919 						| RADIO_2056_RX1,
26920 						pi->
26921 						tx_rx_cal_radio_saveregs
26922 						[4]);
26923 				else
26924 					write_radio_reg(
26925 						pi,
26926 						RADIO_2056_RX_LNAG_TUNE
26927 						| RADIO_2056_RX1,
26928 						pi->
26929 						tx_rx_cal_radio_saveregs
26930 						[4]);
26931 			}
26932 		}
26933 	}
26934 }
26935 
wlc_phy_rxcal_physetup_nphy(struct brcms_phy * pi,u8 rx_core)26936 static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26937 {
26938 	u8 tx_core;
26939 	u16 rx_antval, tx_antval;
26940 
26941 	if (NREV_GE(pi->pubpi.phy_rev, 7))
26942 		tx_core = rx_core;
26943 	else
26944 		tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26945 
26946 	pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26947 	pi->tx_rx_cal_phy_saveregs[1] =
26948 		read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26949 	pi->tx_rx_cal_phy_saveregs[2] =
26950 		read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
26951 	pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
26952 	pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
26953 	pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
26954 	pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
26955 	pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
26956 	pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
26957 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26958 		pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
26959 		pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
26960 		pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
26961 		pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
26962 	}
26963 
26964 	pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
26965 	pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
26966 	mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
26967 		    0x29b, (0x1 << 0), (0) << 0);
26968 
26969 	mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
26970 		    0x29b, (0x1 << 0), (0) << 0);
26971 
26972 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26973 
26974 		mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26975 
26976 		mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
26977 
26978 	} else {
26979 
26980 		mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
26981 		mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26982 		mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
26983 		mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
26984 	}
26985 
26986 	mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
26987 	mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26988 		    (0x1 << 2), (0x1 << 2));
26989 	if (NREV_LT(pi->pubpi.phy_rev, 7)) {
26990 		mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
26991 			    (0x1 << 0) | (0x1 << 1), 0);
26992 		mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
26993 			    0x8f : 0xa5,
26994 			    (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
26995 	}
26996 
26997 	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
26998 					 RADIO_MIMO_CORESEL_CORE1 |
26999 					 RADIO_MIMO_CORESEL_CORE2);
27000 
27001 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27002 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
27003 						  0, 0, 0,
27004 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
27005 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
27006 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
27007 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
27008 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
27009 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
27010 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
27011 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
27012 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
27013 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
27014 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
27015 		if (CHSPEC_IS40(pi->radio_chanspec))
27016 			wlc_phy_rfctrl_override_nphy_rev7(
27017 				pi,
27018 				(0x1 << 7),
27019 				2, 0, 0,
27020 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
27021 		else
27022 			wlc_phy_rfctrl_override_nphy_rev7(
27023 				pi,
27024 				(0x1 << 7),
27025 				0, 0, 0,
27026 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
27027 
27028 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
27029 						  0, 0, 0,
27030 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
27031 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
27032 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
27033 	} else {
27034 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
27035 	}
27036 
27037 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
27038 
27039 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27040 
27041 		wlc_phy_rfctrlintc_override_nphy(pi,
27042 						 NPHY_RfctrlIntc_override_TRSW,
27043 						 0x1, rx_core + 1);
27044 	} else {
27045 
27046 		if (rx_core == PHY_CORE_0) {
27047 			rx_antval = 0x1;
27048 			tx_antval = 0x8;
27049 		} else {
27050 			rx_antval = 0x4;
27051 			tx_antval = 0x2;
27052 		}
27053 
27054 		wlc_phy_rfctrlintc_override_nphy(pi,
27055 						 NPHY_RfctrlIntc_override_TRSW,
27056 						 rx_antval, rx_core + 1);
27057 		wlc_phy_rfctrlintc_override_nphy(pi,
27058 						 NPHY_RfctrlIntc_override_TRSW,
27059 						 tx_antval, tx_core + 1);
27060 	}
27061 }
27062 
wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy * pi,u8 rx_core)27063 static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
27064 {
27065 
27066 	write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
27067 	write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
27068 		      pi->tx_rx_cal_phy_saveregs[1]);
27069 	write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
27070 		      pi->tx_rx_cal_phy_saveregs[2]);
27071 	write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
27072 	write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
27073 
27074 	write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
27075 	write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
27076 	write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
27077 	write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
27078 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27079 		write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
27080 		write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
27081 		write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
27082 		write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
27083 	}
27084 
27085 	write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
27086 	write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
27087 }
27088 
27089 static void
wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy * pi,u8 rx_core,u16 * rxgain,u8 cal_type)27090 wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
27091 				 u16 *rxgain, u8 cal_type)
27092 {
27093 
27094 	u16 num_samps;
27095 	struct phy_iq_est est[PHY_CORE_MAX];
27096 	u8 tx_core;
27097 	struct nphy_iq_comp save_comp, zero_comp;
27098 	u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
27099 	    thresh_pwr = 10000;
27100 	s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
27101 	bool gainctrl_done = false;
27102 	u8 mix_tia_gain = 3;
27103 	s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
27104 	s8 curr_gaintbl_index = 3;
27105 	u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
27106 	const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
27107 	u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
27108 	int fine_gain_idx;
27109 	s8 txpwrindex;
27110 	u16 nphy_rxcal_txgain[2];
27111 
27112 	if (NREV_GE(pi->pubpi.phy_rev, 7))
27113 		tx_core = rx_core;
27114 	else
27115 		tx_core = 1 - rx_core;
27116 
27117 	num_samps = 1024;
27118 	desired_log2_pwr = (cal_type == 0) ? 13 : 13;
27119 
27120 	wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
27121 	zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
27122 	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
27123 
27124 	if (CHSPEC_IS5G(pi->radio_chanspec)) {
27125 		if (NREV_GE(pi->pubpi.phy_rev, 7))
27126 			mix_tia_gain = 3;
27127 		else if (NREV_GE(pi->pubpi.phy_rev, 4))
27128 			mix_tia_gain = 4;
27129 		else
27130 			mix_tia_gain = 6;
27131 		if (NREV_GE(pi->pubpi.phy_rev, 7))
27132 			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
27133 		else
27134 			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
27135 	} else {
27136 		if (NREV_GE(pi->pubpi.phy_rev, 7))
27137 			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
27138 		else
27139 			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
27140 	}
27141 
27142 	do {
27143 
27144 		hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
27145 			0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
27146 		lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
27147 		lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
27148 		lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
27149 		lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
27150 		txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
27151 
27152 		if (NREV_GE(pi->pubpi.phy_rev, 7))
27153 			wlc_phy_rfctrl_override_1tomany_nphy(
27154 				pi,
27155 				NPHY_REV7_RfctrlOverride_cmd_rxgain,
27156 				((lpf_biq1 << 12) |
27157 				 (lpf_biq0 << 8) |
27158 				 (mix_tia_gain << 4) | (lna2 << 2)
27159 				 | lna1), 0x3, 0);
27160 		else
27161 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27162 						     ((hpvga << 12) |
27163 						      (lpf_biq1 << 10) |
27164 						      (lpf_biq0 << 8) |
27165 						      (mix_tia_gain << 4) |
27166 						      (lna2 << 2) | lna1), 0x3,
27167 						     0);
27168 
27169 		pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
27170 
27171 		if (txpwrindex == -1) {
27172 			nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
27173 			nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
27174 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
27175 						 2, 0x110, 16,
27176 						 nphy_rxcal_txgain);
27177 		} else {
27178 			wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
27179 						 false);
27180 		}
27181 
27182 		wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
27183 				     NPHY_RXCAL_TONEFREQ_40MHz :
27184 				     NPHY_RXCAL_TONEFREQ_20MHz,
27185 				     NPHY_RXCAL_TONEAMP, 0, cal_type, false);
27186 
27187 		wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27188 		i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
27189 		q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
27190 		curr_pwr = i_pwr + q_pwr;
27191 
27192 		switch (gainctrl_dirn) {
27193 		case NPHY_RXCAL_GAIN_INIT:
27194 			if (curr_pwr > thresh_pwr) {
27195 				gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
27196 				prev_gaintbl_index = curr_gaintbl_index;
27197 				curr_gaintbl_index--;
27198 			} else {
27199 				gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
27200 				prev_gaintbl_index = curr_gaintbl_index;
27201 				curr_gaintbl_index++;
27202 			}
27203 			break;
27204 
27205 		case NPHY_RXCAL_GAIN_UP:
27206 			if (curr_pwr > thresh_pwr) {
27207 				gainctrl_done = true;
27208 				optim_pwr = prev_pwr;
27209 				optim_gaintbl_index = prev_gaintbl_index;
27210 			} else {
27211 				prev_gaintbl_index = curr_gaintbl_index;
27212 				curr_gaintbl_index++;
27213 			}
27214 			break;
27215 
27216 		case NPHY_RXCAL_GAIN_DOWN:
27217 			if (curr_pwr > thresh_pwr) {
27218 				prev_gaintbl_index = curr_gaintbl_index;
27219 				curr_gaintbl_index--;
27220 			} else {
27221 				gainctrl_done = true;
27222 				optim_pwr = curr_pwr;
27223 				optim_gaintbl_index = curr_gaintbl_index;
27224 			}
27225 			break;
27226 
27227 		default:
27228 			break;
27229 		}
27230 
27231 		if ((curr_gaintbl_index < 0) ||
27232 		    (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27233 			gainctrl_done = true;
27234 			optim_pwr = curr_pwr;
27235 			optim_gaintbl_index = prev_gaintbl_index;
27236 		} else {
27237 			prev_pwr = curr_pwr;
27238 		}
27239 
27240 		wlc_phy_stopplayback_nphy(pi);
27241 	} while (!gainctrl_done);
27242 
27243 	hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27244 	lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27245 	lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27246 	lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27247 	lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27248 	txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27249 
27250 	actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27251 	delta_pwr = desired_log2_pwr - actual_log2_pwr;
27252 
27253 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27254 		fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27255 
27256 		if (fine_gain_idx + (int)lpf_biq0 > 10)
27257 			lpf_biq1 = 10 - lpf_biq0;
27258 		else
27259 			lpf_biq1 = (u16) max(fine_gain_idx, 0);
27260 
27261 		wlc_phy_rfctrl_override_1tomany_nphy(
27262 			pi,
27263 			NPHY_REV7_RfctrlOverride_cmd_rxgain,
27264 			((lpf_biq1 << 12) |
27265 			 (lpf_biq0 << 8) |
27266 			 (mix_tia_gain << 4) |
27267 			 (lna2 << 2) | lna1), 0x3,
27268 			0);
27269 	} else {
27270 		hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27271 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27272 					     ((hpvga << 12) |
27273 					      (lpf_biq1 << 10) |
27274 					      (lpf_biq0 << 8) |
27275 					      (mix_tia_gain << 4) |
27276 					      (lna2 << 2) |
27277 					      lna1), 0x3, 0);
27278 	}
27279 
27280 	if (rxgain != NULL) {
27281 		*rxgain++ = lna1;
27282 		*rxgain++ = lna2;
27283 		*rxgain++ = mix_tia_gain;
27284 		*rxgain++ = lpf_biq0;
27285 		*rxgain++ = lpf_biq1;
27286 		*rxgain = hpvga;
27287 	}
27288 
27289 	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27290 }
27291 
27292 static void
wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy * pi,u8 rx_core,u16 * rxgain,u8 cal_type)27293 wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27294 			    u8 cal_type)
27295 {
27296 	wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27297 }
27298 
27299 static u8
wlc_phy_rc_sweep_nphy(struct brcms_phy * pi,u8 core_idx,u8 loopback_type)27300 wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27301 {
27302 	u32 target_bws[2] = { 9500, 21000 };
27303 	u32 ref_tones[2] = { 3000, 6000 };
27304 	u32 target_bw, ref_tone;
27305 
27306 	u32 target_pwr_ratios[2] = { 28606, 18468 };
27307 	u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27308 
27309 	u16 start_rccal_ovr_val = 128;
27310 	u16 txlpf_rccal_lpc_ovr_val = 128;
27311 	u16 rxlpf_rccal_hpc_ovr_val = 159;
27312 
27313 	u16 orig_txlpf_rccal_lpc_ovr_val;
27314 	u16 orig_rxlpf_rccal_hpc_ovr_val;
27315 	u16 radio_addr_offset_rx;
27316 	u16 radio_addr_offset_tx;
27317 	u16 orig_dcBypass;
27318 	u16 orig_RxStrnFilt40Num[6];
27319 	u16 orig_RxStrnFilt40Den[4];
27320 	u16 orig_rfctrloverride[2];
27321 	u16 orig_rfctrlauxreg[2];
27322 	u16 orig_rfctrlrssiothers;
27323 	u16 tx_lpf_bw = 4;
27324 
27325 	u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27326 	u16 lpf_hpc = 7, hpvga_hpc = 7;
27327 
27328 	s8 rccal_stepsize;
27329 	u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27330 	u32 ref_iq_vals = 0, target_iq_vals = 0;
27331 	u16 num_samps, log_num_samps = 10;
27332 	struct phy_iq_est est[PHY_CORE_MAX];
27333 
27334 	if (NREV_GE(pi->pubpi.phy_rev, 7))
27335 		return 0;
27336 
27337 	num_samps = (1 << log_num_samps);
27338 
27339 	if (CHSPEC_IS40(pi->radio_chanspec)) {
27340 		target_bw = target_bws[1];
27341 		target_pwr_ratio = target_pwr_ratios[1];
27342 		ref_tone = ref_tones[1];
27343 		rx_lpf_bw = rx_lpf_bws[1];
27344 	} else {
27345 		target_bw = target_bws[0];
27346 		target_pwr_ratio = target_pwr_ratios[0];
27347 		ref_tone = ref_tones[0];
27348 		rx_lpf_bw = rx_lpf_bws[0];
27349 	}
27350 
27351 	if (core_idx == 0) {
27352 		radio_addr_offset_rx = RADIO_2056_RX0;
27353 		radio_addr_offset_tx =
27354 			(loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27355 	} else {
27356 		radio_addr_offset_rx = RADIO_2056_RX1;
27357 		radio_addr_offset_tx =
27358 			(loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27359 	}
27360 
27361 	orig_txlpf_rccal_lpc_ovr_val =
27362 		read_radio_reg(pi,
27363 			       (RADIO_2056_TX_TXLPF_RCCAL |
27364 				radio_addr_offset_tx));
27365 	orig_rxlpf_rccal_hpc_ovr_val =
27366 		read_radio_reg(pi,
27367 			       (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27368 				radio_addr_offset_rx));
27369 
27370 	orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27371 
27372 	orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27373 	orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27374 	orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27375 	orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27376 	orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27377 	orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27378 	orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27379 	orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27380 	orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27381 	orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27382 
27383 	orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27384 	orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27385 	orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27386 	orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27387 	orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27388 
27389 	write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27390 			txlpf_rccal_lpc_ovr_val);
27391 
27392 	write_radio_reg(pi,
27393 			(RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27394 			rxlpf_rccal_hpc_ovr_val);
27395 
27396 	mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27397 
27398 	write_phy_reg(pi, 0x267, 0x02d4);
27399 	write_phy_reg(pi, 0x268, 0x0000);
27400 	write_phy_reg(pi, 0x269, 0x0000);
27401 	write_phy_reg(pi, 0x26a, 0x0000);
27402 	write_phy_reg(pi, 0x26b, 0x0000);
27403 	write_phy_reg(pi, 0x26c, 0x02d4);
27404 	write_phy_reg(pi, 0x26d, 0x0000);
27405 	write_phy_reg(pi, 0x26e, 0x0000);
27406 	write_phy_reg(pi, 0x26f, 0x0000);
27407 	write_phy_reg(pi, 0x270, 0x0000);
27408 
27409 	or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27410 	or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27411 	or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27412 	or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27413 
27414 	mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27415 		    (0x7 << 10), (tx_lpf_bw << 10));
27416 	mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27417 		    (0x7 << 0), (hpvga_hpc << 0));
27418 	mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27419 		    (0x7 << 4), (lpf_hpc << 4));
27420 	mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27421 		    (0x7 << 8), (rx_lpf_bw << 8));
27422 
27423 	rccal_stepsize = 16;
27424 	rccal_val = start_rccal_ovr_val + rccal_stepsize;
27425 
27426 	while (rccal_stepsize >= 0) {
27427 		write_radio_reg(pi,
27428 				(RADIO_2056_RX_RXLPF_RCCAL_LPC |
27429 				 radio_addr_offset_rx), rccal_val);
27430 
27431 		if (rccal_stepsize == 16) {
27432 
27433 			wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27434 					     0, 1, false);
27435 			udelay(2);
27436 
27437 			wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27438 
27439 			if (core_idx == 0)
27440 				ref_iq_vals =
27441 					max_t(u32, (est[0].i_pwr +
27442 						    est[0].q_pwr) >>
27443 					      (log_num_samps + 1),
27444 					      1);
27445 			else
27446 				ref_iq_vals =
27447 					max_t(u32, (est[1].i_pwr +
27448 						    est[1].q_pwr) >>
27449 					      (log_num_samps + 1),
27450 					      1);
27451 
27452 			wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27453 					     0, 1, false);
27454 			udelay(2);
27455 		}
27456 
27457 		wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27458 
27459 		if (core_idx == 0)
27460 			target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27461 					 (log_num_samps + 1);
27462 		else
27463 			target_iq_vals =
27464 				(est[1].i_pwr +
27465 				 est[1].q_pwr) >> (log_num_samps + 1);
27466 
27467 		pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27468 
27469 		if (rccal_stepsize == 0)
27470 			rccal_stepsize--;
27471 		else if (rccal_stepsize == 1) {
27472 			last_rccal_val = rccal_val;
27473 			rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27474 			last_pwr_ratio = pwr_ratio;
27475 			rccal_stepsize--;
27476 		} else {
27477 			rccal_stepsize = (rccal_stepsize >> 1);
27478 			rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27479 				      rccal_stepsize : (-rccal_stepsize));
27480 		}
27481 
27482 		if (rccal_stepsize == -1) {
27483 			best_rccal_val =
27484 				(abs((int)last_pwr_ratio -
27485 				     (int)target_pwr_ratio) <
27486 				 abs((int)pwr_ratio -
27487 				     (int)target_pwr_ratio)) ? last_rccal_val :
27488 				rccal_val;
27489 
27490 			if (CHSPEC_IS40(pi->radio_chanspec)) {
27491 				if ((best_rccal_val > 140)
27492 				    || (best_rccal_val < 135))
27493 					best_rccal_val = 138;
27494 			} else {
27495 				if ((best_rccal_val > 142)
27496 				    || (best_rccal_val < 137))
27497 					best_rccal_val = 140;
27498 			}
27499 
27500 			write_radio_reg(pi,
27501 					(RADIO_2056_RX_RXLPF_RCCAL_LPC |
27502 					 radio_addr_offset_rx), best_rccal_val);
27503 		}
27504 	}
27505 
27506 	wlc_phy_stopplayback_nphy(pi);
27507 
27508 	write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27509 			orig_txlpf_rccal_lpc_ovr_val);
27510 	write_radio_reg(pi,
27511 			(RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27512 			orig_rxlpf_rccal_hpc_ovr_val);
27513 
27514 	mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27515 
27516 	write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27517 	write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27518 	write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27519 	write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27520 	write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27521 	write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27522 	write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27523 	write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27524 	write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27525 	write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27526 
27527 	write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27528 	write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27529 	write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27530 	write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27531 	write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27532 
27533 	pi->nphy_anarxlpf_adjusted = false;
27534 
27535 	return best_rccal_val - 0x80;
27536 }
27537 
27538 #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)27539 static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27540 				      struct nphy_txgains target_gain,
27541 				      u8 cal_type, bool debug)
27542 {
27543 	u16 orig_BBConfig;
27544 	u8 core_no, rx_core;
27545 	u8 best_rccal[2];
27546 	u16 gain_save[2];
27547 	u16 cal_gain[2];
27548 	struct nphy_iqcal_params cal_params[2];
27549 	u8 rxcore_state;
27550 	s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27551 	s8 txlpf_idac;
27552 	bool phyhang_avoid_state = false;
27553 	bool skip_rxiqcal = false;
27554 
27555 	orig_BBConfig = read_phy_reg(pi, 0x01);
27556 	mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27557 
27558 	wlc_phy_stay_in_carriersearch_nphy(pi, true);
27559 
27560 	if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27561 		phyhang_avoid_state = pi->phyhang_avoid;
27562 		pi->phyhang_avoid = false;
27563 	}
27564 
27565 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27566 
27567 	for (core_no = 0; core_no <= 1; core_no++) {
27568 		wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27569 					      &cal_params[core_no]);
27570 		cal_gain[core_no] = cal_params[core_no].cal_gain;
27571 	}
27572 
27573 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27574 
27575 	rxcore_state = wlc_phy_rxcore_getstate_nphy(
27576 		(struct brcms_phy_pub *) pi);
27577 
27578 	for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27579 
27580 		skip_rxiqcal =
27581 			((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27582 
27583 		wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27584 
27585 		wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27586 
27587 		if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27588 
27589 			wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27590 
27591 			wlc_phy_tx_tone_nphy(pi,
27592 					     (CHSPEC_IS40(
27593 						      pi->radio_chanspec)) ?
27594 					     NPHY_RXCAL_TONEFREQ_40MHz :
27595 					     NPHY_RXCAL_TONEFREQ_20MHz,
27596 					     NPHY_RXCAL_TONEAMP, 0, cal_type,
27597 					     false);
27598 
27599 			if (debug)
27600 				mdelay(WAIT_FOR_SCOPE);
27601 
27602 			wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27603 			wlc_phy_stopplayback_nphy(pi);
27604 		}
27605 
27606 		if (((cal_type == 1) || (cal_type == 2))
27607 		    && NREV_LT(pi->pubpi.phy_rev, 7)) {
27608 
27609 			if (rx_core == PHY_CORE_1) {
27610 
27611 				if (rxcore_state == 1)
27612 					wlc_phy_rxcore_setstate_nphy(
27613 						(struct brcms_phy_pub *) pi, 3);
27614 
27615 				wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27616 							    1);
27617 
27618 				best_rccal[rx_core] =
27619 					wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27620 				pi->nphy_rccal_value = best_rccal[rx_core];
27621 
27622 				if (rxcore_state == 1)
27623 					wlc_phy_rxcore_setstate_nphy(
27624 						(struct brcms_phy_pub *) pi,
27625 						rxcore_state);
27626 			}
27627 		}
27628 
27629 		wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27630 
27631 		wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27632 		wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27633 	}
27634 
27635 	if ((cal_type == 1) || (cal_type == 2)) {
27636 
27637 		best_rccal[0] = best_rccal[1];
27638 		write_radio_reg(pi,
27639 				(RADIO_2056_RX_RXLPF_RCCAL_LPC |
27640 				 RADIO_2056_RX0), (best_rccal[0] | 0x80));
27641 
27642 		for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27643 			rxlpf_rccal_hpc =
27644 				(((int)best_rccal[rx_core] - 12) >> 1) + 10;
27645 			txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27646 
27647 			if (PHY_IPA(pi)) {
27648 				txlpf_rccal_lpc +=
27649 					(pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27650 				txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27651 					     0x0e : 0x13;
27652 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27653 						 TXLPF_IDAC_4, txlpf_idac);
27654 			}
27655 
27656 			rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27657 					      0);
27658 			txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27659 					      0);
27660 
27661 			write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27662 					     ((rx_core ==
27663 					       PHY_CORE_0) ? RADIO_2056_RX0 :
27664 					      RADIO_2056_RX1)),
27665 					(rxlpf_rccal_hpc | 0x80));
27666 
27667 			write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27668 					     ((rx_core ==
27669 					       PHY_CORE_0) ? RADIO_2056_TX0 :
27670 					      RADIO_2056_TX1)),
27671 					(txlpf_rccal_lpc | 0x80));
27672 		}
27673 	}
27674 
27675 	write_phy_reg(pi, 0x01, orig_BBConfig);
27676 
27677 	wlc_phy_resetcca_nphy(pi);
27678 
27679 	if (NREV_GE(pi->pubpi.phy_rev, 7))
27680 		wlc_phy_rfctrl_override_1tomany_nphy(
27681 			pi,
27682 			NPHY_REV7_RfctrlOverride_cmd_rxgain,
27683 			0, 0x3, 1);
27684 	else
27685 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27686 
27687 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27688 
27689 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27690 				 gain_save);
27691 
27692 	if (NREV_GE(pi->pubpi.phy_rev, 4))
27693 		pi->phyhang_avoid = phyhang_avoid_state;
27694 
27695 	wlc_phy_stay_in_carriersearch_nphy(pi, false);
27696 
27697 	return 0;
27698 }
27699 
27700 static int
wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy * pi,struct nphy_txgains target_gain,bool debug)27701 wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27702 			   struct nphy_txgains target_gain, bool debug)
27703 {
27704 	struct phy_iq_est est[PHY_CORE_MAX];
27705 	u8 core_num, rx_core, tx_core;
27706 	u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27707 	u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27708 	u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27709 	s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27710 	s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27711 	u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27712 	u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27713 	u16 num_samps;
27714 	u32 i_pwr, q_pwr, tot_pwr[3];
27715 	u8 gain_pass, use_hpf_num;
27716 	u16 mask, val1, val2;
27717 	u16 core_no;
27718 	u16 gain_save[2];
27719 	u16 cal_gain[2];
27720 	struct nphy_iqcal_params cal_params[2];
27721 	u8 phy_bw;
27722 	int bcmerror = 0;
27723 	bool first_playtone = true;
27724 
27725 	wlc_phy_stay_in_carriersearch_nphy(pi, true);
27726 
27727 	if (NREV_LT(pi->pubpi.phy_rev, 2))
27728 		wlc_phy_reapply_txcal_coeffs_nphy(pi);
27729 
27730 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27731 
27732 	for (core_no = 0; core_no <= 1; core_no++) {
27733 		wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27734 					      &cal_params[core_no]);
27735 		cal_gain[core_no] = cal_params[core_no].cal_gain;
27736 	}
27737 
27738 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27739 
27740 	num_samps = 1024;
27741 	desired_log2_pwr = 13;
27742 
27743 	for (core_num = 0; core_num < 2; core_num++) {
27744 
27745 		rx_core = core_num;
27746 		tx_core = 1 - core_num;
27747 
27748 		orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27749 		orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27750 						0xa6 : 0xa7);
27751 		orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27752 		orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27753 						 0x91 : 0x92);
27754 		orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27755 						 0x91 : 0x92);
27756 
27757 		mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27758 		mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27759 
27760 		or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27761 			   ((0x1 << 1) | (0x1 << 2)));
27762 		or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27763 
27764 		if (((pi->nphy_rxcalparams) & 0xff000000))
27765 			write_phy_reg(pi,
27766 				      (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27767 				      (CHSPEC_IS5G(pi->radio_chanspec) ?
27768 					0x140 : 0x110));
27769 		else
27770 			write_phy_reg(pi,
27771 				      (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27772 				      (CHSPEC_IS5G(pi->radio_chanspec) ?
27773 				       0x180 : 0x120));
27774 
27775 		write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27776 			      (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27777 			       0x114));
27778 
27779 		mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27780 		if (rx_core == PHY_CORE_0) {
27781 			val1 = RADIO_2055_COUPLE_RX_MASK;
27782 			val2 = RADIO_2055_COUPLE_TX_MASK;
27783 		} else {
27784 			val1 = RADIO_2055_COUPLE_TX_MASK;
27785 			val2 = RADIO_2055_COUPLE_RX_MASK;
27786 		}
27787 
27788 		if ((pi->nphy_rxcalparams & 0x10000)) {
27789 			mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27790 				      val1);
27791 			mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27792 				      val2);
27793 		}
27794 
27795 		for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27796 
27797 			if (debug)
27798 				mdelay(WAIT_FOR_SCOPE);
27799 
27800 			if (gain_pass < 3) {
27801 				curr_lna = lna_vals[gain_pass];
27802 				curr_hpf1 = hpf1_vals[gain_pass];
27803 				curr_hpf2 = hpf2_vals[gain_pass];
27804 			} else {
27805 
27806 				if (tot_pwr[1] > 10000) {
27807 					curr_lna = lna_vals[2];
27808 					curr_hpf1 = hpf1_vals[2];
27809 					curr_hpf2 = hpf2_vals[2];
27810 					use_hpf_num = 1;
27811 					curr_hpf = curr_hpf1;
27812 					actual_log2_pwr =
27813 						wlc_phy_nbits(tot_pwr[2]);
27814 				} else {
27815 					if (tot_pwr[0] > 10000) {
27816 						curr_lna = lna_vals[1];
27817 						curr_hpf1 = hpf1_vals[1];
27818 						curr_hpf2 = hpf2_vals[1];
27819 						use_hpf_num = 1;
27820 						curr_hpf = curr_hpf1;
27821 						actual_log2_pwr =
27822 							wlc_phy_nbits(
27823 								tot_pwr[1]);
27824 					} else {
27825 						curr_lna = lna_vals[0];
27826 						curr_hpf1 = hpf1_vals[0];
27827 						curr_hpf2 = hpf2_vals[0];
27828 						use_hpf_num = 2;
27829 						curr_hpf = curr_hpf2;
27830 						actual_log2_pwr =
27831 							wlc_phy_nbits(
27832 								tot_pwr[0]);
27833 					}
27834 				}
27835 
27836 				hpf_change = desired_log2_pwr - actual_log2_pwr;
27837 				curr_hpf += hpf_change;
27838 				curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27839 				if (use_hpf_num == 1)
27840 					curr_hpf1 = curr_hpf;
27841 				else
27842 					curr_hpf2 = curr_hpf;
27843 			}
27844 
27845 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27846 						     ((curr_hpf2 << 8) |
27847 						      (curr_hpf1 << 4) |
27848 						      (curr_lna << 2)), 0x3, 0);
27849 			wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27850 
27851 			wlc_phy_stopplayback_nphy(pi);
27852 
27853 			if (first_playtone) {
27854 				bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27855 						(u16) (pi->nphy_rxcalparams &
27856 						       0xffff), 0, 0, true);
27857 				first_playtone = false;
27858 			} else {
27859 				phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27860 					  40 : 20;
27861 				wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27862 							0, 0, 0, true);
27863 			}
27864 
27865 			if (bcmerror == 0) {
27866 				if (gain_pass < 3) {
27867 
27868 					wlc_phy_rx_iq_est_nphy(pi, est,
27869 							       num_samps, 32,
27870 							       0);
27871 					i_pwr =	(est[rx_core].i_pwr +
27872 						 num_samps / 2) / num_samps;
27873 					q_pwr =	(est[rx_core].q_pwr +
27874 						 num_samps / 2) / num_samps;
27875 					tot_pwr[gain_pass] = i_pwr + q_pwr;
27876 				} else {
27877 
27878 					wlc_phy_calc_rx_iq_comp_nphy(pi,
27879 								     (1 <<
27880 								      rx_core));
27881 				}
27882 
27883 				wlc_phy_stopplayback_nphy(pi);
27884 			}
27885 
27886 			if (bcmerror != 0)
27887 				break;
27888 		}
27889 
27890 		and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27891 		and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27892 
27893 		write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27894 			      0x92, orig_RfctrlIntcTx);
27895 		write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27896 			      0x92, orig_RfctrlIntcRx);
27897 		write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27898 		write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27899 			      0xa7, orig_AfectrlCore);
27900 		write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27901 
27902 		if (bcmerror != 0)
27903 			break;
27904 	}
27905 
27906 	wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27907 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27908 
27909 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27910 				 gain_save);
27911 
27912 	wlc_phy_stay_in_carriersearch_nphy(pi, false);
27913 
27914 	return bcmerror;
27915 }
27916 
27917 int
wlc_phy_cal_rxiq_nphy(struct brcms_phy * pi,struct nphy_txgains target_gain,u8 cal_type,bool debug)27918 wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27919 		      u8 cal_type, bool debug)
27920 {
27921 	if (NREV_GE(pi->pubpi.phy_rev, 7))
27922 		cal_type = 0;
27923 
27924 	if (NREV_GE(pi->pubpi.phy_rev, 3))
27925 		return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27926 						  debug);
27927 	else
27928 		return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27929 }
27930 
wlc_phy_txpwr_fixpower_nphy(struct brcms_phy * pi)27931 void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27932 {
27933 	uint core;
27934 	u32 txgain;
27935 	u16 rad_gain, dac_gain, bbmult, m1m2;
27936 	u8 txpi[2], chan_freq_range;
27937 	s32 rfpwr_offset;
27938 
27939 	if (pi->phyhang_avoid)
27940 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
27941 
27942 	if (pi->sh->sromrev < 4) {
27943 		txpi[0] = txpi[1] = 72;
27944 	} else {
27945 
27946 		chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27947 		switch (chan_freq_range) {
27948 		case WL_CHAN_FREQ_RANGE_2G:
27949 		case WL_CHAN_FREQ_RANGE_5GL:
27950 		case WL_CHAN_FREQ_RANGE_5GM:
27951 		case WL_CHAN_FREQ_RANGE_5GH:
27952 			txpi[0] = 0;
27953 			txpi[1] = 0;
27954 			break;
27955 		default:
27956 			txpi[0] = txpi[1] = 91;
27957 			break;
27958 		}
27959 	}
27960 
27961 	if (NREV_GE(pi->pubpi.phy_rev, 7))
27962 		txpi[0] = txpi[1] = 30;
27963 	else if (NREV_GE(pi->pubpi.phy_rev, 3))
27964 		txpi[0] = txpi[1] = 40;
27965 
27966 	if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27967 
27968 		if ((txpi[0] < 40) || (txpi[0] > 100) ||
27969 		    (txpi[1] < 40) || (txpi[1] > 100))
27970 			txpi[0] = txpi[1] = 91;
27971 	}
27972 
27973 	pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27974 	pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27975 	pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27976 	pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27977 
27978 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27979 		uint phyrev = pi->pubpi.phy_rev;
27980 
27981 		if (NREV_GE(phyrev, 3)) {
27982 			if (PHY_IPA(pi)) {
27983 				u32 *tx_gaintbl =
27984 					wlc_phy_get_ipa_gaintbl_nphy(pi);
27985 				txgain = tx_gaintbl[txpi[core]];
27986 			} else {
27987 				if (CHSPEC_IS5G(pi->radio_chanspec)) {
27988 					if (NREV_IS(phyrev, 3)) {
27989 						txgain =
27990 						      nphy_tpc_5GHz_txgain_rev3
27991 								   [txpi[core]];
27992 					} else if (NREV_IS(phyrev, 4)) {
27993 						txgain = (
27994 						  pi->srom_fem5g.extpagain ==
27995 						  3) ?
27996 						  nphy_tpc_5GHz_txgain_HiPwrEPA
27997 						 [txpi[core]] :
27998 						 nphy_tpc_5GHz_txgain_rev4
27999 						 [txpi[core]];
28000 					} else {
28001 						txgain =
28002 						      nphy_tpc_5GHz_txgain_rev5
28003 								   [txpi[core]];
28004 					}
28005 				} else {
28006 					if (NREV_GE(phyrev, 5) &&
28007 					    (pi->srom_fem2g.extpagain == 3)) {
28008 						txgain =
28009 							nphy_tpc_txgain_HiPwrEPA
28010 							[txpi[core]];
28011 					} else {
28012 						txgain = nphy_tpc_txgain_rev3
28013 							 [txpi[core]];
28014 					}
28015 				}
28016 			}
28017 		} else {
28018 			txgain = nphy_tpc_txgain[txpi[core]];
28019 		}
28020 
28021 		if (NREV_GE(phyrev, 3))
28022 			rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
28023 		else
28024 			rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
28025 
28026 		if (NREV_GE(phyrev, 7))
28027 			dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
28028 		else
28029 			dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28030 
28031 		bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28032 
28033 		if (NREV_GE(phyrev, 3))
28034 			mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28035 					 0xa5), (0x1 << 8), (0x1 << 8));
28036 		else
28037 			mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28038 
28039 		write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
28040 
28041 		wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28042 					 &rad_gain);
28043 
28044 		wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28045 		m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28046 		m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
28047 		wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28048 
28049 		if (PHY_IPA(pi)) {
28050 			wlc_phy_table_read_nphy(pi,
28051 						(core ==
28052 						 PHY_CORE_0 ?
28053 						 NPHY_TBL_ID_CORE1TXPWRCTL :
28054 						 NPHY_TBL_ID_CORE2TXPWRCTL), 1,
28055 						576 + txpi[core], 32,
28056 						&rfpwr_offset);
28057 
28058 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28059 				    0x29b, (0x1ff << 4),
28060 				    ((s16) rfpwr_offset) << 4);
28061 
28062 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28063 				    0x29b, (0x1 << 2), (1) << 2);
28064 
28065 		}
28066 	}
28067 
28068 	and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
28069 
28070 	if (pi->phyhang_avoid)
28071 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
28072 }
28073 
28074 static void
wlc_phy_txpwr_nphy_srom_convert(u8 * srom_max,u16 * pwr_offset,u8 tmp_max_pwr,u8 rate_start,u8 rate_end)28075 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
28076 				u8 tmp_max_pwr, u8 rate_start,
28077 				u8 rate_end)
28078 {
28079 	u8 rate;
28080 	u8 word_num, nibble_num;
28081 	u8 tmp_nibble;
28082 
28083 	for (rate = rate_start; rate <= rate_end; rate++) {
28084 		word_num = (rate - rate_start) >> 2;
28085 		nibble_num = (rate - rate_start) & 0x3;
28086 		tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
28087 
28088 		srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
28089 	}
28090 }
28091 
28092 static void
wlc_phy_txpwr_nphy_po_apply(u8 * srom_max,u8 pwr_offset,u8 rate_start,u8 rate_end)28093 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
28094 			    u8 rate_start, u8 rate_end)
28095 {
28096 	u8 rate;
28097 
28098 	for (rate = rate_start; rate <= rate_end; rate++)
28099 		srom_max[rate] -= 2 * pwr_offset;
28100 }
28101 
28102 void
wlc_phy_ofdm_to_mcs_powers_nphy(u8 * power,u8 rate_mcs_start,u8 rate_mcs_end,u8 rate_ofdm_start)28103 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
28104 				u8 rate_mcs_end, u8 rate_ofdm_start)
28105 {
28106 	u8 rate1, rate2;
28107 
28108 	rate2 = rate_ofdm_start;
28109 	for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
28110 		power[rate1] = power[rate2];
28111 		rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
28112 	}
28113 	power[rate_mcs_end] = power[rate_mcs_end - 1];
28114 }
28115 
28116 void
wlc_phy_mcs_to_ofdm_powers_nphy(u8 * power,u8 rate_ofdm_start,u8 rate_ofdm_end,u8 rate_mcs_start)28117 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
28118 				u8 rate_ofdm_end, u8 rate_mcs_start)
28119 {
28120 	u8 rate1, rate2;
28121 
28122 	for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
28123 	     rate1 <= rate_ofdm_end; rate1++, rate2++) {
28124 		power[rate1] = power[rate2];
28125 		if (rate1 == rate_ofdm_start)
28126 			power[++rate1] = power[rate2];
28127 	}
28128 }
28129 
wlc_phy_txpwr_apply_nphy(struct brcms_phy * pi)28130 void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
28131 {
28132 	uint rate1, rate2, band_num;
28133 	u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
28134 	u8 tmp_max_pwr = 0;
28135 	u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
28136 	u8 *tx_srom_max_rate = NULL;
28137 
28138 	for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
28139 	     band_num++) {
28140 		switch (band_num) {
28141 		case 0:
28142 
28143 			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
28144 					  pi->nphy_pwrctrl_info[1].max_pwr_2g);
28145 
28146 			pwr_offsets1[0] = pi->cck2gpo;
28147 			wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
28148 							pwr_offsets1,
28149 							tmp_max_pwr,
28150 							TXP_FIRST_CCK,
28151 							TXP_LAST_CCK);
28152 
28153 			pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
28154 			pwr_offsets1[1] =
28155 				(u16) (pi->ofdm2gpo >> 16) & 0xffff;
28156 
28157 			pwr_offsets2 = pi->mcs2gpo;
28158 
28159 			tmp_cddpo = pi->cdd2gpo;
28160 			tmp_stbcpo = pi->stbc2gpo;
28161 			tmp_bw40po = pi->bw402gpo;
28162 
28163 			tx_srom_max_rate = pi->tx_srom_max_rate_2g;
28164 			break;
28165 		case 1:
28166 
28167 			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
28168 					  pi->nphy_pwrctrl_info[1].max_pwr_5gm);
28169 
28170 			pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
28171 			pwr_offsets1[1] =
28172 				(u16) (pi->ofdm5gpo >> 16) & 0xffff;
28173 
28174 			pwr_offsets2 = pi->mcs5gpo;
28175 
28176 			tmp_cddpo = pi->cdd5gpo;
28177 			tmp_stbcpo = pi->stbc5gpo;
28178 			tmp_bw40po = pi->bw405gpo;
28179 
28180 			tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
28181 			break;
28182 		case 2:
28183 
28184 			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
28185 					  pi->nphy_pwrctrl_info[1].max_pwr_5gl);
28186 
28187 			pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
28188 			pwr_offsets1[1] =
28189 				(u16) (pi->ofdm5glpo >> 16) & 0xffff;
28190 
28191 			pwr_offsets2 = pi->mcs5glpo;
28192 
28193 			tmp_cddpo = pi->cdd5glpo;
28194 			tmp_stbcpo = pi->stbc5glpo;
28195 			tmp_bw40po = pi->bw405glpo;
28196 
28197 			tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
28198 			break;
28199 		case 3:
28200 
28201 			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
28202 					  pi->nphy_pwrctrl_info[1].max_pwr_5gh);
28203 
28204 			pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
28205 			pwr_offsets1[1] =
28206 				(u16) (pi->ofdm5ghpo >> 16) & 0xffff;
28207 
28208 			pwr_offsets2 = pi->mcs5ghpo;
28209 
28210 			tmp_cddpo = pi->cdd5ghpo;
28211 			tmp_stbcpo = pi->stbc5ghpo;
28212 			tmp_bw40po = pi->bw405ghpo;
28213 
28214 			tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
28215 			break;
28216 		}
28217 
28218 		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
28219 						tmp_max_pwr, TXP_FIRST_OFDM,
28220 						TXP_LAST_OFDM);
28221 
28222 		wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
28223 						TXP_FIRST_MCS_20_SISO,
28224 						TXP_LAST_MCS_20_SISO,
28225 						TXP_FIRST_OFDM);
28226 
28227 		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28228 						tmp_max_pwr,
28229 						TXP_FIRST_MCS_20_CDD,
28230 						TXP_LAST_MCS_20_CDD);
28231 
28232 		if (NREV_GE(pi->pubpi.phy_rev, 3))
28233 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28234 						    TXP_FIRST_MCS_20_CDD,
28235 						    TXP_LAST_MCS_20_CDD);
28236 
28237 		wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28238 						TXP_FIRST_OFDM_20_CDD,
28239 						TXP_LAST_OFDM_20_CDD,
28240 						TXP_FIRST_MCS_20_CDD);
28241 
28242 		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28243 						tmp_max_pwr,
28244 						TXP_FIRST_MCS_20_STBC,
28245 						TXP_LAST_MCS_20_STBC);
28246 
28247 		if (NREV_GE(pi->pubpi.phy_rev, 3))
28248 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28249 						    tmp_stbcpo,
28250 						    TXP_FIRST_MCS_20_STBC,
28251 						    TXP_LAST_MCS_20_STBC);
28252 
28253 		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28254 						&pwr_offsets2[2], tmp_max_pwr,
28255 						TXP_FIRST_MCS_20_SDM,
28256 						TXP_LAST_MCS_20_SDM);
28257 
28258 		if (NPHY_IS_SROM_REINTERPRET) {
28259 
28260 			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28261 							&pwr_offsets2[4],
28262 							tmp_max_pwr,
28263 							TXP_FIRST_MCS_40_SISO,
28264 							TXP_LAST_MCS_40_SISO);
28265 
28266 			wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28267 							TXP_FIRST_OFDM_40_SISO,
28268 							TXP_LAST_OFDM_40_SISO,
28269 							TXP_FIRST_MCS_40_SISO);
28270 
28271 			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28272 							&pwr_offsets2[4],
28273 							tmp_max_pwr,
28274 							TXP_FIRST_MCS_40_CDD,
28275 							TXP_LAST_MCS_40_CDD);
28276 
28277 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28278 						    TXP_FIRST_MCS_40_CDD,
28279 						    TXP_LAST_MCS_40_CDD);
28280 
28281 			wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28282 							TXP_FIRST_OFDM_40_CDD,
28283 							TXP_LAST_OFDM_40_CDD,
28284 							TXP_FIRST_MCS_40_CDD);
28285 
28286 			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28287 							&pwr_offsets2[4],
28288 							tmp_max_pwr,
28289 							TXP_FIRST_MCS_40_STBC,
28290 							TXP_LAST_MCS_40_STBC);
28291 
28292 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28293 						    tmp_stbcpo,
28294 						    TXP_FIRST_MCS_40_STBC,
28295 						    TXP_LAST_MCS_40_STBC);
28296 
28297 			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28298 							&pwr_offsets2[6],
28299 							tmp_max_pwr,
28300 							TXP_FIRST_MCS_40_SDM,
28301 							TXP_LAST_MCS_40_SDM);
28302 		} else {
28303 
28304 			for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28305 				     TXP_FIRST_OFDM;
28306 			     rate1 <= TXP_LAST_MCS_40_SDM;
28307 			     rate1++, rate2++)
28308 				tx_srom_max_rate[rate1] =
28309 					tx_srom_max_rate[rate2];
28310 		}
28311 
28312 		if (NREV_GE(pi->pubpi.phy_rev, 3))
28313 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28314 						    tmp_bw40po,
28315 						    TXP_FIRST_OFDM_40_SISO,
28316 						    TXP_LAST_MCS_40_SDM);
28317 
28318 		tx_srom_max_rate[TXP_MCS_32] =
28319 			tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28320 	}
28321 
28322 	return;
28323 }
28324 
wlc_phy_txpower_recalc_target_nphy(struct brcms_phy * pi)28325 void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28326 {
28327 	u8 tx_pwr_ctrl_state;
28328 	wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28329 	wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28330 
28331 	tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28332 
28333 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28334 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28335 		(void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
28336 		udelay(1);
28337 	}
28338 
28339 	wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28340 
28341 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28342 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28343 }
28344 
wlc_phy_txpwr_ison_nphy(struct brcms_phy * pi)28345 static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28346 {
28347 	return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28348 					    (0x1 << 14) | (0x1 << 13));
28349 }
28350 
wlc_phy_txpwr_idx_get_nphy(struct brcms_phy * pi)28351 u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28352 {
28353 	u16 tmp;
28354 	u16 pwr_idx[2];
28355 
28356 	if (wlc_phy_txpwr_ison_nphy(pi)) {
28357 		pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28358 		pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28359 
28360 		tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28361 	} else {
28362 		tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28363 			<< 8) |
28364 			(pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28365 	}
28366 
28367 	return tmp;
28368 }
28369 
wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy * pi)28370 void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28371 {
28372 	if (PHY_IPA(pi)
28373 	    && (pi->nphy_force_papd_cal
28374 		|| (wlc_phy_txpwr_ison_nphy(pi)
28375 		    &&
28376 		    (((u32)
28377 		      abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28378 			  pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28379 		     || ((u32)
28380 			 abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28381 			     pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28382 		wlc_phy_a4(pi, true);
28383 }
28384 
wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy * pi,u8 ctrl_type)28385 void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28386 {
28387 	u16 mask = 0, val = 0, ishw = 0;
28388 	u8 ctr;
28389 	uint core;
28390 	u32 tbl_offset;
28391 	u32 tbl_len;
28392 	u16 regval[84];
28393 
28394 	if (pi->phyhang_avoid)
28395 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
28396 
28397 	switch (ctrl_type) {
28398 	case PHY_TPC_HW_OFF:
28399 	case PHY_TPC_HW_ON:
28400 		pi->nphy_txpwrctrl = ctrl_type;
28401 		break;
28402 	default:
28403 		break;
28404 	}
28405 
28406 	if (ctrl_type == PHY_TPC_HW_OFF) {
28407 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28408 
28409 			if (wlc_phy_txpwr_ison_nphy(pi)) {
28410 				for (core = 0; core < pi->pubpi.phy_corenum;
28411 				     core++)
28412 					pi->nphy_txpwr_idx[core] =
28413 						wlc_phy_txpwr_idx_cur_get_nphy(
28414 							pi,
28415 							(u8) core);
28416 			}
28417 
28418 		}
28419 
28420 		tbl_len = 84;
28421 		tbl_offset = 64;
28422 		for (ctr = 0; ctr < tbl_len; ctr++)
28423 			regval[ctr] = 0;
28424 		wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28425 					 regval);
28426 		wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28427 					 regval);
28428 
28429 		if (NREV_GE(pi->pubpi.phy_rev, 3))
28430 			and_phy_reg(pi, 0x1e7,
28431 				    (u16) (~((0x1 << 15) |
28432 					     (0x1 << 14) | (0x1 << 13))));
28433 		else
28434 			and_phy_reg(pi, 0x1e7,
28435 				    (u16) (~((0x1 << 14) | (0x1 << 13))));
28436 
28437 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28438 			or_phy_reg(pi, 0x8f, (0x1 << 8));
28439 			or_phy_reg(pi, 0xa5, (0x1 << 8));
28440 		} else {
28441 			or_phy_reg(pi, 0xa5, (0x1 << 14));
28442 		}
28443 
28444 		if (NREV_IS(pi->pubpi.phy_rev, 2))
28445 			mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28446 		else if (NREV_LT(pi->pubpi.phy_rev, 2))
28447 			mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28448 
28449 		if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28450 		    pi->bw == WL_CHANSPEC_BW_40)
28451 			wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28452 				       MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28453 
28454 	} else {
28455 
28456 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28457 					 8, pi->adj_pwr_tbl_nphy);
28458 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28459 					 8, pi->adj_pwr_tbl_nphy);
28460 
28461 		ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28462 		mask = (0x1 << 14) | (0x1 << 13);
28463 		val = (ishw << 14) | (ishw << 13);
28464 
28465 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28466 			mask |= (0x1 << 15);
28467 			val |= (ishw << 15);
28468 		}
28469 
28470 		mod_phy_reg(pi, 0x1e7, mask, val);
28471 
28472 		if (CHSPEC_IS5G(pi->radio_chanspec)) {
28473 			if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28474 				mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28475 				mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28476 			} else {
28477 				mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28478 				if (NREV_GT(pi->pubpi.phy_rev, 1))
28479 					mod_phy_reg(pi, 0x222,
28480 						    (0xff << 0), 0x64);
28481 			}
28482 		}
28483 
28484 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28485 			if ((pi->nphy_txpwr_idx[0] != 128)
28486 			    && (pi->nphy_txpwr_idx[1] != 128))
28487 				wlc_phy_txpwr_idx_cur_set_nphy(pi,
28488 							       pi->
28489 							       nphy_txpwr_idx
28490 							       [0],
28491 							       pi->
28492 							       nphy_txpwr_idx
28493 							       [1]);
28494 		}
28495 
28496 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28497 			and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28498 			and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28499 		} else {
28500 			and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28501 		}
28502 
28503 		if (NREV_IS(pi->pubpi.phy_rev, 2))
28504 			mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28505 		else if (NREV_LT(pi->pubpi.phy_rev, 2))
28506 			mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28507 
28508 		if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28509 		    pi->bw == WL_CHANSPEC_BW_40)
28510 			wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28511 				       0x0, BRCM_BAND_ALL);
28512 
28513 		if (PHY_IPA(pi)) {
28514 			mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28515 				    0x29b, (0x1 << 2), (0) << 2);
28516 
28517 			mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28518 				    0x29b, (0x1 << 2), (0) << 2);
28519 
28520 		}
28521 
28522 	}
28523 
28524 	if (pi->phyhang_avoid)
28525 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
28526 }
28527 
28528 void
wlc_phy_txpwr_index_nphy(struct brcms_phy * pi,u8 core_mask,s8 txpwrindex,bool restore_cals)28529 wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28530 			 bool restore_cals)
28531 {
28532 	u8 core, txpwrctl_tbl;
28533 	u16 tx_ind0, iq_ind0, lo_ind0;
28534 	u16 m1m2;
28535 	u32 txgain;
28536 	u16 rad_gain, dac_gain;
28537 	u8 bbmult;
28538 	u32 iqcomp;
28539 	u16 iqcomp_a, iqcomp_b;
28540 	u32 locomp;
28541 	u16 tmpval;
28542 	u8 tx_pwr_ctrl_state;
28543 	s32 rfpwr_offset;
28544 	u16 regval[2];
28545 
28546 	if (pi->phyhang_avoid)
28547 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
28548 
28549 	tx_ind0 = 192;
28550 	iq_ind0 = 320;
28551 	lo_ind0 = 448;
28552 
28553 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28554 
28555 		if ((core_mask & (1 << core)) == 0)
28556 			continue;
28557 
28558 		txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28559 
28560 		if (txpwrindex < 0) {
28561 			if (pi->nphy_txpwrindex[core].index < 0)
28562 				continue;
28563 
28564 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28565 				mod_phy_reg(pi, 0x8f,
28566 					    (0x1 << 8),
28567 					    pi->nphy_txpwrindex[core].
28568 					    AfectrlOverride);
28569 				mod_phy_reg(pi, 0xa5, (0x1 << 8),
28570 					    pi->nphy_txpwrindex[core].
28571 					    AfectrlOverride);
28572 			} else {
28573 				mod_phy_reg(pi, 0xa5,
28574 					    (0x1 << 14),
28575 					    pi->nphy_txpwrindex[core].
28576 					    AfectrlOverride);
28577 			}
28578 
28579 			write_phy_reg(pi, (core == PHY_CORE_0) ?
28580 				      0xaa : 0xab,
28581 				      pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28582 
28583 			wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28584 						 &pi->nphy_txpwrindex[core].
28585 						 rad_gain);
28586 
28587 			wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28588 			m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28589 			m1m2 |= ((core == PHY_CORE_0) ?
28590 				 (pi->nphy_txpwrindex[core].bbmult << 8) :
28591 				 (pi->nphy_txpwrindex[core].bbmult << 0));
28592 			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28593 
28594 			if (restore_cals) {
28595 				wlc_phy_table_write_nphy(
28596 					pi, 15, 2, (80 + 2 * core), 16,
28597 					&pi->nphy_txpwrindex[core].iqcomp_a);
28598 				wlc_phy_table_write_nphy(
28599 					pi, 15, 1, (85 + core), 16,
28600 					&pi->nphy_txpwrindex[core].locomp);
28601 				wlc_phy_table_write_nphy(
28602 					pi, 15, 1, (93 + core), 16,
28603 					&pi->nphy_txpwrindex[core].locomp);
28604 			}
28605 
28606 			wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28607 
28608 			pi->nphy_txpwrindex[core].index_internal =
28609 				pi->nphy_txpwrindex[core].index_internal_save;
28610 		} else {
28611 
28612 			if (pi->nphy_txpwrindex[core].index < 0) {
28613 
28614 				if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28615 					mod_phy_reg(pi, 0x8f,
28616 						    (0x1 << 8),
28617 						    pi->nphy_txpwrindex[core].
28618 						    AfectrlOverride);
28619 					mod_phy_reg(pi, 0xa5, (0x1 << 8),
28620 						    pi->nphy_txpwrindex[core].
28621 						    AfectrlOverride);
28622 				} else {
28623 					pi->nphy_txpwrindex[core].
28624 					AfectrlOverride =
28625 						read_phy_reg(pi, 0xa5);
28626 				}
28627 
28628 				pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28629 					read_phy_reg(pi, (core == PHY_CORE_0) ?
28630 							 0xaa : 0xab);
28631 
28632 				wlc_phy_table_read_nphy(pi, 7, 1,
28633 							(0x110 + core), 16,
28634 							&pi->
28635 							nphy_txpwrindex[core].
28636 							rad_gain);
28637 
28638 				wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28639 							&tmpval);
28640 				tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28641 				tmpval &= 0xff;
28642 				pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28643 
28644 				wlc_phy_table_read_nphy(pi, 15, 2,
28645 							(80 + 2 * core), 16,
28646 							&pi->
28647 							nphy_txpwrindex[core].
28648 							iqcomp_a);
28649 
28650 				wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28651 							16,
28652 							&pi->
28653 							nphy_txpwrindex[core].
28654 							locomp);
28655 
28656 				pi->nphy_txpwrindex[core].index_internal_save =
28657 					pi->nphy_txpwrindex[core].
28658 					index_internal;
28659 			}
28660 
28661 			tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28662 			wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28663 
28664 			if (NREV_IS(pi->pubpi.phy_rev, 1))
28665 				wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28666 
28667 			wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28668 						(tx_ind0 + txpwrindex), 32,
28669 						&txgain);
28670 
28671 			if (NREV_GE(pi->pubpi.phy_rev, 3))
28672 				rad_gain = (txgain >> 16) &
28673 					   ((1 << (32 - 16 + 1)) - 1);
28674 			else
28675 				rad_gain = (txgain >> 16) &
28676 					   ((1 << (28 - 16 + 1)) - 1);
28677 
28678 			dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28679 			bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28680 
28681 			if (NREV_GE(pi->pubpi.phy_rev, 3))
28682 				mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28683 						 0xa5), (0x1 << 8), (0x1 << 8));
28684 			else
28685 				mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28686 
28687 			write_phy_reg(pi, (core == PHY_CORE_0) ?
28688 				      0xaa : 0xab, dac_gain);
28689 
28690 			wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28691 						 &rad_gain);
28692 
28693 			wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28694 			m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28695 			m1m2 |= ((core == PHY_CORE_0) ?
28696 				(bbmult << 8) : (bbmult << 0));
28697 
28698 			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28699 
28700 			wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28701 						(iq_ind0 + txpwrindex), 32,
28702 						&iqcomp);
28703 			iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28704 			iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28705 
28706 			if (restore_cals) {
28707 				regval[0] = (u16) iqcomp_a;
28708 				regval[1] = (u16) iqcomp_b;
28709 				wlc_phy_table_write_nphy(pi, 15, 2,
28710 							 (80 + 2 * core), 16,
28711 							 regval);
28712 			}
28713 
28714 			wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28715 						(lo_ind0 + txpwrindex), 32,
28716 						&locomp);
28717 			if (restore_cals)
28718 				wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28719 							 16, &locomp);
28720 
28721 			if (NREV_IS(pi->pubpi.phy_rev, 1))
28722 				wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28723 
28724 			if (PHY_IPA(pi)) {
28725 				wlc_phy_table_read_nphy(pi,
28726 						(core == PHY_CORE_0 ?
28727 						 NPHY_TBL_ID_CORE1TXPWRCTL :
28728 						 NPHY_TBL_ID_CORE2TXPWRCTL),
28729 						1, 576 + txpwrindex, 32,
28730 						&rfpwr_offset);
28731 
28732 				mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28733 					    0x29b, (0x1ff << 4),
28734 					    ((s16) rfpwr_offset) << 4);
28735 
28736 				mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28737 					    0x29b, (0x1 << 2), (1) << 2);
28738 
28739 			}
28740 
28741 			wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28742 		}
28743 
28744 		pi->nphy_txpwrindex[core].index = txpwrindex;
28745 	}
28746 
28747 	if (pi->phyhang_avoid)
28748 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
28749 }
28750 
28751 void
wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy * pi,uint chan,u8 * max_pwr,u8 txp_rate_idx)28752 wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28753 				   u8 txp_rate_idx)
28754 {
28755 	u8 chan_freq_range;
28756 
28757 	chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28758 	switch (chan_freq_range) {
28759 	case WL_CHAN_FREQ_RANGE_2G:
28760 		*max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28761 		break;
28762 	case WL_CHAN_FREQ_RANGE_5GM:
28763 		*max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28764 		break;
28765 	case WL_CHAN_FREQ_RANGE_5GL:
28766 		*max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28767 		break;
28768 	case WL_CHAN_FREQ_RANGE_5GH:
28769 		*max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28770 		break;
28771 	default:
28772 		*max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28773 		break;
28774 	}
28775 
28776 	return;
28777 }
28778 
wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy * pi,bool enable)28779 void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28780 {
28781 	u16 clip_off[] = { 0xffff, 0xffff };
28782 
28783 	if (enable) {
28784 		if (pi->nphy_deaf_count == 0) {
28785 			pi->classifier_state =
28786 				wlc_phy_classifier_nphy(pi, 0, 0);
28787 			wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28788 			wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28789 			wlc_phy_clip_det_nphy(pi, 1, clip_off);
28790 		}
28791 
28792 		pi->nphy_deaf_count++;
28793 
28794 		wlc_phy_resetcca_nphy(pi);
28795 
28796 	} else {
28797 		pi->nphy_deaf_count--;
28798 
28799 		if (pi->nphy_deaf_count == 0) {
28800 			wlc_phy_classifier_nphy(pi, (0x7 << 0),
28801 						pi->classifier_state);
28802 			wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28803 		}
28804 	}
28805 }
28806 
wlc_nphy_deaf_mode(struct brcms_phy * pi,bool mode)28807 void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28808 {
28809 	wlapi_suspend_mac_and_wait(pi->sh->physhim);
28810 
28811 	if (mode) {
28812 		if (pi->nphy_deaf_count == 0)
28813 			wlc_phy_stay_in_carriersearch_nphy(pi, true);
28814 	} else if (pi->nphy_deaf_count > 0) {
28815 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
28816 	}
28817 
28818 	wlapi_enable_mac(pi->sh->physhim);
28819 }
28820