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 #include <linux/kernel.h>
18 #include <linux/delay.h>
19 #include <linux/cordic.h>
20 
21 #include <brcm_hw_ids.h>
22 #include <aiutils.h>
23 #include <chipcommon.h>
24 #include <pmu.h>
25 #include <d11.h>
26 #include <phy_shim.h>
27 #include "phy_int.h"
28 #include "phy_hal.h"
29 #include "phy_radio.h"
30 #include "phyreg_n.h"
31 #include "phytbl_n.h"
32 #include "soc.h"
33 
34 #define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name)	\
35 	read_radio_reg(pi, radio_type##_##jspace##_##reg_name |	\
36 		       ((core == PHY_CORE_0) ? \
37 			radio_type##_##jspace##0 : \
38 			radio_type##_##jspace##1))
39 
40 #define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value)	\
41 	write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
42 			((core ==  PHY_CORE_0) ? \
43 			 radio_type##_##jspace##0 : \
44 			 radio_type##_##jspace##1), value)
45 
46 #define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
47 	write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value)
48 
49 #define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name)	\
50 	read_radio_reg(pi, ((core == PHY_CORE_0) ? \
51 			    radio_type##_##jspace##0##_##reg_name : \
52 			    radio_type##_##jspace##1##_##reg_name))
53 
54 #define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value)	\
55 	write_radio_reg(pi, ((core ==  PHY_CORE_0) ? \
56 			     radio_type##_##jspace##0##_##reg_name : \
57 			     radio_type##_##jspace##1##_##reg_name), \
58 			value)
59 
60 #define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name)	\
61 	read_radio_reg(pi, ((core == PHY_CORE_0) ? \
62 			     radio_type##_##reg_name##_##jspace##0 : \
63 			     radio_type##_##reg_name##_##jspace##1))
64 
65 #define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value)	\
66 	write_radio_reg(pi, ((core == PHY_CORE_0) ? \
67 			radio_type##_##reg_name##_##jspace##0 : \
68 			radio_type##_##reg_name##_##jspace##1), \
69 			value)
70 
71 #define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
72 #define NPHY_ACI_CHANNEL_DELTA 5
73 #define NPHY_ACI_CHANNEL_SKIP 4
74 #define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
75 #define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
76 #define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
77 #define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
78 #define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
79 #define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
80 
81 #define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
82 
83 #define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
84 
85 #define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
86 
87 #define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
88 
89 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
90 
91 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
92 
93 #define NPHY_NOISE_NOASSOC_ENTER_TH  400
94 
95 #define NPHY_NOISE_ASSOC_ENTER_TH  400
96 
97 #define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH  400
98 
99 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
100 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
101 
102 #define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
103 
104 #define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
105 
106 #define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
107 
108 #define NPHY_RSSICAL_MAXREAD 31
109 
110 #define NPHY_RSSICAL_NPOLL 8
111 #define NPHY_RSSICAL_MAXD  (1<<20)
112 #define NPHY_MIN_RXIQ_PWR 2
113 
114 #define NPHY_RSSICAL_W1_TARGET 25
115 #define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
116 #define NPHY_RSSICAL_NB_TARGET 0
117 
118 #define NPHY_RSSICAL_W1_TARGET_REV3 29
119 #define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
120 
121 #define NPHY_CALSANITY_RSSI_NB_MAX_POS  9
122 #define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
123 #define NPHY_CALSANITY_RSSI_W1_MAX_POS  12
124 #define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - \
125 					NPHY_RSSICAL_MAXREAD)
126 #define NPHY_CALSANITY_RSSI_W2_MAX_POS  NPHY_CALSANITY_RSSI_W1_MAX_POS
127 #define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - \
128 					NPHY_RSSICAL_MAXREAD)
129 #define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
130 #define NPHY_RSSI_NB_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
131 			       ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
132 #define NPHY_RSSI_W1_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
133 			       ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
134 #define NPHY_RSSI_W2_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
135 			       ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
136 
137 #define NPHY_IQCAL_NUMGAINS 9
138 #define NPHY_N_GCTL 0x66
139 
140 #define NPHY_PAPD_EPS_TBL_SIZE 64
141 #define NPHY_PAPD_SCL_TBL_SIZE 64
142 #define NPHY_NUM_DIG_FILT_COEFFS 15
143 
144 #define NPHY_PAPD_COMP_OFF 0
145 #define NPHY_PAPD_COMP_ON  1
146 
147 #define NPHY_SROM_TEMPSHIFT             32
148 #define NPHY_SROM_MAXTEMPOFFSET         16
149 #define NPHY_SROM_MINTEMPOFFSET         -16
150 
151 #define NPHY_CAL_MAXTEMPDELTA           64
152 
153 #define NPHY_NOISEVAR_TBLLEN40 256
154 #define NPHY_NOISEVAR_TBLLEN20 128
155 
156 #define NPHY_ANARXLPFBW_REDUCTIONFACT 7
157 
158 #define NPHY_ADJUSTED_MINCRSPOWER 0x1e
159 
160 /* 5357 Chip specific ChipControl register bits */
161 #define CCTRL5357_EXTPA            (1<<14) /* extPA in ChipControl 1, bit 14 */
162 #define CCTRL5357_ANT_MUX_2o3      (1<<15) /* 2o3 in ChipControl 1, bit 15 */
163 
164 #define NPHY_CAL_TSSISAMPS      64
165 #define NPHY_TEST_TONE_FREQ_40MHz 4000
166 #define NPHY_TEST_TONE_FREQ_20MHz 2500
167 
168 #define MAX_205x_RCAL_WAITLOOPS 10000
169 
170 #define NPHY_RXCAL_TONEAMP 181
171 #define NPHY_RXCAL_TONEFREQ_40MHz 4000
172 #define NPHY_RXCAL_TONEFREQ_20MHz 2000
173 
174 #define TXFILT_SHAPING_OFDM20   0
175 #define TXFILT_SHAPING_OFDM40   1
176 #define TXFILT_SHAPING_CCK      2
177 #define TXFILT_DEFAULT_OFDM20   3
178 #define TXFILT_DEFAULT_OFDM40   4
179 
180 struct nphy_iqcal_params {
181 	u16 txlpf;
182 	u16 txgm;
183 	u16 pga;
184 	u16 pad;
185 	u16 ipa;
186 	u16 cal_gain;
187 	u16 ncorr[5];
188 };
189 
190 struct nphy_txiqcal_ladder {
191 	u8 percent;
192 	u8 g_env;
193 };
194 
195 struct nphy_ipa_txcalgains {
196 	struct nphy_txgains gains;
197 	bool useindex;
198 	u8 index;
199 };
200 
201 struct nphy_papd_restore_state {
202 	u16 fbmix[2];
203 	u16 vga_master[2];
204 	u16 intpa_master[2];
205 	u16 afectrl[2];
206 	u16 afeoverride[2];
207 	u16 pwrup[2];
208 	u16 atten[2];
209 	u16 mm;
210 };
211 
212 struct nphy_ipa_txrxgain {
213 	u16 hpvga;
214 	u16 lpf_biq1;
215 	u16 lpf_biq0;
216 	u16 lna2;
217 	u16 lna1;
218 	s8 txpwrindex;
219 };
220 
221 #define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
222 
223 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz[] = {
224 	{0, 0, 0, 0, 0, 100},
225 	{0, 0, 0, 0, 0, 50},
226 	{0, 0, 0, 0, 0, -1},
227 	{0, 0, 0, 3, 0, -1},
228 	{0, 0, 3, 3, 0, -1},
229 	{0, 2, 3, 3, 0, -1}
230 };
231 
232 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz[] = {
233 	{0, 0, 0, 0, 0, 128},
234 	{0, 0, 0, 0, 0, 70},
235 	{0, 0, 0, 0, 0, 20},
236 	{0, 0, 0, 3, 0, 20},
237 	{0, 0, 3, 3, 0, 20},
238 	{0, 2, 3, 3, 0, 20}
239 };
240 
241 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = {
242 	{0, 0, 0, 0, 0, 100},
243 	{0, 0, 0, 0, 0, 50},
244 	{0, 0, 0, 0, 0, -1},
245 	{0, 0, 0, 3, 0, -1},
246 	{0, 0, 3, 3, 0, -1},
247 	{0, 0, 5, 3, 0, -1}
248 };
249 
250 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = {
251 	{0, 0, 0, 0, 0, 10},
252 	{0, 0, 0, 1, 0, 10},
253 	{0, 0, 1, 2, 0, 10},
254 	{0, 0, 1, 3, 0, 10},
255 	{0, 0, 4, 3, 0, 10},
256 	{0, 0, 6, 3, 0, 10}
257 };
258 
259 enum {
260 	NPHY_RXCAL_GAIN_INIT = 0,
261 	NPHY_RXCAL_GAIN_UP,
262 	NPHY_RXCAL_GAIN_DOWN
263 };
264 
265 #define wlc_phy_get_papd_nphy(pi) \
266 	(read_phy_reg((pi), 0x1e7) & \
267 	 ((0x1 << 15) |	\
268 	  (0x1 << 14) |	\
269 	  (0x1 << 13)))
270 
271 static const u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
272 	{-377, 137, -407, 208, -1527, 956, 93, 186, 93,
273 	 230, -44, 230, 201, -191, 201},
274 	{-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
275 	 26, 34, -32, 34},
276 	{-360, 164, -376, 164, -1533, 576, 308, -314, 308,
277 	 121, -73, 121, 91, 124, 91},
278 	{-295, 200, -363, 142, -1391, 826, 151, 301, 151,
279 	 151, 301, 151, 602, -752, 602},
280 	{-92, 58, -96, 49, -104, 44, 17, 35, 17,
281 	 12, 25, 12, 13, 27, 13},
282 	{-375, 136, -399, 209, -1479, 949, 130, 260, 130,
283 	 230, -44, 230, 201, -191, 201},
284 	{0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
285 	 0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
286 };
287 
288 struct chan_info_nphy_2055 {
289 	u16 chan;
290 	u16 freq;
291 	uint unknown;
292 	u8 RF_pll_ref;
293 	u8 RF_rf_pll_mod1;
294 	u8 RF_rf_pll_mod0;
295 	u8 RF_vco_cap_tail;
296 	u8 RF_vco_cal1;
297 	u8 RF_vco_cal2;
298 	u8 RF_pll_lf_c1;
299 	u8 RF_pll_lf_r1;
300 	u8 RF_pll_lf_c2;
301 	u8 RF_lgbuf_cen_buf;
302 	u8 RF_lgen_tune1;
303 	u8 RF_lgen_tune2;
304 	u8 RF_core1_lgbuf_a_tune;
305 	u8 RF_core1_lgbuf_g_tune;
306 	u8 RF_core1_rxrf_reg1;
307 	u8 RF_core1_tx_pga_pad_tn;
308 	u8 RF_core1_tx_mx_bgtrim;
309 	u8 RF_core2_lgbuf_a_tune;
310 	u8 RF_core2_lgbuf_g_tune;
311 	u8 RF_core2_rxrf_reg1;
312 	u8 RF_core2_tx_pga_pad_tn;
313 	u8 RF_core2_tx_mx_bgtrim;
314 	u16 PHY_BW1a;
315 	u16 PHY_BW2;
316 	u16 PHY_BW3;
317 	u16 PHY_BW4;
318 	u16 PHY_BW5;
319 	u16 PHY_BW6;
320 };
321 
322 struct chan_info_nphy_radio205x {
323 	u16 chan;
324 	u16 freq;
325 	u8 RF_SYN_pll_vcocal1;
326 	u8 RF_SYN_pll_vcocal2;
327 	u8 RF_SYN_pll_refdiv;
328 	u8 RF_SYN_pll_mmd2;
329 	u8 RF_SYN_pll_mmd1;
330 	u8 RF_SYN_pll_loopfilter1;
331 	u8 RF_SYN_pll_loopfilter2;
332 	u8 RF_SYN_pll_loopfilter3;
333 	u8 RF_SYN_pll_loopfilter4;
334 	u8 RF_SYN_pll_loopfilter5;
335 	u8 RF_SYN_reserved_addr27;
336 	u8 RF_SYN_reserved_addr28;
337 	u8 RF_SYN_reserved_addr29;
338 	u8 RF_SYN_logen_VCOBUF1;
339 	u8 RF_SYN_logen_MIXER2;
340 	u8 RF_SYN_logen_BUF3;
341 	u8 RF_SYN_logen_BUF4;
342 	u8 RF_RX0_lnaa_tune;
343 	u8 RF_RX0_lnag_tune;
344 	u8 RF_TX0_intpaa_boost_tune;
345 	u8 RF_TX0_intpag_boost_tune;
346 	u8 RF_TX0_pada_boost_tune;
347 	u8 RF_TX0_padg_boost_tune;
348 	u8 RF_TX0_pgaa_boost_tune;
349 	u8 RF_TX0_pgag_boost_tune;
350 	u8 RF_TX0_mixa_boost_tune;
351 	u8 RF_TX0_mixg_boost_tune;
352 	u8 RF_RX1_lnaa_tune;
353 	u8 RF_RX1_lnag_tune;
354 	u8 RF_TX1_intpaa_boost_tune;
355 	u8 RF_TX1_intpag_boost_tune;
356 	u8 RF_TX1_pada_boost_tune;
357 	u8 RF_TX1_padg_boost_tune;
358 	u8 RF_TX1_pgaa_boost_tune;
359 	u8 RF_TX1_pgag_boost_tune;
360 	u8 RF_TX1_mixa_boost_tune;
361 	u8 RF_TX1_mixg_boost_tune;
362 	u16 PHY_BW1a;
363 	u16 PHY_BW2;
364 	u16 PHY_BW3;
365 	u16 PHY_BW4;
366 	u16 PHY_BW5;
367 	u16 PHY_BW6;
368 };
369 
370 struct chan_info_nphy_radio2057 {
371 	u16 chan;
372 	u16 freq;
373 	u8 RF_vcocal_countval0;
374 	u8 RF_vcocal_countval1;
375 	u8 RF_rfpll_refmaster_sparextalsize;
376 	u8 RF_rfpll_loopfilter_r1;
377 	u8 RF_rfpll_loopfilter_c2;
378 	u8 RF_rfpll_loopfilter_c1;
379 	u8 RF_cp_kpd_idac;
380 	u8 RF_rfpll_mmd0;
381 	u8 RF_rfpll_mmd1;
382 	u8 RF_vcobuf_tune;
383 	u8 RF_logen_mx2g_tune;
384 	u8 RF_logen_mx5g_tune;
385 	u8 RF_logen_indbuf2g_tune;
386 	u8 RF_logen_indbuf5g_tune;
387 	u8 RF_txmix2g_tune_boost_pu_core0;
388 	u8 RF_pad2g_tune_pus_core0;
389 	u8 RF_pga_boost_tune_core0;
390 	u8 RF_txmix5g_boost_tune_core0;
391 	u8 RF_pad5g_tune_misc_pus_core0;
392 	u8 RF_lna2g_tune_core0;
393 	u8 RF_lna5g_tune_core0;
394 	u8 RF_txmix2g_tune_boost_pu_core1;
395 	u8 RF_pad2g_tune_pus_core1;
396 	u8 RF_pga_boost_tune_core1;
397 	u8 RF_txmix5g_boost_tune_core1;
398 	u8 RF_pad5g_tune_misc_pus_core1;
399 	u8 RF_lna2g_tune_core1;
400 	u8 RF_lna5g_tune_core1;
401 	u16 PHY_BW1a;
402 	u16 PHY_BW2;
403 	u16 PHY_BW3;
404 	u16 PHY_BW4;
405 	u16 PHY_BW5;
406 	u16 PHY_BW6;
407 };
408 
409 struct chan_info_nphy_radio2057_rev5 {
410 	u16 chan;
411 	u16 freq;
412 	u8 RF_vcocal_countval0;
413 	u8 RF_vcocal_countval1;
414 	u8 RF_rfpll_refmaster_sparextalsize;
415 	u8 RF_rfpll_loopfilter_r1;
416 	u8 RF_rfpll_loopfilter_c2;
417 	u8 RF_rfpll_loopfilter_c1;
418 	u8 RF_cp_kpd_idac;
419 	u8 RF_rfpll_mmd0;
420 	u8 RF_rfpll_mmd1;
421 	u8 RF_vcobuf_tune;
422 	u8 RF_logen_mx2g_tune;
423 	u8 RF_logen_indbuf2g_tune;
424 	u8 RF_txmix2g_tune_boost_pu_core0;
425 	u8 RF_pad2g_tune_pus_core0;
426 	u8 RF_lna2g_tune_core0;
427 	u8 RF_txmix2g_tune_boost_pu_core1;
428 	u8 RF_pad2g_tune_pus_core1;
429 	u8 RF_lna2g_tune_core1;
430 	u16 PHY_BW1a;
431 	u16 PHY_BW2;
432 	u16 PHY_BW3;
433 	u16 PHY_BW4;
434 	u16 PHY_BW5;
435 	u16 PHY_BW6;
436 };
437 
438 struct nphy_sfo_cfg {
439 	u16 PHY_BW1a;
440 	u16 PHY_BW2;
441 	u16 PHY_BW3;
442 	u16 PHY_BW4;
443 	u16 PHY_BW5;
444 	u16 PHY_BW6;
445 };
446 
447 static const struct chan_info_nphy_2055 chan_info_nphy_2055[] = {
448 	{
449 	 184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
450 	 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
451 	 0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
452 	{
453 	 186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
454 	 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
455 	 0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
456 	{
457 	 188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
458 	 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
459 	 0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
460 	{
461 	 190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
462 	 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
463 	 0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
464 	{
465 	 192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
466 	 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
467 	 0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
468 	{
469 	 194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
470 	 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
471 	 0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
472 	{
473 	 196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
474 	 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
475 	 0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
476 	{
477 	 198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
478 	 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
479 	 0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
480 	{
481 	 200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
482 	 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
483 	 0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
484 	{
485 	 202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
486 	 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
487 	 0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
488 	{
489 	 204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
490 	 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
491 	 0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
492 	{
493 	 206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
494 	 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
495 	 0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
496 	{
497 	 208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
498 	 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
499 	 0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
500 	{
501 	 210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
502 	 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
503 	 0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
504 	{
505 	 212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
506 	 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
507 	 0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
508 	{
509 	 214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
510 	 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
511 	 0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
512 	{
513 	 216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
514 	 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
515 	 0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
516 	{
517 	 218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
518 	 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
519 	 0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
520 	{
521 	 220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
522 	 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
523 	 0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
524 	{
525 	 222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
526 	 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
527 	 0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
528 	{
529 	 224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
530 	 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
531 	 0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
532 	{
533 	 226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
534 	 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
535 	 0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
536 	{
537 	 228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
538 	 0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
539 	 0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
540 	{
541 	 32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
542 	 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
543 	 0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
544 	{
545 	 34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
546 	 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
547 	 0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
548 	{
549 	 36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
550 	 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
551 	 0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
552 	{
553 	 38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
554 	 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
555 	 0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
556 	{
557 	 40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
558 	 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
559 	 0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
560 	{
561 	 42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
562 	 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
563 	 0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
564 	{
565 	 44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
566 	 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
567 	 0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
568 	{
569 	 46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
570 	 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
571 	 0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
572 	{
573 	 48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
574 	 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
575 	 0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
576 	{
577 	 50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
578 	 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
579 	 0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
580 	{
581 	 52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
582 	 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
583 	 0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
584 	{
585 	 54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
586 	 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
587 	 0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
588 	{
589 	 56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
590 	 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
591 	 0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
592 	{
593 	 58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
594 	 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
595 	 0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
596 	{
597 	 60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
598 	 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
599 	 0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
600 	{
601 	 62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
602 	 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
603 	 0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
604 	{
605 	 64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
606 	 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
607 	 0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
608 	{
609 	 66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
610 	 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
611 	 0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
612 	{
613 	 68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
614 	 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
615 	 0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
616 	{
617 	 70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
618 	 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
619 	 0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
620 	{
621 	 72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
622 	 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
623 	 0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
624 	{
625 	 74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
626 	 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
627 	 0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
628 	{
629 	 76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
630 	 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
631 	 0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
632 	{
633 	 78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
634 	 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
635 	 0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
636 	{
637 	 80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
638 	 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
639 	 0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
640 	{
641 	 82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
642 	 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
643 	 0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
644 	{
645 	 84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
646 	 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
647 	 0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
648 	{
649 	 86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
650 	 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
651 	 0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
652 	{
653 	 88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
654 	 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
655 	 0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
656 	{
657 	 90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
658 	 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
659 	 0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
660 	{
661 	 92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
662 	 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
663 	 0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
664 	{
665 	 94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
666 	 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
667 	 0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
668 	{
669 	 96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
670 	 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
671 	 0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
672 	{
673 	 98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
674 	 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
675 	 0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
676 	{
677 	 100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
678 	 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
679 	 0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
680 	{
681 	 102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
682 	 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
683 	 0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
684 	{
685 	 104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
686 	 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
687 	 0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
688 	{
689 	 106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
690 	 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
691 	 0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
692 	{
693 	 108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
694 	 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
695 	 0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
696 	{
697 	 110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
698 	 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
699 	 0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
700 	{
701 	 112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
702 	 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
703 	 0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
704 	{
705 	 114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
706 	 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
707 	 0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
708 	{
709 	 116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
710 	 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
711 	 0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
712 	{
713 	 118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
714 	 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
715 	 0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
716 	{
717 	 120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
718 	 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
719 	 0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
720 	{
721 	 122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
722 	 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
723 	 0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
724 	{
725 	 124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
726 	 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
727 	 0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
728 	{
729 	 126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
730 	 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
731 	 0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
732 	{
733 	 128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
734 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
735 	 0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
736 	{
737 	 130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
738 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
739 	 0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
740 	{
741 	 132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
742 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
743 	 0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
744 	{
745 	 134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
746 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
747 	 0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
748 	{
749 	 136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
750 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
751 	 0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
752 	{
753 	 138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
754 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
755 	 0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
756 	{
757 	 140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
758 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
759 	 0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
760 	{
761 	 142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
762 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
763 	 0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
764 	{
765 	 144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
766 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
767 	 0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
768 	{
769 	 145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
770 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
771 	 0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
772 	{
773 	 146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
774 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
775 	 0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
776 	{
777 	 147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
778 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
779 	 0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
780 	{
781 	 148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
782 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
783 	 0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
784 	{
785 	 149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
786 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
787 	 0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
788 	{
789 	 150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
790 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
791 	 0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
792 	{
793 	 151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
794 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
795 	 0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
796 	{
797 	 152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
798 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
799 	 0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
800 	{
801 	 153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
802 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
803 	 0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
804 	{
805 	 154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
806 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
807 	 0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
808 	{
809 	 155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
810 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
811 	 0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
812 	{
813 	 156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
814 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
815 	 0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
816 	{
817 	 157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
818 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
819 	 0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
820 	{
821 	 158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
822 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
823 	 0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
824 	{
825 	 159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
826 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
827 	 0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
828 	{
829 	 160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
830 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
831 	 0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
832 	{
833 	 161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
834 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
835 	 0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
836 	{
837 	 162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
838 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
839 	 0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
840 	{
841 	 163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
842 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
843 	 0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
844 	{
845 	 164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
846 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
847 	 0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
848 	{
849 	 165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
850 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
851 	 0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
852 	{
853 	 166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
854 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
855 	 0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
856 	{
857 	 168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
858 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
859 	 0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
860 	{
861 	 170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
862 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
863 	 0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
864 	{
865 	 172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
866 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
867 	 0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
868 	{
869 	 174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
870 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
871 	 0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
872 	{
873 	 176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
874 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
875 	 0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
876 	{
877 	 178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
878 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
879 	 0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
880 	{
881 	 180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
882 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
883 	 0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
884 	{
885 	 182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
886 	 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
887 	 0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
888 	{
889 	 1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
890 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
891 	 0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
892 	{
893 	 2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
894 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
895 	 0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
896 	{
897 	 3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
898 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
899 	 0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
900 	{
901 	 4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
902 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
903 	 0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
904 	{
905 	 5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
906 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
907 	 0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
908 	{
909 	 6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
910 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
911 	 0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
912 	{
913 	 7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
914 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
915 	 0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
916 	{
917 	 8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
918 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
919 	 0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
920 	{
921 	 9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
922 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
923 	 0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
924 	{
925 	 10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
926 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
927 	 0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
928 	{
929 	 11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
930 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
931 	 0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
932 	{
933 	 12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
934 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
935 	 0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
936 	{
937 	 13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
938 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
939 	 0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
940 	{
941 	 14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
942 	 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
943 	 0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
944 };
945 
946 static const struct chan_info_nphy_radio205x chan_info_nphyrev3_2056[] = {
947 	{
948 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
949 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
950 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
951 	 0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
952 	{
953 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
954 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
955 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
956 	 0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
957 	{
958 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
959 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
960 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
961 	 0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
962 	{
963 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
964 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
965 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
966 	 0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
967 	{
968 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
969 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
970 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
971 	 0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
972 	{
973 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
974 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
975 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
976 	 0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
977 	{
978 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
979 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
980 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
981 	 0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
982 	{
983 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
984 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
985 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
986 	 0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
987 	{
988 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
989 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
990 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
991 	 0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
992 	{
993 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
994 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
995 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
996 	 0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
997 	{
998 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
999 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1000 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1001 	 0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1002 	{
1003 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1004 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1005 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1006 	 0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1007 	{
1008 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1009 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1010 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1011 	 0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1012 	{
1013 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1014 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1015 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1016 	 0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1017 	{
1018 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1019 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1020 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1021 	 0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1022 	{
1023 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1024 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1025 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1026 	 0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1027 	{
1028 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1029 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1030 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1031 	 0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1032 	{
1033 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1034 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1035 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1036 	 0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1037 	{
1038 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1039 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1040 	 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1041 	 0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1042 	{
1043 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1044 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1045 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1046 	 0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1047 	{
1048 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1049 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1050 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1051 	 0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1052 	{
1053 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1054 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1055 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1056 	 0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1057 	{
1058 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1059 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1060 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1061 	 0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1062 	{
1063 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1064 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1065 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1066 	 0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1067 	{
1068 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1069 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1070 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1071 	 0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1072 	{
1073 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1074 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1075 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1076 	 0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1077 	{
1078 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1079 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1080 	 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1081 	 0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1082 	{
1083 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1084 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1085 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1086 	 0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1087 	{
1088 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1089 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1090 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1091 	 0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1092 	{
1093 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1094 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1095 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1096 	 0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1097 	{
1098 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1099 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1100 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1101 	 0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1102 	{
1103 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1104 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1105 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1106 	 0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1107 	{
1108 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1109 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1110 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1111 	 0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1112 	{
1113 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1114 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1115 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1116 	 0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1117 	{
1118 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1119 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1120 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1121 	 0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1122 	{
1123 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1124 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1125 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1126 	 0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1127 	{
1128 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1129 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1130 	 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1131 	 0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1132 	{
1133 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1134 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1135 	 0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1136 	 0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1137 	{
1138 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1139 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1140 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1141 	 0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1142 	{
1143 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1144 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1145 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1146 	 0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1147 	{
1148 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1149 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1150 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1151 	 0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1152 	{
1153 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1154 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1155 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1156 	 0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1157 	{
1158 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1159 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1160 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1161 	 0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1162 	{
1163 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1164 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1165 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1166 	 0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1167 	{
1168 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1169 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1170 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1171 	 0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1172 	{
1173 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1174 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1175 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1176 	 0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1177 	{
1178 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1179 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1180 	 0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1181 	 0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1182 	{
1183 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1184 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1185 	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1186 	 0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1187 	{
1188 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1189 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1190 	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1191 	 0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1192 	{
1193 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1194 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1195 	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1196 	 0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1197 	{
1198 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1199 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1200 	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1201 	 0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1202 	{
1203 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1204 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1205 	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1206 	 0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1207 	{
1208 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1209 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1210 	 0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1211 	 0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1212 	{
1213 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1214 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1215 	 0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1216 	 0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1217 	{
1218 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1219 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1220 	 0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1221 	 0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1222 	{
1223 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1224 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1225 	 0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1226 	 0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1227 	{
1228 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1229 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1230 	 0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1231 	 0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1232 	{
1233 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1234 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1235 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1236 	 0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1237 	{
1238 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1239 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1240 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1241 	 0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1242 	{
1243 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1244 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1245 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1246 	 0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1247 	{
1248 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1249 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1250 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1251 	 0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1252 	{
1253 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1254 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1255 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1256 	 0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1257 	{
1258 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1259 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1260 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1261 	 0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1262 	{
1263 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1264 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1265 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1266 	 0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1267 	{
1268 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1269 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1270 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1271 	 0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1272 	{
1273 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1274 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1275 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1276 	 0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1277 	{
1278 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1279 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1280 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1281 	 0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1282 	{
1283 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1284 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1285 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1286 	 0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1287 	{
1288 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1289 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1290 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1291 	 0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1292 	{
1293 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1294 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1295 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1296 	 0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1297 	{
1298 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1299 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1300 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1301 	 0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1302 	{
1303 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1304 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1305 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1306 	 0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1307 	{
1308 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1309 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1310 	 0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1311 	 0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1312 	{
1313 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1314 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1315 	 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1316 	 0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1317 	{
1318 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1319 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1320 	 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1321 	 0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1322 	{
1323 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1324 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1325 	 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1326 	 0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1327 	{
1328 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1329 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1330 	 0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1331 	 0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1332 	{
1333 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1334 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1335 	 0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1336 	 0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1337 	{
1338 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1339 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1340 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1341 	 0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1342 	{
1343 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1344 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1345 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1346 	 0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1347 	{
1348 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1349 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1350 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1351 	 0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1352 	{
1353 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1354 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1355 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1356 	 0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1357 	{
1358 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1359 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1360 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1361 	 0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1362 	{
1363 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1364 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1365 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1366 	 0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1367 	{
1368 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1369 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1370 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1371 	 0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1372 	{
1373 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1374 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1375 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1376 	 0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1377 	{
1378 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1379 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1380 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1381 	 0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1382 	{
1383 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1384 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1385 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1386 	 0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1387 	{
1388 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1389 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1390 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1391 	 0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1392 	{
1393 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1394 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1395 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1396 	 0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1397 	{
1398 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1399 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1400 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1401 	 0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1402 	{
1403 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1404 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1405 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1406 	 0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1407 	{
1408 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1409 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1410 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1411 	 0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1412 	{
1413 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1414 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1415 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1416 	 0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1417 	{
1418 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1419 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1420 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1421 	 0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1422 	{
1423 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1424 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1425 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1426 	 0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1427 	{
1428 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1429 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1430 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1431 	 0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1432 	{
1433 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1434 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1435 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1436 	 0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1437 	{
1438 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1439 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1440 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1441 	 0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1442 	{
1443 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1444 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1445 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1446 	 0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1447 	{
1448 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1449 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1450 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1451 	 0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1452 	{
1453 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1454 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1455 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1456 	 0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1457 	{
1458 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1459 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1460 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1461 	 0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1462 	{
1463 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1464 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1465 	 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1466 	 0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1467 	{
1468 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1469 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1470 	 0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1471 	 0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1472 	{
1473 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1474 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1475 	 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1476 	 0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1477 	{
1478 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1479 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1480 	 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1481 	 0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1482 	{
1483 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1484 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1485 	 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1486 	 0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1487 	{
1488 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1489 	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1490 	 0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1491 	 0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1492 	{
1493 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1494 	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1495 	 0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1496 	 0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1497 	{
1498 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1499 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1500 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1501 	 0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1502 	{
1503 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1504 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1505 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1506 	 0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1507 	{
1508 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1509 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1510 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1511 	 0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1512 	{
1513 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1514 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1515 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1516 	 0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1517 	{
1518 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1519 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1520 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1521 	 0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1522 	{
1523 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1524 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1525 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1526 	 0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1527 	{
1528 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1529 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1530 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1531 	 0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1532 	{
1533 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1534 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1535 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1536 	 0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1537 	{
1538 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1539 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1540 	 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1541 	 0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1542 	{
1543 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1544 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1545 	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1546 	 0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1547 	{
1548 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1549 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1550 	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1551 	 0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1552 	{
1553 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1554 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1555 	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1556 	 0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1557 	{
1558 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1559 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1560 	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1561 	 0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1562 	{
1563 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1564 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1565 	 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1566 	 0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1567 };
1568 
1569 static const struct chan_info_nphy_radio205x chan_info_nphyrev4_2056_A1[] = {
1570 	{
1571 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1572 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1573 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1574 	 0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1575 	{
1576 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1577 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1578 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1579 	 0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1580 	{
1581 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1582 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1583 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1584 	 0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1585 	{
1586 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1587 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1588 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1589 	 0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1590 	{
1591 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1592 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1593 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1594 	 0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1595 	{
1596 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1597 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1598 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1599 	 0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1600 	{
1601 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1602 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1603 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1604 	 0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1605 	{
1606 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1607 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1608 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1609 	 0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1610 	{
1611 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1612 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1613 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1614 	 0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1615 	{
1616 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1617 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1618 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1619 	 0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1620 	{
1621 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1622 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1623 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1624 	 0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1625 	{
1626 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1627 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1628 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1629 	 0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1630 	{
1631 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1632 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1633 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1634 	 0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1635 	{
1636 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1637 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1638 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1639 	 0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1640 	{
1641 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1642 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1643 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1644 	 0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1645 	{
1646 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1647 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1648 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1649 	 0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1650 	{
1651 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1652 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1653 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1654 	 0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1655 	{
1656 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1657 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1658 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1659 	 0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1660 	{
1661 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1662 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1663 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1664 	 0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1665 	{
1666 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1667 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1668 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1669 	 0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1670 	{
1671 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1672 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1673 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1674 	 0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1675 	{
1676 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1677 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1678 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1679 	 0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1680 	{
1681 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1682 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1683 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1684 	 0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1685 	{
1686 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1687 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1688 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1689 	 0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1690 	{
1691 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1692 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1693 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1694 	 0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1695 	{
1696 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1697 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1698 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1699 	 0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1700 	{
1701 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1702 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1703 	 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1704 	 0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1705 	{
1706 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1707 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1708 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1709 	 0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1710 	{
1711 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1712 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1713 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1714 	 0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1715 	{
1716 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1717 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1718 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1719 	 0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1720 	{
1721 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1722 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1723 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1724 	 0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1725 	{
1726 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1727 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1728 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1729 	 0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1730 	{
1731 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1732 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1733 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1734 	 0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1735 	{
1736 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1737 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1738 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1739 	 0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1740 	{
1741 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1742 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1743 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1744 	 0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1745 	{
1746 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1747 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1748 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1749 	 0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1750 	{
1751 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1752 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1753 	 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1754 	 0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1755 	{
1756 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1757 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1758 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1759 	 0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1760 	{
1761 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1762 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1763 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1764 	 0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1765 	{
1766 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1767 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1768 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1769 	 0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1770 	{
1771 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1772 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1773 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1774 	 0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1775 	{
1776 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1777 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1778 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1779 	 0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1780 	{
1781 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1782 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1783 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1784 	 0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1785 	{
1786 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1787 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1788 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1789 	 0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1790 	{
1791 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1792 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1793 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1794 	 0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1795 	{
1796 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1797 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1798 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1799 	 0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1800 	{
1801 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1802 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1803 	 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1804 	 0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1805 	{
1806 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1807 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1808 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1809 	 0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1810 	{
1811 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1812 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1813 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1814 	 0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1815 	{
1816 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1817 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1818 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1819 	 0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1820 	{
1821 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1822 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1823 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1824 	 0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1825 	{
1826 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1827 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1828 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1829 	 0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1830 	{
1831 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1832 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1833 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1834 	 0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1835 	{
1836 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1837 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1838 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1839 	 0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1840 	{
1841 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1842 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1843 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1844 	 0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1845 	{
1846 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1847 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1848 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1849 	 0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1850 	{
1851 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1852 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1853 	 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1854 	 0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1855 	{
1856 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1857 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1858 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1859 	 0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1860 	{
1861 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1862 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1863 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1864 	 0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1865 	{
1866 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1867 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1868 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1869 	 0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1870 	{
1871 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1872 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1873 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1874 	 0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1875 	{
1876 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1877 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1878 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1879 	 0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1880 	{
1881 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1882 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1883 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1884 	 0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1885 	{
1886 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1887 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1888 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1889 	 0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1890 	{
1891 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1892 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1893 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1894 	 0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1895 	{
1896 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1897 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1898 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1899 	 0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1900 	{
1901 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1902 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1903 	 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1904 	 0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1905 	{
1906 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1907 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1908 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1909 	 0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1910 	{
1911 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1912 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1913 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1914 	 0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1915 	{
1916 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1917 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1918 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1919 	 0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1920 	{
1921 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1922 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1923 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1924 	 0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1925 	{
1926 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1927 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1928 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1929 	 0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1930 	{
1931 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1932 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1933 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1934 	 0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1935 	{
1936 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1937 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1938 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1939 	 0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1940 	{
1941 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1942 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1943 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1944 	 0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1945 	{
1946 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1947 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1948 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1949 	 0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1950 	{
1951 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1952 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1953 	 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1954 	 0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1955 	{
1956 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1957 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1958 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1959 	 0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1960 	{
1961 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1962 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1963 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1964 	 0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1965 	{
1966 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1967 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1968 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1969 	 0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1970 	{
1971 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1972 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1973 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1974 	 0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1975 	{
1976 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1977 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1978 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1979 	 0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1980 	{
1981 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1982 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1983 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1984 	 0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1985 	{
1986 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1987 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1988 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1989 	 0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1990 	{
1991 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1992 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1993 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1994 	 0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1995 	{
1996 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1997 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1998 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1999 	 0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2000 	{
2001 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2002 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2003 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2004 	 0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2005 	{
2006 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2007 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2008 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2009 	 0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2010 	{
2011 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2012 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2013 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2014 	 0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2015 	{
2016 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2017 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2018 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2019 	 0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2020 	{
2021 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2022 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2023 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2024 	 0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2025 	{
2026 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2027 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2028 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2029 	 0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2030 	{
2031 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2032 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2033 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2034 	 0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2035 	{
2036 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2037 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2038 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2039 	 0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2040 	{
2041 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2042 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2043 	 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2044 	 0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2045 	{
2046 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2047 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2048 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2049 	 0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2050 	{
2051 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2052 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2053 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2054 	 0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2055 	{
2056 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2057 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2058 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2059 	 0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2060 	{
2061 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2062 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2063 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2064 	 0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2065 	{
2066 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2067 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2068 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2069 	 0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2070 	{
2071 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2072 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2073 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2074 	 0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2075 	{
2076 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2077 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2078 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2079 	 0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2080 	{
2081 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2082 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2083 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2084 	 0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2085 	{
2086 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2087 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2088 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2089 	 0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2090 	{
2091 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2092 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2093 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2094 	 0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2095 	{
2096 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2097 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2098 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2099 	 0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2100 	{
2101 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2102 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2103 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2104 	 0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2105 	{
2106 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2107 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2108 	 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2109 	 0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2110 	{
2111 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2112 	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2113 	 0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2114 	 0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2115 	{
2116 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2117 	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2118 	 0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2119 	 0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2120 	{
2121 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2122 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2123 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2124 	 0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2125 	{
2126 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2127 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2128 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2129 	 0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2130 	{
2131 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2132 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2133 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2134 	 0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2135 	{
2136 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2137 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2138 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2139 	 0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2140 	{
2141 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2142 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2143 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2144 	 0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2145 	{
2146 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2147 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2148 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2149 	 0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2150 	{
2151 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2152 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2153 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2154 	 0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2155 	{
2156 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2157 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2158 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2159 	 0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2160 	{
2161 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2162 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2163 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2164 	 0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2165 	{
2166 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2167 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2168 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2169 	 0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2170 	{
2171 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2172 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2173 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2174 	 0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2175 	{
2176 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2177 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2178 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2179 	 0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2180 	{
2181 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2182 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2183 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2184 	 0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2185 	{
2186 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2187 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2188 	 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2189 	 0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2190 };
2191 
2192 static const struct chan_info_nphy_radio205x chan_info_nphyrev5_2056v5[] = {
2193 	{
2194 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2195 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2196 	 0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2197 	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2198 	{
2199 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2200 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2201 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2202 	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2203 	{
2204 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2205 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2206 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2207 	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2208 	{
2209 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2210 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2211 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2212 	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2213 	{
2214 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2215 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2216 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2217 	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2218 	{
2219 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2220 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2221 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2222 	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2223 	{
2224 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2225 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2226 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2227 	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2228 	{
2229 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2230 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2231 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2232 	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2233 	{
2234 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2235 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2236 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2237 	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2238 	{
2239 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2240 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2241 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2242 	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2243 	{
2244 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2245 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2246 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2247 	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2248 	{
2249 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2250 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2251 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2252 	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2253 	{
2254 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2255 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2256 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2257 	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2258 	{
2259 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2260 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2261 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2262 	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2263 	{
2264 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2265 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2266 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2267 	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2268 	{
2269 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2270 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2271 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2272 	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2273 	{
2274 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2275 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2276 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2277 	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2278 	{
2279 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2280 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2281 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2282 	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2283 	{
2284 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2285 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2286 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2287 	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2288 	{
2289 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2290 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2291 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2292 	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2293 	{
2294 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2295 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2296 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2297 	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2298 	{
2299 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2300 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2301 	 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2302 	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2303 	{
2304 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2305 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2306 	 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2307 	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2308 	{
2309 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2310 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2311 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2312 	 0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2313 	{
2314 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2315 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2316 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2317 	 0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2318 	{
2319 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2320 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2321 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2322 	 0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2323 	{
2324 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2325 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2326 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2327 	 0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2328 	{
2329 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2330 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2331 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2332 	 0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2333 	{
2334 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2335 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2336 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2337 	 0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2338 	{
2339 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2340 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2341 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2342 	 0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2343 	{
2344 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2345 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2346 	 0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2347 	 0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2348 	{
2349 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2350 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2351 	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2352 	 0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2353 	{
2354 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2355 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2356 	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2357 	 0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2358 	{
2359 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2360 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2361 	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2362 	 0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2363 	{
2364 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2365 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2366 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2367 	 0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2368 	{
2369 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2370 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2371 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2372 	 0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2373 	{
2374 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2375 	 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2376 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2377 	 0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2378 	{
2379 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2380 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2381 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2382 	 0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2383 	{
2384 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2385 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2386 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2387 	 0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2388 	{
2389 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2390 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2391 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2392 	 0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2393 	{
2394 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2395 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2396 	 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2397 	 0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2398 	{
2399 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2400 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2401 	 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2402 	 0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2403 	{
2404 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2405 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2406 	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2407 	 0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2408 	{
2409 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2410 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2411 	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2412 	 0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2413 	{
2414 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2415 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2416 	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2417 	 0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2418 	{
2419 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2420 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2421 	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2422 	 0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2423 	{
2424 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2425 	 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2426 	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2427 	 0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2428 	{
2429 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2430 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2431 	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2432 	 0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2433 	{
2434 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2435 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2436 	 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2437 	 0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2438 	{
2439 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2440 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2441 	 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2442 	 0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2443 	{
2444 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2445 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2446 	 0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2447 	 0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2448 	{
2449 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2450 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2451 	 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2452 	 0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2453 	{
2454 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2455 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2456 	 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2457 	 0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2458 	{
2459 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2460 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2461 	 0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2462 	 0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2463 	{
2464 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2465 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2466 	 0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2467 	 0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2468 	{
2469 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2470 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2471 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2472 	 0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2473 	{
2474 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2475 	 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2476 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2477 	 0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2478 	{
2479 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2480 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2481 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2482 	 0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2483 	{
2484 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2485 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2486 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2487 	 0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2488 	{
2489 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2490 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2491 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2492 	 0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2493 	{
2494 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2495 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2496 	 0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2497 	 0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2498 	{
2499 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2500 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2501 	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2502 	 0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2503 	{
2504 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2505 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2506 	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2507 	 0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2508 	{
2509 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2510 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2511 	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2512 	 0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2513 	{
2514 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2515 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2516 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2517 	 0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2518 	{
2519 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2520 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2521 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2522 	 0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2523 	{
2524 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2525 	 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2526 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2527 	 0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2528 	{
2529 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2530 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2531 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2532 	 0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2533 	{
2534 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2535 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2536 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2537 	 0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2538 	{
2539 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2540 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2541 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2542 	 0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2543 	{
2544 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2545 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2546 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2547 	 0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2548 	{
2549 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2550 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2551 	 0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2552 	 0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2553 	{
2554 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2555 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2556 	 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2557 	 0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2558 	{
2559 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2560 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2561 	 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2562 	 0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2563 	{
2564 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2565 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2566 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2567 	 0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2568 	{
2569 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2570 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2571 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2572 	 0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2573 	{
2574 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2575 	 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2576 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2577 	 0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2578 	{
2579 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2580 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2581 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2582 	 0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2583 	{
2584 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2585 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2586 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2587 	 0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2588 	{
2589 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2590 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2591 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2592 	 0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2593 	{
2594 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2595 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2596 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2597 	 0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2598 	{
2599 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2600 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2601 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2602 	 0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2603 	{
2604 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2605 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2606 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2607 	 0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2608 	{
2609 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2610 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2611 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2612 	 0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2613 	{
2614 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2615 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2616 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2617 	 0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2618 	{
2619 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2620 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2621 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2622 	 0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2623 	{
2624 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2625 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2626 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2627 	 0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2628 	{
2629 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2630 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2631 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2632 	 0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2633 	{
2634 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2635 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2636 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2637 	 0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2638 	{
2639 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2640 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2641 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2642 	 0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2643 	{
2644 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2645 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2646 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2647 	 0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2648 	{
2649 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2650 	 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2651 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2652 	 0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2653 	{
2654 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2655 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2656 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2657 	 0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2658 	{
2659 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2660 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2661 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2662 	 0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2663 	{
2664 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2665 	 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2666 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2667 	 0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2668 	{
2669 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2670 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2671 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2672 	 0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2673 	{
2674 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2675 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2676 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2677 	 0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2678 	{
2679 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2680 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2681 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2682 	 0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2683 	{
2684 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2685 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2686 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2687 	 0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2688 	{
2689 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2690 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2691 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2692 	 0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2693 	{
2694 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2695 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2696 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2697 	 0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2698 	{
2699 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2700 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2701 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2702 	 0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2703 	{
2704 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2705 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2706 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2707 	 0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2708 	{
2709 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2710 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2711 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2712 	 0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2713 	{
2714 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2715 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2716 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2717 	 0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2718 	{
2719 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2720 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2721 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2722 	 0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2723 	{
2724 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2725 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2726 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2727 	 0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2728 	{
2729 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2730 	 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2731 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2732 	 0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2733 	{
2734 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2735 	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2736 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2737 	 0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2738 	{
2739 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2740 	 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2741 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2742 	 0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2743 	{
2744 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2745 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2746 	 0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2747 	 0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2748 	{
2749 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2750 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2751 	 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2752 	 0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2753 	{
2754 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2755 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2756 	 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2757 	 0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2758 	{
2759 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2760 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2761 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2762 	 0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2763 	{
2764 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2765 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2766 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2767 	 0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2768 	{
2769 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2770 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2771 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2772 	 0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2773 	{
2774 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2775 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2776 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2777 	 0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2778 	{
2779 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2780 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2781 	 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2782 	 0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2783 	{
2784 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2785 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2786 	 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2787 	 0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2788 	{
2789 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2790 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2791 	 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2792 	 0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2793 	{
2794 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2795 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2796 	 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2797 	 0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2798 	{
2799 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2800 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2801 	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2802 	 0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2803 	{
2804 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2805 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2806 	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2807 	 0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2808 	{
2809 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2810 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2811 	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2812 	 0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2813 };
2814 
2815 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v6[] = {
2816 	{
2817 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2818 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2819 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2820 	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2821 	{
2822 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2823 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2824 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2825 	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2826 	{
2827 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2828 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2829 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2830 	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2831 	{
2832 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2833 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2834 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2835 	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2836 	{
2837 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2838 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2839 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2840 	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2841 	{
2842 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2843 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2844 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2845 	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2846 	{
2847 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2848 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2849 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2850 	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2851 	{
2852 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2853 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2854 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2855 	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2856 	{
2857 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2858 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2859 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2860 	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2861 	{
2862 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2863 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2864 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2865 	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2866 	{
2867 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2868 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2869 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2870 	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2871 	{
2872 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2873 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2874 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2875 	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2876 	{
2877 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2878 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2879 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2880 	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2881 	{
2882 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2883 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2884 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2885 	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2886 	{
2887 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2888 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2889 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2890 	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2891 	{
2892 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2893 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2894 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2895 	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2896 	{
2897 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2898 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2899 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2900 	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2901 	{
2902 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2903 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2904 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2905 	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2906 	{
2907 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2908 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2909 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2910 	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2911 	{
2912 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2913 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2914 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2915 	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2916 	{
2917 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2918 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2919 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2920 	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2921 	{
2922 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2923 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2924 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2925 	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2926 	{
2927 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2928 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2929 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2930 	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2931 	{
2932 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2933 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2934 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2935 	 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2936 	{
2937 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2938 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2939 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2940 	 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2941 	{
2942 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2943 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2944 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2945 	 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2946 	{
2947 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2948 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2949 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2950 	 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2951 	{
2952 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2953 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2954 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2955 	 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2956 	{
2957 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2958 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2959 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2960 	 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2961 	{
2962 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2963 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2964 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2965 	 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2966 	{
2967 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2968 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2969 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2970 	 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2971 	{
2972 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2973 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2974 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2975 	 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2976 	{
2977 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2978 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2979 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2980 	 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2981 	{
2982 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2983 	 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2984 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2985 	 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2986 	{
2987 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2988 	 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2989 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2990 	 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2991 	{
2992 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2993 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2994 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2995 	 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2996 	{
2997 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2998 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2999 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3000 	 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3001 	{
3002 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3003 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3004 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3005 	 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3006 	{
3007 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3008 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3009 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3010 	 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3011 	{
3012 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3013 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
3014 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3015 	 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3016 	{
3017 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3018 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
3019 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3020 	 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3021 	{
3022 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3023 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3024 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3025 	 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3026 	{
3027 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3028 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3029 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3030 	 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3031 	{
3032 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3033 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3034 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3035 	 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3036 	{
3037 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3038 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3039 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3040 	 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3041 	{
3042 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3043 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3044 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3045 	 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3046 	{
3047 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3048 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3049 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3050 	 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3051 	{
3052 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3053 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3054 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3055 	 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3056 	{
3057 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3058 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3059 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3060 	 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3061 	{
3062 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3063 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3064 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3065 	 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3066 	{
3067 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3068 	 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3069 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3070 	 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3071 	{
3072 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3073 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3074 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3075 	 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3076 	{
3077 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3078 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3079 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3080 	 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3081 	{
3082 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3083 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3084 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3085 	 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3086 	{
3087 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3088 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3089 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3090 	 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3091 	{
3092 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3093 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3094 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3095 	 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3096 	{
3097 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3098 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3099 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3100 	 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3101 	{
3102 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3103 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3104 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3105 	 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3106 	{
3107 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3108 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3109 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3110 	 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3111 	{
3112 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3113 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3114 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3115 	 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3116 	{
3117 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3118 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3119 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3120 	 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3121 	{
3122 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3123 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3124 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3125 	 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3126 	{
3127 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3128 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3129 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3130 	 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3131 	{
3132 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3133 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3134 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3135 	 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3136 	{
3137 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3138 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3139 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3140 	 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3141 	{
3142 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3143 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3144 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3145 	 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3146 	{
3147 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3148 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3149 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3150 	 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3151 	{
3152 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3153 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3154 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3155 	 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3156 	{
3157 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3158 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3159 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3160 	 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3161 	{
3162 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3163 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3164 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3165 	 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3166 	{
3167 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3168 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3169 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3170 	 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3171 	{
3172 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3173 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3174 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3175 	 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3176 	{
3177 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3178 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3179 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3180 	 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3181 	{
3182 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3183 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3184 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3185 	 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3186 	{
3187 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3188 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3189 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3190 	 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3191 	{
3192 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3193 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3194 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3195 	 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3196 	{
3197 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3198 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3199 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3200 	 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3201 	{
3202 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3203 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3204 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3205 	 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3206 	{
3207 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3208 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3209 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3210 	 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3211 	{
3212 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3213 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3214 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3215 	 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3216 	{
3217 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3218 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3219 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3220 	 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3221 	{
3222 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3223 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3224 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3225 	 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3226 	{
3227 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3228 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3229 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3230 	 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3231 	{
3232 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3233 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3234 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3235 	 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3236 	{
3237 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3238 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3239 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3240 	 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3241 	{
3242 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3243 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3244 	 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3245 	 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3246 	{
3247 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3248 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3249 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3250 	 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3251 	{
3252 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3253 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3254 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3255 	 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3256 	{
3257 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3258 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3259 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3260 	 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3261 	{
3262 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3263 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3264 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3265 	 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3266 	{
3267 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3268 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3269 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3270 	 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3271 	{
3272 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3273 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3274 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3275 	 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3276 	{
3277 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3278 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3279 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3280 	 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3281 	{
3282 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3283 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3284 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3285 	 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3286 	{
3287 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3288 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3289 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3290 	 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3291 	{
3292 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3293 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3294 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3295 	 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3296 	{
3297 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3298 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3299 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3300 	 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3301 	{
3302 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3303 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3304 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3305 	 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3306 	{
3307 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3308 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3309 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3310 	 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3311 	{
3312 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3313 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3314 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3315 	 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3316 	{
3317 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3318 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3319 	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3320 	 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3321 	{
3322 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3323 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3324 	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3325 	 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3326 	{
3327 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3328 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3329 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3330 	 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3331 	{
3332 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3333 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3334 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3335 	 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3336 	{
3337 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3338 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3339 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3340 	 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3341 	{
3342 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3343 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3344 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3345 	 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3346 	{
3347 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3348 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3349 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3350 	 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3351 	{
3352 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3353 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3354 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3355 	 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3356 	{
3357 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3358 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3359 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3360 	 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3361 	{
3362 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3363 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3364 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3365 	 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3366 	{
3367 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3368 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3369 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3370 	 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3371 	{
3372 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3373 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3374 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3375 	 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3376 	{
3377 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3378 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3379 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3380 	 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3381 	{
3382 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3383 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3384 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3385 	 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3386 	{
3387 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3388 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3389 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3390 	 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3391 	{
3392 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3393 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3394 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3395 	 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3396 	{
3397 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3398 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3399 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3400 	 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3401 	{
3402 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3403 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3404 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3405 	 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3406 	{
3407 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3408 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3409 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3410 	 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3411 	{
3412 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3413 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3414 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3415 	 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3416 	{
3417 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3418 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3419 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3420 	 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3421 	{
3422 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3423 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3424 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3425 	 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3426 	{
3427 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3428 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3429 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3430 	 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3431 	{
3432 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3433 	 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3434 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3435 	 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3436 };
3437 
3438 static const struct chan_info_nphy_radio205x chan_info_nphyrev5n6_2056v7[] = {
3439 	{
3440 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3441 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3442 	 0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3443 	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3444 	{
3445 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3446 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3447 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3448 	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3449 	{
3450 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3451 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3452 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3453 	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3454 	{
3455 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3456 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3457 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3458 	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3459 	{
3460 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3461 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3462 	 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3463 	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3464 	{
3465 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3466 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3467 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3468 	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3469 	{
3470 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3471 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3472 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3473 	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3474 	{
3475 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3476 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3477 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3478 	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3479 	{
3480 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3481 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3482 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3483 	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3484 	{
3485 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3486 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3487 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3488 	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3489 	{
3490 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3491 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3492 	 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3493 	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3494 	{
3495 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3496 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3497 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3498 	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3499 	{
3500 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3501 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3502 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3503 	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3504 	{
3505 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3506 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3507 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3508 	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3509 	{
3510 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3511 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3512 	 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3513 	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3514 	{
3515 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3516 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3517 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3518 	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3519 	{
3520 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3521 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3522 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3523 	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3524 	{
3525 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3526 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3527 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3528 	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3529 	{
3530 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3531 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3532 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3533 	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3534 	{
3535 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3536 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3537 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3538 	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3539 	{
3540 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3541 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3542 	 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3543 	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3544 	{
3545 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3546 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3547 	 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3548 	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3549 	{
3550 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3551 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3552 	 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3553 	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3554 	{
3555 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3556 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3557 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3558 	 0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3559 	{
3560 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3561 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3562 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3563 	 0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3564 	{
3565 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3566 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3567 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3568 	 0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3569 	{
3570 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3571 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3572 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3573 	 0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3574 	{
3575 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3576 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3577 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3578 	 0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3579 	{
3580 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3581 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3582 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3583 	 0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3584 	{
3585 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3586 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3587 	 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3588 	 0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3589 	{
3590 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3591 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3592 	 0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3593 	 0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3594 	{
3595 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3596 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3597 	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3598 	 0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3599 	{
3600 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3601 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3602 	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3603 	 0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3604 	{
3605 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3606 	 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3607 	 0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3608 	 0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3609 	{
3610 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3611 	 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3612 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3613 	 0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3614 	{
3615 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3616 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3617 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3618 	 0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3619 	{
3620 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3621 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3622 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3623 	 0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3624 	{
3625 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3626 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3627 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3628 	 0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3629 	{
3630 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3631 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3632 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3633 	 0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3634 	{
3635 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3636 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3637 	 0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3638 	 0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3639 	{
3640 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3641 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3642 	 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3643 	 0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3644 	{
3645 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3646 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3647 	 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3648 	 0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3649 	{
3650 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3651 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3652 	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3653 	 0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3654 	{
3655 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3656 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3657 	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3658 	 0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3659 	{
3660 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3661 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3662 	 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3663 	 0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3664 	{
3665 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3666 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3667 	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3668 	 0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3669 	{
3670 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3671 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3672 	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3673 	 0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3674 	{
3675 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3676 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3677 	 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3678 	 0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3679 	{
3680 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3681 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3682 	 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3683 	 0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3684 	{
3685 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3686 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3687 	 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3688 	 0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3689 	{
3690 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3691 	 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3692 	 0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3693 	 0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3694 	{
3695 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3696 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3697 	 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3698 	 0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3699 	{
3700 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3701 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3702 	 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3703 	 0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3704 	{
3705 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3706 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3707 	 0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3708 	 0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3709 	{
3710 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3711 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3712 	 0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3713 	 0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3714 	{
3715 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3716 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3717 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3718 	 0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3719 	{
3720 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3721 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3722 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3723 	 0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3724 	{
3725 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3726 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3727 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3728 	 0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3729 	{
3730 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3731 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3732 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3733 	 0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3734 	{
3735 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3736 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3737 	 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3738 	 0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3739 	{
3740 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3741 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3742 	 0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3743 	 0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3744 	{
3745 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3746 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3747 	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3748 	 0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3749 	{
3750 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3751 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3752 	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3753 	 0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3754 	{
3755 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3756 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3757 	 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3758 	 0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3759 	{
3760 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3761 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3762 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3763 	 0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3764 	{
3765 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3766 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3767 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3768 	 0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3769 	{
3770 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3771 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3772 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3773 	 0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3774 	{
3775 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3776 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3777 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3778 	 0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3779 	{
3780 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3781 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3782 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3783 	 0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3784 	{
3785 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3786 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3787 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3788 	 0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3789 	{
3790 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3791 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3792 	 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3793 	 0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3794 	{
3795 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3796 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3797 	 0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3798 	 0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3799 	{
3800 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3801 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3802 	 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3803 	 0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3804 	{
3805 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3806 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3807 	 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3808 	 0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3809 	{
3810 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3811 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3812 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3813 	 0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3814 	{
3815 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3816 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3817 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3818 	 0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3819 	{
3820 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3821 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3822 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3823 	 0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3824 	{
3825 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3826 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3827 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3828 	 0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3829 	{
3830 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3831 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3832 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3833 	 0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3834 	{
3835 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3836 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3837 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3838 	 0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3839 	{
3840 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3841 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3842 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3843 	 0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3844 	{
3845 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3846 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3847 	 0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3848 	 0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3849 	{
3850 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3851 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3852 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3853 	 0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3854 	{
3855 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3856 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3857 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3858 	 0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3859 	{
3860 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3861 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3862 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3863 	 0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3864 	{
3865 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3866 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3867 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3868 	 0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3869 	{
3870 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3871 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3872 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3873 	 0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3874 	{
3875 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3876 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3877 	 0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3878 	 0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3879 	{
3880 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3881 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3882 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3883 	 0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3884 	{
3885 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3886 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3887 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3888 	 0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3889 	{
3890 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3891 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3892 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3893 	 0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3894 	{
3895 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3896 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3897 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3898 	 0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3899 	{
3900 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3901 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3902 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3903 	 0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3904 	{
3905 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3906 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3907 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3908 	 0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3909 	{
3910 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3911 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3912 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3913 	 0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3914 	{
3915 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3916 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3917 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3918 	 0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3919 	{
3920 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3921 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3922 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3923 	 0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3924 	{
3925 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3926 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3927 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3928 	 0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3929 	{
3930 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3931 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3932 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3933 	 0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3934 	{
3935 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3936 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3937 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3938 	 0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3939 	{
3940 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3941 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3942 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3943 	 0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3944 	{
3945 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3946 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3947 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3948 	 0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3949 	{
3950 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3951 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3952 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3953 	 0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3954 	{
3955 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3956 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3957 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3958 	 0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3959 	{
3960 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3961 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3962 	 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3963 	 0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3964 	{
3965 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3966 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3967 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3968 	 0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3969 	{
3970 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3971 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3972 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3973 	 0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3974 	{
3975 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3976 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3977 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3978 	 0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3979 	{
3980 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3981 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3982 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3983 	 0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3984 	{
3985 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3986 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3987 	 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3988 	 0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3989 	{
3990 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3991 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3992 	 0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3993 	 0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3994 	{
3995 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3996 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3997 	 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3998 	 0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3999 	{
4000 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4001 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
4002 	 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4003 	 0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4004 	{
4005 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4006 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4007 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4008 	 0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4009 	{
4010 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4011 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
4012 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4013 	 0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4014 	{
4015 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4016 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
4017 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4018 	 0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4019 	{
4020 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4021 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
4022 	 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
4023 	 0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4024 	{
4025 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4026 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
4027 	 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4028 	 0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4029 	{
4030 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4031 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4032 	 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4033 	 0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4034 	{
4035 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4036 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4037 	 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4038 	 0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4039 	{
4040 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4041 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4042 	 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4043 	 0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4044 	{
4045 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4046 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4047 	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4048 	 0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4049 	{
4050 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4051 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4052 	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4053 	 0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4054 	{
4055 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4056 	 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4057 	 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4058 	 0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4059 };
4060 
4061 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v8[] = {
4062 	{
4063 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4064 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4065 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4066 	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4067 	{
4068 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4069 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4070 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4071 	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4072 	{
4073 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4074 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4075 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4076 	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4077 	{
4078 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4079 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4080 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4081 	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4082 	{
4083 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4084 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4085 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4086 	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4087 	{
4088 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4089 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4090 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4091 	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4092 	{
4093 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4094 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4095 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4096 	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4097 	{
4098 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4099 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4100 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4101 	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4102 	{
4103 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4104 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4105 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4106 	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4107 	{
4108 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4109 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4110 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4111 	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4112 	{
4113 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4114 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4115 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4116 	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4117 	{
4118 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4119 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4120 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4121 	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4122 	{
4123 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4124 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4125 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4126 	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4127 	{
4128 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4129 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4130 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4131 	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4132 	{
4133 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4134 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4135 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4136 	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4137 	{
4138 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4139 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4140 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4141 	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4142 	{
4143 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4144 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4145 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4146 	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4147 	{
4148 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4149 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4150 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4151 	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4152 	{
4153 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4154 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4155 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4156 	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4157 	{
4158 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4159 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4160 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4161 	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4162 	{
4163 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4164 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4165 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4166 	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4167 	{
4168 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4169 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4170 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4171 	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4172 	{
4173 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4174 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4175 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4176 	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4177 	{
4178 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4179 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4180 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4181 	 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4182 	{
4183 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4184 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4185 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4186 	 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4187 	{
4188 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4189 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4190 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4191 	 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4192 	{
4193 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4194 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4195 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4196 	 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4197 	{
4198 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4199 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4200 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4201 	 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4202 	{
4203 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4204 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4205 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4206 	 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4207 	{
4208 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4209 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4210 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4211 	 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4212 	{
4213 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4214 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4215 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4216 	 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4217 	{
4218 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4219 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4220 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4221 	 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4222 	{
4223 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4224 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4225 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4226 	 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4227 	{
4228 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4229 	 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4230 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4231 	 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4232 	{
4233 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4234 	 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4235 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4236 	 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4237 	{
4238 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4239 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4240 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4241 	 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4242 	{
4243 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4244 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4245 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4246 	 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4247 	{
4248 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4249 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4250 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4251 	 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4252 	{
4253 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4254 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4255 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4256 	 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4257 	{
4258 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4259 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4260 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4261 	 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4262 	{
4263 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4264 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4265 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4266 	 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4267 	{
4268 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4269 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4270 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4271 	 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4272 	{
4273 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4274 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4275 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4276 	 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4277 	{
4278 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4279 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4280 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4281 	 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4282 	{
4283 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4284 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4285 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4286 	 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4287 	{
4288 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4289 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4290 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4291 	 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4292 	{
4293 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4294 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4295 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4296 	 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4297 	{
4298 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4299 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4300 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4301 	 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4302 	{
4303 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4304 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4305 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4306 	 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4307 	{
4308 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4309 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4310 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4311 	 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4312 	{
4313 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4314 	 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4315 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4316 	 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4317 	{
4318 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4319 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4320 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4321 	 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4322 	{
4323 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4324 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4325 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4326 	 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4327 	{
4328 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4329 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4330 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4331 	 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4332 	{
4333 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4334 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4335 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4336 	 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4337 	{
4338 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4339 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4340 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4341 	 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4342 	{
4343 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4344 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4345 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4346 	 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4347 	{
4348 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4349 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4350 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4351 	 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4352 	{
4353 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4354 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4355 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4356 	 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4357 	{
4358 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4359 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4360 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4361 	 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4362 	{
4363 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4364 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4365 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4366 	 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4367 	{
4368 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4369 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4370 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4371 	 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4372 	{
4373 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4374 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4375 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4376 	 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4377 	{
4378 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4379 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4380 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4381 	 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4382 	{
4383 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4384 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4385 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4386 	 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4387 	{
4388 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4389 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4390 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4391 	 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4392 	{
4393 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4394 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4395 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4396 	 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4397 	{
4398 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4399 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4400 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4401 	 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4402 	{
4403 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4404 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4405 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4406 	 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4407 	{
4408 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4409 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4410 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4411 	 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4412 	{
4413 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4414 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4415 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4416 	 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4417 	{
4418 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4419 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4420 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4421 	 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4422 	{
4423 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4424 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4425 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4426 	 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4427 	{
4428 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4429 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4430 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4431 	 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4432 	{
4433 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4434 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4435 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4436 	 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4437 	{
4438 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4439 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4440 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4441 	 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4442 	{
4443 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4444 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4445 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4446 	 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4447 	{
4448 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4449 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4450 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4451 	 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4452 	{
4453 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4454 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4455 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4456 	 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4457 	{
4458 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4459 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4460 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4461 	 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4462 	{
4463 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4464 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4465 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4466 	 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4467 	{
4468 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4469 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4470 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4471 	 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4472 	{
4473 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4474 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4475 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4476 	 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4477 	{
4478 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4479 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4480 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4481 	 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4482 	{
4483 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4484 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4485 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4486 	 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4487 	{
4488 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4489 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4490 	 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4491 	 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4492 	{
4493 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4494 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4495 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4496 	 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4497 	{
4498 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4499 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4500 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4501 	 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4502 	{
4503 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4504 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4505 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4506 	 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4507 	{
4508 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4509 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4510 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4511 	 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4512 	{
4513 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4514 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4515 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4516 	 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4517 	{
4518 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4519 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4520 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4521 	 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4522 	{
4523 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4524 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4525 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4526 	 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4527 	{
4528 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4529 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4530 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4531 	 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4532 	{
4533 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4534 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4535 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4536 	 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4537 	{
4538 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4539 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4540 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4541 	 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4542 	{
4543 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4544 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4545 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4546 	 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4547 	{
4548 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4549 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4550 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4551 	 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4552 	{
4553 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4554 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4555 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4556 	 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4557 	{
4558 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4559 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4560 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4561 	 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4562 	{
4563 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4564 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4565 	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4566 	 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4567 	{
4568 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4569 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4570 	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4571 	 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4572 	{
4573 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4574 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4575 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4576 	 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4577 	{
4578 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4579 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4580 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4581 	 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4582 	{
4583 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4584 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4585 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4586 	 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4587 	{
4588 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4589 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4590 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4591 	 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4592 	{
4593 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4594 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4595 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4596 	 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4597 	{
4598 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4599 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4600 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4601 	 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4602 	{
4603 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4604 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4605 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4606 	 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4607 	{
4608 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4609 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4610 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4611 	 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4612 	{
4613 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4614 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4615 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4616 	 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4617 	{
4618 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4619 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4620 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4621 	 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4622 	{
4623 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4624 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4625 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4626 	 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4627 	{
4628 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4629 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4630 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4631 	 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4632 	{
4633 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4634 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4635 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4636 	 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4637 	{
4638 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4639 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4640 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4641 	 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4642 	{
4643 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4644 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4645 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4646 	 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4647 	{
4648 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4649 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4650 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4651 	 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4652 	{
4653 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4654 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4655 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4656 	 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4657 	{
4658 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4659 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4660 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4661 	 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4662 	{
4663 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4664 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4665 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4666 	 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4667 	{
4668 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4669 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4670 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4671 	 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4672 	{
4673 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4674 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4675 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4676 	 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4677 	{
4678 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4679 	 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4680 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4681 	 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4682 };
4683 
4684 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v11[] = {
4685 	{
4686 	 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4687 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4688 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4689 	 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4690 	{
4691 	 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4692 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4693 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4694 	 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4695 	{
4696 	 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4697 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4698 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4699 	 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4700 	{
4701 	 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4702 	 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4703 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4704 	 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4705 	{
4706 	 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4707 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4708 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4709 	 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4710 	{
4711 	 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4712 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4713 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4714 	 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4715 	{
4716 	 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4717 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4718 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4719 	 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4720 	{
4721 	 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4722 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4723 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4724 	 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4725 	{
4726 	 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4727 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4728 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4729 	 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4730 	{
4731 	 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4732 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4733 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4734 	 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4735 	{
4736 	 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4737 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4738 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4739 	 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4740 	{
4741 	 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4742 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4743 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4744 	 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4745 	{
4746 	 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4747 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4748 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4749 	 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4750 	{
4751 	 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4752 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4753 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4754 	 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4755 	{
4756 	 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4757 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4758 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4759 	 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4760 	{
4761 	 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4762 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4763 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4764 	 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4765 	{
4766 	 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4767 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4768 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4769 	 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4770 	{
4771 	 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4772 	 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4773 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4774 	 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4775 	{
4776 	 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4777 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4778 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4779 	 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4780 	{
4781 	 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4782 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4783 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4784 	 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4785 	{
4786 	 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4787 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4788 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4789 	 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4790 	{
4791 	 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4792 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4793 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4794 	 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4795 	{
4796 	 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4797 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4798 	 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4799 	 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4800 	{
4801 	 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4802 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4803 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4804 	 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4805 	{
4806 	 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4807 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4808 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4809 	 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4810 	{
4811 	 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4812 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4813 	 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4814 	 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4815 	{
4816 	 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4817 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4818 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4819 	 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4820 	{
4821 	 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4822 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4823 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4824 	 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4825 	{
4826 	 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4827 	 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4828 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4829 	 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4830 	{
4831 	 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4832 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4833 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4834 	 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4835 	{
4836 	 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4837 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4838 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4839 	 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4840 	{
4841 	 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4842 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4843 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4844 	 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4845 	{
4846 	 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4847 	 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4848 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4849 	 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4850 	{
4851 	 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4852 	 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4853 	 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4854 	 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4855 	{
4856 	 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4857 	 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4858 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4859 	 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4860 	{
4861 	 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4862 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4863 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4864 	 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4865 	{
4866 	 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4867 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4868 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4869 	 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4870 	{
4871 	 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4872 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4873 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4874 	 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4875 	{
4876 	 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4877 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4878 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4879 	 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4880 	{
4881 	 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4882 	 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4883 	 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4884 	 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4885 	{
4886 	 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4887 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4888 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4889 	 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4890 	{
4891 	 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4892 	 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4893 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4894 	 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4895 	{
4896 	 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4897 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4898 	 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4899 	 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4900 	{
4901 	 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4902 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4903 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4904 	 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4905 	{
4906 	 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4907 	 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4908 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4909 	 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4910 	{
4911 	 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4912 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4913 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4914 	 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4915 	{
4916 	 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4917 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4918 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4919 	 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4920 	{
4921 	 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4922 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4923 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4924 	 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4925 	{
4926 	 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4927 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4928 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4929 	 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4930 	{
4931 	 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4932 	 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4933 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4934 	 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4935 	{
4936 	 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4937 	 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4938 	 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4939 	 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4940 	{
4941 	 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4942 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4943 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4944 	 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4945 	{
4946 	 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4947 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4948 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4949 	 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4950 	{
4951 	 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4952 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4953 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4954 	 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4955 	{
4956 	 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4957 	 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4958 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4959 	 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4960 	{
4961 	 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4962 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4963 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4964 	 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4965 	{
4966 	 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4967 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4968 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4969 	 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4970 	{
4971 	 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4972 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4973 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4974 	 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4975 	{
4976 	 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4977 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4978 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4979 	 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4980 	{
4981 	 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4982 	 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4983 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4984 	 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4985 	{
4986 	 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4987 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4988 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4989 	 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4990 	{
4991 	 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4992 	 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4993 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4994 	 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4995 	{
4996 	 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4997 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4998 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4999 	 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
5000 	{
5001 	 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5002 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
5003 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5004 	 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
5005 	{
5006 	 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5007 	 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
5008 	 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5009 	 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
5010 	{
5011 	 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5012 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
5013 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5014 	 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
5015 	{
5016 	 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5017 	 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
5018 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5019 	 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
5020 	{
5021 	 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
5022 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5023 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5024 	 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
5025 	{
5026 	 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
5027 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5028 	 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5029 	 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
5030 	{
5031 	 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5032 	 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5033 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5034 	 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5035 	{
5036 	 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5037 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5038 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5039 	 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5040 	{
5041 	 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5042 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5043 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5044 	 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5045 	{
5046 	 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5047 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5048 	 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5049 	 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5050 	{
5051 	 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5052 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5053 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5054 	 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5055 	{
5056 	 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5057 	 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5058 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5059 	 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5060 	{
5061 	 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5062 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5063 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5064 	 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5065 	{
5066 	 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5067 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5068 	 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5069 	 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5070 	{
5071 	 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5072 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5073 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5074 	 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5075 	{
5076 	 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5077 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5078 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5079 	 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5080 	{
5081 	 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5082 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5083 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5084 	 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5085 	{
5086 	 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5087 	 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5088 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5089 	 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5090 	{
5091 	 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5092 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5093 	 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5094 	 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5095 	{
5096 	 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5097 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5098 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5099 	 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5100 	{
5101 	 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5102 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5103 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5104 	 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5105 	{
5106 	 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5107 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5108 	 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5109 	 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5110 	{
5111 	 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5112 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5113 	 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5114 	 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5115 	{
5116 	 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5117 	 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5118 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5119 	 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5120 	{
5121 	 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5122 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5123 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5124 	 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5125 	{
5126 	 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5127 	 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5128 	 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5129 	 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5130 	{
5131 	 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5132 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5133 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5134 	 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5135 	{
5136 	 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5137 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5138 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5139 	 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5140 	{
5141 	 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5142 	 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5143 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5144 	 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5145 	{
5146 	 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5147 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5148 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5149 	 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5150 	{
5151 	 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5152 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5153 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5154 	 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5155 	{
5156 	 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5157 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5158 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5159 	 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5160 	{
5161 	 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5162 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5163 	 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5164 	 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5165 	{
5166 	 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5167 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5168 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5169 	 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5170 	{
5171 	 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5172 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5173 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5174 	 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5175 	{
5176 	 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5177 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5178 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5179 	 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5180 	{
5181 	 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5182 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5183 	 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5184 	 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5185 	{
5186 	 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5187 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5188 	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5189 	 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5190 	{
5191 	 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5192 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5193 	 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5194 	 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5195 	{
5196 	 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5197 	 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5198 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5199 	 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5200 	{
5201 	 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5202 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5203 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5204 	 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5205 	{
5206 	 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5207 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5208 	 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5209 	 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5210 	{
5211 	 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5212 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5213 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5214 	 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5215 	{
5216 	 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5217 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5218 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5219 	 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5220 	{
5221 	 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5222 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5223 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5224 	 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5225 	{
5226 	 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5227 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5228 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5229 	 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5230 	{
5231 	 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5232 	 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5233 	 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5234 	 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5235 	{
5236 	 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5237 	 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5238 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5239 	 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5240 	{
5241 	 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5242 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5243 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5244 	 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5245 	{
5246 	 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5247 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5248 	 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5249 	 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5250 	{
5251 	 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5252 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5253 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5254 	 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5255 	{
5256 	 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5257 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5258 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5259 	 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5260 	{
5261 	 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5262 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5263 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5264 	 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5265 	{
5266 	 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5267 	 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5268 	 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5269 	 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5270 	{
5271 	 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5272 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5273 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5274 	 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5275 	{
5276 	 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5277 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5278 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5279 	 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5280 	{
5281 	 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5282 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5283 	 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5284 	 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5285 	{
5286 	 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5287 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5288 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5289 	 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5290 	{
5291 	 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5292 	 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5293 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5294 	 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5295 	{
5296 	 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5297 	 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5298 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5299 	 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5300 	{
5301 	 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5302 	 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5303 	 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5304 	 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5305 };
5306 
5307 static const struct chan_info_nphy_radio2057 chan_info_nphyrev7_2057_rev4[] = {
5308 	{
5309 	 184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5310 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5311 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5312 	 0x0215,
5313 	 0x0216,
5314 	 },
5315 	{
5316 	 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5317 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5318 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5319 	 0x0214,
5320 	 0x0215,
5321 	 },
5322 	{
5323 	 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5324 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5325 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5326 	 0x0213,
5327 	 0x0214,
5328 	 },
5329 	{
5330 	 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5331 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5332 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5333 	 0x0212,
5334 	 0x0213,
5335 	 },
5336 	{
5337 	 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5338 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5339 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5340 	 0x0211,
5341 	 0x0212,
5342 	 },
5343 	{
5344 	 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5345 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5346 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5347 	 0x020f,
5348 	 0x0211,
5349 	 },
5350 	{
5351 	 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5352 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5353 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5354 	 0x020e,
5355 	 0x020f,
5356 	 },
5357 	{
5358 	 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5359 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5360 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5361 	 0x020d,
5362 	 0x020e,
5363 	 },
5364 	{
5365 	 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5366 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5367 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5368 	 0x020c,
5369 	 0x020d,
5370 	 },
5371 	{
5372 	 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5373 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5374 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5375 	 0x020b,
5376 	 0x020c,
5377 	 },
5378 	{
5379 	 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5380 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5381 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5382 	 0x020a,
5383 	 0x020b,
5384 	 },
5385 	{
5386 	 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5387 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5388 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5389 	 0x0209,
5390 	 0x020a,
5391 	 },
5392 	{
5393 	 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5394 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5395 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5396 	 0x0208,
5397 	 0x0209,
5398 	 },
5399 	{
5400 	 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5401 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5402 	 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5403 	 0x0207,
5404 	 0x0208,
5405 	 },
5406 	{
5407 	 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5408 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5409 	 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5410 	 0x0206,
5411 	 0x0207,
5412 	 },
5413 	{
5414 	 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5415 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5416 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5417 	 0x0205,
5418 	 0x0206,
5419 	 },
5420 	{
5421 	 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5422 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5423 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5424 	 0x0204,
5425 	 0x0205,
5426 	 },
5427 	{
5428 	 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5429 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5430 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5431 	 0x0203,
5432 	 0x0204,
5433 	 },
5434 	{
5435 	 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5436 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5437 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5438 	 0x0202,
5439 	 0x0203,
5440 	 },
5441 	{
5442 	 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5443 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5444 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5445 	 0x0201,
5446 	 0x0202,
5447 	 },
5448 	{
5449 	 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5450 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5451 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5452 	 0x0200,
5453 	 0x0201,
5454 	 },
5455 	{
5456 	 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5457 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5458 	 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5459 	 0x01ff,
5460 	 0x0200,
5461 	 },
5462 	{
5463 	 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5464 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5465 	 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5466 	 0x01fe,
5467 	 0x01ff,
5468 	 },
5469 	{
5470 	 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5471 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5472 	 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5473 	 0x01fc,
5474 	 0x01fd,
5475 	 },
5476 	{
5477 	 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5478 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5479 	 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5480 	 0x01fb,
5481 	 0x01fc,
5482 	 },
5483 	{
5484 	 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5485 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5486 	 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5487 	 0x01fa,
5488 	 0x01fb,
5489 	 },
5490 	{
5491 	 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5492 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5493 	 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5494 	 0x01f9,
5495 	 0x01fa,
5496 	 },
5497 	{
5498 	 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5499 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5500 	 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5501 	 0x01f8,
5502 	 0x01f9,
5503 	 },
5504 	{
5505 	 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5506 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5507 	 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5508 	 0x01f7,
5509 	 0x01f8,
5510 	 },
5511 	{
5512 	 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5513 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5514 	 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5515 	 0x01f6,
5516 	 0x01f7,
5517 	 },
5518 	{
5519 	 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5520 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5521 	 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5522 	 0x01f5,
5523 	 0x01f6,
5524 	 },
5525 	{
5526 	 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5527 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5528 	 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5529 	 0x01f4,
5530 	 0x01f5,
5531 	 },
5532 	{
5533 	 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5534 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5535 	 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5536 	 0x01f3,
5537 	 0x01f4,
5538 	 },
5539 	{
5540 	 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5541 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5542 	 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5543 	 0x01f2,
5544 	 0x01f3,
5545 	 },
5546 	{
5547 	 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5548 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5549 	 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5550 	 0x01f1,
5551 	 0x01f2,
5552 	 },
5553 	{
5554 	 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5555 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5556 	 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5557 	 0x01f0,
5558 	 0x01f1,
5559 	 },
5560 	{
5561 	 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5562 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5563 	 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5564 	 0x01f0,
5565 	 0x01f0,
5566 	 },
5567 	{
5568 	 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5569 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5570 	 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5571 	 0x01ef,
5572 	 0x01f0,
5573 	 },
5574 	{
5575 	 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5576 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5577 	 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5578 	 0x01ee,
5579 	 0x01ef,
5580 	 },
5581 	{
5582 	 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5583 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5584 	 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5585 	 0x01ed,
5586 	 0x01ee,
5587 	 },
5588 	{
5589 	 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5590 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5591 	 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5592 	 0x01ec,
5593 	 0x01ed,
5594 	 },
5595 	{
5596 	 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5597 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5598 	 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5599 	 0x01eb,
5600 	 0x01ec,
5601 	 },
5602 	{
5603 	 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5604 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5605 	 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5606 	 0x01ea,
5607 	 0x01eb,
5608 	 },
5609 	{
5610 	 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5611 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5612 	 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5613 	 0x01e9,
5614 	 0x01ea,
5615 	 },
5616 	{
5617 	 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5618 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5619 	 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5620 	 0x01e8,
5621 	 0x01e9,
5622 	 },
5623 	{
5624 	 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5625 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5626 	 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5627 	 0x01e7,
5628 	 0x01e8,
5629 	 },
5630 	{
5631 	 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5632 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5633 	 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5634 	 0x01e6,
5635 	 0x01e7,
5636 	 },
5637 	{
5638 	 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5639 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5640 	 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5641 	 0x01e5,
5642 	 0x01e6,
5643 	 },
5644 	{
5645 	 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5646 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5647 	 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5648 	 0x01e5,
5649 	 0x01e5,
5650 	 },
5651 	{
5652 	 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5653 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5654 	 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5655 	 0x01e4,
5656 	 0x01e5,
5657 	 },
5658 	{
5659 	 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5660 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5661 	 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5662 	 0x01e3,
5663 	 0x01e4,
5664 	 },
5665 	{
5666 	 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5667 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5668 	 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5669 	 0x01e2,
5670 	 0x01e3,
5671 	 },
5672 	{
5673 	 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5674 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5675 	 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5676 	 0x01e1,
5677 	 0x01e2,
5678 	 },
5679 	{
5680 	 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5681 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5682 	 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5683 	 0x01e0,
5684 	 0x01e1,
5685 	 },
5686 	{
5687 	 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5688 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5689 	 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5690 	 0x01df,
5691 	 0x01e0,
5692 	 },
5693 	{
5694 	 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5695 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5696 	 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5697 	 0x01de,
5698 	 0x01df,
5699 	 },
5700 	{
5701 	 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5702 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5703 	 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5704 	 0x01dd,
5705 	 0x01de,
5706 	 },
5707 	{
5708 	 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5709 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5710 	 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5711 	 0x01dd,
5712 	 0x01dd,
5713 	 },
5714 	{
5715 	 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5716 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5717 	 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5718 	 0x01dc,
5719 	 0x01dd,
5720 	 },
5721 	{
5722 	 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5723 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5724 	 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5725 	 0x01db,
5726 	 0x01dc,
5727 	 },
5728 	{
5729 	 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5730 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5731 	 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5732 	 0x01da,
5733 	 0x01db,
5734 	 },
5735 	{
5736 	 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5737 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5738 	 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5739 	 0x01d9,
5740 	 0x01da,
5741 	 },
5742 	{
5743 	 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5744 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5745 	 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5746 	 0x01d8,
5747 	 0x01d9,
5748 	 },
5749 	{
5750 	 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5751 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5752 	 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5753 	 0x01d7,
5754 	 0x01d8,
5755 	 },
5756 	{
5757 	 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5758 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5759 	 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5760 	 0x01d7,
5761 	 0x01d7,
5762 	 },
5763 	{
5764 	 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5765 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5766 	 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5767 	 0x01d6,
5768 	 0x01d7,
5769 	 },
5770 	{
5771 	 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5772 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5773 	 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5774 	 0x01d5,
5775 	 0x01d6,
5776 	 },
5777 	{
5778 	 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5779 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5780 	 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5781 	 0x01d4,
5782 	 0x01d5,
5783 	 },
5784 	{
5785 	 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5786 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5787 	 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5788 	 0x01d3,
5789 	 0x01d4,
5790 	 },
5791 	{
5792 	 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5793 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5794 	 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5795 	 0x01d2,
5796 	 0x01d3,
5797 	 },
5798 	{
5799 	 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5800 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5801 	 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5802 	 0x01d2,
5803 	 0x01d2,
5804 	 },
5805 	{
5806 	 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5807 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5808 	 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5809 	 0x01d1,
5810 	 0x01d2,
5811 	 },
5812 	{
5813 	 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5814 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5815 	 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5816 	 0x01d0,
5817 	 0x01d1,
5818 	 },
5819 	{
5820 	 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5821 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5822 	 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5823 	 0x01cf,
5824 	 0x01d0,
5825 	 },
5826 	{
5827 	 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5828 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5829 	 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5830 	 0x01ce,
5831 	 0x01cf,
5832 	 },
5833 	{
5834 	 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5835 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5836 	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5837 	 0x01ce,
5838 	 0x01ce,
5839 	 },
5840 	{
5841 	 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5842 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5843 	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5844 	 0x01cd,
5845 	 0x01ce,
5846 	 },
5847 	{
5848 	 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5849 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5850 	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5851 	 0x01cc,
5852 	 0x01cd,
5853 	 },
5854 	{
5855 	 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5856 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5857 	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5858 	 0x01cb,
5859 	 0x01cc,
5860 	 },
5861 	{
5862 	 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5863 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5864 	 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5865 	 0x01ca,
5866 	 0x01cb,
5867 	 },
5868 	{
5869 	 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5870 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5871 	 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5872 	 0x01ca,
5873 	 0x01cb,
5874 	 },
5875 	{
5876 	 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5877 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5878 	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5879 	 0x01c9,
5880 	 0x01ca,
5881 	 },
5882 	{
5883 	 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5884 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5885 	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5886 	 0x01c9,
5887 	 0x01ca,
5888 	 },
5889 	{
5890 	 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5891 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5892 	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5893 	 0x01c9,
5894 	 0x01c9,
5895 	 },
5896 	{
5897 	 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5898 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5899 	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5900 	 0x01c8,
5901 	 0x01c9,
5902 	 },
5903 	{
5904 	 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5905 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5906 	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5907 	 0x01c8,
5908 	 0x01c9,
5909 	 },
5910 	{
5911 	 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5912 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5913 	 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5914 	 0x01c8,
5915 	 0x01c8,
5916 	 },
5917 	{
5918 	 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5919 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5920 	 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5921 	 0x01c7,
5922 	 0x01c8,
5923 	 },
5924 	{
5925 	 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5926 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5927 	 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5928 	 0x01c7,
5929 	 0x01c8,
5930 	 },
5931 	{
5932 	 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5933 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5934 	 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5935 	 0x01c6,
5936 	 0x01c7,
5937 	 },
5938 	{
5939 	 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5940 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5941 	 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5942 	 0x01c6,
5943 	 0x01c7,
5944 	 },
5945 	{
5946 	 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5947 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5948 	 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5949 	 0x01c6,
5950 	 0x01c6,
5951 	 },
5952 	{
5953 	 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5954 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5955 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5956 	 0x01c5,
5957 	 0x01c6,
5958 	 },
5959 	{
5960 	 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5961 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5962 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5963 	 0x01c5,
5964 	 0x01c6,
5965 	 },
5966 	{
5967 	 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5968 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5969 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5970 	 0x01c4,
5971 	 0x01c5,
5972 	 },
5973 	{
5974 	 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5975 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5976 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5977 	 0x01c4,
5978 	 0x01c5,
5979 	 },
5980 	{
5981 	 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5982 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5983 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5984 	 0x01c4,
5985 	 0x01c4,
5986 	 },
5987 	{
5988 	 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5989 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5990 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5991 	 0x01c3,
5992 	 0x01c4,
5993 	 },
5994 	{
5995 	 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5996 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5997 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
5998 	 0x01c3,
5999 	 0x01c4,
6000 	 },
6001 	{
6002 	 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6003 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6004 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6005 	 0x01c2,
6006 	 0x01c3,
6007 	 },
6008 	{
6009 	 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6010 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6011 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6012 	 0x01c2,
6013 	 0x01c3,
6014 	 },
6015 	{
6016 	 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6017 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6018 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6019 	 0x01c2,
6020 	 0x01c2,
6021 	 },
6022 	{
6023 	 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6024 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6025 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6026 	 0x01c1,
6027 	 0x01c2,
6028 	 },
6029 	{
6030 	 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6031 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6032 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6033 	 0x01c0,
6034 	 0x01c1,
6035 	 },
6036 	{
6037 	 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6038 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6039 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6040 	 0x01bf,
6041 	 0x01c0,
6042 	 },
6043 	{
6044 	 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6045 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6046 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6047 	 0x01bf,
6048 	 0x01bf,
6049 	 },
6050 	{
6051 	 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6052 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6053 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6054 	 0x01be,
6055 	 0x01bf,
6056 	 },
6057 	{
6058 	 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6059 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6060 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6061 	 0x01bd,
6062 	 0x01be,
6063 	 },
6064 	{
6065 	 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6066 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6067 	 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6068 	 0x01bc,
6069 	 0x01bd,
6070 	 },
6071 	{
6072 	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6073 	 0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6074 	 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6075 	 0x043f,
6076 	 0x0443,
6077 	 },
6078 	{
6079 	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6080 	 0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6081 	 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6082 	 0x043d,
6083 	 0x0441,
6084 	 },
6085 	{
6086 	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6087 	 0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6088 	 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6089 	 0x043a,
6090 	 0x043f,
6091 	 },
6092 	{
6093 	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6094 	 0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6095 	 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6096 	 0x0438,
6097 	 0x043d,
6098 	 },
6099 	{
6100 	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6101 	 0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6102 	 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6103 	 0x0436,
6104 	 0x043a,
6105 	 },
6106 	{
6107 	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6108 	 0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6109 	 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6110 	 0x0434,
6111 	 0x0438,
6112 	 },
6113 	{
6114 	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6115 	 0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6116 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6117 	 0x0431,
6118 	 0x0436,
6119 	 },
6120 	{
6121 	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6122 	 0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6123 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6124 	 0x042f,
6125 	 0x0434,
6126 	 },
6127 	{
6128 	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6129 	 0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6130 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6131 	 0x042d,
6132 	 0x0431,
6133 	 },
6134 	{
6135 	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6136 	 0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6137 	 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6138 	 0x042b,
6139 	 0x042f,
6140 	 },
6141 	{
6142 	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6143 	 0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6144 	 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6145 	 0x0429,
6146 	 0x042d,
6147 	 },
6148 	{
6149 	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6150 	 0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6151 	 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6152 	 0x0427,
6153 	 0x042b,
6154 	 },
6155 	{
6156 	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6157 	 0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6158 	 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6159 	 0x0424,
6160 	 0x0429,
6161 	 },
6162 	{
6163 	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6164 	 0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6165 	 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6166 	 0x041f,
6167 	 0x0424}
6168 };
6169 
6170 static const struct chan_info_nphy_radio2057_rev5
6171 chan_info_nphyrev8_2057_rev5[] = {
6172 	{
6173 	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6174 	 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6175 	 0x043a, 0x043f, 0x0443},
6176 	{
6177 	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6178 	 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6179 	 0x0438, 0x043d, 0x0441},
6180 	{
6181 	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6182 	 0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6183 	 0x0436, 0x043a, 0x043f},
6184 	{
6185 	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6186 	 0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6187 	 0x0434, 0x0438, 0x043d},
6188 	{
6189 	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6190 	 0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6191 	 0x0431, 0x0436, 0x043a},
6192 	{
6193 	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6194 	 0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6195 	 0x042f, 0x0434, 0x0438},
6196 	{
6197 	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6198 	 0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6199 	 0x042d, 0x0431, 0x0436},
6200 	{
6201 	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6202 	 0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6203 	 0x042b, 0x042f, 0x0434},
6204 	{
6205 	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6206 	 0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6207 	 0x0429, 0x042d, 0x0431},
6208 	{
6209 	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6210 	 0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6211 	 0x0427, 0x042b, 0x042f},
6212 	{
6213 	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6214 	 0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6215 	 0x0424, 0x0429, 0x042d},
6216 	{
6217 	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6218 	 0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6219 	 0x0422, 0x0427, 0x042b},
6220 	{
6221 	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6222 	 0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6223 	 0x0420, 0x0424, 0x0429},
6224 	{
6225 	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6226 	 0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6227 	 0x041b, 0x041f, 0x0424}
6228 };
6229 
6230 static const struct chan_info_nphy_radio2057_rev5
6231 chan_info_nphyrev9_2057_rev5v1[] = {
6232 	{
6233 	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6234 	 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6235 	 0x043a, 0x043f, 0x0443},
6236 	{
6237 	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6238 	 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6239 	 0x0438, 0x043d, 0x0441},
6240 	{
6241 	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6242 	 0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6243 	 0x0436, 0x043a, 0x043f},
6244 	{
6245 	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6246 	 0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6247 	 0x0434, 0x0438, 0x043d},
6248 	{
6249 	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6250 	 0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6251 	 0x0431, 0x0436, 0x043a},
6252 	{
6253 	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6254 	 0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6255 	 0x042f, 0x0434, 0x0438},
6256 	{
6257 	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6258 	 0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6259 	 0x042d, 0x0431, 0x0436},
6260 	{
6261 	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6262 	 0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6263 	 0x042b, 0x042f, 0x0434},
6264 	{
6265 	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6266 	 0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6267 	 0x0429, 0x042d, 0x0431},
6268 	{
6269 	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6270 	 0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6271 	 0x0427, 0x042b, 0x042f},
6272 	{
6273 	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6274 	 0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6275 	 0x0424, 0x0429, 0x042d},
6276 	{
6277 	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6278 	 0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6279 	 0x0422, 0x0427, 0x042b},
6280 	{
6281 	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6282 	 0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6283 	 0x0420, 0x0424, 0x0429},
6284 	{
6285 	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6286 	 0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6287 	 0x041b, 0x041f, 0x0424}
6288 };
6289 
6290 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev7[] = {
6291 	{
6292 	 184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6293 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6294 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6295 	 0x0215,
6296 	 0x0216},
6297 	{
6298 	 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6299 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6300 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6301 	 0x0214,
6302 	 0x0215},
6303 	{
6304 	 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6305 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6306 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6307 	 0x0213,
6308 	 0x0214},
6309 	{
6310 	 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6311 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6312 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6313 	 0x0212,
6314 	 0x0213},
6315 	{
6316 	 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6317 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6318 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6319 	 0x0211,
6320 	 0x0212},
6321 	{
6322 	 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6323 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6324 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6325 	 0x020f,
6326 	 0x0211},
6327 	{
6328 	 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6329 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6330 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6331 	 0x020e,
6332 	 0x020f},
6333 	{
6334 	 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6335 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6336 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6337 	 0x020d,
6338 	 0x020e},
6339 	{
6340 	 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6341 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6342 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6343 	 0x020c,
6344 	 0x020d},
6345 	{
6346 	 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6347 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6348 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6349 	 0x020b,
6350 	 0x020c},
6351 	{
6352 	 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6353 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6354 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6355 	 0x020a,
6356 	 0x020b},
6357 	{
6358 	 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6359 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6360 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6361 	 0x0209,
6362 	 0x020a},
6363 	{
6364 	 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6365 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6366 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6367 	 0x0208,
6368 	 0x0209},
6369 	{
6370 	 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6371 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6372 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6373 	 0x0207,
6374 	 0x0208},
6375 	{
6376 	 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6377 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6378 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6379 	 0x0206,
6380 	 0x0207},
6381 	{
6382 	 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6383 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6384 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6385 	 0x0205,
6386 	 0x0206},
6387 	{
6388 	 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6389 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6390 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6391 	 0x0204,
6392 	 0x0205},
6393 	{
6394 	 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6395 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6396 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6397 	 0x0203,
6398 	 0x0204},
6399 	{
6400 	 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6401 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6402 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6403 	 0x0202,
6404 	 0x0203},
6405 	{
6406 	 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6407 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6408 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6409 	 0x0201,
6410 	 0x0202},
6411 	{
6412 	 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6413 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6414 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6415 	 0x0200,
6416 	 0x0201},
6417 	{
6418 	 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6419 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6420 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6421 	 0x01ff,
6422 	 0x0200},
6423 	{
6424 	 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6425 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6426 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6427 	 0x01fe,
6428 	 0x01ff},
6429 	{
6430 	 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6431 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6432 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6433 	 0x01fc,
6434 	 0x01fd},
6435 	{
6436 	 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6437 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6438 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6439 	 0x01fb,
6440 	 0x01fc},
6441 	{
6442 	 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6443 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6444 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6445 	 0x01fa,
6446 	 0x01fb},
6447 	{
6448 	 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6449 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6450 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6451 	 0x01f9,
6452 	 0x01fa},
6453 	{
6454 	 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6455 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6456 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6457 	 0x01f8,
6458 	 0x01f9},
6459 	{
6460 	 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6461 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6462 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6463 	 0x01f7,
6464 	 0x01f8},
6465 	{
6466 	 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6467 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6468 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6469 	 0x01f6,
6470 	 0x01f7},
6471 	{
6472 	 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6473 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6474 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6475 	 0x01f5,
6476 	 0x01f6},
6477 	{
6478 	 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6479 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6480 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6481 	 0x01f4,
6482 	 0x01f5},
6483 	{
6484 	 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6485 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6486 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6487 	 0x01f3,
6488 	 0x01f4},
6489 	{
6490 	 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6491 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6492 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6493 	 0x01f2,
6494 	 0x01f3},
6495 	{
6496 	 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6497 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6498 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6499 	 0x01f1,
6500 	 0x01f2},
6501 	{
6502 	 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6503 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6504 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6505 	 0x01f0,
6506 	 0x01f1},
6507 	{
6508 	 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6509 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6510 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6511 	 0x01f0,
6512 	 0x01f0},
6513 	{
6514 	 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6515 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6516 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6517 	 0x01ef,
6518 	 0x01f0},
6519 	{
6520 	 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6521 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6522 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6523 	 0x01ee,
6524 	 0x01ef},
6525 	{
6526 	 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6527 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6528 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6529 	 0x01ed,
6530 	 0x01ee},
6531 	{
6532 	 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6533 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6534 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6535 	 0x01ec,
6536 	 0x01ed},
6537 	{
6538 	 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6539 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6540 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6541 	 0x01eb,
6542 	 0x01ec},
6543 	{
6544 	 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6545 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6546 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6547 	 0x01ea,
6548 	 0x01eb},
6549 	{
6550 	 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6551 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6552 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6553 	 0x01e9,
6554 	 0x01ea},
6555 	{
6556 	 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6557 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6558 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6559 	 0x01e8,
6560 	 0x01e9},
6561 	{
6562 	 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6563 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6564 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6565 	 0x01e7,
6566 	 0x01e8},
6567 	{
6568 	 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6569 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6570 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6571 	 0x01e6,
6572 	 0x01e7},
6573 	{
6574 	 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6575 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6576 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6577 	 0x01e5,
6578 	 0x01e6},
6579 	{
6580 	 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6581 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6582 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6583 	 0x01e5,
6584 	 0x01e5},
6585 	{
6586 	 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6587 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6588 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6589 	 0x01e4,
6590 	 0x01e5},
6591 	{
6592 	 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6593 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6594 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6595 	 0x01e3,
6596 	 0x01e4},
6597 	{
6598 	 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6599 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6600 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6601 	 0x01e2,
6602 	 0x01e3},
6603 	{
6604 	 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6605 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6606 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6607 	 0x01e1,
6608 	 0x01e2},
6609 	{
6610 	 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6611 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6612 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6613 	 0x01e0,
6614 	 0x01e1},
6615 	{
6616 	 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6617 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6618 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6619 	 0x01df,
6620 	 0x01e0},
6621 	{
6622 	 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6623 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6624 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6625 	 0x01de,
6626 	 0x01df},
6627 	{
6628 	 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6629 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6630 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6631 	 0x01dd,
6632 	 0x01de},
6633 	{
6634 	 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6635 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6636 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6637 	 0x01dd,
6638 	 0x01dd},
6639 	{
6640 	 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6641 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6642 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6643 	 0x01dc,
6644 	 0x01dd},
6645 	{
6646 	 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6647 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6648 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6649 	 0x01db,
6650 	 0x01dc},
6651 	{
6652 	 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6653 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6654 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6655 	 0x01da,
6656 	 0x01db},
6657 	{
6658 	 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6659 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6660 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6661 	 0x01d9,
6662 	 0x01da},
6663 	{
6664 	 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6665 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6666 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6667 	 0x01d8,
6668 	 0x01d9},
6669 	{
6670 	 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6671 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6672 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6673 	 0x01d7,
6674 	 0x01d8},
6675 	{
6676 	 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6677 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6678 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6679 	 0x01d7,
6680 	 0x01d7},
6681 	{
6682 	 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6683 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6684 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6685 	 0x01d6,
6686 	 0x01d7},
6687 	{
6688 	 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6689 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6690 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6691 	 0x01d5,
6692 	 0x01d6},
6693 	{
6694 	 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6695 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6696 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6697 	 0x01d4,
6698 	 0x01d5},
6699 	{
6700 	 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6701 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6702 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6703 	 0x01d3,
6704 	 0x01d4},
6705 	{
6706 	 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6707 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6708 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6709 	 0x01d2,
6710 	 0x01d3},
6711 	{
6712 	 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6713 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6714 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6715 	 0x01d2,
6716 	 0x01d2},
6717 	{
6718 	 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6719 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6720 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6721 	 0x01d1,
6722 	 0x01d2},
6723 	{
6724 	 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6725 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6726 	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6727 	 0x01d0,
6728 	 0x01d1},
6729 	{
6730 	 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6731 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6732 	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6733 	 0x01cf,
6734 	 0x01d0},
6735 	{
6736 	 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6737 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6738 	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6739 	 0x01ce,
6740 	 0x01cf},
6741 	{
6742 	 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6743 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6744 	 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6745 	 0x01ce,
6746 	 0x01ce},
6747 	{
6748 	 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6749 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6750 	 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6751 	 0x01cd,
6752 	 0x01ce},
6753 	{
6754 	 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6755 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6756 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6757 	 0x01cc,
6758 	 0x01cd},
6759 	{
6760 	 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6761 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6762 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6763 	 0x01cb,
6764 	 0x01cc},
6765 	{
6766 	 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6767 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6768 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6769 	 0x01ca,
6770 	 0x01cb},
6771 	{
6772 	 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6773 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6774 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6775 	 0x01ca,
6776 	 0x01cb},
6777 	{
6778 	 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6779 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6780 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6781 	 0x01c9,
6782 	 0x01ca},
6783 	{
6784 	 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6785 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6786 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6787 	 0x01c9,
6788 	 0x01ca},
6789 	{
6790 	 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6791 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6792 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6793 	 0x01c9,
6794 	 0x01c9},
6795 	{
6796 	 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6797 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6798 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6799 	 0x01c8,
6800 	 0x01c9},
6801 	{
6802 	 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6803 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6804 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6805 	 0x01c8,
6806 	 0x01c9},
6807 	{
6808 	 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6809 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6810 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6811 	 0x01c8,
6812 	 0x01c8},
6813 	{
6814 	 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6815 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6816 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6817 	 0x01c7,
6818 	 0x01c8},
6819 	{
6820 	 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6821 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6822 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6823 	 0x01c7,
6824 	 0x01c8},
6825 	{
6826 	 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6827 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6828 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6829 	 0x01c6,
6830 	 0x01c7},
6831 	{
6832 	 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6833 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6834 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6835 	 0x01c6,
6836 	 0x01c7},
6837 	{
6838 	 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6839 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6840 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6841 	 0x01c6,
6842 	 0x01c6},
6843 	{
6844 	 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6845 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6846 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6847 	 0x01c5,
6848 	 0x01c6},
6849 	{
6850 	 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6851 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6852 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6853 	 0x01c5,
6854 	 0x01c6},
6855 	{
6856 	 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6857 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6858 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6859 	 0x01c4,
6860 	 0x01c5},
6861 	{
6862 	 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6863 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6864 	 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6865 	 0x01c4,
6866 	 0x01c5},
6867 	{
6868 	 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6869 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6870 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6871 	 0x01c4,
6872 	 0x01c4},
6873 	{
6874 	 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6875 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6876 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6877 	 0x01c3,
6878 	 0x01c4},
6879 	{
6880 	 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6881 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6882 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6883 	 0x01c3,
6884 	 0x01c4},
6885 	{
6886 	 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6887 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6888 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6889 	 0x01c2,
6890 	 0x01c3},
6891 	{
6892 	 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6893 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6894 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6895 	 0x01c2,
6896 	 0x01c3},
6897 	{
6898 	 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6899 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6900 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6901 	 0x01c2,
6902 	 0x01c2},
6903 	{
6904 	 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6905 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6906 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6907 	 0x01c1,
6908 	 0x01c2},
6909 	{
6910 	 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6911 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6912 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6913 	 0x01c0,
6914 	 0x01c1},
6915 	{
6916 	 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6917 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6918 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6919 	 0x01bf,
6920 	 0x01c0},
6921 	{
6922 	 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6923 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6924 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6925 	 0x01bf,
6926 	 0x01bf},
6927 	{
6928 	 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6929 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6930 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6931 	 0x01be,
6932 	 0x01bf},
6933 	{
6934 	 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6935 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6936 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6937 	 0x01bd,
6938 	 0x01be},
6939 	{
6940 	 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6941 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6942 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6943 	 0x01bc,
6944 	 0x01bd},
6945 	{
6946 	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6947 	 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6948 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6949 	 0x043f,
6950 	 0x0443},
6951 	{
6952 	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6953 	 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6954 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6955 	 0x043d,
6956 	 0x0441},
6957 	{
6958 	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6959 	 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6960 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6961 	 0x043a,
6962 	 0x043f},
6963 	{
6964 	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6965 	 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6966 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6967 	 0x0438,
6968 	 0x043d},
6969 	{
6970 	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6971 	 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6972 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6973 	 0x0436,
6974 	 0x043a},
6975 	{
6976 	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6977 	 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6978 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6979 	 0x0434,
6980 	 0x0438},
6981 	{
6982 	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6983 	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6984 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6985 	 0x0431,
6986 	 0x0436},
6987 	{
6988 	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6989 	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6990 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6991 	 0x042f,
6992 	 0x0434},
6993 	{
6994 	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6995 	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6996 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6997 	 0x042d,
6998 	 0x0431},
6999 	{
7000 	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7001 	 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7002 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7003 	 0x042b,
7004 	 0x042f},
7005 	{
7006 	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7007 	 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7008 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7009 	 0x0429,
7010 	 0x042d},
7011 	{
7012 	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7013 	 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7014 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7015 	 0x0427,
7016 	 0x042b},
7017 	{
7018 	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7019 	 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7020 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7021 	 0x0424,
7022 	 0x0429},
7023 	{
7024 	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7025 	 0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7026 	 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7027 	 0x041f,
7028 	 0x0424}
7029 };
7030 
7031 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev8[] = {
7032 	{
7033 	 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7034 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7035 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7036 	 0x0214,
7037 	 0x0215},
7038 	{
7039 	 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7040 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7041 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7042 	 0x0213,
7043 	 0x0214},
7044 	{
7045 	 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7046 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7047 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7048 	 0x0212,
7049 	 0x0213},
7050 	{
7051 	 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7052 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7053 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7054 	 0x0211,
7055 	 0x0212},
7056 	{
7057 	 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7058 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7059 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7060 	 0x020f,
7061 	 0x0211},
7062 	{
7063 	 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7064 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7065 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7066 	 0x020e,
7067 	 0x020f},
7068 	{
7069 	 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7070 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7071 	 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7072 	 0x020d,
7073 	 0x020e},
7074 	{
7075 	 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7076 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7077 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7078 	 0x020c,
7079 	 0x020d},
7080 	{
7081 	 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7082 	 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7083 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7084 	 0x020b,
7085 	 0x020c},
7086 	{
7087 	 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7088 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7089 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7090 	 0x020a,
7091 	 0x020b},
7092 	{
7093 	 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7094 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7095 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7096 	 0x0209,
7097 	 0x020a},
7098 	{
7099 	 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7100 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7101 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7102 	 0x0208,
7103 	 0x0209},
7104 	{
7105 	 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7106 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7107 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7108 	 0x0207,
7109 	 0x0208},
7110 	{
7111 	 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7112 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7113 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7114 	 0x0206,
7115 	 0x0207},
7116 	{
7117 	 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7118 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7119 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7120 	 0x0205,
7121 	 0x0206},
7122 	{
7123 	 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7124 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7125 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7126 	 0x0204,
7127 	 0x0205},
7128 	{
7129 	 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7130 	 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7131 	 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7132 	 0x0203,
7133 	 0x0204},
7134 	{
7135 	 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7136 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7137 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7138 	 0x0202,
7139 	 0x0203},
7140 	{
7141 	 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7142 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7143 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7144 	 0x0201,
7145 	 0x0202},
7146 	{
7147 	 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7148 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7149 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7150 	 0x0200,
7151 	 0x0201},
7152 	{
7153 	 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7154 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7155 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7156 	 0x01ff,
7157 	 0x0200},
7158 	{
7159 	 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7160 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7161 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7162 	 0x01fe,
7163 	 0x01ff},
7164 	{
7165 	 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7166 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7167 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7168 	 0x01fc,
7169 	 0x01fd},
7170 	{
7171 	 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7172 	 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7173 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7174 	 0x01fb,
7175 	 0x01fc},
7176 	{
7177 	 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7178 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7179 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7180 	 0x01fa,
7181 	 0x01fb},
7182 	{
7183 	 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7184 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7185 	 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7186 	 0x01f9,
7187 	 0x01fa},
7188 	{
7189 	 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7190 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7191 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7192 	 0x01f8,
7193 	 0x01f9},
7194 	{
7195 	 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7196 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7197 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7198 	 0x01f7,
7199 	 0x01f8},
7200 	{
7201 	 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7202 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7203 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7204 	 0x01f6,
7205 	 0x01f7},
7206 	{
7207 	 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7208 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7209 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7210 	 0x01f5,
7211 	 0x01f6},
7212 	{
7213 	 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7214 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7215 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7216 	 0x01f4,
7217 	 0x01f5},
7218 	{
7219 	 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7220 	 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7221 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7222 	 0x01f3,
7223 	 0x01f4},
7224 	{
7225 	 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7226 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7227 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7228 	 0x01f2,
7229 	 0x01f3},
7230 	{
7231 	 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7232 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7233 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7234 	 0x01f1,
7235 	 0x01f2},
7236 	{
7237 	 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7238 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7239 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7240 	 0x01f0,
7241 	 0x01f1},
7242 	{
7243 	 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7244 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7245 	 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7246 	 0x01f0,
7247 	 0x01f0},
7248 	{
7249 	 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7250 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7251 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7252 	 0x01ef,
7253 	 0x01f0},
7254 	{
7255 	 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7256 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7257 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7258 	 0x01ee,
7259 	 0x01ef},
7260 	{
7261 	 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7262 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7263 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7264 	 0x01ed,
7265 	 0x01ee},
7266 	{
7267 	 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7268 	 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7269 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7270 	 0x01ec,
7271 	 0x01ed},
7272 	{
7273 	 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7274 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7275 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7276 	 0x01eb,
7277 	 0x01ec},
7278 	{
7279 	 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7280 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7281 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7282 	 0x01ea,
7283 	 0x01eb},
7284 	{
7285 	 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7286 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7287 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7288 	 0x01e9,
7289 	 0x01ea},
7290 	{
7291 	 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7292 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7293 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7294 	 0x01e8,
7295 	 0x01e9},
7296 	{
7297 	 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7298 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7299 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7300 	 0x01e7,
7301 	 0x01e8},
7302 	{
7303 	 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7304 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7305 	 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7306 	 0x01e6,
7307 	 0x01e7},
7308 	{
7309 	 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7310 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7311 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7312 	 0x01e5,
7313 	 0x01e6},
7314 	{
7315 	 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7316 	 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7317 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7318 	 0x01e5,
7319 	 0x01e5},
7320 	{
7321 	 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7322 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7323 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7324 	 0x01e4,
7325 	 0x01e5},
7326 	{
7327 	 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7328 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7329 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7330 	 0x01e3,
7331 	 0x01e4},
7332 	{
7333 	 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7334 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7335 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7336 	 0x01e2,
7337 	 0x01e3},
7338 	{
7339 	 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7340 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7341 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7342 	 0x01e1,
7343 	 0x01e2},
7344 	{
7345 	 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7346 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7347 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7348 	 0x01e0,
7349 	 0x01e1},
7350 	{
7351 	 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7352 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7353 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7354 	 0x01df,
7355 	 0x01e0},
7356 	{
7357 	 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7358 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7359 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7360 	 0x01de,
7361 	 0x01df},
7362 	{
7363 	 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7364 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7365 	 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7366 	 0x01dd,
7367 	 0x01de},
7368 	{
7369 	 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7370 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7371 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7372 	 0x01dd,
7373 	 0x01dd},
7374 	{
7375 	 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7376 	 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7377 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7378 	 0x01dc,
7379 	 0x01dd},
7380 	{
7381 	 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7382 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7383 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7384 	 0x01db,
7385 	 0x01dc},
7386 	{
7387 	 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7388 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7389 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7390 	 0x01da,
7391 	 0x01db},
7392 	{
7393 	 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7394 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7395 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7396 	 0x01d9,
7397 	 0x01da},
7398 	{
7399 	 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7400 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7401 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7402 	 0x01d8,
7403 	 0x01d9},
7404 	{
7405 	 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7406 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7407 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7408 	 0x01d7,
7409 	 0x01d8},
7410 	{
7411 	 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7412 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7413 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7414 	 0x01d7,
7415 	 0x01d7},
7416 	{
7417 	 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7418 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7419 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7420 	 0x01d6,
7421 	 0x01d7},
7422 	{
7423 	 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7424 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7425 	 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7426 	 0x01d5,
7427 	 0x01d6},
7428 	{
7429 	 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7430 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7431 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7432 	 0x01d4,
7433 	 0x01d5},
7434 	{
7435 	 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7436 	 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7437 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7438 	 0x01d3,
7439 	 0x01d4},
7440 	{
7441 	 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7442 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7443 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7444 	 0x01d2,
7445 	 0x01d3},
7446 	{
7447 	 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7448 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7449 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7450 	 0x01d2,
7451 	 0x01d2},
7452 	{
7453 	 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7454 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7455 	 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7456 	 0x01d1,
7457 	 0x01d2},
7458 	{
7459 	 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7460 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7461 	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7462 	 0x01d0,
7463 	 0x01d1},
7464 	{
7465 	 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7466 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7467 	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7468 	 0x01cf,
7469 	 0x01d0},
7470 	{
7471 	 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7472 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7473 	 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7474 	 0x01ce,
7475 	 0x01cf},
7476 	{
7477 	 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7478 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7479 	 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7480 	 0x01ce,
7481 	 0x01ce},
7482 	{
7483 	 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7484 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7485 	 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7486 	 0x01cd,
7487 	 0x01ce},
7488 	{
7489 	 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7490 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7491 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7492 	 0x01cc,
7493 	 0x01cd},
7494 	{
7495 	 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7496 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7497 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7498 	 0x01cb,
7499 	 0x01cc},
7500 	{
7501 	 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7502 	 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7503 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7504 	 0x01ca,
7505 	 0x01cb},
7506 	{
7507 	 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7508 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7509 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7510 	 0x01ca,
7511 	 0x01cb},
7512 	{
7513 	 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7514 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7515 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7516 	 0x01c9,
7517 	 0x01ca},
7518 	{
7519 	 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7520 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7521 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7522 	 0x01c9,
7523 	 0x01ca},
7524 	{
7525 	 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7526 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7527 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7528 	 0x01c9,
7529 	 0x01c9},
7530 	{
7531 	 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7532 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7533 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7534 	 0x01c8,
7535 	 0x01c9},
7536 	{
7537 	 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7538 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7539 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7540 	 0x01c8,
7541 	 0x01c9},
7542 	{
7543 	 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7544 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7545 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7546 	 0x01c8,
7547 	 0x01c8},
7548 	{
7549 	 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7550 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7551 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7552 	 0x01c7,
7553 	 0x01c8},
7554 	{
7555 	 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7556 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7557 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7558 	 0x01c7,
7559 	 0x01c8},
7560 	{
7561 	 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7562 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7563 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7564 	 0x01c6,
7565 	 0x01c7},
7566 	{
7567 	 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7568 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7569 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7570 	 0x01c6,
7571 	 0x01c7},
7572 	{
7573 	 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7574 	 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7575 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7576 	 0x01c6,
7577 	 0x01c6},
7578 	{
7579 	 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7580 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7581 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7582 	 0x01c5,
7583 	 0x01c6},
7584 	{
7585 	 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7586 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7587 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7588 	 0x01c5,
7589 	 0x01c6},
7590 	{
7591 	 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7592 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7593 	 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7594 	 0x01c4,
7595 	 0x01c5},
7596 	{
7597 	 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7598 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7599 	 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7600 	 0x01c4,
7601 	 0x01c5},
7602 	{
7603 	 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7604 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7605 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7606 	 0x01c4,
7607 	 0x01c4},
7608 	{
7609 	 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7610 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7611 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7612 	 0x01c3,
7613 	 0x01c4},
7614 	{
7615 	 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7616 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7617 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7618 	 0x01c3,
7619 	 0x01c4},
7620 	{
7621 	 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7622 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7623 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7624 	 0x01c2,
7625 	 0x01c3},
7626 	{
7627 	 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7628 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7629 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7630 	 0x01c2,
7631 	 0x01c3},
7632 	{
7633 	 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7634 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7635 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7636 	 0x01c2,
7637 	 0x01c2},
7638 	{
7639 	 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7640 	 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7641 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7642 	 0x01c1,
7643 	 0x01c2},
7644 	{
7645 	 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7646 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7647 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7648 	 0x01c0,
7649 	 0x01c1},
7650 	{
7651 	 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7652 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7653 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7654 	 0x01bf,
7655 	 0x01c0},
7656 	{
7657 	 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7658 	 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7659 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7660 	 0x01bf,
7661 	 0x01bf},
7662 	{
7663 	 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7664 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7665 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7666 	 0x01be,
7667 	 0x01bf},
7668 	{
7669 	 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7670 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7671 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7672 	 0x01bd,
7673 	 0x01be},
7674 	{
7675 	 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7676 	 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7677 	 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7678 	 0x01bc,
7679 	 0x01bd},
7680 	{
7681 	 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7682 	 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7683 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7684 	 0x043f,
7685 	 0x0443},
7686 	{
7687 	 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7688 	 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7689 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7690 	 0x043d,
7691 	 0x0441},
7692 	{
7693 	 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7694 	 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7695 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7696 	 0x043a,
7697 	 0x043f},
7698 	{
7699 	 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7700 	 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7701 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7702 	 0x0438,
7703 	 0x043d},
7704 	{
7705 	 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7706 	 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7707 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7708 	 0x0436,
7709 	 0x043a},
7710 	{
7711 	 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7712 	 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7713 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7714 	 0x0434,
7715 	 0x0438},
7716 	{
7717 	 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7718 	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7719 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7720 	 0x0431,
7721 	 0x0436},
7722 	{
7723 	 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7724 	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7725 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7726 	 0x042f,
7727 	 0x0434},
7728 	{
7729 	 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7730 	 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7731 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7732 	 0x042d,
7733 	 0x0431},
7734 	{
7735 	 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7736 	 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7737 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7738 	 0x042b,
7739 	 0x042f},
7740 	{
7741 	 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7742 	 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7743 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7744 	 0x0429,
7745 	 0x042d},
7746 	{
7747 	 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7748 	 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7749 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7750 	 0x0427,
7751 	 0x042b},
7752 	{
7753 	 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7754 	 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7755 	 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7756 	 0x0424,
7757 	 0x0429},
7758 	{
7759 	 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7760 	 0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7761 	 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7762 	 0x041f,
7763 	 0x0424}
7764 };
7765 
7766 static struct radio_regs regs_2055[] = {
7767 	{0x02, 0x80, 0x80, 0, 0},
7768 	{0x03, 0, 0, 0, 0},
7769 	{0x04, 0x27, 0x27, 0, 0},
7770 	{0x05, 0, 0, 0, 0},
7771 	{0x06, 0x27, 0x27, 0, 0},
7772 	{0x07, 0x7f, 0x7f, 1, 1},
7773 	{0x08, 0x7, 0x7, 1, 1},
7774 	{0x09, 0x7f, 0x7f, 1, 1},
7775 	{0x0A, 0x7, 0x7, 1, 1},
7776 	{0x0B, 0x15, 0x15, 0, 0},
7777 	{0x0C, 0x15, 0x15, 0, 0},
7778 	{0x0D, 0x4f, 0x4f, 1, 1},
7779 	{0x0E, 0x5, 0x5, 1, 1},
7780 	{0x0F, 0x4f, 0x4f, 1, 1},
7781 	{0x10, 0x5, 0x5, 1, 1},
7782 	{0x11, 0xd0, 0xd0, 0, 0},
7783 	{0x12, 0x2, 0x2, 0, 0},
7784 	{0x13, 0, 0, 0, 0},
7785 	{0x14, 0x40, 0x40, 0, 0},
7786 	{0x15, 0, 0, 0, 0},
7787 	{0x16, 0, 0, 0, 0},
7788 	{0x17, 0, 0, 0, 0},
7789 	{0x18, 0, 0, 0, 0},
7790 	{0x19, 0, 0, 0, 0},
7791 	{0x1A, 0, 0, 0, 0},
7792 	{0x1B, 0, 0, 0, 0},
7793 	{0x1C, 0, 0, 0, 0},
7794 	{0x1D, 0xc0, 0xc0, 0, 0},
7795 	{0x1E, 0xff, 0xff, 0, 0},
7796 	{0x1F, 0xc0, 0xc0, 0, 0},
7797 	{0x20, 0xff, 0xff, 0, 0},
7798 	{0x21, 0xc0, 0xc0, 0, 0},
7799 	{0x22, 0, 0, 0, 0},
7800 	{0x23, 0x2c, 0x2c, 0, 0},
7801 	{0x24, 0, 0, 0, 0},
7802 	{0x25, 0, 0, 0, 0},
7803 	{0x26, 0, 0, 0, 0},
7804 	{0x27, 0, 0, 0, 0},
7805 	{0x28, 0, 0, 0, 0},
7806 	{0x29, 0, 0, 0, 0},
7807 	{0x2A, 0, 0, 0, 0},
7808 	{0x2B, 0, 0, 0, 0},
7809 	{0x2C, 0, 0, 0, 0},
7810 	{0x2D, 0xa4, 0xa4, 0, 0},
7811 	{0x2E, 0x38, 0x38, 0, 0},
7812 	{0x2F, 0, 0, 0, 0},
7813 	{0x30, 0x4, 0x4, 1, 1},
7814 	{0x31, 0, 0, 0, 0},
7815 	{0x32, 0xa, 0xa, 0, 0},
7816 	{0x33, 0x87, 0x87, 0, 0},
7817 	{0x34, 0x9, 0x9, 0, 0},
7818 	{0x35, 0x70, 0x70, 0, 0},
7819 	{0x36, 0x11, 0x11, 0, 0},
7820 	{0x37, 0x18, 0x18, 1, 1},
7821 	{0x38, 0x6, 0x6, 0, 0},
7822 	{0x39, 0x4, 0x4, 1, 1},
7823 	{0x3A, 0x6, 0x6, 0, 0},
7824 	{0x3B, 0x9e, 0x9e, 0, 0},
7825 	{0x3C, 0x9, 0x9, 0, 0},
7826 	{0x3D, 0xc8, 0xc8, 1, 1},
7827 	{0x3E, 0x88, 0x88, 0, 0},
7828 	{0x3F, 0, 0, 0, 0},
7829 	{0x40, 0, 0, 0, 0},
7830 	{0x41, 0, 0, 0, 0},
7831 	{0x42, 0x1, 0x1, 0, 0},
7832 	{0x43, 0x2, 0x2, 0, 0},
7833 	{0x44, 0x96, 0x96, 0, 0},
7834 	{0x45, 0x3e, 0x3e, 0, 0},
7835 	{0x46, 0x3e, 0x3e, 0, 0},
7836 	{0x47, 0x13, 0x13, 0, 0},
7837 	{0x48, 0x2, 0x2, 0, 0},
7838 	{0x49, 0x15, 0x15, 0, 0},
7839 	{0x4A, 0x7, 0x7, 0, 0},
7840 	{0x4B, 0, 0, 0, 0},
7841 	{0x4C, 0, 0, 0, 0},
7842 	{0x4D, 0, 0, 0, 0},
7843 	{0x4E, 0, 0, 0, 0},
7844 	{0x4F, 0, 0, 0, 0},
7845 	{0x50, 0x8, 0x8, 0, 0},
7846 	{0x51, 0x8, 0x8, 0, 0},
7847 	{0x52, 0x6, 0x6, 0, 0},
7848 	{0x53, 0x84, 0x84, 1, 1},
7849 	{0x54, 0xc3, 0xc3, 0, 0},
7850 	{0x55, 0x8f, 0x8f, 0, 0},
7851 	{0x56, 0xff, 0xff, 0, 0},
7852 	{0x57, 0xff, 0xff, 0, 0},
7853 	{0x58, 0x88, 0x88, 0, 0},
7854 	{0x59, 0x88, 0x88, 0, 0},
7855 	{0x5A, 0, 0, 0, 0},
7856 	{0x5B, 0xcc, 0xcc, 0, 0},
7857 	{0x5C, 0x6, 0x6, 0, 0},
7858 	{0x5D, 0x80, 0x80, 0, 0},
7859 	{0x5E, 0x80, 0x80, 0, 0},
7860 	{0x5F, 0xf8, 0xf8, 0, 0},
7861 	{0x60, 0x88, 0x88, 0, 0},
7862 	{0x61, 0x88, 0x88, 0, 0},
7863 	{0x62, 0x88, 0x8, 1, 1},
7864 	{0x63, 0x88, 0x88, 0, 0},
7865 	{0x64, 0, 0, 0, 0},
7866 	{0x65, 0x1, 0x1, 1, 1},
7867 	{0x66, 0x8a, 0x8a, 0, 0},
7868 	{0x67, 0x8, 0x8, 0, 0},
7869 	{0x68, 0x83, 0x83, 0, 0},
7870 	{0x69, 0x6, 0x6, 0, 0},
7871 	{0x6A, 0xa0, 0xa0, 0, 0},
7872 	{0x6B, 0xa, 0xa, 0, 0},
7873 	{0x6C, 0x87, 0x87, 1, 1},
7874 	{0x6D, 0x2a, 0x2a, 0, 0},
7875 	{0x6E, 0x2a, 0x2a, 0, 0},
7876 	{0x6F, 0x2a, 0x2a, 0, 0},
7877 	{0x70, 0x2a, 0x2a, 0, 0},
7878 	{0x71, 0x18, 0x18, 0, 0},
7879 	{0x72, 0x6a, 0x6a, 1, 1},
7880 	{0x73, 0xab, 0xab, 1, 1},
7881 	{0x74, 0x13, 0x13, 1, 1},
7882 	{0x75, 0xc1, 0xc1, 1, 1},
7883 	{0x76, 0xaa, 0xaa, 1, 1},
7884 	{0x77, 0x87, 0x87, 1, 1},
7885 	{0x78, 0, 0, 0, 0},
7886 	{0x79, 0x6, 0x6, 0, 0},
7887 	{0x7A, 0x7, 0x7, 0, 0},
7888 	{0x7B, 0x7, 0x7, 0, 0},
7889 	{0x7C, 0x15, 0x15, 0, 0},
7890 	{0x7D, 0x55, 0x55, 0, 0},
7891 	{0x7E, 0x97, 0x97, 1, 1},
7892 	{0x7F, 0x8, 0x8, 0, 0},
7893 	{0x80, 0x14, 0x14, 1, 1},
7894 	{0x81, 0x33, 0x33, 0, 0},
7895 	{0x82, 0x88, 0x88, 0, 0},
7896 	{0x83, 0x6, 0x6, 0, 0},
7897 	{0x84, 0x3, 0x3, 1, 1},
7898 	{0x85, 0xa, 0xa, 0, 0},
7899 	{0x86, 0x3, 0x3, 1, 1},
7900 	{0x87, 0x2a, 0x2a, 0, 0},
7901 	{0x88, 0xa4, 0xa4, 0, 0},
7902 	{0x89, 0x18, 0x18, 0, 0},
7903 	{0x8A, 0x28, 0x28, 0, 0},
7904 	{0x8B, 0, 0, 0, 0},
7905 	{0x8C, 0x4a, 0x4a, 0, 0},
7906 	{0x8D, 0, 0, 0, 0},
7907 	{0x8E, 0xf8, 0xf8, 0, 0},
7908 	{0x8F, 0x88, 0x88, 0, 0},
7909 	{0x90, 0x88, 0x88, 0, 0},
7910 	{0x91, 0x88, 0x8, 1, 1},
7911 	{0x92, 0x88, 0x88, 0, 0},
7912 	{0x93, 0, 0, 0, 0},
7913 	{0x94, 0x1, 0x1, 1, 1},
7914 	{0x95, 0x8a, 0x8a, 0, 0},
7915 	{0x96, 0x8, 0x8, 0, 0},
7916 	{0x97, 0x83, 0x83, 0, 0},
7917 	{0x98, 0x6, 0x6, 0, 0},
7918 	{0x99, 0xa0, 0xa0, 0, 0},
7919 	{0x9A, 0xa, 0xa, 0, 0},
7920 	{0x9B, 0x87, 0x87, 1, 1},
7921 	{0x9C, 0x2a, 0x2a, 0, 0},
7922 	{0x9D, 0x2a, 0x2a, 0, 0},
7923 	{0x9E, 0x2a, 0x2a, 0, 0},
7924 	{0x9F, 0x2a, 0x2a, 0, 0},
7925 	{0xA0, 0x18, 0x18, 0, 0},
7926 	{0xA1, 0x6a, 0x6a, 1, 1},
7927 	{0xA2, 0xab, 0xab, 1, 1},
7928 	{0xA3, 0x13, 0x13, 1, 1},
7929 	{0xA4, 0xc1, 0xc1, 1, 1},
7930 	{0xA5, 0xaa, 0xaa, 1, 1},
7931 	{0xA6, 0x87, 0x87, 1, 1},
7932 	{0xA7, 0, 0, 0, 0},
7933 	{0xA8, 0x6, 0x6, 0, 0},
7934 	{0xA9, 0x7, 0x7, 0, 0},
7935 	{0xAA, 0x7, 0x7, 0, 0},
7936 	{0xAB, 0x15, 0x15, 0, 0},
7937 	{0xAC, 0x55, 0x55, 0, 0},
7938 	{0xAD, 0x97, 0x97, 1, 1},
7939 	{0xAE, 0x8, 0x8, 0, 0},
7940 	{0xAF, 0x14, 0x14, 1, 1},
7941 	{0xB0, 0x33, 0x33, 0, 0},
7942 	{0xB1, 0x88, 0x88, 0, 0},
7943 	{0xB2, 0x6, 0x6, 0, 0},
7944 	{0xB3, 0x3, 0x3, 1, 1},
7945 	{0xB4, 0xa, 0xa, 0, 0},
7946 	{0xB5, 0x3, 0x3, 1, 1},
7947 	{0xB6, 0x2a, 0x2a, 0, 0},
7948 	{0xB7, 0xa4, 0xa4, 0, 0},
7949 	{0xB8, 0x18, 0x18, 0, 0},
7950 	{0xB9, 0x28, 0x28, 0, 0},
7951 	{0xBA, 0, 0, 0, 0},
7952 	{0xBB, 0x4a, 0x4a, 0, 0},
7953 	{0xBC, 0, 0, 0, 0},
7954 	{0xBD, 0x71, 0x71, 0, 0},
7955 	{0xBE, 0x72, 0x72, 0, 0},
7956 	{0xBF, 0x73, 0x73, 0, 0},
7957 	{0xC0, 0x74, 0x74, 0, 0},
7958 	{0xC1, 0x75, 0x75, 0, 0},
7959 	{0xC2, 0x76, 0x76, 0, 0},
7960 	{0xC3, 0x77, 0x77, 0, 0},
7961 	{0xC4, 0x78, 0x78, 0, 0},
7962 	{0xC5, 0x79, 0x79, 0, 0},
7963 	{0xC6, 0x7a, 0x7a, 0, 0},
7964 	{0xC7, 0, 0, 0, 0},
7965 	{0xC8, 0, 0, 0, 0},
7966 	{0xC9, 0, 0, 0, 0},
7967 	{0xCA, 0, 0, 0, 0},
7968 	{0xCB, 0, 0, 0, 0},
7969 	{0xCC, 0, 0, 0, 0},
7970 	{0xCD, 0, 0, 0, 0},
7971 	{0xCE, 0x6, 0x6, 0, 0},
7972 	{0xCF, 0, 0, 0, 0},
7973 	{0xD0, 0, 0, 0, 0},
7974 	{0xD1, 0x18, 0x18, 0, 0},
7975 	{0xD2, 0x88, 0x88, 0, 0},
7976 	{0xD3, 0, 0, 0, 0},
7977 	{0xD4, 0, 0, 0, 0},
7978 	{0xD5, 0, 0, 0, 0},
7979 	{0xD6, 0, 0, 0, 0},
7980 	{0xD7, 0, 0, 0, 0},
7981 	{0xD8, 0, 0, 0, 0},
7982 	{0xD9, 0, 0, 0, 0},
7983 	{0xDA, 0x6, 0x6, 0, 0},
7984 	{0xDB, 0, 0, 0, 0},
7985 	{0xDC, 0, 0, 0, 0},
7986 	{0xDD, 0x18, 0x18, 0, 0},
7987 	{0xDE, 0x88, 0x88, 0, 0},
7988 	{0xDF, 0, 0, 0, 0},
7989 	{0xE0, 0, 0, 0, 0},
7990 	{0xE1, 0, 0, 0, 0},
7991 	{0xE2, 0, 0, 0, 0},
7992 	{0xFFFF, 0, 0, 0, 0},
7993 };
7994 
7995 static struct radio_regs regs_SYN_2056[] = {
7996 	{0x02, 0, 0, 0, 0},
7997 	{0x03, 0, 0, 0, 0},
7998 	{0x04, 0, 0, 0, 0},
7999 	{0x05, 0, 0, 0, 0},
8000 	{0x06, 0, 0, 0, 0},
8001 	{0x07, 0, 0, 0, 0},
8002 	{0x08, 0, 0, 0, 0},
8003 	{0x09, 0x1, 0x1, 0, 0},
8004 	{0x0A, 0, 0, 0, 0},
8005 	{0x0B, 0, 0, 0, 0},
8006 	{0x0C, 0, 0, 0, 0},
8007 	{0x0D, 0, 0, 0, 0},
8008 	{0x0E, 0, 0, 0, 0},
8009 	{0x0F, 0, 0, 0, 0},
8010 	{0x10, 0, 0, 0, 0},
8011 	{0x11, 0, 0, 0, 0},
8012 	{0x12, 0, 0, 0, 0},
8013 	{0x13, 0, 0, 0, 0},
8014 	{0x14, 0, 0, 0, 0},
8015 	{0x15, 0, 0, 0, 0},
8016 	{0x16, 0, 0, 0, 0},
8017 	{0x17, 0, 0, 0, 0},
8018 	{0x18, 0, 0, 0, 0},
8019 	{0x19, 0, 0, 0, 0},
8020 	{0x1A, 0, 0, 0, 0},
8021 	{0x1B, 0, 0, 0, 0},
8022 	{0x1C, 0, 0, 0, 0},
8023 	{0x1D, 0, 0, 0, 0},
8024 	{0x1E, 0, 0, 0, 0},
8025 	{0x1F, 0, 0, 0, 0},
8026 	{0x20, 0, 0, 0, 0},
8027 	{0x21, 0, 0, 0, 0},
8028 	{0x22, 0x60, 0x60, 0, 0},
8029 	{0x23, 0x6, 0x6, 0, 0},
8030 	{0x24, 0xc, 0xc, 0, 0},
8031 	{0x25, 0, 0, 0, 0},
8032 	{0x26, 0, 0, 0, 0},
8033 	{0x27, 0, 0, 0, 0},
8034 	{0x28, 0x1, 0x1, 0, 0},
8035 	{0x29, 0, 0, 0, 0},
8036 	{0x2A, 0, 0, 0, 0},
8037 	{0x2B, 0, 0, 0, 0},
8038 	{0x2C, 0, 0, 0, 0},
8039 	{0x2D, 0, 0, 0, 0},
8040 	{0x2E, 0xd, 0xd, 0, 0},
8041 	{0x2F, 0x1f, 0x1f, 0, 0},
8042 	{0x30, 0x15, 0x15, 0, 0},
8043 	{0x31, 0xf, 0xf, 0, 0},
8044 	{0x32, 0, 0, 0, 0},
8045 	{0x33, 0, 0, 0, 0},
8046 	{0x34, 0, 0, 0, 0},
8047 	{0x35, 0, 0, 0, 0},
8048 	{0x36, 0, 0, 0, 0},
8049 	{0x37, 0, 0, 0, 0},
8050 	{0x38, 0, 0, 0, 0},
8051 	{0x39, 0, 0, 0, 0},
8052 	{0x3A, 0, 0, 0, 0},
8053 	{0x3B, 0, 0, 0, 0},
8054 	{0x3C, 0x13, 0x13, 0, 0},
8055 	{0x3D, 0xf, 0xf, 0, 0},
8056 	{0x3E, 0x18, 0x18, 0, 0},
8057 	{0x3F, 0, 0, 0, 0},
8058 	{0x40, 0, 0, 0, 0},
8059 	{0x41, 0x20, 0x20, 0, 0},
8060 	{0x42, 0x20, 0x20, 0, 0},
8061 	{0x43, 0, 0, 0, 0},
8062 	{0x44, 0x77, 0x77, 0, 0},
8063 	{0x45, 0x7, 0x7, 0, 0},
8064 	{0x46, 0x1, 0x1, 0, 0},
8065 	{0x47, 0x4, 0x4, 0, 0},
8066 	{0x48, 0xf, 0xf, 0, 0},
8067 	{0x49, 0x30, 0x30, 0, 0},
8068 	{0x4A, 0x32, 0x32, 0, 0},
8069 	{0x4B, 0xd, 0xd, 0, 0},
8070 	{0x4C, 0xd, 0xd, 0, 0},
8071 	{0x4D, 0x4, 0x4, 0, 0},
8072 	{0x4E, 0x6, 0x6, 0, 0},
8073 	{0x4F, 0x1, 0x1, 0, 0},
8074 	{0x50, 0x1c, 0x1c, 0, 0},
8075 	{0x51, 0x2, 0x2, 0, 0},
8076 	{0x52, 0x2, 0x2, 0, 0},
8077 	{0x53, 0xf7, 0xf7, 1, 1},
8078 	{0x54, 0xb4, 0xb4, 0, 0},
8079 	{0x55, 0xd2, 0xd2, 0, 0},
8080 	{0x56, 0, 0, 0, 0},
8081 	{0x57, 0, 0, 0, 0},
8082 	{0x58, 0x4, 0x4, 0, 0},
8083 	{0x59, 0x96, 0x96, 0, 0},
8084 	{0x5A, 0x3e, 0x3e, 0, 0},
8085 	{0x5B, 0x3e, 0x3e, 0, 0},
8086 	{0x5C, 0x13, 0x13, 0, 0},
8087 	{0x5D, 0x2, 0x2, 0, 0},
8088 	{0x5E, 0, 0, 0, 0},
8089 	{0x5F, 0x7, 0x7, 0, 0},
8090 	{0x60, 0x7, 0x7, 1, 1},
8091 	{0x61, 0x8, 0x8, 0, 0},
8092 	{0x62, 0x3, 0x3, 0, 0},
8093 	{0x63, 0, 0, 0, 0},
8094 	{0x64, 0, 0, 0, 0},
8095 	{0x65, 0, 0, 0, 0},
8096 	{0x66, 0, 0, 0, 0},
8097 	{0x67, 0, 0, 0, 0},
8098 	{0x68, 0x40, 0x40, 0, 0},
8099 	{0x69, 0, 0, 0, 0},
8100 	{0x6A, 0, 0, 0, 0},
8101 	{0x6B, 0, 0, 0, 0},
8102 	{0x6C, 0, 0, 0, 0},
8103 	{0x6D, 0x1, 0x1, 0, 0},
8104 	{0x6E, 0, 0, 0, 0},
8105 	{0x6F, 0, 0, 0, 0},
8106 	{0x70, 0x60, 0x60, 0, 0},
8107 	{0x71, 0x66, 0x66, 0, 0},
8108 	{0x72, 0xc, 0xc, 0, 0},
8109 	{0x73, 0x66, 0x66, 0, 0},
8110 	{0x74, 0x8f, 0x8f, 1, 1},
8111 	{0x75, 0, 0, 0, 0},
8112 	{0x76, 0xcc, 0xcc, 0, 0},
8113 	{0x77, 0x1, 0x1, 0, 0},
8114 	{0x78, 0x66, 0x66, 0, 0},
8115 	{0x79, 0x66, 0x66, 0, 0},
8116 	{0x7A, 0, 0, 0, 0},
8117 	{0x7B, 0, 0, 0, 0},
8118 	{0x7C, 0, 0, 0, 0},
8119 	{0x7D, 0, 0, 0, 0},
8120 	{0x7E, 0, 0, 0, 0},
8121 	{0x7F, 0, 0, 0, 0},
8122 	{0x80, 0, 0, 0, 0},
8123 	{0x81, 0, 0, 0, 0},
8124 	{0x82, 0, 0, 0, 0},
8125 	{0x83, 0, 0, 0, 0},
8126 	{0x84, 0, 0, 0, 0},
8127 	{0x85, 0xff, 0xff, 0, 0},
8128 	{0x86, 0, 0, 0, 0},
8129 	{0x87, 0, 0, 0, 0},
8130 	{0x88, 0, 0, 0, 0},
8131 	{0x89, 0, 0, 0, 0},
8132 	{0x8A, 0, 0, 0, 0},
8133 	{0x8B, 0, 0, 0, 0},
8134 	{0x8C, 0, 0, 0, 0},
8135 	{0x8D, 0, 0, 0, 0},
8136 	{0x8E, 0, 0, 0, 0},
8137 	{0x8F, 0, 0, 0, 0},
8138 	{0x90, 0, 0, 0, 0},
8139 	{0x91, 0, 0, 0, 0},
8140 	{0x92, 0, 0, 0, 0},
8141 	{0x93, 0, 0, 0, 0},
8142 	{0x94, 0, 0, 0, 0},
8143 	{0x95, 0, 0, 0, 0},
8144 	{0x96, 0, 0, 0, 0},
8145 	{0x97, 0, 0, 0, 0},
8146 	{0x98, 0, 0, 0, 0},
8147 	{0x99, 0, 0, 0, 0},
8148 	{0x9A, 0, 0, 0, 0},
8149 	{0x9B, 0, 0, 0, 0},
8150 	{0x9C, 0, 0, 0, 0},
8151 	{0x9D, 0, 0, 0, 0},
8152 	{0x9E, 0, 0, 0, 0},
8153 	{0x9F, 0x6, 0x6, 0, 0},
8154 	{0xA0, 0x66, 0x66, 0, 0},
8155 	{0xA1, 0x66, 0x66, 0, 0},
8156 	{0xA2, 0x66, 0x66, 0, 0},
8157 	{0xA3, 0x66, 0x66, 0, 0},
8158 	{0xA4, 0x66, 0x66, 0, 0},
8159 	{0xA5, 0x66, 0x66, 0, 0},
8160 	{0xA6, 0x66, 0x66, 0, 0},
8161 	{0xA7, 0x66, 0x66, 0, 0},
8162 	{0xA8, 0x66, 0x66, 0, 0},
8163 	{0xA9, 0x66, 0x66, 0, 0},
8164 	{0xAA, 0x66, 0x66, 0, 0},
8165 	{0xAB, 0x66, 0x66, 0, 0},
8166 	{0xAC, 0x66, 0x66, 0, 0},
8167 	{0xAD, 0x66, 0x66, 0, 0},
8168 	{0xAE, 0x66, 0x66, 0, 0},
8169 	{0xAF, 0x66, 0x66, 0, 0},
8170 	{0xB0, 0x66, 0x66, 0, 0},
8171 	{0xB1, 0x66, 0x66, 0, 0},
8172 	{0xB2, 0x66, 0x66, 0, 0},
8173 	{0xB3, 0xa, 0xa, 0, 0},
8174 	{0xB4, 0, 0, 0, 0},
8175 	{0xB5, 0, 0, 0, 0},
8176 	{0xB6, 0, 0, 0, 0},
8177 	{0xFFFF, 0, 0, 0, 0}
8178 };
8179 
8180 static struct radio_regs regs_TX_2056[] = {
8181 	{0x02, 0, 0, 0, 0},
8182 	{0x03, 0, 0, 0, 0},
8183 	{0x04, 0, 0, 0, 0},
8184 	{0x05, 0, 0, 0, 0},
8185 	{0x06, 0, 0, 0, 0},
8186 	{0x07, 0, 0, 0, 0},
8187 	{0x08, 0, 0, 0, 0},
8188 	{0x09, 0, 0, 0, 0},
8189 	{0x0A, 0, 0, 0, 0},
8190 	{0x0B, 0, 0, 0, 0},
8191 	{0x0C, 0, 0, 0, 0},
8192 	{0x0D, 0, 0, 0, 0},
8193 	{0x0E, 0, 0, 0, 0},
8194 	{0x0F, 0, 0, 0, 0},
8195 	{0x10, 0, 0, 0, 0},
8196 	{0x11, 0, 0, 0, 0},
8197 	{0x12, 0, 0, 0, 0},
8198 	{0x13, 0, 0, 0, 0},
8199 	{0x14, 0, 0, 0, 0},
8200 	{0x15, 0, 0, 0, 0},
8201 	{0x16, 0, 0, 0, 0},
8202 	{0x17, 0, 0, 0, 0},
8203 	{0x18, 0, 0, 0, 0},
8204 	{0x19, 0, 0, 0, 0},
8205 	{0x1A, 0, 0, 0, 0},
8206 	{0x1B, 0, 0, 0, 0},
8207 	{0x1C, 0, 0, 0, 0},
8208 	{0x1D, 0, 0, 0, 0},
8209 	{0x1E, 0, 0, 0, 0},
8210 	{0x1F, 0, 0, 0, 0},
8211 	{0x20, 0, 0, 0, 0},
8212 	{0x21, 0x88, 0x88, 0, 0},
8213 	{0x22, 0x88, 0x88, 0, 0},
8214 	{0x23, 0x88, 0x88, 0, 0},
8215 	{0x24, 0x88, 0x88, 0, 0},
8216 	{0x25, 0xc, 0xc, 0, 0},
8217 	{0x26, 0, 0, 0, 0},
8218 	{0x27, 0x3, 0x3, 0, 0},
8219 	{0x28, 0, 0, 0, 0},
8220 	{0x29, 0x3, 0x3, 0, 0},
8221 	{0x2A, 0x37, 0x37, 0, 0},
8222 	{0x2B, 0x3, 0x3, 0, 0},
8223 	{0x2C, 0, 0, 0, 0},
8224 	{0x2D, 0, 0, 0, 0},
8225 	{0x2E, 0x1, 0x1, 0, 0},
8226 	{0x2F, 0x1, 0x1, 0, 0},
8227 	{0x30, 0, 0, 0, 0},
8228 	{0x31, 0, 0, 0, 0},
8229 	{0x32, 0, 0, 0, 0},
8230 	{0x33, 0x11, 0x11, 0, 0},
8231 	{0x34, 0x11, 0x11, 0, 0},
8232 	{0x35, 0, 0, 0, 0},
8233 	{0x36, 0, 0, 0, 0},
8234 	{0x37, 0x3, 0x3, 0, 0},
8235 	{0x38, 0xf, 0xf, 0, 0},
8236 	{0x39, 0, 0, 0, 0},
8237 	{0x3A, 0x2d, 0x2d, 0, 0},
8238 	{0x3B, 0, 0, 0, 0},
8239 	{0x3C, 0x6e, 0x6e, 0, 0},
8240 	{0x3D, 0xf0, 0xf0, 1, 1},
8241 	{0x3E, 0, 0, 0, 0},
8242 	{0x3F, 0, 0, 0, 0},
8243 	{0x40, 0, 0, 0, 0},
8244 	{0x41, 0x3, 0x3, 0, 0},
8245 	{0x42, 0x3, 0x3, 0, 0},
8246 	{0x43, 0, 0, 0, 0},
8247 	{0x44, 0x1e, 0x1e, 0, 0},
8248 	{0x45, 0, 0, 0, 0},
8249 	{0x46, 0x6e, 0x6e, 0, 0},
8250 	{0x47, 0xf0, 0xf0, 1, 1},
8251 	{0x48, 0, 0, 0, 0},
8252 	{0x49, 0x2, 0x2, 0, 0},
8253 	{0x4A, 0xff, 0xff, 1, 1},
8254 	{0x4B, 0xc, 0xc, 0, 0},
8255 	{0x4C, 0, 0, 0, 0},
8256 	{0x4D, 0x38, 0x38, 0, 0},
8257 	{0x4E, 0x70, 0x70, 1, 1},
8258 	{0x4F, 0x2, 0x2, 0, 0},
8259 	{0x50, 0x88, 0x88, 0, 0},
8260 	{0x51, 0xc, 0xc, 0, 0},
8261 	{0x52, 0, 0, 0, 0},
8262 	{0x53, 0x8, 0x8, 0, 0},
8263 	{0x54, 0x70, 0x70, 1, 1},
8264 	{0x55, 0x2, 0x2, 0, 0},
8265 	{0x56, 0xff, 0xff, 1, 1},
8266 	{0x57, 0, 0, 0, 0},
8267 	{0x58, 0x83, 0x83, 0, 0},
8268 	{0x59, 0x77, 0x77, 1, 1},
8269 	{0x5A, 0, 0, 0, 0},
8270 	{0x5B, 0x2, 0x2, 0, 0},
8271 	{0x5C, 0x88, 0x88, 0, 0},
8272 	{0x5D, 0, 0, 0, 0},
8273 	{0x5E, 0x8, 0x8, 0, 0},
8274 	{0x5F, 0x77, 0x77, 1, 1},
8275 	{0x60, 0x1, 0x1, 0, 0},
8276 	{0x61, 0, 0, 0, 0},
8277 	{0x62, 0x7, 0x7, 0, 0},
8278 	{0x63, 0, 0, 0, 0},
8279 	{0x64, 0x7, 0x7, 0, 0},
8280 	{0x65, 0, 0, 0, 0},
8281 	{0x66, 0, 0, 0, 0},
8282 	{0x67, 0x74, 0x74, 1, 1},
8283 	{0x68, 0, 0, 0, 0},
8284 	{0x69, 0xa, 0xa, 0, 0},
8285 	{0x6A, 0, 0, 0, 0},
8286 	{0x6B, 0, 0, 0, 0},
8287 	{0x6C, 0, 0, 0, 0},
8288 	{0x6D, 0, 0, 0, 0},
8289 	{0x6E, 0, 0, 0, 0},
8290 	{0x6F, 0, 0, 0, 0},
8291 	{0x70, 0, 0, 0, 0},
8292 	{0x71, 0x2, 0x2, 0, 0},
8293 	{0x72, 0, 0, 0, 0},
8294 	{0x73, 0, 0, 0, 0},
8295 	{0x74, 0xe, 0xe, 0, 0},
8296 	{0x75, 0xe, 0xe, 0, 0},
8297 	{0x76, 0xe, 0xe, 0, 0},
8298 	{0x77, 0x13, 0x13, 0, 0},
8299 	{0x78, 0x13, 0x13, 0, 0},
8300 	{0x79, 0x1b, 0x1b, 0, 0},
8301 	{0x7A, 0x1b, 0x1b, 0, 0},
8302 	{0x7B, 0x55, 0x55, 0, 0},
8303 	{0x7C, 0x5b, 0x5b, 0, 0},
8304 	{0x7D, 0, 0, 0, 0},
8305 	{0x7E, 0, 0, 0, 0},
8306 	{0x7F, 0, 0, 0, 0},
8307 	{0x80, 0, 0, 0, 0},
8308 	{0x81, 0, 0, 0, 0},
8309 	{0x82, 0, 0, 0, 0},
8310 	{0x83, 0, 0, 0, 0},
8311 	{0x84, 0, 0, 0, 0},
8312 	{0x85, 0, 0, 0, 0},
8313 	{0x86, 0, 0, 0, 0},
8314 	{0x87, 0, 0, 0, 0},
8315 	{0x88, 0, 0, 0, 0},
8316 	{0x89, 0, 0, 0, 0},
8317 	{0x8A, 0, 0, 0, 0},
8318 	{0x8B, 0, 0, 0, 0},
8319 	{0x8C, 0, 0, 0, 0},
8320 	{0x8D, 0, 0, 0, 0},
8321 	{0x8E, 0, 0, 0, 0},
8322 	{0x8F, 0, 0, 0, 0},
8323 	{0x90, 0, 0, 0, 0},
8324 	{0x91, 0, 0, 0, 0},
8325 	{0x92, 0, 0, 0, 0},
8326 	{0xFFFF, 0, 0, 0, 0}
8327 };
8328 
8329 static struct radio_regs regs_RX_2056[] = {
8330 	{0x02, 0, 0, 0, 0},
8331 	{0x03, 0, 0, 0, 0},
8332 	{0x04, 0, 0, 0, 0},
8333 	{0x05, 0, 0, 0, 0},
8334 	{0x06, 0, 0, 0, 0},
8335 	{0x07, 0, 0, 0, 0},
8336 	{0x08, 0, 0, 0, 0},
8337 	{0x09, 0, 0, 0, 0},
8338 	{0x0A, 0, 0, 0, 0},
8339 	{0x0B, 0, 0, 0, 0},
8340 	{0x0C, 0, 0, 0, 0},
8341 	{0x0D, 0, 0, 0, 0},
8342 	{0x0E, 0, 0, 0, 0},
8343 	{0x0F, 0, 0, 0, 0},
8344 	{0x10, 0, 0, 0, 0},
8345 	{0x11, 0, 0, 0, 0},
8346 	{0x12, 0, 0, 0, 0},
8347 	{0x13, 0, 0, 0, 0},
8348 	{0x14, 0, 0, 0, 0},
8349 	{0x15, 0, 0, 0, 0},
8350 	{0x16, 0, 0, 0, 0},
8351 	{0x17, 0, 0, 0, 0},
8352 	{0x18, 0, 0, 0, 0},
8353 	{0x19, 0, 0, 0, 0},
8354 	{0x1A, 0, 0, 0, 0},
8355 	{0x1B, 0, 0, 0, 0},
8356 	{0x1C, 0, 0, 0, 0},
8357 	{0x1D, 0, 0, 0, 0},
8358 	{0x1E, 0, 0, 0, 0},
8359 	{0x1F, 0, 0, 0, 0},
8360 	{0x20, 0x3, 0x3, 0, 0},
8361 	{0x21, 0, 0, 0, 0},
8362 	{0x22, 0, 0, 0, 0},
8363 	{0x23, 0x90, 0x90, 0, 0},
8364 	{0x24, 0x55, 0x55, 0, 0},
8365 	{0x25, 0x15, 0x15, 0, 0},
8366 	{0x26, 0x5, 0x5, 0, 0},
8367 	{0x27, 0x15, 0x15, 0, 0},
8368 	{0x28, 0x5, 0x5, 0, 0},
8369 	{0x29, 0x20, 0x20, 0, 0},
8370 	{0x2A, 0x11, 0x11, 0, 0},
8371 	{0x2B, 0x90, 0x90, 0, 0},
8372 	{0x2C, 0, 0, 0, 0},
8373 	{0x2D, 0x88, 0x88, 0, 0},
8374 	{0x2E, 0x32, 0x32, 0, 0},
8375 	{0x2F, 0x77, 0x77, 0, 0},
8376 	{0x30, 0x17, 0x17, 1, 1},
8377 	{0x31, 0xff, 0xff, 1, 1},
8378 	{0x32, 0x20, 0x20, 0, 0},
8379 	{0x33, 0, 0, 0, 0},
8380 	{0x34, 0x88, 0x88, 0, 0},
8381 	{0x35, 0x32, 0x32, 0, 0},
8382 	{0x36, 0x77, 0x77, 0, 0},
8383 	{0x37, 0x17, 0x17, 1, 1},
8384 	{0x38, 0xf0, 0xf0, 1, 1},
8385 	{0x39, 0x20, 0x20, 0, 0},
8386 	{0x3A, 0x8, 0x8, 0, 0},
8387 	{0x3B, 0x99, 0x99, 0, 0},
8388 	{0x3C, 0, 0, 0, 0},
8389 	{0x3D, 0x44, 0x44, 1, 1},
8390 	{0x3E, 0, 0, 0, 0},
8391 	{0x3F, 0x44, 0x44, 0, 0},
8392 	{0x40, 0xf, 0xf, 1, 1},
8393 	{0x41, 0x6, 0x6, 0, 0},
8394 	{0x42, 0x4, 0x4, 0, 0},
8395 	{0x43, 0x50, 0x50, 1, 1},
8396 	{0x44, 0x8, 0x8, 0, 0},
8397 	{0x45, 0x99, 0x99, 0, 0},
8398 	{0x46, 0, 0, 0, 0},
8399 	{0x47, 0x11, 0x11, 0, 0},
8400 	{0x48, 0, 0, 0, 0},
8401 	{0x49, 0x44, 0x44, 0, 0},
8402 	{0x4A, 0x7, 0x7, 0, 0},
8403 	{0x4B, 0x6, 0x6, 0, 0},
8404 	{0x4C, 0x4, 0x4, 0, 0},
8405 	{0x4D, 0, 0, 0, 0},
8406 	{0x4E, 0, 0, 0, 0},
8407 	{0x4F, 0x66, 0x66, 0, 0},
8408 	{0x50, 0x66, 0x66, 0, 0},
8409 	{0x51, 0x57, 0x57, 0, 0},
8410 	{0x52, 0x57, 0x57, 0, 0},
8411 	{0x53, 0x44, 0x44, 0, 0},
8412 	{0x54, 0, 0, 0, 0},
8413 	{0x55, 0, 0, 0, 0},
8414 	{0x56, 0x8, 0x8, 0, 0},
8415 	{0x57, 0x8, 0x8, 0, 0},
8416 	{0x58, 0x7, 0x7, 0, 0},
8417 	{0x59, 0x22, 0x22, 0, 0},
8418 	{0x5A, 0x22, 0x22, 0, 0},
8419 	{0x5B, 0x2, 0x2, 0, 0},
8420 	{0x5C, 0x23, 0x23, 0, 0},
8421 	{0x5D, 0x7, 0x7, 0, 0},
8422 	{0x5E, 0x55, 0x55, 0, 0},
8423 	{0x5F, 0x23, 0x23, 0, 0},
8424 	{0x60, 0x41, 0x41, 0, 0},
8425 	{0x61, 0x1, 0x1, 0, 0},
8426 	{0x62, 0xa, 0xa, 0, 0},
8427 	{0x63, 0, 0, 0, 0},
8428 	{0x64, 0, 0, 0, 0},
8429 	{0x65, 0, 0, 0, 0},
8430 	{0x66, 0, 0, 0, 0},
8431 	{0x67, 0, 0, 0, 0},
8432 	{0x68, 0, 0, 0, 0},
8433 	{0x69, 0, 0, 0, 0},
8434 	{0x6A, 0, 0, 0, 0},
8435 	{0x6B, 0xc, 0xc, 0, 0},
8436 	{0x6C, 0, 0, 0, 0},
8437 	{0x6D, 0, 0, 0, 0},
8438 	{0x6E, 0, 0, 0, 0},
8439 	{0x6F, 0, 0, 0, 0},
8440 	{0x70, 0, 0, 0, 0},
8441 	{0x71, 0, 0, 0, 0},
8442 	{0x72, 0x22, 0x22, 0, 0},
8443 	{0x73, 0x22, 0x22, 0, 0},
8444 	{0x74, 0x2, 0x2, 0, 0},
8445 	{0x75, 0xa, 0xa, 0, 0},
8446 	{0x76, 0x1, 0x1, 0, 0},
8447 	{0x77, 0x22, 0x22, 0, 0},
8448 	{0x78, 0x30, 0x30, 0, 0},
8449 	{0x79, 0, 0, 0, 0},
8450 	{0x7A, 0, 0, 0, 0},
8451 	{0x7B, 0, 0, 0, 0},
8452 	{0x7C, 0, 0, 0, 0},
8453 	{0x7D, 0, 0, 0, 0},
8454 	{0x7E, 0, 0, 0, 0},
8455 	{0x7F, 0, 0, 0, 0},
8456 	{0x80, 0, 0, 0, 0},
8457 	{0x81, 0, 0, 0, 0},
8458 	{0x82, 0, 0, 0, 0},
8459 	{0x83, 0, 0, 0, 0},
8460 	{0x84, 0, 0, 0, 0},
8461 	{0x85, 0, 0, 0, 0},
8462 	{0x86, 0, 0, 0, 0},
8463 	{0x87, 0, 0, 0, 0},
8464 	{0x88, 0, 0, 0, 0},
8465 	{0x89, 0, 0, 0, 0},
8466 	{0x8A, 0, 0, 0, 0},
8467 	{0x8B, 0, 0, 0, 0},
8468 	{0x8C, 0, 0, 0, 0},
8469 	{0x8D, 0, 0, 0, 0},
8470 	{0x8E, 0, 0, 0, 0},
8471 	{0x8F, 0, 0, 0, 0},
8472 	{0x90, 0, 0, 0, 0},
8473 	{0x91, 0, 0, 0, 0},
8474 	{0x92, 0, 0, 0, 0},
8475 	{0x93, 0, 0, 0, 0},
8476 	{0x94, 0, 0, 0, 0},
8477 	{0xFFFF, 0, 0, 0, 0}
8478 };
8479 
8480 static struct radio_regs regs_SYN_2056_A1[] = {
8481 	{0x02, 0, 0, 0, 0},
8482 	{0x03, 0, 0, 0, 0},
8483 	{0x04, 0, 0, 0, 0},
8484 	{0x05, 0, 0, 0, 0},
8485 	{0x06, 0, 0, 0, 0},
8486 	{0x07, 0, 0, 0, 0},
8487 	{0x08, 0, 0, 0, 0},
8488 	{0x09, 0x1, 0x1, 0, 0},
8489 	{0x0A, 0, 0, 0, 0},
8490 	{0x0B, 0, 0, 0, 0},
8491 	{0x0C, 0, 0, 0, 0},
8492 	{0x0D, 0, 0, 0, 0},
8493 	{0x0E, 0, 0, 0, 0},
8494 	{0x0F, 0, 0, 0, 0},
8495 	{0x10, 0, 0, 0, 0},
8496 	{0x11, 0, 0, 0, 0},
8497 	{0x12, 0, 0, 0, 0},
8498 	{0x13, 0, 0, 0, 0},
8499 	{0x14, 0, 0, 0, 0},
8500 	{0x15, 0, 0, 0, 0},
8501 	{0x16, 0, 0, 0, 0},
8502 	{0x17, 0, 0, 0, 0},
8503 	{0x18, 0, 0, 0, 0},
8504 	{0x19, 0, 0, 0, 0},
8505 	{0x1A, 0, 0, 0, 0},
8506 	{0x1B, 0, 0, 0, 0},
8507 	{0x1C, 0, 0, 0, 0},
8508 	{0x1D, 0, 0, 0, 0},
8509 	{0x1E, 0, 0, 0, 0},
8510 	{0x1F, 0, 0, 0, 0},
8511 	{0x20, 0, 0, 0, 0},
8512 	{0x21, 0, 0, 0, 0},
8513 	{0x22, 0x60, 0x60, 0, 0},
8514 	{0x23, 0x6, 0x6, 0, 0},
8515 	{0x24, 0xc, 0xc, 0, 0},
8516 	{0x25, 0, 0, 0, 0},
8517 	{0x26, 0, 0, 0, 0},
8518 	{0x27, 0, 0, 0, 0},
8519 	{0x28, 0x1, 0x1, 0, 0},
8520 	{0x29, 0, 0, 0, 0},
8521 	{0x2A, 0, 0, 0, 0},
8522 	{0x2B, 0, 0, 0, 0},
8523 	{0x2C, 0, 0, 0, 0},
8524 	{0x2D, 0, 0, 0, 0},
8525 	{0x2E, 0xd, 0xd, 0, 0},
8526 	{0x2F, 0x1f, 0x1f, 0, 0},
8527 	{0x30, 0x15, 0x15, 0, 0},
8528 	{0x31, 0xf, 0xf, 0, 0},
8529 	{0x32, 0, 0, 0, 0},
8530 	{0x33, 0, 0, 0, 0},
8531 	{0x34, 0, 0, 0, 0},
8532 	{0x35, 0, 0, 0, 0},
8533 	{0x36, 0, 0, 0, 0},
8534 	{0x37, 0, 0, 0, 0},
8535 	{0x38, 0, 0, 0, 0},
8536 	{0x39, 0, 0, 0, 0},
8537 	{0x3A, 0, 0, 0, 0},
8538 	{0x3B, 0, 0, 0, 0},
8539 	{0x3C, 0x13, 0x13, 0, 0},
8540 	{0x3D, 0xf, 0xf, 0, 0},
8541 	{0x3E, 0x18, 0x18, 0, 0},
8542 	{0x3F, 0, 0, 0, 0},
8543 	{0x40, 0, 0, 0, 0},
8544 	{0x41, 0x20, 0x20, 0, 0},
8545 	{0x42, 0x20, 0x20, 0, 0},
8546 	{0x43, 0, 0, 0, 0},
8547 	{0x44, 0x77, 0x77, 0, 0},
8548 	{0x45, 0x7, 0x7, 0, 0},
8549 	{0x46, 0x1, 0x1, 0, 0},
8550 	{0x47, 0x4, 0x4, 0, 0},
8551 	{0x48, 0xf, 0xf, 0, 0},
8552 	{0x49, 0x30, 0x30, 0, 0},
8553 	{0x4A, 0x32, 0x32, 0, 0},
8554 	{0x4B, 0xd, 0xd, 0, 0},
8555 	{0x4C, 0xd, 0xd, 0, 0},
8556 	{0x4D, 0x4, 0x4, 0, 0},
8557 	{0x4E, 0x6, 0x6, 0, 0},
8558 	{0x4F, 0x1, 0x1, 0, 0},
8559 	{0x50, 0x1c, 0x1c, 0, 0},
8560 	{0x51, 0x2, 0x2, 0, 0},
8561 	{0x52, 0x2, 0x2, 0, 0},
8562 	{0x53, 0xf7, 0xf7, 1, 1},
8563 	{0x54, 0xb4, 0xb4, 0, 0},
8564 	{0x55, 0xd2, 0xd2, 0, 0},
8565 	{0x56, 0, 0, 0, 0},
8566 	{0x57, 0, 0, 0, 0},
8567 	{0x58, 0x4, 0x4, 0, 0},
8568 	{0x59, 0x96, 0x96, 0, 0},
8569 	{0x5A, 0x3e, 0x3e, 0, 0},
8570 	{0x5B, 0x3e, 0x3e, 0, 0},
8571 	{0x5C, 0x13, 0x13, 0, 0},
8572 	{0x5D, 0x2, 0x2, 0, 0},
8573 	{0x5E, 0, 0, 0, 0},
8574 	{0x5F, 0x7, 0x7, 0, 0},
8575 	{0x60, 0x7, 0x7, 1, 1},
8576 	{0x61, 0x8, 0x8, 0, 0},
8577 	{0x62, 0x3, 0x3, 0, 0},
8578 	{0x63, 0, 0, 0, 0},
8579 	{0x64, 0, 0, 0, 0},
8580 	{0x65, 0, 0, 0, 0},
8581 	{0x66, 0, 0, 0, 0},
8582 	{0x67, 0, 0, 0, 0},
8583 	{0x68, 0x40, 0x40, 0, 0},
8584 	{0x69, 0, 0, 0, 0},
8585 	{0x6A, 0, 0, 0, 0},
8586 	{0x6B, 0, 0, 0, 0},
8587 	{0x6C, 0, 0, 0, 0},
8588 	{0x6D, 0x1, 0x1, 0, 0},
8589 	{0x6E, 0, 0, 0, 0},
8590 	{0x6F, 0, 0, 0, 0},
8591 	{0x70, 0x60, 0x60, 0, 0},
8592 	{0x71, 0x66, 0x66, 0, 0},
8593 	{0x72, 0xc, 0xc, 0, 0},
8594 	{0x73, 0x66, 0x66, 0, 0},
8595 	{0x74, 0x8f, 0x8f, 1, 1},
8596 	{0x75, 0, 0, 0, 0},
8597 	{0x76, 0xcc, 0xcc, 0, 0},
8598 	{0x77, 0x1, 0x1, 0, 0},
8599 	{0x78, 0x66, 0x66, 0, 0},
8600 	{0x79, 0x66, 0x66, 0, 0},
8601 	{0x7A, 0, 0, 0, 0},
8602 	{0x7B, 0, 0, 0, 0},
8603 	{0x7C, 0, 0, 0, 0},
8604 	{0x7D, 0, 0, 0, 0},
8605 	{0x7E, 0, 0, 0, 0},
8606 	{0x7F, 0, 0, 0, 0},
8607 	{0x80, 0, 0, 0, 0},
8608 	{0x81, 0, 0, 0, 0},
8609 	{0x82, 0, 0, 0, 0},
8610 	{0x83, 0, 0, 0, 0},
8611 	{0x84, 0, 0, 0, 0},
8612 	{0x85, 0xff, 0xff, 0, 0},
8613 	{0x86, 0, 0, 0, 0},
8614 	{0x87, 0, 0, 0, 0},
8615 	{0x88, 0, 0, 0, 0},
8616 	{0x89, 0, 0, 0, 0},
8617 	{0x8A, 0, 0, 0, 0},
8618 	{0x8B, 0, 0, 0, 0},
8619 	{0x8C, 0, 0, 0, 0},
8620 	{0x8D, 0, 0, 0, 0},
8621 	{0x8E, 0, 0, 0, 0},
8622 	{0x8F, 0, 0, 0, 0},
8623 	{0x90, 0, 0, 0, 0},
8624 	{0x91, 0, 0, 0, 0},
8625 	{0x92, 0, 0, 0, 0},
8626 	{0x93, 0, 0, 0, 0},
8627 	{0x94, 0, 0, 0, 0},
8628 	{0x95, 0, 0, 0, 0},
8629 	{0x96, 0, 0, 0, 0},
8630 	{0x97, 0, 0, 0, 0},
8631 	{0x98, 0, 0, 0, 0},
8632 	{0x99, 0, 0, 0, 0},
8633 	{0x9A, 0, 0, 0, 0},
8634 	{0x9B, 0, 0, 0, 0},
8635 	{0x9C, 0, 0, 0, 0},
8636 	{0x9D, 0, 0, 0, 0},
8637 	{0x9E, 0, 0, 0, 0},
8638 	{0x9F, 0x6, 0x6, 0, 0},
8639 	{0xA0, 0x66, 0x66, 0, 0},
8640 	{0xA1, 0x66, 0x66, 0, 0},
8641 	{0xA2, 0x66, 0x66, 0, 0},
8642 	{0xA3, 0x66, 0x66, 0, 0},
8643 	{0xA4, 0x66, 0x66, 0, 0},
8644 	{0xA5, 0x66, 0x66, 0, 0},
8645 	{0xA6, 0x66, 0x66, 0, 0},
8646 	{0xA7, 0x66, 0x66, 0, 0},
8647 	{0xA8, 0x66, 0x66, 0, 0},
8648 	{0xA9, 0x66, 0x66, 0, 0},
8649 	{0xAA, 0x66, 0x66, 0, 0},
8650 	{0xAB, 0x66, 0x66, 0, 0},
8651 	{0xAC, 0x66, 0x66, 0, 0},
8652 	{0xAD, 0x66, 0x66, 0, 0},
8653 	{0xAE, 0x66, 0x66, 0, 0},
8654 	{0xAF, 0x66, 0x66, 0, 0},
8655 	{0xB0, 0x66, 0x66, 0, 0},
8656 	{0xB1, 0x66, 0x66, 0, 0},
8657 	{0xB2, 0x66, 0x66, 0, 0},
8658 	{0xB3, 0xa, 0xa, 0, 0},
8659 	{0xB4, 0, 0, 0, 0},
8660 	{0xB5, 0, 0, 0, 0},
8661 	{0xB6, 0, 0, 0, 0},
8662 	{0xFFFF, 0, 0, 0, 0}
8663 };
8664 
8665 static struct radio_regs regs_TX_2056_A1[] = {
8666 	{0x02, 0, 0, 0, 0},
8667 	{0x03, 0, 0, 0, 0},
8668 	{0x04, 0, 0, 0, 0},
8669 	{0x05, 0, 0, 0, 0},
8670 	{0x06, 0, 0, 0, 0},
8671 	{0x07, 0, 0, 0, 0},
8672 	{0x08, 0, 0, 0, 0},
8673 	{0x09, 0, 0, 0, 0},
8674 	{0x0A, 0, 0, 0, 0},
8675 	{0x0B, 0, 0, 0, 0},
8676 	{0x0C, 0, 0, 0, 0},
8677 	{0x0D, 0, 0, 0, 0},
8678 	{0x0E, 0, 0, 0, 0},
8679 	{0x0F, 0, 0, 0, 0},
8680 	{0x10, 0, 0, 0, 0},
8681 	{0x11, 0, 0, 0, 0},
8682 	{0x12, 0, 0, 0, 0},
8683 	{0x13, 0, 0, 0, 0},
8684 	{0x14, 0, 0, 0, 0},
8685 	{0x15, 0, 0, 0, 0},
8686 	{0x16, 0, 0, 0, 0},
8687 	{0x17, 0, 0, 0, 0},
8688 	{0x18, 0, 0, 0, 0},
8689 	{0x19, 0, 0, 0, 0},
8690 	{0x1A, 0, 0, 0, 0},
8691 	{0x1B, 0, 0, 0, 0},
8692 	{0x1C, 0, 0, 0, 0},
8693 	{0x1D, 0, 0, 0, 0},
8694 	{0x1E, 0, 0, 0, 0},
8695 	{0x1F, 0, 0, 0, 0},
8696 	{0x20, 0, 0, 0, 0},
8697 	{0x21, 0x88, 0x88, 0, 0},
8698 	{0x22, 0x88, 0x88, 0, 0},
8699 	{0x23, 0x88, 0x88, 0, 0},
8700 	{0x24, 0x88, 0x88, 0, 0},
8701 	{0x25, 0xc, 0xc, 0, 0},
8702 	{0x26, 0, 0, 0, 0},
8703 	{0x27, 0x3, 0x3, 0, 0},
8704 	{0x28, 0, 0, 0, 0},
8705 	{0x29, 0x3, 0x3, 0, 0},
8706 	{0x2A, 0x37, 0x37, 0, 0},
8707 	{0x2B, 0x3, 0x3, 0, 0},
8708 	{0x2C, 0, 0, 0, 0},
8709 	{0x2D, 0, 0, 0, 0},
8710 	{0x2E, 0x1, 0x1, 0, 0},
8711 	{0x2F, 0x1, 0x1, 0, 0},
8712 	{0x30, 0, 0, 0, 0},
8713 	{0x31, 0, 0, 0, 0},
8714 	{0x32, 0, 0, 0, 0},
8715 	{0x33, 0x11, 0x11, 0, 0},
8716 	{0x34, 0x11, 0x11, 0, 0},
8717 	{0x35, 0, 0, 0, 0},
8718 	{0x36, 0, 0, 0, 0},
8719 	{0x37, 0x3, 0x3, 0, 0},
8720 	{0x38, 0xf, 0xf, 0, 0},
8721 	{0x39, 0, 0, 0, 0},
8722 	{0x3A, 0x2d, 0x2d, 0, 0},
8723 	{0x3B, 0, 0, 0, 0},
8724 	{0x3C, 0x6e, 0x6e, 0, 0},
8725 	{0x3D, 0xf0, 0xf0, 1, 1},
8726 	{0x3E, 0, 0, 0, 0},
8727 	{0x3F, 0, 0, 0, 0},
8728 	{0x40, 0, 0, 0, 0},
8729 	{0x41, 0x3, 0x3, 0, 0},
8730 	{0x42, 0x3, 0x3, 0, 0},
8731 	{0x43, 0, 0, 0, 0},
8732 	{0x44, 0x1e, 0x1e, 0, 0},
8733 	{0x45, 0, 0, 0, 0},
8734 	{0x46, 0x6e, 0x6e, 0, 0},
8735 	{0x47, 0xf0, 0xf0, 1, 1},
8736 	{0x48, 0, 0, 0, 0},
8737 	{0x49, 0x2, 0x2, 0, 0},
8738 	{0x4A, 0xff, 0xff, 1, 1},
8739 	{0x4B, 0xc, 0xc, 0, 0},
8740 	{0x4C, 0, 0, 0, 0},
8741 	{0x4D, 0x38, 0x38, 0, 0},
8742 	{0x4E, 0x70, 0x70, 1, 1},
8743 	{0x4F, 0x2, 0x2, 0, 0},
8744 	{0x50, 0x88, 0x88, 0, 0},
8745 	{0x51, 0xc, 0xc, 0, 0},
8746 	{0x52, 0, 0, 0, 0},
8747 	{0x53, 0x8, 0x8, 0, 0},
8748 	{0x54, 0x70, 0x70, 1, 1},
8749 	{0x55, 0x2, 0x2, 0, 0},
8750 	{0x56, 0xff, 0xff, 1, 1},
8751 	{0x57, 0, 0, 0, 0},
8752 	{0x58, 0x83, 0x83, 0, 0},
8753 	{0x59, 0x77, 0x77, 1, 1},
8754 	{0x5A, 0, 0, 0, 0},
8755 	{0x5B, 0x2, 0x2, 0, 0},
8756 	{0x5C, 0x88, 0x88, 0, 0},
8757 	{0x5D, 0, 0, 0, 0},
8758 	{0x5E, 0x8, 0x8, 0, 0},
8759 	{0x5F, 0x77, 0x77, 1, 1},
8760 	{0x60, 0x1, 0x1, 0, 0},
8761 	{0x61, 0, 0, 0, 0},
8762 	{0x62, 0x7, 0x7, 0, 0},
8763 	{0x63, 0, 0, 0, 0},
8764 	{0x64, 0x7, 0x7, 0, 0},
8765 	{0x65, 0, 0, 0, 0},
8766 	{0x66, 0, 0, 0, 0},
8767 	{0x67, 0x72, 0x72, 1, 1},
8768 	{0x68, 0, 0, 0, 0},
8769 	{0x69, 0xa, 0xa, 0, 0},
8770 	{0x6A, 0, 0, 0, 0},
8771 	{0x6B, 0, 0, 0, 0},
8772 	{0x6C, 0, 0, 0, 0},
8773 	{0x6D, 0, 0, 0, 0},
8774 	{0x6E, 0, 0, 0, 0},
8775 	{0x6F, 0, 0, 0, 0},
8776 	{0x70, 0, 0, 0, 0},
8777 	{0x71, 0x2, 0x2, 0, 0},
8778 	{0x72, 0, 0, 0, 0},
8779 	{0x73, 0, 0, 0, 0},
8780 	{0x74, 0xe, 0xe, 0, 0},
8781 	{0x75, 0xe, 0xe, 0, 0},
8782 	{0x76, 0xe, 0xe, 0, 0},
8783 	{0x77, 0x13, 0x13, 0, 0},
8784 	{0x78, 0x13, 0x13, 0, 0},
8785 	{0x79, 0x1b, 0x1b, 0, 0},
8786 	{0x7A, 0x1b, 0x1b, 0, 0},
8787 	{0x7B, 0x55, 0x55, 0, 0},
8788 	{0x7C, 0x5b, 0x5b, 0, 0},
8789 	{0x7D, 0, 0, 0, 0},
8790 	{0x7E, 0, 0, 0, 0},
8791 	{0x7F, 0, 0, 0, 0},
8792 	{0x80, 0, 0, 0, 0},
8793 	{0x81, 0, 0, 0, 0},
8794 	{0x82, 0, 0, 0, 0},
8795 	{0x83, 0, 0, 0, 0},
8796 	{0x84, 0, 0, 0, 0},
8797 	{0x85, 0, 0, 0, 0},
8798 	{0x86, 0, 0, 0, 0},
8799 	{0x87, 0, 0, 0, 0},
8800 	{0x88, 0, 0, 0, 0},
8801 	{0x89, 0, 0, 0, 0},
8802 	{0x8A, 0, 0, 0, 0},
8803 	{0x8B, 0, 0, 0, 0},
8804 	{0x8C, 0, 0, 0, 0},
8805 	{0x8D, 0, 0, 0, 0},
8806 	{0x8E, 0, 0, 0, 0},
8807 	{0x8F, 0, 0, 0, 0},
8808 	{0x90, 0, 0, 0, 0},
8809 	{0x91, 0, 0, 0, 0},
8810 	{0x92, 0, 0, 0, 0},
8811 	{0xFFFF, 0, 0, 0, 0}
8812 };
8813 
8814 static struct radio_regs regs_RX_2056_A1[] = {
8815 	{0x02, 0, 0, 0, 0},
8816 	{0x03, 0, 0, 0, 0},
8817 	{0x04, 0, 0, 0, 0},
8818 	{0x05, 0, 0, 0, 0},
8819 	{0x06, 0, 0, 0, 0},
8820 	{0x07, 0, 0, 0, 0},
8821 	{0x08, 0, 0, 0, 0},
8822 	{0x09, 0, 0, 0, 0},
8823 	{0x0A, 0, 0, 0, 0},
8824 	{0x0B, 0, 0, 0, 0},
8825 	{0x0C, 0, 0, 0, 0},
8826 	{0x0D, 0, 0, 0, 0},
8827 	{0x0E, 0, 0, 0, 0},
8828 	{0x0F, 0, 0, 0, 0},
8829 	{0x10, 0, 0, 0, 0},
8830 	{0x11, 0, 0, 0, 0},
8831 	{0x12, 0, 0, 0, 0},
8832 	{0x13, 0, 0, 0, 0},
8833 	{0x14, 0, 0, 0, 0},
8834 	{0x15, 0, 0, 0, 0},
8835 	{0x16, 0, 0, 0, 0},
8836 	{0x17, 0, 0, 0, 0},
8837 	{0x18, 0, 0, 0, 0},
8838 	{0x19, 0, 0, 0, 0},
8839 	{0x1A, 0, 0, 0, 0},
8840 	{0x1B, 0, 0, 0, 0},
8841 	{0x1C, 0, 0, 0, 0},
8842 	{0x1D, 0, 0, 0, 0},
8843 	{0x1E, 0, 0, 0, 0},
8844 	{0x1F, 0, 0, 0, 0},
8845 	{0x20, 0x3, 0x3, 0, 0},
8846 	{0x21, 0, 0, 0, 0},
8847 	{0x22, 0, 0, 0, 0},
8848 	{0x23, 0x90, 0x90, 0, 0},
8849 	{0x24, 0x55, 0x55, 0, 0},
8850 	{0x25, 0x15, 0x15, 0, 0},
8851 	{0x26, 0x5, 0x5, 0, 0},
8852 	{0x27, 0x15, 0x15, 0, 0},
8853 	{0x28, 0x5, 0x5, 0, 0},
8854 	{0x29, 0x20, 0x20, 0, 0},
8855 	{0x2A, 0x11, 0x11, 0, 0},
8856 	{0x2B, 0x90, 0x90, 0, 0},
8857 	{0x2C, 0, 0, 0, 0},
8858 	{0x2D, 0x88, 0x88, 0, 0},
8859 	{0x2E, 0x32, 0x32, 0, 0},
8860 	{0x2F, 0x77, 0x77, 0, 0},
8861 	{0x30, 0x17, 0x17, 1, 1},
8862 	{0x31, 0xff, 0xff, 1, 1},
8863 	{0x32, 0x20, 0x20, 0, 0},
8864 	{0x33, 0, 0, 0, 0},
8865 	{0x34, 0x88, 0x88, 0, 0},
8866 	{0x35, 0x32, 0x32, 0, 0},
8867 	{0x36, 0x77, 0x77, 0, 0},
8868 	{0x37, 0x17, 0x17, 1, 1},
8869 	{0x38, 0xf0, 0xf0, 1, 1},
8870 	{0x39, 0x20, 0x20, 0, 0},
8871 	{0x3A, 0x8, 0x8, 0, 0},
8872 	{0x3B, 0x55, 0x55, 1, 1},
8873 	{0x3C, 0, 0, 0, 0},
8874 	{0x3D, 0x44, 0x44, 1, 1},
8875 	{0x3E, 0, 0, 0, 0},
8876 	{0x3F, 0x44, 0x44, 0, 0},
8877 	{0x40, 0xf, 0xf, 1, 1},
8878 	{0x41, 0x6, 0x6, 0, 0},
8879 	{0x42, 0x4, 0x4, 0, 0},
8880 	{0x43, 0x50, 0x50, 1, 1},
8881 	{0x44, 0x8, 0x8, 0, 0},
8882 	{0x45, 0x55, 0x55, 1, 1},
8883 	{0x46, 0, 0, 0, 0},
8884 	{0x47, 0x11, 0x11, 0, 0},
8885 	{0x48, 0, 0, 0, 0},
8886 	{0x49, 0x44, 0x44, 0, 0},
8887 	{0x4A, 0x7, 0x7, 0, 0},
8888 	{0x4B, 0x6, 0x6, 0, 0},
8889 	{0x4C, 0x4, 0x4, 0, 0},
8890 	{0x4D, 0, 0, 0, 0},
8891 	{0x4E, 0, 0, 0, 0},
8892 	{0x4F, 0x26, 0x26, 1, 1},
8893 	{0x50, 0x26, 0x26, 1, 1},
8894 	{0x51, 0xf, 0xf, 1, 1},
8895 	{0x52, 0xf, 0xf, 1, 1},
8896 	{0x53, 0x44, 0x44, 0, 0},
8897 	{0x54, 0, 0, 0, 0},
8898 	{0x55, 0, 0, 0, 0},
8899 	{0x56, 0x8, 0x8, 0, 0},
8900 	{0x57, 0x8, 0x8, 0, 0},
8901 	{0x58, 0x7, 0x7, 0, 0},
8902 	{0x59, 0x22, 0x22, 0, 0},
8903 	{0x5A, 0x22, 0x22, 0, 0},
8904 	{0x5B, 0x2, 0x2, 0, 0},
8905 	{0x5C, 0x2f, 0x2f, 1, 1},
8906 	{0x5D, 0x7, 0x7, 0, 0},
8907 	{0x5E, 0x55, 0x55, 0, 0},
8908 	{0x5F, 0x23, 0x23, 0, 0},
8909 	{0x60, 0x41, 0x41, 0, 0},
8910 	{0x61, 0x1, 0x1, 0, 0},
8911 	{0x62, 0xa, 0xa, 0, 0},
8912 	{0x63, 0, 0, 0, 0},
8913 	{0x64, 0, 0, 0, 0},
8914 	{0x65, 0, 0, 0, 0},
8915 	{0x66, 0, 0, 0, 0},
8916 	{0x67, 0, 0, 0, 0},
8917 	{0x68, 0, 0, 0, 0},
8918 	{0x69, 0, 0, 0, 0},
8919 	{0x6A, 0, 0, 0, 0},
8920 	{0x6B, 0xc, 0xc, 0, 0},
8921 	{0x6C, 0, 0, 0, 0},
8922 	{0x6D, 0, 0, 0, 0},
8923 	{0x6E, 0, 0, 0, 0},
8924 	{0x6F, 0, 0, 0, 0},
8925 	{0x70, 0, 0, 0, 0},
8926 	{0x71, 0, 0, 0, 0},
8927 	{0x72, 0x22, 0x22, 0, 0},
8928 	{0x73, 0x22, 0x22, 0, 0},
8929 	{0x74, 0, 0, 1, 1},
8930 	{0x75, 0xa, 0xa, 0, 0},
8931 	{0x76, 0x1, 0x1, 0, 0},
8932 	{0x77, 0x22, 0x22, 0, 0},
8933 	{0x78, 0x30, 0x30, 0, 0},
8934 	{0x79, 0, 0, 0, 0},
8935 	{0x7A, 0, 0, 0, 0},
8936 	{0x7B, 0, 0, 0, 0},
8937 	{0x7C, 0, 0, 0, 0},
8938 	{0x7D, 0, 0, 0, 0},
8939 	{0x7E, 0, 0, 0, 0},
8940 	{0x7F, 0, 0, 0, 0},
8941 	{0x80, 0, 0, 0, 0},
8942 	{0x81, 0, 0, 0, 0},
8943 	{0x82, 0, 0, 0, 0},
8944 	{0x83, 0, 0, 0, 0},
8945 	{0x84, 0, 0, 0, 0},
8946 	{0x85, 0, 0, 0, 0},
8947 	{0x86, 0, 0, 0, 0},
8948 	{0x87, 0, 0, 0, 0},
8949 	{0x88, 0, 0, 0, 0},
8950 	{0x89, 0, 0, 0, 0},
8951 	{0x8A, 0, 0, 0, 0},
8952 	{0x8B, 0, 0, 0, 0},
8953 	{0x8C, 0, 0, 0, 0},
8954 	{0x8D, 0, 0, 0, 0},
8955 	{0x8E, 0, 0, 0, 0},
8956 	{0x8F, 0, 0, 0, 0},
8957 	{0x90, 0, 0, 0, 0},
8958 	{0x91, 0, 0, 0, 0},
8959 	{0x92, 0, 0, 0, 0},
8960 	{0x93, 0, 0, 0, 0},
8961 	{0x94, 0, 0, 0, 0},
8962 	{0xFFFF, 0, 0, 0, 0}
8963 };
8964 
8965 static struct radio_regs regs_SYN_2056_rev5[] = {
8966 	{0x02, 0, 0, 0, 0},
8967 	{0x03, 0, 0, 0, 0},
8968 	{0x04, 0, 0, 0, 0},
8969 	{0x05, 0, 0, 0, 0},
8970 	{0x06, 0, 0, 0, 0},
8971 	{0x07, 0, 0, 0, 0},
8972 	{0x08, 0, 0, 0, 0},
8973 	{0x09, 0x1, 0x1, 0, 0},
8974 	{0x0A, 0, 0, 0, 0},
8975 	{0x0B, 0, 0, 0, 0},
8976 	{0x0C, 0, 0, 0, 0},
8977 	{0x0D, 0, 0, 0, 0},
8978 	{0x0E, 0, 0, 0, 0},
8979 	{0x0F, 0, 0, 0, 0},
8980 	{0x10, 0, 0, 0, 0},
8981 	{0x11, 0, 0, 0, 0},
8982 	{0x12, 0, 0, 0, 0},
8983 	{0x13, 0, 0, 0, 0},
8984 	{0x14, 0, 0, 0, 0},
8985 	{0x15, 0, 0, 0, 0},
8986 	{0x16, 0, 0, 0, 0},
8987 	{0x17, 0, 0, 0, 0},
8988 	{0x18, 0, 0, 0, 0},
8989 	{0x19, 0, 0, 0, 0},
8990 	{0x1A, 0, 0, 0, 0},
8991 	{0x1B, 0, 0, 0, 0},
8992 	{0x1C, 0, 0, 0, 0},
8993 	{0x1D, 0, 0, 0, 0},
8994 	{0x1E, 0, 0, 0, 0},
8995 	{0x1F, 0, 0, 0, 0},
8996 	{0x20, 0, 0, 0, 0},
8997 	{0x21, 0, 0, 0, 0},
8998 	{0x22, 0x60, 0x60, 0, 0},
8999 	{0x23, 0x6, 0x6, 0, 0},
9000 	{0x24, 0xc, 0xc, 0, 0},
9001 	{0x25, 0, 0, 0, 0},
9002 	{0x26, 0, 0, 0, 0},
9003 	{0x27, 0, 0, 0, 0},
9004 	{0x28, 0x1, 0x1, 0, 0},
9005 	{0x29, 0, 0, 0, 0},
9006 	{0x2A, 0, 0, 0, 0},
9007 	{0x2B, 0, 0, 0, 0},
9008 	{0x2C, 0, 0, 0, 0},
9009 	{0x2D, 0, 0, 0, 0},
9010 	{0x2E, 0, 0, 0, 0},
9011 	{0x2F, 0x1f, 0x1f, 0, 0},
9012 	{0x30, 0x15, 0x15, 0, 0},
9013 	{0x31, 0xf, 0xf, 0, 0},
9014 	{0x32, 0, 0, 0, 0},
9015 	{0x33, 0, 0, 0, 0},
9016 	{0x34, 0, 0, 0, 0},
9017 	{0x35, 0, 0, 0, 0},
9018 	{0x36, 0, 0, 0, 0},
9019 	{0x37, 0, 0, 0, 0},
9020 	{0x38, 0, 0, 0, 0},
9021 	{0x39, 0, 0, 0, 0},
9022 	{0x3A, 0, 0, 0, 0},
9023 	{0x3B, 0, 0, 0, 0},
9024 	{0x3C, 0x13, 0x13, 0, 0},
9025 	{0x3D, 0xf, 0xf, 0, 0},
9026 	{0x3E, 0x18, 0x18, 0, 0},
9027 	{0x3F, 0, 0, 0, 0},
9028 	{0x40, 0, 0, 0, 0},
9029 	{0x41, 0x20, 0x20, 0, 0},
9030 	{0x42, 0x20, 0x20, 0, 0},
9031 	{0x43, 0, 0, 0, 0},
9032 	{0x44, 0x77, 0x77, 0, 0},
9033 	{0x45, 0x7, 0x7, 0, 0},
9034 	{0x46, 0x1, 0x1, 0, 0},
9035 	{0x47, 0x4, 0x4, 0, 0},
9036 	{0x48, 0xf, 0xf, 0, 0},
9037 	{0x49, 0x30, 0x30, 0, 0},
9038 	{0x4A, 0x32, 0x32, 0, 0},
9039 	{0x4B, 0xd, 0xd, 0, 0},
9040 	{0x4C, 0xd, 0xd, 0, 0},
9041 	{0x4D, 0x4, 0x4, 0, 0},
9042 	{0x4E, 0x6, 0x6, 0, 0},
9043 	{0x4F, 0x1, 0x1, 0, 0},
9044 	{0x50, 0x1c, 0x1c, 0, 0},
9045 	{0x51, 0x2, 0x2, 0, 0},
9046 	{0x52, 0x2, 0x2, 0, 0},
9047 	{0x53, 0xf7, 0xf7, 1, 1},
9048 	{0x54, 0xb4, 0xb4, 0, 0},
9049 	{0x55, 0xd2, 0xd2, 0, 0},
9050 	{0x56, 0, 0, 0, 0},
9051 	{0x57, 0, 0, 0, 0},
9052 	{0x58, 0x4, 0x4, 0, 0},
9053 	{0x59, 0x96, 0x96, 0, 0},
9054 	{0x5A, 0x3e, 0x3e, 0, 0},
9055 	{0x5B, 0x3e, 0x3e, 0, 0},
9056 	{0x5C, 0x13, 0x13, 0, 0},
9057 	{0x5D, 0x2, 0x2, 0, 0},
9058 	{0x5E, 0, 0, 0, 0},
9059 	{0x5F, 0x7, 0x7, 0, 0},
9060 	{0x60, 0x7, 0x7, 1, 1},
9061 	{0x61, 0x8, 0x8, 0, 0},
9062 	{0x62, 0x3, 0x3, 0, 0},
9063 	{0x63, 0, 0, 0, 0},
9064 	{0x64, 0, 0, 0, 0},
9065 	{0x65, 0, 0, 0, 0},
9066 	{0x66, 0, 0, 0, 0},
9067 	{0x67, 0, 0, 0, 0},
9068 	{0x68, 0x40, 0x40, 0, 0},
9069 	{0x69, 0, 0, 0, 0},
9070 	{0x6A, 0, 0, 0, 0},
9071 	{0x6B, 0, 0, 0, 0},
9072 	{0x6C, 0, 0, 0, 0},
9073 	{0x6D, 0x1, 0x1, 0, 0},
9074 	{0x6E, 0, 0, 0, 0},
9075 	{0x6F, 0, 0, 0, 0},
9076 	{0x70, 0x60, 0x60, 0, 0},
9077 	{0x71, 0x66, 0x66, 0, 0},
9078 	{0x72, 0xc, 0xc, 0, 0},
9079 	{0x73, 0x66, 0x66, 0, 0},
9080 	{0x74, 0x8f, 0x8f, 1, 1},
9081 	{0x75, 0, 0, 0, 0},
9082 	{0x76, 0xcc, 0xcc, 0, 0},
9083 	{0x77, 0x1, 0x1, 0, 0},
9084 	{0x78, 0x66, 0x66, 0, 0},
9085 	{0x79, 0x66, 0x66, 0, 0},
9086 	{0x7A, 0, 0, 0, 0},
9087 	{0x7B, 0, 0, 0, 0},
9088 	{0x7C, 0, 0, 0, 0},
9089 	{0x7D, 0, 0, 0, 0},
9090 	{0x7E, 0, 0, 0, 0},
9091 	{0x7F, 0, 0, 0, 0},
9092 	{0x80, 0, 0, 0, 0},
9093 	{0x81, 0, 0, 0, 0},
9094 	{0x82, 0, 0, 0, 0},
9095 	{0x83, 0, 0, 0, 0},
9096 	{0x84, 0, 0, 0, 0},
9097 	{0x85, 0xff, 0xff, 0, 0},
9098 	{0x86, 0, 0, 0, 0},
9099 	{0x87, 0, 0, 0, 0},
9100 	{0x88, 0, 0, 0, 0},
9101 	{0x89, 0, 0, 0, 0},
9102 	{0x8A, 0, 0, 0, 0},
9103 	{0x8B, 0, 0, 0, 0},
9104 	{0x8C, 0, 0, 0, 0},
9105 	{0x8D, 0, 0, 0, 0},
9106 	{0x8E, 0, 0, 0, 0},
9107 	{0x8F, 0, 0, 0, 0},
9108 	{0x90, 0, 0, 0, 0},
9109 	{0x91, 0, 0, 0, 0},
9110 	{0x92, 0, 0, 0, 0},
9111 	{0x93, 0, 0, 0, 0},
9112 	{0x94, 0, 0, 0, 0},
9113 	{0x95, 0, 0, 0, 0},
9114 	{0x96, 0, 0, 0, 0},
9115 	{0x97, 0, 0, 0, 0},
9116 	{0x98, 0, 0, 0, 0},
9117 	{0x99, 0, 0, 0, 0},
9118 	{0x9A, 0, 0, 0, 0},
9119 	{0x9B, 0, 0, 0, 0},
9120 	{0x9C, 0, 0, 0, 0},
9121 	{0x9D, 0, 0, 0, 0},
9122 	{0x9E, 0, 0, 0, 0},
9123 	{0x9F, 0x6, 0x6, 0, 0},
9124 	{0xA0, 0x66, 0x66, 0, 0},
9125 	{0xA1, 0x66, 0x66, 0, 0},
9126 	{0xA2, 0x66, 0x66, 0, 0},
9127 	{0xA3, 0x66, 0x66, 0, 0},
9128 	{0xA4, 0x66, 0x66, 0, 0},
9129 	{0xA5, 0x66, 0x66, 0, 0},
9130 	{0xA6, 0x66, 0x66, 0, 0},
9131 	{0xA7, 0x66, 0x66, 0, 0},
9132 	{0xA8, 0x66, 0x66, 0, 0},
9133 	{0xA9, 0x66, 0x66, 0, 0},
9134 	{0xAA, 0x66, 0x66, 0, 0},
9135 	{0xAB, 0x66, 0x66, 0, 0},
9136 	{0xAC, 0x66, 0x66, 0, 0},
9137 	{0xAD, 0x66, 0x66, 0, 0},
9138 	{0xAE, 0x66, 0x66, 0, 0},
9139 	{0xAF, 0x66, 0x66, 0, 0},
9140 	{0xB0, 0x66, 0x66, 0, 0},
9141 	{0xB1, 0x66, 0x66, 0, 0},
9142 	{0xB2, 0x66, 0x66, 0, 0},
9143 	{0xB3, 0xa, 0xa, 0, 0},
9144 	{0xB4, 0, 0, 0, 0},
9145 	{0xB5, 0, 0, 0, 0},
9146 	{0xB6, 0, 0, 0, 0},
9147 	{0xFFFF, 0, 0, 0, 0}
9148 };
9149 
9150 static struct radio_regs regs_TX_2056_rev5[] = {
9151 	{0x02, 0, 0, 0, 0},
9152 	{0x03, 0, 0, 0, 0},
9153 	{0x04, 0, 0, 0, 0},
9154 	{0x05, 0, 0, 0, 0},
9155 	{0x06, 0, 0, 0, 0},
9156 	{0x07, 0, 0, 0, 0},
9157 	{0x08, 0, 0, 0, 0},
9158 	{0x09, 0, 0, 0, 0},
9159 	{0x0A, 0, 0, 0, 0},
9160 	{0x0B, 0, 0, 0, 0},
9161 	{0x0C, 0, 0, 0, 0},
9162 	{0x0D, 0, 0, 0, 0},
9163 	{0x0E, 0, 0, 0, 0},
9164 	{0x0F, 0, 0, 0, 0},
9165 	{0x10, 0, 0, 0, 0},
9166 	{0x11, 0, 0, 0, 0},
9167 	{0x12, 0, 0, 0, 0},
9168 	{0x13, 0, 0, 0, 0},
9169 	{0x14, 0, 0, 0, 0},
9170 	{0x15, 0, 0, 0, 0},
9171 	{0x16, 0, 0, 0, 0},
9172 	{0x17, 0, 0, 0, 0},
9173 	{0x18, 0, 0, 0, 0},
9174 	{0x19, 0, 0, 0, 0},
9175 	{0x1A, 0, 0, 0, 0},
9176 	{0x1B, 0, 0, 0, 0},
9177 	{0x1C, 0, 0, 0, 0},
9178 	{0x1D, 0, 0, 0, 0},
9179 	{0x1E, 0, 0, 0, 0},
9180 	{0x1F, 0, 0, 0, 0},
9181 	{0x20, 0, 0, 0, 0},
9182 	{0x21, 0x88, 0x88, 0, 0},
9183 	{0x22, 0x88, 0x88, 0, 0},
9184 	{0x23, 0x88, 0x88, 0, 0},
9185 	{0x24, 0x88, 0x88, 0, 0},
9186 	{0x25, 0xc, 0xc, 0, 0},
9187 	{0x26, 0, 0, 0, 0},
9188 	{0x27, 0x3, 0x3, 0, 0},
9189 	{0x28, 0, 0, 0, 0},
9190 	{0x29, 0x3, 0x3, 0, 0},
9191 	{0x2A, 0x37, 0x37, 0, 0},
9192 	{0x2B, 0x3, 0x3, 0, 0},
9193 	{0x2C, 0, 0, 0, 0},
9194 	{0x2D, 0, 0, 0, 0},
9195 	{0x2E, 0x1, 0x1, 0, 0},
9196 	{0x2F, 0x1, 0x1, 0, 0},
9197 	{0x30, 0, 0, 0, 0},
9198 	{0x31, 0, 0, 0, 0},
9199 	{0x32, 0, 0, 0, 0},
9200 	{0x33, 0x11, 0x11, 0, 0},
9201 	{0x34, 0x11, 0x11, 0, 0},
9202 	{0x35, 0, 0, 0, 0},
9203 	{0x36, 0, 0, 0, 0},
9204 	{0x37, 0x3, 0x3, 0, 0},
9205 	{0x38, 0xf, 0xf, 0, 0},
9206 	{0x39, 0, 0, 0, 0},
9207 	{0x3A, 0x2d, 0x2d, 0, 0},
9208 	{0x3B, 0, 0, 0, 0},
9209 	{0x3C, 0x6e, 0x6e, 0, 0},
9210 	{0x3D, 0xf0, 0xf0, 1, 1},
9211 	{0x3E, 0, 0, 0, 0},
9212 	{0x3F, 0, 0, 0, 0},
9213 	{0x40, 0, 0, 0, 0},
9214 	{0x41, 0x3, 0x3, 0, 0},
9215 	{0x42, 0x3, 0x3, 0, 0},
9216 	{0x43, 0, 0, 0, 0},
9217 	{0x44, 0x1e, 0x1e, 0, 0},
9218 	{0x45, 0, 0, 0, 0},
9219 	{0x46, 0x6e, 0x6e, 0, 0},
9220 	{0x47, 0xf0, 0xf0, 1, 1},
9221 	{0x48, 0, 0, 0, 0},
9222 	{0x49, 0x2, 0x2, 0, 0},
9223 	{0x4A, 0xff, 0xff, 1, 1},
9224 	{0x4B, 0xc, 0xc, 0, 0},
9225 	{0x4C, 0, 0, 0, 0},
9226 	{0x4D, 0x38, 0x38, 0, 0},
9227 	{0x4E, 0x70, 0x70, 1, 1},
9228 	{0x4F, 0x2, 0x2, 0, 0},
9229 	{0x50, 0x88, 0x88, 0, 0},
9230 	{0x51, 0xc, 0xc, 0, 0},
9231 	{0x52, 0, 0, 0, 0},
9232 	{0x53, 0x8, 0x8, 0, 0},
9233 	{0x54, 0x70, 0x70, 1, 1},
9234 	{0x55, 0x2, 0x2, 0, 0},
9235 	{0x56, 0xff, 0xff, 1, 1},
9236 	{0x57, 0, 0, 0, 0},
9237 	{0x58, 0x83, 0x83, 0, 0},
9238 	{0x59, 0x77, 0x77, 1, 1},
9239 	{0x5A, 0, 0, 0, 0},
9240 	{0x5B, 0x2, 0x2, 0, 0},
9241 	{0x5C, 0x88, 0x88, 0, 0},
9242 	{0x5D, 0, 0, 0, 0},
9243 	{0x5E, 0x8, 0x8, 0, 0},
9244 	{0x5F, 0x77, 0x77, 1, 1},
9245 	{0x60, 0x1, 0x1, 0, 0},
9246 	{0x61, 0, 0, 0, 0},
9247 	{0x62, 0x7, 0x7, 0, 0},
9248 	{0x63, 0, 0, 0, 0},
9249 	{0x64, 0x7, 0x7, 0, 0},
9250 	{0x65, 0, 0, 0, 0},
9251 	{0x66, 0, 0, 0, 0},
9252 	{0x67, 0, 0, 1, 1},
9253 	{0x68, 0, 0, 0, 0},
9254 	{0x69, 0xa, 0xa, 0, 0},
9255 	{0x6A, 0, 0, 0, 0},
9256 	{0x6B, 0, 0, 0, 0},
9257 	{0x6C, 0, 0, 0, 0},
9258 	{0x6D, 0, 0, 0, 0},
9259 	{0x6E, 0, 0, 0, 0},
9260 	{0x6F, 0, 0, 0, 0},
9261 	{0x70, 0, 0, 0, 0},
9262 	{0x71, 0x2, 0x2, 0, 0},
9263 	{0x72, 0, 0, 0, 0},
9264 	{0x73, 0, 0, 0, 0},
9265 	{0x74, 0xe, 0xe, 0, 0},
9266 	{0x75, 0xe, 0xe, 0, 0},
9267 	{0x76, 0xe, 0xe, 0, 0},
9268 	{0x77, 0x13, 0x13, 0, 0},
9269 	{0x78, 0x13, 0x13, 0, 0},
9270 	{0x79, 0x1b, 0x1b, 0, 0},
9271 	{0x7A, 0x1b, 0x1b, 0, 0},
9272 	{0x7B, 0x55, 0x55, 0, 0},
9273 	{0x7C, 0x5b, 0x5b, 0, 0},
9274 	{0x7D, 0, 0, 0, 0},
9275 	{0x7E, 0, 0, 0, 0},
9276 	{0x7F, 0, 0, 0, 0},
9277 	{0x80, 0, 0, 0, 0},
9278 	{0x81, 0, 0, 0, 0},
9279 	{0x82, 0, 0, 0, 0},
9280 	{0x83, 0, 0, 0, 0},
9281 	{0x84, 0, 0, 0, 0},
9282 	{0x85, 0, 0, 0, 0},
9283 	{0x86, 0, 0, 0, 0},
9284 	{0x87, 0, 0, 0, 0},
9285 	{0x88, 0, 0, 0, 0},
9286 	{0x89, 0, 0, 0, 0},
9287 	{0x8A, 0, 0, 0, 0},
9288 	{0x8B, 0, 0, 0, 0},
9289 	{0x8C, 0, 0, 0, 0},
9290 	{0x8D, 0, 0, 0, 0},
9291 	{0x8E, 0, 0, 0, 0},
9292 	{0x8F, 0, 0, 0, 0},
9293 	{0x90, 0, 0, 0, 0},
9294 	{0x91, 0, 0, 0, 0},
9295 	{0x92, 0, 0, 0, 0},
9296 	{0x93, 0x70, 0x70, 0, 0},
9297 	{0x94, 0x70, 0x70, 0, 0},
9298 	{0x95, 0x71, 0x71, 1, 1},
9299 	{0x96, 0x71, 0x71, 1, 1},
9300 	{0x97, 0x72, 0x72, 1, 1},
9301 	{0x98, 0x73, 0x73, 1, 1},
9302 	{0x99, 0x74, 0x74, 1, 1},
9303 	{0x9A, 0x75, 0x75, 1, 1},
9304 	{0xFFFF, 0, 0, 0, 0}
9305 };
9306 
9307 static struct radio_regs regs_RX_2056_rev5[] = {
9308 	{0x02, 0, 0, 0, 0},
9309 	{0x03, 0, 0, 0, 0},
9310 	{0x04, 0, 0, 0, 0},
9311 	{0x05, 0, 0, 0, 0},
9312 	{0x06, 0, 0, 0, 0},
9313 	{0x07, 0, 0, 0, 0},
9314 	{0x08, 0, 0, 0, 0},
9315 	{0x09, 0, 0, 0, 0},
9316 	{0x0A, 0, 0, 0, 0},
9317 	{0x0B, 0, 0, 0, 0},
9318 	{0x0C, 0, 0, 0, 0},
9319 	{0x0D, 0, 0, 0, 0},
9320 	{0x0E, 0, 0, 0, 0},
9321 	{0x0F, 0, 0, 0, 0},
9322 	{0x10, 0, 0, 0, 0},
9323 	{0x11, 0, 0, 0, 0},
9324 	{0x12, 0, 0, 0, 0},
9325 	{0x13, 0, 0, 0, 0},
9326 	{0x14, 0, 0, 0, 0},
9327 	{0x15, 0, 0, 0, 0},
9328 	{0x16, 0, 0, 0, 0},
9329 	{0x17, 0, 0, 0, 0},
9330 	{0x18, 0, 0, 0, 0},
9331 	{0x19, 0, 0, 0, 0},
9332 	{0x1A, 0, 0, 0, 0},
9333 	{0x1B, 0, 0, 0, 0},
9334 	{0x1C, 0, 0, 0, 0},
9335 	{0x1D, 0, 0, 0, 0},
9336 	{0x1E, 0, 0, 0, 0},
9337 	{0x1F, 0, 0, 0, 0},
9338 	{0x20, 0x3, 0x3, 0, 0},
9339 	{0x21, 0, 0, 0, 0},
9340 	{0x22, 0, 0, 0, 0},
9341 	{0x23, 0x90, 0x90, 0, 0},
9342 	{0x24, 0x55, 0x55, 0, 0},
9343 	{0x25, 0x15, 0x15, 0, 0},
9344 	{0x26, 0x5, 0x5, 0, 0},
9345 	{0x27, 0x15, 0x15, 0, 0},
9346 	{0x28, 0x5, 0x5, 0, 0},
9347 	{0x29, 0x20, 0x20, 0, 0},
9348 	{0x2A, 0x11, 0x11, 0, 0},
9349 	{0x2B, 0x90, 0x90, 0, 0},
9350 	{0x2C, 0, 0, 0, 0},
9351 	{0x2D, 0x88, 0x88, 0, 0},
9352 	{0x2E, 0x32, 0x32, 0, 0},
9353 	{0x2F, 0x77, 0x77, 0, 0},
9354 	{0x30, 0x17, 0x17, 1, 1},
9355 	{0x31, 0xff, 0xff, 1, 1},
9356 	{0x32, 0x20, 0x20, 0, 0},
9357 	{0x33, 0, 0, 0, 0},
9358 	{0x34, 0x88, 0x88, 0, 0},
9359 	{0x35, 0x32, 0x32, 0, 0},
9360 	{0x36, 0x77, 0x77, 0, 0},
9361 	{0x37, 0x17, 0x17, 1, 1},
9362 	{0x38, 0xf0, 0xf0, 1, 1},
9363 	{0x39, 0x20, 0x20, 0, 0},
9364 	{0x3A, 0x8, 0x8, 0, 0},
9365 	{0x3B, 0x55, 0x55, 1, 1},
9366 	{0x3C, 0, 0, 0, 0},
9367 	{0x3D, 0x88, 0x88, 1, 1},
9368 	{0x3E, 0, 0, 0, 0},
9369 	{0x3F, 0, 0, 1, 1},
9370 	{0x40, 0x7, 0x7, 1, 1},
9371 	{0x41, 0x6, 0x6, 0, 0},
9372 	{0x42, 0x4, 0x4, 0, 0},
9373 	{0x43, 0, 0, 0, 0},
9374 	{0x44, 0x8, 0x8, 0, 0},
9375 	{0x45, 0x55, 0x55, 1, 1},
9376 	{0x46, 0, 0, 0, 0},
9377 	{0x47, 0x11, 0x11, 0, 0},
9378 	{0x48, 0, 0, 0, 0},
9379 	{0x49, 0, 0, 1, 1},
9380 	{0x4A, 0x7, 0x7, 0, 0},
9381 	{0x4B, 0x6, 0x6, 0, 0},
9382 	{0x4C, 0x4, 0x4, 0, 0},
9383 	{0x4D, 0, 0, 0, 0},
9384 	{0x4E, 0, 0, 0, 0},
9385 	{0x4F, 0x26, 0x26, 1, 1},
9386 	{0x50, 0x26, 0x26, 1, 1},
9387 	{0x51, 0xf, 0xf, 1, 1},
9388 	{0x52, 0xf, 0xf, 1, 1},
9389 	{0x53, 0x44, 0x44, 0, 0},
9390 	{0x54, 0, 0, 0, 0},
9391 	{0x55, 0, 0, 0, 0},
9392 	{0x56, 0x8, 0x8, 0, 0},
9393 	{0x57, 0x8, 0x8, 0, 0},
9394 	{0x58, 0x7, 0x7, 0, 0},
9395 	{0x59, 0x22, 0x22, 0, 0},
9396 	{0x5A, 0x22, 0x22, 0, 0},
9397 	{0x5B, 0x2, 0x2, 0, 0},
9398 	{0x5C, 0x4, 0x4, 1, 1},
9399 	{0x5D, 0x7, 0x7, 0, 0},
9400 	{0x5E, 0x55, 0x55, 0, 0},
9401 	{0x5F, 0x23, 0x23, 0, 0},
9402 	{0x60, 0x41, 0x41, 0, 0},
9403 	{0x61, 0x1, 0x1, 0, 0},
9404 	{0x62, 0xa, 0xa, 0, 0},
9405 	{0x63, 0, 0, 0, 0},
9406 	{0x64, 0, 0, 0, 0},
9407 	{0x65, 0, 0, 0, 0},
9408 	{0x66, 0, 0, 0, 0},
9409 	{0x67, 0, 0, 0, 0},
9410 	{0x68, 0, 0, 0, 0},
9411 	{0x69, 0, 0, 0, 0},
9412 	{0x6A, 0, 0, 0, 0},
9413 	{0x6B, 0xc, 0xc, 0, 0},
9414 	{0x6C, 0, 0, 0, 0},
9415 	{0x6D, 0, 0, 0, 0},
9416 	{0x6E, 0, 0, 0, 0},
9417 	{0x6F, 0, 0, 0, 0},
9418 	{0x70, 0, 0, 0, 0},
9419 	{0x71, 0, 0, 0, 0},
9420 	{0x72, 0x22, 0x22, 0, 0},
9421 	{0x73, 0x22, 0x22, 0, 0},
9422 	{0x74, 0, 0, 1, 1},
9423 	{0x75, 0xa, 0xa, 0, 0},
9424 	{0x76, 0x1, 0x1, 0, 0},
9425 	{0x77, 0x22, 0x22, 0, 0},
9426 	{0x78, 0x30, 0x30, 0, 0},
9427 	{0x79, 0, 0, 0, 0},
9428 	{0x7A, 0, 0, 0, 0},
9429 	{0x7B, 0, 0, 0, 0},
9430 	{0x7C, 0, 0, 0, 0},
9431 	{0x7D, 0, 0, 0, 0},
9432 	{0x7E, 0, 0, 0, 0},
9433 	{0x7F, 0, 0, 0, 0},
9434 	{0x80, 0, 0, 0, 0},
9435 	{0x81, 0, 0, 0, 0},
9436 	{0x82, 0, 0, 0, 0},
9437 	{0x83, 0, 0, 0, 0},
9438 	{0x84, 0, 0, 0, 0},
9439 	{0x85, 0, 0, 0, 0},
9440 	{0x86, 0, 0, 0, 0},
9441 	{0x87, 0, 0, 0, 0},
9442 	{0x88, 0, 0, 0, 0},
9443 	{0x89, 0, 0, 0, 0},
9444 	{0x8A, 0, 0, 0, 0},
9445 	{0x8B, 0, 0, 0, 0},
9446 	{0x8C, 0, 0, 0, 0},
9447 	{0x8D, 0, 0, 0, 0},
9448 	{0x8E, 0, 0, 0, 0},
9449 	{0x8F, 0, 0, 0, 0},
9450 	{0x90, 0, 0, 0, 0},
9451 	{0x91, 0, 0, 0, 0},
9452 	{0x92, 0, 0, 0, 0},
9453 	{0x93, 0, 0, 0, 0},
9454 	{0x94, 0, 0, 0, 0},
9455 	{0xFFFF, 0, 0, 0, 0}
9456 };
9457 
9458 static struct radio_regs regs_SYN_2056_rev6[] = {
9459 	{0x02, 0, 0, 0, 0},
9460 	{0x03, 0, 0, 0, 0},
9461 	{0x04, 0, 0, 0, 0},
9462 	{0x05, 0, 0, 0, 0},
9463 	{0x06, 0, 0, 0, 0},
9464 	{0x07, 0, 0, 0, 0},
9465 	{0x08, 0, 0, 0, 0},
9466 	{0x09, 0x1, 0x1, 0, 0},
9467 	{0x0A, 0, 0, 0, 0},
9468 	{0x0B, 0, 0, 0, 0},
9469 	{0x0C, 0, 0, 0, 0},
9470 	{0x0D, 0, 0, 0, 0},
9471 	{0x0E, 0, 0, 0, 0},
9472 	{0x0F, 0, 0, 0, 0},
9473 	{0x10, 0, 0, 0, 0},
9474 	{0x11, 0, 0, 0, 0},
9475 	{0x12, 0, 0, 0, 0},
9476 	{0x13, 0, 0, 0, 0},
9477 	{0x14, 0, 0, 0, 0},
9478 	{0x15, 0, 0, 0, 0},
9479 	{0x16, 0, 0, 0, 0},
9480 	{0x17, 0, 0, 0, 0},
9481 	{0x18, 0, 0, 0, 0},
9482 	{0x19, 0, 0, 0, 0},
9483 	{0x1A, 0, 0, 0, 0},
9484 	{0x1B, 0, 0, 0, 0},
9485 	{0x1C, 0, 0, 0, 0},
9486 	{0x1D, 0, 0, 0, 0},
9487 	{0x1E, 0, 0, 0, 0},
9488 	{0x1F, 0, 0, 0, 0},
9489 	{0x20, 0, 0, 0, 0},
9490 	{0x21, 0, 0, 0, 0},
9491 	{0x22, 0x60, 0x60, 0, 0},
9492 	{0x23, 0x6, 0x6, 0, 0},
9493 	{0x24, 0xc, 0xc, 0, 0},
9494 	{0x25, 0, 0, 0, 0},
9495 	{0x26, 0, 0, 0, 0},
9496 	{0x27, 0, 0, 0, 0},
9497 	{0x28, 0x1, 0x1, 0, 0},
9498 	{0x29, 0, 0, 0, 0},
9499 	{0x2A, 0, 0, 0, 0},
9500 	{0x2B, 0, 0, 0, 0},
9501 	{0x2C, 0, 0, 0, 0},
9502 	{0x2D, 0, 0, 0, 0},
9503 	{0x2E, 0, 0, 0, 0},
9504 	{0x2F, 0x1f, 0x1f, 0, 0},
9505 	{0x30, 0x15, 0x15, 0, 0},
9506 	{0x31, 0xf, 0xf, 0, 0},
9507 	{0x32, 0, 0, 0, 0},
9508 	{0x33, 0, 0, 0, 0},
9509 	{0x34, 0, 0, 0, 0},
9510 	{0x35, 0, 0, 0, 0},
9511 	{0x36, 0, 0, 0, 0},
9512 	{0x37, 0, 0, 0, 0},
9513 	{0x38, 0, 0, 0, 0},
9514 	{0x39, 0, 0, 0, 0},
9515 	{0x3A, 0, 0, 0, 0},
9516 	{0x3B, 0, 0, 0, 0},
9517 	{0x3C, 0x13, 0x13, 0, 0},
9518 	{0x3D, 0xf, 0xf, 0, 0},
9519 	{0x3E, 0x18, 0x18, 0, 0},
9520 	{0x3F, 0, 0, 0, 0},
9521 	{0x40, 0, 0, 0, 0},
9522 	{0x41, 0x20, 0x20, 0, 0},
9523 	{0x42, 0x20, 0x20, 0, 0},
9524 	{0x43, 0, 0, 0, 0},
9525 	{0x44, 0x77, 0x77, 0, 0},
9526 	{0x45, 0x7, 0x7, 0, 0},
9527 	{0x46, 0x1, 0x1, 0, 0},
9528 	{0x47, 0x4, 0x4, 0, 0},
9529 	{0x48, 0xf, 0xf, 0, 0},
9530 	{0x49, 0x30, 0x30, 0, 0},
9531 	{0x4A, 0x32, 0x32, 0, 0},
9532 	{0x4B, 0xd, 0xd, 0, 0},
9533 	{0x4C, 0xd, 0xd, 0, 0},
9534 	{0x4D, 0x4, 0x4, 0, 0},
9535 	{0x4E, 0x6, 0x6, 0, 0},
9536 	{0x4F, 0x1, 0x1, 0, 0},
9537 	{0x50, 0x1c, 0x1c, 0, 0},
9538 	{0x51, 0x2, 0x2, 0, 0},
9539 	{0x52, 0x2, 0x2, 0, 0},
9540 	{0x53, 0xf7, 0xf7, 1, 1},
9541 	{0x54, 0xb4, 0xb4, 0, 0},
9542 	{0x55, 0xd2, 0xd2, 0, 0},
9543 	{0x56, 0, 0, 0, 0},
9544 	{0x57, 0, 0, 0, 0},
9545 	{0x58, 0x4, 0x4, 0, 0},
9546 	{0x59, 0x96, 0x96, 0, 0},
9547 	{0x5A, 0x3e, 0x3e, 0, 0},
9548 	{0x5B, 0x3e, 0x3e, 0, 0},
9549 	{0x5C, 0x13, 0x13, 0, 0},
9550 	{0x5D, 0x2, 0x2, 0, 0},
9551 	{0x5E, 0, 0, 0, 0},
9552 	{0x5F, 0x7, 0x7, 0, 0},
9553 	{0x60, 0x7, 0x7, 1, 1},
9554 	{0x61, 0x8, 0x8, 0, 0},
9555 	{0x62, 0x3, 0x3, 0, 0},
9556 	{0x63, 0, 0, 0, 0},
9557 	{0x64, 0, 0, 0, 0},
9558 	{0x65, 0, 0, 0, 0},
9559 	{0x66, 0, 0, 0, 0},
9560 	{0x67, 0, 0, 0, 0},
9561 	{0x68, 0x40, 0x40, 0, 0},
9562 	{0x69, 0, 0, 0, 0},
9563 	{0x6A, 0, 0, 0, 0},
9564 	{0x6B, 0, 0, 0, 0},
9565 	{0x6C, 0, 0, 0, 0},
9566 	{0x6D, 0x1, 0x1, 0, 0},
9567 	{0x6E, 0, 0, 0, 0},
9568 	{0x6F, 0, 0, 0, 0},
9569 	{0x70, 0x60, 0x60, 0, 0},
9570 	{0x71, 0x66, 0x66, 0, 0},
9571 	{0x72, 0xc, 0xc, 0, 0},
9572 	{0x73, 0x66, 0x66, 0, 0},
9573 	{0x74, 0x8f, 0x8f, 1, 1},
9574 	{0x75, 0, 0, 0, 0},
9575 	{0x76, 0xcc, 0xcc, 0, 0},
9576 	{0x77, 0x1, 0x1, 0, 0},
9577 	{0x78, 0x66, 0x66, 0, 0},
9578 	{0x79, 0x66, 0x66, 0, 0},
9579 	{0x7A, 0, 0, 0, 0},
9580 	{0x7B, 0, 0, 0, 0},
9581 	{0x7C, 0, 0, 0, 0},
9582 	{0x7D, 0, 0, 0, 0},
9583 	{0x7E, 0, 0, 0, 0},
9584 	{0x7F, 0, 0, 0, 0},
9585 	{0x80, 0, 0, 0, 0},
9586 	{0x81, 0, 0, 0, 0},
9587 	{0x82, 0, 0, 0, 0},
9588 	{0x83, 0, 0, 0, 0},
9589 	{0x84, 0, 0, 0, 0},
9590 	{0x85, 0xff, 0xff, 0, 0},
9591 	{0x86, 0, 0, 0, 0},
9592 	{0x87, 0, 0, 0, 0},
9593 	{0x88, 0, 0, 0, 0},
9594 	{0x89, 0, 0, 0, 0},
9595 	{0x8A, 0, 0, 0, 0},
9596 	{0x8B, 0, 0, 0, 0},
9597 	{0x8C, 0, 0, 0, 0},
9598 	{0x8D, 0, 0, 0, 0},
9599 	{0x8E, 0, 0, 0, 0},
9600 	{0x8F, 0, 0, 0, 0},
9601 	{0x90, 0, 0, 0, 0},
9602 	{0x91, 0, 0, 0, 0},
9603 	{0x92, 0, 0, 0, 0},
9604 	{0x93, 0, 0, 0, 0},
9605 	{0x94, 0, 0, 0, 0},
9606 	{0x95, 0, 0, 0, 0},
9607 	{0x96, 0, 0, 0, 0},
9608 	{0x97, 0, 0, 0, 0},
9609 	{0x98, 0, 0, 0, 0},
9610 	{0x99, 0, 0, 0, 0},
9611 	{0x9A, 0, 0, 0, 0},
9612 	{0x9B, 0, 0, 0, 0},
9613 	{0x9C, 0, 0, 0, 0},
9614 	{0x9D, 0, 0, 0, 0},
9615 	{0x9E, 0, 0, 0, 0},
9616 	{0x9F, 0x6, 0x6, 0, 0},
9617 	{0xA0, 0x66, 0x66, 0, 0},
9618 	{0xA1, 0x66, 0x66, 0, 0},
9619 	{0xA2, 0x66, 0x66, 0, 0},
9620 	{0xA3, 0x66, 0x66, 0, 0},
9621 	{0xA4, 0x66, 0x66, 0, 0},
9622 	{0xA5, 0x66, 0x66, 0, 0},
9623 	{0xA6, 0x66, 0x66, 0, 0},
9624 	{0xA7, 0x66, 0x66, 0, 0},
9625 	{0xA8, 0x66, 0x66, 0, 0},
9626 	{0xA9, 0x66, 0x66, 0, 0},
9627 	{0xAA, 0x66, 0x66, 0, 0},
9628 	{0xAB, 0x66, 0x66, 0, 0},
9629 	{0xAC, 0x66, 0x66, 0, 0},
9630 	{0xAD, 0x66, 0x66, 0, 0},
9631 	{0xAE, 0x66, 0x66, 0, 0},
9632 	{0xAF, 0x66, 0x66, 0, 0},
9633 	{0xB0, 0x66, 0x66, 0, 0},
9634 	{0xB1, 0x66, 0x66, 0, 0},
9635 	{0xB2, 0x66, 0x66, 0, 0},
9636 	{0xB3, 0xa, 0xa, 0, 0},
9637 	{0xB4, 0, 0, 0, 0},
9638 	{0xB5, 0, 0, 0, 0},
9639 	{0xB6, 0, 0, 0, 0},
9640 	{0xFFFF, 0, 0, 0, 0}
9641 };
9642 
9643 static struct radio_regs regs_TX_2056_rev6[] = {
9644 	{0x02, 0, 0, 0, 0},
9645 	{0x03, 0, 0, 0, 0},
9646 	{0x04, 0, 0, 0, 0},
9647 	{0x05, 0, 0, 0, 0},
9648 	{0x06, 0, 0, 0, 0},
9649 	{0x07, 0, 0, 0, 0},
9650 	{0x08, 0, 0, 0, 0},
9651 	{0x09, 0, 0, 0, 0},
9652 	{0x0A, 0, 0, 0, 0},
9653 	{0x0B, 0, 0, 0, 0},
9654 	{0x0C, 0, 0, 0, 0},
9655 	{0x0D, 0, 0, 0, 0},
9656 	{0x0E, 0, 0, 0, 0},
9657 	{0x0F, 0, 0, 0, 0},
9658 	{0x10, 0, 0, 0, 0},
9659 	{0x11, 0, 0, 0, 0},
9660 	{0x12, 0, 0, 0, 0},
9661 	{0x13, 0, 0, 0, 0},
9662 	{0x14, 0, 0, 0, 0},
9663 	{0x15, 0, 0, 0, 0},
9664 	{0x16, 0, 0, 0, 0},
9665 	{0x17, 0, 0, 0, 0},
9666 	{0x18, 0, 0, 0, 0},
9667 	{0x19, 0, 0, 0, 0},
9668 	{0x1A, 0, 0, 0, 0},
9669 	{0x1B, 0, 0, 0, 0},
9670 	{0x1C, 0, 0, 0, 0},
9671 	{0x1D, 0, 0, 0, 0},
9672 	{0x1E, 0, 0, 0, 0},
9673 	{0x1F, 0, 0, 0, 0},
9674 	{0x20, 0, 0, 0, 0},
9675 	{0x21, 0x88, 0x88, 0, 0},
9676 	{0x22, 0x88, 0x88, 0, 0},
9677 	{0x23, 0x88, 0x88, 0, 0},
9678 	{0x24, 0x88, 0x88, 0, 0},
9679 	{0x25, 0xc, 0xc, 0, 0},
9680 	{0x26, 0, 0, 0, 0},
9681 	{0x27, 0x3, 0x3, 0, 0},
9682 	{0x28, 0, 0, 0, 0},
9683 	{0x29, 0x3, 0x3, 0, 0},
9684 	{0x2A, 0x37, 0x37, 0, 0},
9685 	{0x2B, 0x3, 0x3, 0, 0},
9686 	{0x2C, 0, 0, 0, 0},
9687 	{0x2D, 0, 0, 0, 0},
9688 	{0x2E, 0x1, 0x1, 0, 0},
9689 	{0x2F, 0x1, 0x1, 0, 0},
9690 	{0x30, 0, 0, 0, 0},
9691 	{0x31, 0, 0, 0, 0},
9692 	{0x32, 0, 0, 0, 0},
9693 	{0x33, 0x11, 0x11, 0, 0},
9694 	{0x34, 0xee, 0xee, 1, 1},
9695 	{0x35, 0, 0, 0, 0},
9696 	{0x36, 0, 0, 0, 0},
9697 	{0x37, 0x3, 0x3, 0, 0},
9698 	{0x38, 0x50, 0x50, 1, 1},
9699 	{0x39, 0, 0, 0, 0},
9700 	{0x3A, 0x50, 0x50, 1, 1},
9701 	{0x3B, 0, 0, 0, 0},
9702 	{0x3C, 0x6e, 0x6e, 0, 0},
9703 	{0x3D, 0xf0, 0xf0, 1, 1},
9704 	{0x3E, 0, 0, 0, 0},
9705 	{0x3F, 0, 0, 0, 0},
9706 	{0x40, 0, 0, 0, 0},
9707 	{0x41, 0x3, 0x3, 0, 0},
9708 	{0x42, 0x3, 0x3, 0, 0},
9709 	{0x43, 0, 0, 0, 0},
9710 	{0x44, 0x1e, 0x1e, 0, 0},
9711 	{0x45, 0, 0, 0, 0},
9712 	{0x46, 0x6e, 0x6e, 0, 0},
9713 	{0x47, 0xf0, 0xf0, 1, 1},
9714 	{0x48, 0, 0, 0, 0},
9715 	{0x49, 0x2, 0x2, 0, 0},
9716 	{0x4A, 0xff, 0xff, 1, 1},
9717 	{0x4B, 0xc, 0xc, 0, 0},
9718 	{0x4C, 0, 0, 0, 0},
9719 	{0x4D, 0x38, 0x38, 0, 0},
9720 	{0x4E, 0x70, 0x70, 1, 1},
9721 	{0x4F, 0x2, 0x2, 0, 0},
9722 	{0x50, 0x88, 0x88, 0, 0},
9723 	{0x51, 0xc, 0xc, 0, 0},
9724 	{0x52, 0, 0, 0, 0},
9725 	{0x53, 0x8, 0x8, 0, 0},
9726 	{0x54, 0x70, 0x70, 1, 1},
9727 	{0x55, 0x2, 0x2, 0, 0},
9728 	{0x56, 0xff, 0xff, 1, 1},
9729 	{0x57, 0, 0, 0, 0},
9730 	{0x58, 0x83, 0x83, 0, 0},
9731 	{0x59, 0x77, 0x77, 1, 1},
9732 	{0x5A, 0, 0, 0, 0},
9733 	{0x5B, 0x2, 0x2, 0, 0},
9734 	{0x5C, 0x88, 0x88, 0, 0},
9735 	{0x5D, 0, 0, 0, 0},
9736 	{0x5E, 0x8, 0x8, 0, 0},
9737 	{0x5F, 0x77, 0x77, 1, 1},
9738 	{0x60, 0x1, 0x1, 0, 0},
9739 	{0x61, 0, 0, 0, 0},
9740 	{0x62, 0x7, 0x7, 0, 0},
9741 	{0x63, 0, 0, 0, 0},
9742 	{0x64, 0x7, 0x7, 0, 0},
9743 	{0x65, 0, 0, 0, 0},
9744 	{0x66, 0, 0, 0, 0},
9745 	{0x67, 0, 0, 1, 1},
9746 	{0x68, 0, 0, 0, 0},
9747 	{0x69, 0xa, 0xa, 0, 0},
9748 	{0x6A, 0, 0, 0, 0},
9749 	{0x6B, 0, 0, 0, 0},
9750 	{0x6C, 0, 0, 0, 0},
9751 	{0x6D, 0, 0, 0, 0},
9752 	{0x6E, 0, 0, 0, 0},
9753 	{0x6F, 0, 0, 0, 0},
9754 	{0x70, 0, 0, 0, 0},
9755 	{0x71, 0x2, 0x2, 0, 0},
9756 	{0x72, 0, 0, 0, 0},
9757 	{0x73, 0, 0, 0, 0},
9758 	{0x74, 0xe, 0xe, 0, 0},
9759 	{0x75, 0xe, 0xe, 0, 0},
9760 	{0x76, 0xe, 0xe, 0, 0},
9761 	{0x77, 0x13, 0x13, 0, 0},
9762 	{0x78, 0x13, 0x13, 0, 0},
9763 	{0x79, 0x1b, 0x1b, 0, 0},
9764 	{0x7A, 0x1b, 0x1b, 0, 0},
9765 	{0x7B, 0x55, 0x55, 0, 0},
9766 	{0x7C, 0x5b, 0x5b, 0, 0},
9767 	{0x7D, 0x30, 0x30, 1, 1},
9768 	{0x7E, 0, 0, 0, 0},
9769 	{0x7F, 0, 0, 0, 0},
9770 	{0x80, 0, 0, 0, 0},
9771 	{0x81, 0, 0, 0, 0},
9772 	{0x82, 0, 0, 0, 0},
9773 	{0x83, 0, 0, 0, 0},
9774 	{0x84, 0, 0, 0, 0},
9775 	{0x85, 0, 0, 0, 0},
9776 	{0x86, 0, 0, 0, 0},
9777 	{0x87, 0, 0, 0, 0},
9778 	{0x88, 0, 0, 0, 0},
9779 	{0x89, 0, 0, 0, 0},
9780 	{0x8A, 0, 0, 0, 0},
9781 	{0x8B, 0, 0, 0, 0},
9782 	{0x8C, 0, 0, 0, 0},
9783 	{0x8D, 0, 0, 0, 0},
9784 	{0x8E, 0, 0, 0, 0},
9785 	{0x8F, 0, 0, 0, 0},
9786 	{0x90, 0, 0, 0, 0},
9787 	{0x91, 0, 0, 0, 0},
9788 	{0x92, 0, 0, 0, 0},
9789 	{0x93, 0x70, 0x70, 0, 0},
9790 	{0x94, 0x70, 0x70, 0, 0},
9791 	{0x95, 0x70, 0x70, 0, 0},
9792 	{0x96, 0x70, 0x70, 0, 0},
9793 	{0x97, 0x70, 0x70, 0, 0},
9794 	{0x98, 0x70, 0x70, 0, 0},
9795 	{0x99, 0x70, 0x70, 0, 0},
9796 	{0x9A, 0x70, 0x70, 0, 0},
9797 	{0xFFFF, 0, 0, 0, 0}
9798 };
9799 
9800 static struct radio_regs regs_RX_2056_rev6[] = {
9801 	{0x02, 0, 0, 0, 0},
9802 	{0x03, 0, 0, 0, 0},
9803 	{0x04, 0, 0, 0, 0},
9804 	{0x05, 0, 0, 0, 0},
9805 	{0x06, 0, 0, 0, 0},
9806 	{0x07, 0, 0, 0, 0},
9807 	{0x08, 0, 0, 0, 0},
9808 	{0x09, 0, 0, 0, 0},
9809 	{0x0A, 0, 0, 0, 0},
9810 	{0x0B, 0, 0, 0, 0},
9811 	{0x0C, 0, 0, 0, 0},
9812 	{0x0D, 0, 0, 0, 0},
9813 	{0x0E, 0, 0, 0, 0},
9814 	{0x0F, 0, 0, 0, 0},
9815 	{0x10, 0, 0, 0, 0},
9816 	{0x11, 0, 0, 0, 0},
9817 	{0x12, 0, 0, 0, 0},
9818 	{0x13, 0, 0, 0, 0},
9819 	{0x14, 0, 0, 0, 0},
9820 	{0x15, 0, 0, 0, 0},
9821 	{0x16, 0, 0, 0, 0},
9822 	{0x17, 0, 0, 0, 0},
9823 	{0x18, 0, 0, 0, 0},
9824 	{0x19, 0, 0, 0, 0},
9825 	{0x1A, 0, 0, 0, 0},
9826 	{0x1B, 0, 0, 0, 0},
9827 	{0x1C, 0, 0, 0, 0},
9828 	{0x1D, 0, 0, 0, 0},
9829 	{0x1E, 0, 0, 0, 0},
9830 	{0x1F, 0, 0, 0, 0},
9831 	{0x20, 0x3, 0x3, 0, 0},
9832 	{0x21, 0, 0, 0, 0},
9833 	{0x22, 0, 0, 0, 0},
9834 	{0x23, 0x90, 0x90, 0, 0},
9835 	{0x24, 0x55, 0x55, 0, 0},
9836 	{0x25, 0x15, 0x15, 0, 0},
9837 	{0x26, 0x5, 0x5, 0, 0},
9838 	{0x27, 0x15, 0x15, 0, 0},
9839 	{0x28, 0x5, 0x5, 0, 0},
9840 	{0x29, 0x20, 0x20, 0, 0},
9841 	{0x2A, 0x11, 0x11, 0, 0},
9842 	{0x2B, 0x90, 0x90, 0, 0},
9843 	{0x2C, 0, 0, 0, 0},
9844 	{0x2D, 0x88, 0x88, 0, 0},
9845 	{0x2E, 0x32, 0x32, 0, 0},
9846 	{0x2F, 0x77, 0x77, 0, 0},
9847 	{0x30, 0x17, 0x17, 1, 1},
9848 	{0x31, 0xff, 0xff, 1, 1},
9849 	{0x32, 0x20, 0x20, 0, 0},
9850 	{0x33, 0, 0, 0, 0},
9851 	{0x34, 0x88, 0x88, 0, 0},
9852 	{0x35, 0x32, 0x32, 0, 0},
9853 	{0x36, 0x77, 0x77, 0, 0},
9854 	{0x37, 0x17, 0x17, 1, 1},
9855 	{0x38, 0xf0, 0xf0, 1, 1},
9856 	{0x39, 0x20, 0x20, 0, 0},
9857 	{0x3A, 0x8, 0x8, 0, 0},
9858 	{0x3B, 0x55, 0x55, 1, 1},
9859 	{0x3C, 0, 0, 0, 0},
9860 	{0x3D, 0x88, 0x88, 1, 1},
9861 	{0x3E, 0, 0, 0, 0},
9862 	{0x3F, 0x44, 0x44, 0, 0},
9863 	{0x40, 0x7, 0x7, 1, 1},
9864 	{0x41, 0x6, 0x6, 0, 0},
9865 	{0x42, 0x4, 0x4, 0, 0},
9866 	{0x43, 0, 0, 0, 0},
9867 	{0x44, 0x8, 0x8, 0, 0},
9868 	{0x45, 0x55, 0x55, 1, 1},
9869 	{0x46, 0, 0, 0, 0},
9870 	{0x47, 0x11, 0x11, 0, 0},
9871 	{0x48, 0, 0, 0, 0},
9872 	{0x49, 0x44, 0x44, 0, 0},
9873 	{0x4A, 0x7, 0x7, 0, 0},
9874 	{0x4B, 0x6, 0x6, 0, 0},
9875 	{0x4C, 0x4, 0x4, 0, 0},
9876 	{0x4D, 0, 0, 0, 0},
9877 	{0x4E, 0, 0, 0, 0},
9878 	{0x4F, 0x26, 0x26, 1, 1},
9879 	{0x50, 0x26, 0x26, 1, 1},
9880 	{0x51, 0xf, 0xf, 1, 1},
9881 	{0x52, 0xf, 0xf, 1, 1},
9882 	{0x53, 0x44, 0x44, 0, 0},
9883 	{0x54, 0, 0, 0, 0},
9884 	{0x55, 0, 0, 0, 0},
9885 	{0x56, 0x8, 0x8, 0, 0},
9886 	{0x57, 0x8, 0x8, 0, 0},
9887 	{0x58, 0x7, 0x7, 0, 0},
9888 	{0x59, 0x22, 0x22, 0, 0},
9889 	{0x5A, 0x22, 0x22, 0, 0},
9890 	{0x5B, 0x2, 0x2, 0, 0},
9891 	{0x5C, 0x4, 0x4, 1, 1},
9892 	{0x5D, 0x7, 0x7, 0, 0},
9893 	{0x5E, 0x55, 0x55, 0, 0},
9894 	{0x5F, 0x23, 0x23, 0, 0},
9895 	{0x60, 0x41, 0x41, 0, 0},
9896 	{0x61, 0x1, 0x1, 0, 0},
9897 	{0x62, 0xa, 0xa, 0, 0},
9898 	{0x63, 0, 0, 0, 0},
9899 	{0x64, 0, 0, 0, 0},
9900 	{0x65, 0, 0, 0, 0},
9901 	{0x66, 0, 0, 0, 0},
9902 	{0x67, 0, 0, 0, 0},
9903 	{0x68, 0, 0, 0, 0},
9904 	{0x69, 0, 0, 0, 0},
9905 	{0x6A, 0, 0, 0, 0},
9906 	{0x6B, 0xc, 0xc, 0, 0},
9907 	{0x6C, 0, 0, 0, 0},
9908 	{0x6D, 0, 0, 0, 0},
9909 	{0x6E, 0, 0, 0, 0},
9910 	{0x6F, 0, 0, 0, 0},
9911 	{0x70, 0, 0, 0, 0},
9912 	{0x71, 0, 0, 0, 0},
9913 	{0x72, 0x22, 0x22, 0, 0},
9914 	{0x73, 0x22, 0x22, 0, 0},
9915 	{0x74, 0, 0, 1, 1},
9916 	{0x75, 0xa, 0xa, 0, 0},
9917 	{0x76, 0x1, 0x1, 0, 0},
9918 	{0x77, 0x22, 0x22, 0, 0},
9919 	{0x78, 0x30, 0x30, 0, 0},
9920 	{0x79, 0, 0, 0, 0},
9921 	{0x7A, 0, 0, 0, 0},
9922 	{0x7B, 0, 0, 0, 0},
9923 	{0x7C, 0, 0, 0, 0},
9924 	{0x7D, 0x5, 0x5, 1, 1},
9925 	{0x7E, 0, 0, 0, 0},
9926 	{0x7F, 0, 0, 0, 0},
9927 	{0x80, 0, 0, 0, 0},
9928 	{0x81, 0, 0, 0, 0},
9929 	{0x82, 0, 0, 0, 0},
9930 	{0x83, 0, 0, 0, 0},
9931 	{0x84, 0, 0, 0, 0},
9932 	{0x85, 0, 0, 0, 0},
9933 	{0x86, 0, 0, 0, 0},
9934 	{0x87, 0, 0, 0, 0},
9935 	{0x88, 0, 0, 0, 0},
9936 	{0x89, 0, 0, 0, 0},
9937 	{0x8A, 0, 0, 0, 0},
9938 	{0x8B, 0, 0, 0, 0},
9939 	{0x8C, 0, 0, 0, 0},
9940 	{0x8D, 0, 0, 0, 0},
9941 	{0x8E, 0, 0, 0, 0},
9942 	{0x8F, 0, 0, 0, 0},
9943 	{0x90, 0, 0, 0, 0},
9944 	{0x91, 0, 0, 0, 0},
9945 	{0x92, 0, 0, 0, 0},
9946 	{0x93, 0, 0, 0, 0},
9947 	{0x94, 0, 0, 0, 0},
9948 	{0xFFFF, 0, 0, 0, 0}
9949 };
9950 
9951 static struct radio_regs regs_SYN_2056_rev7[] = {
9952 	{0x02, 0, 0, 0, 0},
9953 	{0x03, 0, 0, 0, 0},
9954 	{0x04, 0, 0, 0, 0},
9955 	{0x05, 0, 0, 0, 0},
9956 	{0x06, 0, 0, 0, 0},
9957 	{0x07, 0, 0, 0, 0},
9958 	{0x08, 0, 0, 0, 0},
9959 	{0x09, 0x1, 0x1, 0, 0},
9960 	{0x0A, 0, 0, 0, 0},
9961 	{0x0B, 0, 0, 0, 0},
9962 	{0x0C, 0, 0, 0, 0},
9963 	{0x0D, 0, 0, 0, 0},
9964 	{0x0E, 0, 0, 0, 0},
9965 	{0x0F, 0, 0, 0, 0},
9966 	{0x10, 0, 0, 0, 0},
9967 	{0x11, 0, 0, 0, 0},
9968 	{0x12, 0, 0, 0, 0},
9969 	{0x13, 0, 0, 0, 0},
9970 	{0x14, 0, 0, 0, 0},
9971 	{0x15, 0, 0, 0, 0},
9972 	{0x16, 0, 0, 0, 0},
9973 	{0x17, 0, 0, 0, 0},
9974 	{0x18, 0, 0, 0, 0},
9975 	{0x19, 0, 0, 0, 0},
9976 	{0x1A, 0, 0, 0, 0},
9977 	{0x1B, 0, 0, 0, 0},
9978 	{0x1C, 0, 0, 0, 0},
9979 	{0x1D, 0, 0, 0, 0},
9980 	{0x1E, 0, 0, 0, 0},
9981 	{0x1F, 0, 0, 0, 0},
9982 	{0x20, 0, 0, 0, 0},
9983 	{0x21, 0, 0, 0, 0},
9984 	{0x22, 0x60, 0x60, 0, 0},
9985 	{0x23, 0x6, 0x6, 0, 0},
9986 	{0x24, 0xc, 0xc, 0, 0},
9987 	{0x25, 0, 0, 0, 0},
9988 	{0x26, 0, 0, 0, 0},
9989 	{0x27, 0, 0, 0, 0},
9990 	{0x28, 0x1, 0x1, 0, 0},
9991 	{0x29, 0, 0, 0, 0},
9992 	{0x2A, 0, 0, 0, 0},
9993 	{0x2B, 0, 0, 0, 0},
9994 	{0x2C, 0, 0, 0, 0},
9995 	{0x2D, 0, 0, 0, 0},
9996 	{0x2E, 0, 0, 0, 0},
9997 	{0x2F, 0x1f, 0x1f, 0, 0},
9998 	{0x30, 0x15, 0x15, 0, 0},
9999 	{0x31, 0xf, 0xf, 0, 0},
10000 	{0x32, 0, 0, 0, 0},
10001 	{0x33, 0, 0, 0, 0},
10002 	{0x34, 0, 0, 0, 0},
10003 	{0x35, 0, 0, 0, 0},
10004 	{0x36, 0, 0, 0, 0},
10005 	{0x37, 0, 0, 0, 0},
10006 	{0x38, 0, 0, 0, 0},
10007 	{0x39, 0, 0, 0, 0},
10008 	{0x3A, 0, 0, 0, 0},
10009 	{0x3B, 0, 0, 0, 0},
10010 	{0x3C, 0x13, 0x13, 0, 0},
10011 	{0x3D, 0xf, 0xf, 0, 0},
10012 	{0x3E, 0x18, 0x18, 0, 0},
10013 	{0x3F, 0, 0, 0, 0},
10014 	{0x40, 0, 0, 0, 0},
10015 	{0x41, 0x20, 0x20, 0, 0},
10016 	{0x42, 0x20, 0x20, 0, 0},
10017 	{0x43, 0, 0, 0, 0},
10018 	{0x44, 0x77, 0x77, 0, 0},
10019 	{0x45, 0x7, 0x7, 0, 0},
10020 	{0x46, 0x1, 0x1, 0, 0},
10021 	{0x47, 0x4, 0x4, 0, 0},
10022 	{0x48, 0xf, 0xf, 0, 0},
10023 	{0x49, 0x30, 0x30, 0, 0},
10024 	{0x4A, 0x32, 0x32, 0, 0},
10025 	{0x4B, 0xd, 0xd, 0, 0},
10026 	{0x4C, 0xd, 0xd, 0, 0},
10027 	{0x4D, 0x4, 0x4, 0, 0},
10028 	{0x4E, 0x6, 0x6, 0, 0},
10029 	{0x4F, 0x1, 0x1, 0, 0},
10030 	{0x50, 0x1c, 0x1c, 0, 0},
10031 	{0x51, 0x2, 0x2, 0, 0},
10032 	{0x52, 0x2, 0x2, 0, 0},
10033 	{0x53, 0xf7, 0xf7, 1, 1},
10034 	{0x54, 0xb4, 0xb4, 0, 0},
10035 	{0x55, 0xd2, 0xd2, 0, 0},
10036 	{0x56, 0, 0, 0, 0},
10037 	{0x57, 0, 0, 0, 0},
10038 	{0x58, 0x4, 0x4, 0, 0},
10039 	{0x59, 0x96, 0x96, 0, 0},
10040 	{0x5A, 0x3e, 0x3e, 0, 0},
10041 	{0x5B, 0x3e, 0x3e, 0, 0},
10042 	{0x5C, 0x13, 0x13, 0, 0},
10043 	{0x5D, 0x2, 0x2, 0, 0},
10044 	{0x5E, 0, 0, 0, 0},
10045 	{0x5F, 0x7, 0x7, 0, 0},
10046 	{0x60, 0x7, 0x7, 1, 1},
10047 	{0x61, 0x8, 0x8, 0, 0},
10048 	{0x62, 0x3, 0x3, 0, 0},
10049 	{0x63, 0, 0, 0, 0},
10050 	{0x64, 0, 0, 0, 0},
10051 	{0x65, 0, 0, 0, 0},
10052 	{0x66, 0, 0, 0, 0},
10053 	{0x67, 0, 0, 0, 0},
10054 	{0x68, 0x40, 0x40, 0, 0},
10055 	{0x69, 0, 0, 0, 0},
10056 	{0x6A, 0, 0, 0, 0},
10057 	{0x6B, 0, 0, 0, 0},
10058 	{0x6C, 0, 0, 0, 0},
10059 	{0x6D, 0x1, 0x1, 0, 0},
10060 	{0x6E, 0, 0, 0, 0},
10061 	{0x6F, 0, 0, 0, 0},
10062 	{0x70, 0x60, 0x60, 0, 0},
10063 	{0x71, 0x66, 0x66, 0, 0},
10064 	{0x72, 0xc, 0xc, 0, 0},
10065 	{0x73, 0x66, 0x66, 0, 0},
10066 	{0x74, 0x8f, 0x8f, 1, 1},
10067 	{0x75, 0, 0, 0, 0},
10068 	{0x76, 0xcc, 0xcc, 0, 0},
10069 	{0x77, 0x1, 0x1, 0, 0},
10070 	{0x78, 0x66, 0x66, 0, 0},
10071 	{0x79, 0x66, 0x66, 0, 0},
10072 	{0x7A, 0, 0, 0, 0},
10073 	{0x7B, 0, 0, 0, 0},
10074 	{0x7C, 0, 0, 0, 0},
10075 	{0x7D, 0, 0, 0, 0},
10076 	{0x7E, 0, 0, 0, 0},
10077 	{0x7F, 0, 0, 0, 0},
10078 	{0x80, 0, 0, 0, 0},
10079 	{0x81, 0, 0, 0, 0},
10080 	{0x82, 0, 0, 0, 0},
10081 	{0x83, 0, 0, 0, 0},
10082 	{0x84, 0, 0, 0, 0},
10083 	{0x85, 0xff, 0xff, 0, 0},
10084 	{0x86, 0, 0, 0, 0},
10085 	{0x87, 0, 0, 0, 0},
10086 	{0x88, 0, 0, 0, 0},
10087 	{0x89, 0, 0, 0, 0},
10088 	{0x8A, 0, 0, 0, 0},
10089 	{0x8B, 0, 0, 0, 0},
10090 	{0x8C, 0, 0, 0, 0},
10091 	{0x8D, 0, 0, 0, 0},
10092 	{0x8E, 0, 0, 0, 0},
10093 	{0x8F, 0, 0, 0, 0},
10094 	{0x90, 0, 0, 0, 0},
10095 	{0x91, 0, 0, 0, 0},
10096 	{0x92, 0, 0, 0, 0},
10097 	{0x93, 0, 0, 0, 0},
10098 	{0x94, 0, 0, 0, 0},
10099 	{0x95, 0, 0, 0, 0},
10100 	{0x96, 0, 0, 0, 0},
10101 	{0x97, 0, 0, 0, 0},
10102 	{0x98, 0, 0, 0, 0},
10103 	{0x99, 0, 0, 0, 0},
10104 	{0x9A, 0, 0, 0, 0},
10105 	{0x9B, 0, 0, 0, 0},
10106 	{0x9C, 0, 0, 0, 0},
10107 	{0x9D, 0, 0, 0, 0},
10108 	{0x9E, 0, 0, 0, 0},
10109 	{0x9F, 0x6, 0x6, 0, 0},
10110 	{0xA0, 0x66, 0x66, 0, 0},
10111 	{0xA1, 0x66, 0x66, 0, 0},
10112 	{0xA2, 0x66, 0x66, 0, 0},
10113 	{0xA3, 0x66, 0x66, 0, 0},
10114 	{0xA4, 0x66, 0x66, 0, 0},
10115 	{0xA5, 0x66, 0x66, 0, 0},
10116 	{0xA6, 0x66, 0x66, 0, 0},
10117 	{0xA7, 0x66, 0x66, 0, 0},
10118 	{0xA8, 0x66, 0x66, 0, 0},
10119 	{0xA9, 0x66, 0x66, 0, 0},
10120 	{0xAA, 0x66, 0x66, 0, 0},
10121 	{0xAB, 0x66, 0x66, 0, 0},
10122 	{0xAC, 0x66, 0x66, 0, 0},
10123 	{0xAD, 0x66, 0x66, 0, 0},
10124 	{0xAE, 0x66, 0x66, 0, 0},
10125 	{0xAF, 0x66, 0x66, 0, 0},
10126 	{0xB0, 0x66, 0x66, 0, 0},
10127 	{0xB1, 0x66, 0x66, 0, 0},
10128 	{0xB2, 0x66, 0x66, 0, 0},
10129 	{0xB3, 0xa, 0xa, 0, 0},
10130 	{0xB4, 0, 0, 0, 0},
10131 	{0xB5, 0, 0, 0, 0},
10132 	{0xB6, 0, 0, 0, 0},
10133 	{0xFFFF, 0, 0, 0, 0},
10134 };
10135 
10136 static struct radio_regs regs_TX_2056_rev7[] = {
10137 	{0x02, 0, 0, 0, 0},
10138 	{0x03, 0, 0, 0, 0},
10139 	{0x04, 0, 0, 0, 0},
10140 	{0x05, 0, 0, 0, 0},
10141 	{0x06, 0, 0, 0, 0},
10142 	{0x07, 0, 0, 0, 0},
10143 	{0x08, 0, 0, 0, 0},
10144 	{0x09, 0, 0, 0, 0},
10145 	{0x0A, 0, 0, 0, 0},
10146 	{0x0B, 0, 0, 0, 0},
10147 	{0x0C, 0, 0, 0, 0},
10148 	{0x0D, 0, 0, 0, 0},
10149 	{0x0E, 0, 0, 0, 0},
10150 	{0x0F, 0, 0, 0, 0},
10151 	{0x10, 0, 0, 0, 0},
10152 	{0x11, 0, 0, 0, 0},
10153 	{0x12, 0, 0, 0, 0},
10154 	{0x13, 0, 0, 0, 0},
10155 	{0x14, 0, 0, 0, 0},
10156 	{0x15, 0, 0, 0, 0},
10157 	{0x16, 0, 0, 0, 0},
10158 	{0x17, 0, 0, 0, 0},
10159 	{0x18, 0, 0, 0, 0},
10160 	{0x19, 0, 0, 0, 0},
10161 	{0x1A, 0, 0, 0, 0},
10162 	{0x1B, 0, 0, 0, 0},
10163 	{0x1C, 0, 0, 0, 0},
10164 	{0x1D, 0, 0, 0, 0},
10165 	{0x1E, 0, 0, 0, 0},
10166 	{0x1F, 0, 0, 0, 0},
10167 	{0x20, 0, 0, 0, 0},
10168 	{0x21, 0x88, 0x88, 0, 0},
10169 	{0x22, 0x88, 0x88, 0, 0},
10170 	{0x23, 0x88, 0x88, 0, 0},
10171 	{0x24, 0x88, 0x88, 0, 0},
10172 	{0x25, 0xc, 0xc, 0, 0},
10173 	{0x26, 0, 0, 0, 0},
10174 	{0x27, 0x3, 0x3, 0, 0},
10175 	{0x28, 0, 0, 0, 0},
10176 	{0x29, 0x3, 0x3, 0, 0},
10177 	{0x2A, 0x37, 0x37, 0, 0},
10178 	{0x2B, 0x3, 0x3, 0, 0},
10179 	{0x2C, 0, 0, 0, 0},
10180 	{0x2D, 0, 0, 0, 0},
10181 	{0x2E, 0x1, 0x1, 0, 0},
10182 	{0x2F, 0x1, 0x1, 0, 0},
10183 	{0x30, 0, 0, 0, 0},
10184 	{0x31, 0, 0, 0, 0},
10185 	{0x32, 0, 0, 0, 0},
10186 	{0x33, 0x11, 0x11, 0, 0},
10187 	{0x34, 0xee, 0xee, 1, 1},
10188 	{0x35, 0, 0, 0, 0},
10189 	{0x36, 0, 0, 0, 0},
10190 	{0x37, 0x3, 0x3, 0, 0},
10191 	{0x38, 0x50, 0x50, 1, 1},
10192 	{0x39, 0, 0, 0, 0},
10193 	{0x3A, 0x50, 0x50, 1, 1},
10194 	{0x3B, 0, 0, 0, 0},
10195 	{0x3C, 0x6e, 0x6e, 0, 0},
10196 	{0x3D, 0xf0, 0xf0, 1, 1},
10197 	{0x3E, 0, 0, 0, 0},
10198 	{0x3F, 0, 0, 0, 0},
10199 	{0x40, 0, 0, 0, 0},
10200 	{0x41, 0x3, 0x3, 0, 0},
10201 	{0x42, 0x3, 0x3, 0, 0},
10202 	{0x43, 0, 0, 0, 0},
10203 	{0x44, 0x1e, 0x1e, 0, 0},
10204 	{0x45, 0, 0, 0, 0},
10205 	{0x46, 0x6e, 0x6e, 0, 0},
10206 	{0x47, 0xf0, 0xf0, 1, 1},
10207 	{0x48, 0, 0, 0, 0},
10208 	{0x49, 0x2, 0x2, 0, 0},
10209 	{0x4A, 0xff, 0xff, 1, 1},
10210 	{0x4B, 0xc, 0xc, 0, 0},
10211 	{0x4C, 0, 0, 0, 0},
10212 	{0x4D, 0x38, 0x38, 0, 0},
10213 	{0x4E, 0x70, 0x70, 1, 1},
10214 	{0x4F, 0x2, 0x2, 0, 0},
10215 	{0x50, 0x88, 0x88, 0, 0},
10216 	{0x51, 0xc, 0xc, 0, 0},
10217 	{0x52, 0, 0, 0, 0},
10218 	{0x53, 0x8, 0x8, 0, 0},
10219 	{0x54, 0x70, 0x70, 1, 1},
10220 	{0x55, 0x2, 0x2, 0, 0},
10221 	{0x56, 0xff, 0xff, 1, 1},
10222 	{0x57, 0, 0, 0, 0},
10223 	{0x58, 0x83, 0x83, 0, 0},
10224 	{0x59, 0x77, 0x77, 1, 1},
10225 	{0x5A, 0, 0, 0, 0},
10226 	{0x5B, 0x2, 0x2, 0, 0},
10227 	{0x5C, 0x88, 0x88, 0, 0},
10228 	{0x5D, 0, 0, 0, 0},
10229 	{0x5E, 0x8, 0x8, 0, 0},
10230 	{0x5F, 0x77, 0x77, 1, 1},
10231 	{0x60, 0x1, 0x1, 0, 0},
10232 	{0x61, 0, 0, 0, 0},
10233 	{0x62, 0x7, 0x7, 0, 0},
10234 	{0x63, 0, 0, 0, 0},
10235 	{0x64, 0x7, 0x7, 0, 0},
10236 	{0x65, 0, 0, 0, 0},
10237 	{0x66, 0, 0, 0, 0},
10238 	{0x67, 0, 0, 1, 1},
10239 	{0x68, 0, 0, 0, 0},
10240 	{0x69, 0xa, 0xa, 0, 0},
10241 	{0x6A, 0, 0, 0, 0},
10242 	{0x6B, 0, 0, 0, 0},
10243 	{0x6C, 0, 0, 0, 0},
10244 	{0x6D, 0, 0, 0, 0},
10245 	{0x6E, 0, 0, 0, 0},
10246 	{0x6F, 0, 0, 0, 0},
10247 	{0x70, 0, 0, 0, 0},
10248 	{0x71, 0x2, 0x2, 0, 0},
10249 	{0x72, 0, 0, 0, 0},
10250 	{0x73, 0, 0, 0, 0},
10251 	{0x74, 0xe, 0xe, 0, 0},
10252 	{0x75, 0xe, 0xe, 0, 0},
10253 	{0x76, 0xe, 0xe, 0, 0},
10254 	{0x77, 0x13, 0x13, 0, 0},
10255 	{0x78, 0x13, 0x13, 0, 0},
10256 	{0x79, 0x1b, 0x1b, 0, 0},
10257 	{0x7A, 0x1b, 0x1b, 0, 0},
10258 	{0x7B, 0x55, 0x55, 0, 0},
10259 	{0x7C, 0x5b, 0x5b, 0, 0},
10260 	{0x7D, 0x30, 0x30, 1, 1},
10261 	{0x7E, 0, 0, 0, 0},
10262 	{0x7F, 0, 0, 0, 0},
10263 	{0x80, 0, 0, 0, 0},
10264 	{0x81, 0, 0, 0, 0},
10265 	{0x82, 0, 0, 0, 0},
10266 	{0x83, 0, 0, 0, 0},
10267 	{0x84, 0, 0, 0, 0},
10268 	{0x85, 0, 0, 0, 0},
10269 	{0x86, 0, 0, 0, 0},
10270 	{0x87, 0, 0, 0, 0},
10271 	{0x88, 0, 0, 0, 0},
10272 	{0x89, 0, 0, 0, 0},
10273 	{0x8A, 0, 0, 0, 0},
10274 	{0x8B, 0, 0, 0, 0},
10275 	{0x8C, 0, 0, 0, 0},
10276 	{0x8D, 0, 0, 0, 0},
10277 	{0x8E, 0, 0, 0, 0},
10278 	{0x8F, 0, 0, 0, 0},
10279 	{0x90, 0, 0, 0, 0},
10280 	{0x91, 0, 0, 0, 0},
10281 	{0x92, 0, 0, 0, 0},
10282 	{0x93, 0x70, 0x70, 0, 0},
10283 	{0x94, 0x70, 0x70, 0, 0},
10284 	{0x95, 0x71, 0x71, 1, 1},
10285 	{0x96, 0x71, 0x71, 1, 1},
10286 	{0x97, 0x72, 0x72, 1, 1},
10287 	{0x98, 0x73, 0x73, 1, 1},
10288 	{0x99, 0x74, 0x74, 1, 1},
10289 	{0x9A, 0x75, 0x75, 1, 1},
10290 	{0xFFFF, 0, 0, 0, 0},
10291 };
10292 
10293 static struct radio_regs regs_RX_2056_rev7[] = {
10294 	{0x02, 0, 0, 0, 0},
10295 	{0x03, 0, 0, 0, 0},
10296 	{0x04, 0, 0, 0, 0},
10297 	{0x05, 0, 0, 0, 0},
10298 	{0x06, 0, 0, 0, 0},
10299 	{0x07, 0, 0, 0, 0},
10300 	{0x08, 0, 0, 0, 0},
10301 	{0x09, 0, 0, 0, 0},
10302 	{0x0A, 0, 0, 0, 0},
10303 	{0x0B, 0, 0, 0, 0},
10304 	{0x0C, 0, 0, 0, 0},
10305 	{0x0D, 0, 0, 0, 0},
10306 	{0x0E, 0, 0, 0, 0},
10307 	{0x0F, 0, 0, 0, 0},
10308 	{0x10, 0, 0, 0, 0},
10309 	{0x11, 0, 0, 0, 0},
10310 	{0x12, 0, 0, 0, 0},
10311 	{0x13, 0, 0, 0, 0},
10312 	{0x14, 0, 0, 0, 0},
10313 	{0x15, 0, 0, 0, 0},
10314 	{0x16, 0, 0, 0, 0},
10315 	{0x17, 0, 0, 0, 0},
10316 	{0x18, 0, 0, 0, 0},
10317 	{0x19, 0, 0, 0, 0},
10318 	{0x1A, 0, 0, 0, 0},
10319 	{0x1B, 0, 0, 0, 0},
10320 	{0x1C, 0, 0, 0, 0},
10321 	{0x1D, 0, 0, 0, 0},
10322 	{0x1E, 0, 0, 0, 0},
10323 	{0x1F, 0, 0, 0, 0},
10324 	{0x20, 0x3, 0x3, 0, 0},
10325 	{0x21, 0, 0, 0, 0},
10326 	{0x22, 0, 0, 0, 0},
10327 	{0x23, 0x90, 0x90, 0, 0},
10328 	{0x24, 0x55, 0x55, 0, 0},
10329 	{0x25, 0x15, 0x15, 0, 0},
10330 	{0x26, 0x5, 0x5, 0, 0},
10331 	{0x27, 0x15, 0x15, 0, 0},
10332 	{0x28, 0x5, 0x5, 0, 0},
10333 	{0x29, 0x20, 0x20, 0, 0},
10334 	{0x2A, 0x11, 0x11, 0, 0},
10335 	{0x2B, 0x90, 0x90, 0, 0},
10336 	{0x2C, 0, 0, 0, 0},
10337 	{0x2D, 0x88, 0x88, 0, 0},
10338 	{0x2E, 0x32, 0x32, 0, 0},
10339 	{0x2F, 0x77, 0x77, 0, 0},
10340 	{0x30, 0x17, 0x17, 1, 1},
10341 	{0x31, 0xff, 0xff, 1, 1},
10342 	{0x32, 0x20, 0x20, 0, 0},
10343 	{0x33, 0, 0, 0, 0},
10344 	{0x34, 0x88, 0x88, 0, 0},
10345 	{0x35, 0x32, 0x32, 0, 0},
10346 	{0x36, 0x77, 0x77, 0, 0},
10347 	{0x37, 0x17, 0x17, 1, 1},
10348 	{0x38, 0xf0, 0xf0, 1, 1},
10349 	{0x39, 0x20, 0x20, 0, 0},
10350 	{0x3A, 0x8, 0x8, 0, 0},
10351 	{0x3B, 0x55, 0x55, 1, 1},
10352 	{0x3C, 0, 0, 0, 0},
10353 	{0x3D, 0x88, 0x88, 1, 1},
10354 	{0x3E, 0, 0, 0, 0},
10355 	{0x3F, 0, 0, 1, 1},
10356 	{0x40, 0x7, 0x7, 1, 1},
10357 	{0x41, 0x6, 0x6, 0, 0},
10358 	{0x42, 0x4, 0x4, 0, 0},
10359 	{0x43, 0, 0, 0, 0},
10360 	{0x44, 0x8, 0x8, 0, 0},
10361 	{0x45, 0x55, 0x55, 1, 1},
10362 	{0x46, 0, 0, 0, 0},
10363 	{0x47, 0x11, 0x11, 0, 0},
10364 	{0x48, 0, 0, 0, 0},
10365 	{0x49, 0, 0, 1, 1},
10366 	{0x4A, 0x7, 0x7, 0, 0},
10367 	{0x4B, 0x6, 0x6, 0, 0},
10368 	{0x4C, 0x4, 0x4, 0, 0},
10369 	{0x4D, 0, 0, 0, 0},
10370 	{0x4E, 0, 0, 0, 0},
10371 	{0x4F, 0x26, 0x26, 1, 1},
10372 	{0x50, 0x26, 0x26, 1, 1},
10373 	{0x51, 0xf, 0xf, 1, 1},
10374 	{0x52, 0xf, 0xf, 1, 1},
10375 	{0x53, 0x44, 0x44, 0, 0},
10376 	{0x54, 0, 0, 0, 0},
10377 	{0x55, 0, 0, 0, 0},
10378 	{0x56, 0x8, 0x8, 0, 0},
10379 	{0x57, 0x8, 0x8, 0, 0},
10380 	{0x58, 0x7, 0x7, 0, 0},
10381 	{0x59, 0x22, 0x22, 0, 0},
10382 	{0x5A, 0x22, 0x22, 0, 0},
10383 	{0x5B, 0x2, 0x2, 0, 0},
10384 	{0x5C, 0x4, 0x4, 1, 1},
10385 	{0x5D, 0x7, 0x7, 0, 0},
10386 	{0x5E, 0x55, 0x55, 0, 0},
10387 	{0x5F, 0x23, 0x23, 0, 0},
10388 	{0x60, 0x41, 0x41, 0, 0},
10389 	{0x61, 0x1, 0x1, 0, 0},
10390 	{0x62, 0xa, 0xa, 0, 0},
10391 	{0x63, 0, 0, 0, 0},
10392 	{0x64, 0, 0, 0, 0},
10393 	{0x65, 0, 0, 0, 0},
10394 	{0x66, 0, 0, 0, 0},
10395 	{0x67, 0, 0, 0, 0},
10396 	{0x68, 0, 0, 0, 0},
10397 	{0x69, 0, 0, 0, 0},
10398 	{0x6A, 0, 0, 0, 0},
10399 	{0x6B, 0xc, 0xc, 0, 0},
10400 	{0x6C, 0, 0, 0, 0},
10401 	{0x6D, 0, 0, 0, 0},
10402 	{0x6E, 0, 0, 0, 0},
10403 	{0x6F, 0, 0, 0, 0},
10404 	{0x70, 0, 0, 0, 0},
10405 	{0x71, 0, 0, 0, 0},
10406 	{0x72, 0x22, 0x22, 0, 0},
10407 	{0x73, 0x22, 0x22, 0, 0},
10408 	{0x74, 0, 0, 1, 1},
10409 	{0x75, 0xa, 0xa, 0, 0},
10410 	{0x76, 0x1, 0x1, 0, 0},
10411 	{0x77, 0x22, 0x22, 0, 0},
10412 	{0x78, 0x30, 0x30, 0, 0},
10413 	{0x79, 0, 0, 0, 0},
10414 	{0x7A, 0, 0, 0, 0},
10415 	{0x7B, 0, 0, 0, 0},
10416 	{0x7C, 0, 0, 0, 0},
10417 	{0x7D, 0, 0, 0, 0},
10418 	{0x7E, 0, 0, 0, 0},
10419 	{0x7F, 0, 0, 0, 0},
10420 	{0x80, 0, 0, 0, 0},
10421 	{0x81, 0, 0, 0, 0},
10422 	{0x82, 0, 0, 0, 0},
10423 	{0x83, 0, 0, 0, 0},
10424 	{0x84, 0, 0, 0, 0},
10425 	{0x85, 0, 0, 0, 0},
10426 	{0x86, 0, 0, 0, 0},
10427 	{0x87, 0, 0, 0, 0},
10428 	{0x88, 0, 0, 0, 0},
10429 	{0x89, 0, 0, 0, 0},
10430 	{0x8A, 0, 0, 0, 0},
10431 	{0x8B, 0, 0, 0, 0},
10432 	{0x8C, 0, 0, 0, 0},
10433 	{0x8D, 0, 0, 0, 0},
10434 	{0x8E, 0, 0, 0, 0},
10435 	{0x8F, 0, 0, 0, 0},
10436 	{0x90, 0, 0, 0, 0},
10437 	{0x91, 0, 0, 0, 0},
10438 	{0x92, 0, 0, 0, 0},
10439 	{0x93, 0, 0, 0, 0},
10440 	{0x94, 0, 0, 0, 0},
10441 	{0xFFFF, 0, 0, 0, 0},
10442 };
10443 
10444 static struct radio_regs regs_SYN_2056_rev8[] = {
10445 	{0x02, 0, 0, 0, 0},
10446 	{0x03, 0, 0, 0, 0},
10447 	{0x04, 0, 0, 0, 0},
10448 	{0x05, 0, 0, 0, 0},
10449 	{0x06, 0, 0, 0, 0},
10450 	{0x07, 0, 0, 0, 0},
10451 	{0x08, 0, 0, 0, 0},
10452 	{0x09, 0x1, 0x1, 0, 0},
10453 	{0x0A, 0, 0, 0, 0},
10454 	{0x0B, 0, 0, 0, 0},
10455 	{0x0C, 0, 0, 0, 0},
10456 	{0x0D, 0, 0, 0, 0},
10457 	{0x0E, 0, 0, 0, 0},
10458 	{0x0F, 0, 0, 0, 0},
10459 	{0x10, 0, 0, 0, 0},
10460 	{0x11, 0, 0, 0, 0},
10461 	{0x12, 0, 0, 0, 0},
10462 	{0x13, 0, 0, 0, 0},
10463 	{0x14, 0, 0, 0, 0},
10464 	{0x15, 0, 0, 0, 0},
10465 	{0x16, 0, 0, 0, 0},
10466 	{0x17, 0, 0, 0, 0},
10467 	{0x18, 0, 0, 0, 0},
10468 	{0x19, 0, 0, 0, 0},
10469 	{0x1A, 0, 0, 0, 0},
10470 	{0x1B, 0, 0, 0, 0},
10471 	{0x1C, 0, 0, 0, 0},
10472 	{0x1D, 0, 0, 0, 0},
10473 	{0x1E, 0, 0, 0, 0},
10474 	{0x1F, 0, 0, 0, 0},
10475 	{0x20, 0, 0, 0, 0},
10476 	{0x21, 0, 0, 0, 0},
10477 	{0x22, 0x60, 0x60, 0, 0},
10478 	{0x23, 0x6, 0x6, 0, 0},
10479 	{0x24, 0xc, 0xc, 0, 0},
10480 	{0x25, 0, 0, 0, 0},
10481 	{0x26, 0, 0, 0, 0},
10482 	{0x27, 0, 0, 0, 0},
10483 	{0x28, 0x1, 0x1, 0, 0},
10484 	{0x29, 0, 0, 0, 0},
10485 	{0x2A, 0, 0, 0, 0},
10486 	{0x2B, 0, 0, 0, 0},
10487 	{0x2C, 0, 0, 0, 0},
10488 	{0x2D, 0, 0, 0, 0},
10489 	{0x2E, 0, 0, 0, 0},
10490 	{0x2F, 0x1f, 0x1f, 0, 0},
10491 	{0x30, 0x15, 0x15, 0, 0},
10492 	{0x31, 0xf, 0xf, 0, 0},
10493 	{0x32, 0, 0, 0, 0},
10494 	{0x33, 0, 0, 0, 0},
10495 	{0x34, 0, 0, 0, 0},
10496 	{0x35, 0, 0, 0, 0},
10497 	{0x36, 0, 0, 0, 0},
10498 	{0x37, 0, 0, 0, 0},
10499 	{0x38, 0, 0, 0, 0},
10500 	{0x39, 0, 0, 0, 0},
10501 	{0x3A, 0, 0, 0, 0},
10502 	{0x3B, 0, 0, 0, 0},
10503 	{0x3C, 0x13, 0x13, 0, 0},
10504 	{0x3D, 0xf, 0xf, 0, 0},
10505 	{0x3E, 0x18, 0x18, 0, 0},
10506 	{0x3F, 0, 0, 0, 0},
10507 	{0x40, 0, 0, 0, 0},
10508 	{0x41, 0x20, 0x20, 0, 0},
10509 	{0x42, 0x20, 0x20, 0, 0},
10510 	{0x43, 0, 0, 0, 0},
10511 	{0x44, 0x77, 0x77, 0, 0},
10512 	{0x45, 0x7, 0x7, 0, 0},
10513 	{0x46, 0x1, 0x1, 0, 0},
10514 	{0x47, 0x4, 0x4, 0, 0},
10515 	{0x48, 0xf, 0xf, 0, 0},
10516 	{0x49, 0x30, 0x30, 0, 0},
10517 	{0x4A, 0x32, 0x32, 0, 0},
10518 	{0x4B, 0xd, 0xd, 0, 0},
10519 	{0x4C, 0xd, 0xd, 0, 0},
10520 	{0x4D, 0x4, 0x4, 0, 0},
10521 	{0x4E, 0x6, 0x6, 0, 0},
10522 	{0x4F, 0x1, 0x1, 0, 0},
10523 	{0x50, 0x1c, 0x1c, 0, 0},
10524 	{0x51, 0x2, 0x2, 0, 0},
10525 	{0x52, 0x2, 0x2, 0, 0},
10526 	{0x53, 0xf7, 0xf7, 1, 1},
10527 	{0x54, 0xb4, 0xb4, 0, 0},
10528 	{0x55, 0xd2, 0xd2, 0, 0},
10529 	{0x56, 0, 0, 0, 0},
10530 	{0x57, 0, 0, 0, 0},
10531 	{0x58, 0x4, 0x4, 0, 0},
10532 	{0x59, 0x96, 0x96, 0, 0},
10533 	{0x5A, 0x3e, 0x3e, 0, 0},
10534 	{0x5B, 0x3e, 0x3e, 0, 0},
10535 	{0x5C, 0x13, 0x13, 0, 0},
10536 	{0x5D, 0x2, 0x2, 0, 0},
10537 	{0x5E, 0, 0, 0, 0},
10538 	{0x5F, 0x7, 0x7, 0, 0},
10539 	{0x60, 0x7, 0x7, 1, 1},
10540 	{0x61, 0x8, 0x8, 0, 0},
10541 	{0x62, 0x3, 0x3, 0, 0},
10542 	{0x63, 0, 0, 0, 0},
10543 	{0x64, 0, 0, 0, 0},
10544 	{0x65, 0, 0, 0, 0},
10545 	{0x66, 0, 0, 0, 0},
10546 	{0x67, 0, 0, 0, 0},
10547 	{0x68, 0x40, 0x40, 0, 0},
10548 	{0x69, 0, 0, 0, 0},
10549 	{0x6A, 0, 0, 0, 0},
10550 	{0x6B, 0, 0, 0, 0},
10551 	{0x6C, 0, 0, 0, 0},
10552 	{0x6D, 0x1, 0x1, 0, 0},
10553 	{0x6E, 0, 0, 0, 0},
10554 	{0x6F, 0, 0, 0, 0},
10555 	{0x70, 0x60, 0x60, 0, 0},
10556 	{0x71, 0x66, 0x66, 0, 0},
10557 	{0x72, 0xc, 0xc, 0, 0},
10558 	{0x73, 0x66, 0x66, 0, 0},
10559 	{0x74, 0x8f, 0x8f, 1, 1},
10560 	{0x75, 0, 0, 0, 0},
10561 	{0x76, 0xcc, 0xcc, 0, 0},
10562 	{0x77, 0x1, 0x1, 0, 0},
10563 	{0x78, 0x66, 0x66, 0, 0},
10564 	{0x79, 0x66, 0x66, 0, 0},
10565 	{0x7A, 0, 0, 0, 0},
10566 	{0x7B, 0, 0, 0, 0},
10567 	{0x7C, 0, 0, 0, 0},
10568 	{0x7D, 0, 0, 0, 0},
10569 	{0x7E, 0, 0, 0, 0},
10570 	{0x7F, 0, 0, 0, 0},
10571 	{0x80, 0, 0, 0, 0},
10572 	{0x81, 0, 0, 0, 0},
10573 	{0x82, 0, 0, 0, 0},
10574 	{0x83, 0, 0, 0, 0},
10575 	{0x84, 0, 0, 0, 0},
10576 	{0x85, 0xff, 0xff, 0, 0},
10577 	{0x86, 0, 0, 0, 0},
10578 	{0x87, 0, 0, 0, 0},
10579 	{0x88, 0, 0, 0, 0},
10580 	{0x89, 0, 0, 0, 0},
10581 	{0x8A, 0, 0, 0, 0},
10582 	{0x8B, 0, 0, 0, 0},
10583 	{0x8C, 0, 0, 0, 0},
10584 	{0x8D, 0, 0, 0, 0},
10585 	{0x8E, 0, 0, 0, 0},
10586 	{0x8F, 0, 0, 0, 0},
10587 	{0x90, 0, 0, 0, 0},
10588 	{0x91, 0, 0, 0, 0},
10589 	{0x92, 0, 0, 0, 0},
10590 	{0x93, 0, 0, 0, 0},
10591 	{0x94, 0, 0, 0, 0},
10592 	{0x95, 0, 0, 0, 0},
10593 	{0x96, 0, 0, 0, 0},
10594 	{0x97, 0, 0, 0, 0},
10595 	{0x98, 0, 0, 0, 0},
10596 	{0x99, 0, 0, 0, 0},
10597 	{0x9A, 0, 0, 0, 0},
10598 	{0x9B, 0, 0, 0, 0},
10599 	{0x9C, 0, 0, 0, 0},
10600 	{0x9D, 0, 0, 0, 0},
10601 	{0x9E, 0, 0, 0, 0},
10602 	{0x9F, 0x6, 0x6, 0, 0},
10603 	{0xA0, 0x66, 0x66, 0, 0},
10604 	{0xA1, 0x66, 0x66, 0, 0},
10605 	{0xA2, 0x66, 0x66, 0, 0},
10606 	{0xA3, 0x66, 0x66, 0, 0},
10607 	{0xA4, 0x66, 0x66, 0, 0},
10608 	{0xA5, 0x66, 0x66, 0, 0},
10609 	{0xA6, 0x66, 0x66, 0, 0},
10610 	{0xA7, 0x66, 0x66, 0, 0},
10611 	{0xA8, 0x66, 0x66, 0, 0},
10612 	{0xA9, 0x66, 0x66, 0, 0},
10613 	{0xAA, 0x66, 0x66, 0, 0},
10614 	{0xAB, 0x66, 0x66, 0, 0},
10615 	{0xAC, 0x66, 0x66, 0, 0},
10616 	{0xAD, 0x66, 0x66, 0, 0},
10617 	{0xAE, 0x66, 0x66, 0, 0},
10618 	{0xAF, 0x66, 0x66, 0, 0},
10619 	{0xB0, 0x66, 0x66, 0, 0},
10620 	{0xB1, 0x66, 0x66, 0, 0},
10621 	{0xB2, 0x66, 0x66, 0, 0},
10622 	{0xB3, 0xa, 0xa, 0, 0},
10623 	{0xB4, 0, 0, 0, 0},
10624 	{0xB5, 0, 0, 0, 0},
10625 	{0xB6, 0, 0, 0, 0},
10626 	{0xFFFF, 0, 0, 0, 0},
10627 };
10628 
10629 static struct radio_regs regs_TX_2056_rev8[] = {
10630 	{0x02, 0, 0, 0, 0},
10631 	{0x03, 0, 0, 0, 0},
10632 	{0x04, 0, 0, 0, 0},
10633 	{0x05, 0, 0, 0, 0},
10634 	{0x06, 0, 0, 0, 0},
10635 	{0x07, 0, 0, 0, 0},
10636 	{0x08, 0, 0, 0, 0},
10637 	{0x09, 0, 0, 0, 0},
10638 	{0x0A, 0, 0, 0, 0},
10639 	{0x0B, 0, 0, 0, 0},
10640 	{0x0C, 0, 0, 0, 0},
10641 	{0x0D, 0, 0, 0, 0},
10642 	{0x0E, 0, 0, 0, 0},
10643 	{0x0F, 0, 0, 0, 0},
10644 	{0x10, 0, 0, 0, 0},
10645 	{0x11, 0, 0, 0, 0},
10646 	{0x12, 0, 0, 0, 0},
10647 	{0x13, 0, 0, 0, 0},
10648 	{0x14, 0, 0, 0, 0},
10649 	{0x15, 0, 0, 0, 0},
10650 	{0x16, 0, 0, 0, 0},
10651 	{0x17, 0, 0, 0, 0},
10652 	{0x18, 0, 0, 0, 0},
10653 	{0x19, 0, 0, 0, 0},
10654 	{0x1A, 0, 0, 0, 0},
10655 	{0x1B, 0, 0, 0, 0},
10656 	{0x1C, 0, 0, 0, 0},
10657 	{0x1D, 0, 0, 0, 0},
10658 	{0x1E, 0, 0, 0, 0},
10659 	{0x1F, 0, 0, 0, 0},
10660 	{0x20, 0, 0, 0, 0},
10661 	{0x21, 0x88, 0x88, 0, 0},
10662 	{0x22, 0x88, 0x88, 0, 0},
10663 	{0x23, 0x88, 0x88, 0, 0},
10664 	{0x24, 0x88, 0x88, 0, 0},
10665 	{0x25, 0xc, 0xc, 0, 0},
10666 	{0x26, 0, 0, 0, 0},
10667 	{0x27, 0x3, 0x3, 0, 0},
10668 	{0x28, 0, 0, 0, 0},
10669 	{0x29, 0x3, 0x3, 0, 0},
10670 	{0x2A, 0x37, 0x37, 0, 0},
10671 	{0x2B, 0x3, 0x3, 0, 0},
10672 	{0x2C, 0, 0, 0, 0},
10673 	{0x2D, 0, 0, 0, 0},
10674 	{0x2E, 0x1, 0x1, 0, 0},
10675 	{0x2F, 0x1, 0x1, 0, 0},
10676 	{0x30, 0, 0, 0, 0},
10677 	{0x31, 0, 0, 0, 0},
10678 	{0x32, 0, 0, 0, 0},
10679 	{0x33, 0x11, 0x11, 0, 0},
10680 	{0x34, 0xee, 0xee, 1, 1},
10681 	{0x35, 0, 0, 0, 0},
10682 	{0x36, 0, 0, 0, 0},
10683 	{0x37, 0x3, 0x3, 0, 0},
10684 	{0x38, 0x50, 0x50, 1, 1},
10685 	{0x39, 0, 0, 0, 0},
10686 	{0x3A, 0x50, 0x50, 1, 1},
10687 	{0x3B, 0, 0, 0, 0},
10688 	{0x3C, 0x6e, 0x6e, 0, 0},
10689 	{0x3D, 0xf0, 0xf0, 1, 1},
10690 	{0x3E, 0, 0, 0, 0},
10691 	{0x3F, 0, 0, 0, 0},
10692 	{0x40, 0, 0, 0, 0},
10693 	{0x41, 0x3, 0x3, 0, 0},
10694 	{0x42, 0x3, 0x3, 0, 0},
10695 	{0x43, 0, 0, 0, 0},
10696 	{0x44, 0x1e, 0x1e, 0, 0},
10697 	{0x45, 0, 0, 0, 0},
10698 	{0x46, 0x6e, 0x6e, 0, 0},
10699 	{0x47, 0xf0, 0xf0, 1, 1},
10700 	{0x48, 0, 0, 0, 0},
10701 	{0x49, 0x2, 0x2, 0, 0},
10702 	{0x4A, 0xff, 0xff, 1, 1},
10703 	{0x4B, 0xc, 0xc, 0, 0},
10704 	{0x4C, 0, 0, 0, 0},
10705 	{0x4D, 0x38, 0x38, 0, 0},
10706 	{0x4E, 0x70, 0x70, 1, 1},
10707 	{0x4F, 0x2, 0x2, 0, 0},
10708 	{0x50, 0x88, 0x88, 0, 0},
10709 	{0x51, 0xc, 0xc, 0, 0},
10710 	{0x52, 0, 0, 0, 0},
10711 	{0x53, 0x8, 0x8, 0, 0},
10712 	{0x54, 0x70, 0x70, 1, 1},
10713 	{0x55, 0x2, 0x2, 0, 0},
10714 	{0x56, 0xff, 0xff, 1, 1},
10715 	{0x57, 0, 0, 0, 0},
10716 	{0x58, 0x83, 0x83, 0, 0},
10717 	{0x59, 0x77, 0x77, 1, 1},
10718 	{0x5A, 0, 0, 0, 0},
10719 	{0x5B, 0x2, 0x2, 0, 0},
10720 	{0x5C, 0x88, 0x88, 0, 0},
10721 	{0x5D, 0, 0, 0, 0},
10722 	{0x5E, 0x8, 0x8, 0, 0},
10723 	{0x5F, 0x77, 0x77, 1, 1},
10724 	{0x60, 0x1, 0x1, 0, 0},
10725 	{0x61, 0, 0, 0, 0},
10726 	{0x62, 0x7, 0x7, 0, 0},
10727 	{0x63, 0, 0, 0, 0},
10728 	{0x64, 0x7, 0x7, 0, 0},
10729 	{0x65, 0, 0, 0, 0},
10730 	{0x66, 0, 0, 0, 0},
10731 	{0x67, 0, 0, 1, 1},
10732 	{0x68, 0, 0, 0, 0},
10733 	{0x69, 0xa, 0xa, 0, 0},
10734 	{0x6A, 0, 0, 0, 0},
10735 	{0x6B, 0, 0, 0, 0},
10736 	{0x6C, 0, 0, 0, 0},
10737 	{0x6D, 0, 0, 0, 0},
10738 	{0x6E, 0, 0, 0, 0},
10739 	{0x6F, 0, 0, 0, 0},
10740 	{0x70, 0, 0, 0, 0},
10741 	{0x71, 0x2, 0x2, 0, 0},
10742 	{0x72, 0, 0, 0, 0},
10743 	{0x73, 0, 0, 0, 0},
10744 	{0x74, 0xe, 0xe, 0, 0},
10745 	{0x75, 0xe, 0xe, 0, 0},
10746 	{0x76, 0xe, 0xe, 0, 0},
10747 	{0x77, 0x13, 0x13, 0, 0},
10748 	{0x78, 0x13, 0x13, 0, 0},
10749 	{0x79, 0x1b, 0x1b, 0, 0},
10750 	{0x7A, 0x1b, 0x1b, 0, 0},
10751 	{0x7B, 0x55, 0x55, 0, 0},
10752 	{0x7C, 0x5b, 0x5b, 0, 0},
10753 	{0x7D, 0x30, 0x30, 1, 1},
10754 	{0x7E, 0, 0, 0, 0},
10755 	{0x7F, 0, 0, 0, 0},
10756 	{0x80, 0, 0, 0, 0},
10757 	{0x81, 0, 0, 0, 0},
10758 	{0x82, 0, 0, 0, 0},
10759 	{0x83, 0, 0, 0, 0},
10760 	{0x84, 0, 0, 0, 0},
10761 	{0x85, 0, 0, 0, 0},
10762 	{0x86, 0, 0, 0, 0},
10763 	{0x87, 0, 0, 0, 0},
10764 	{0x88, 0, 0, 0, 0},
10765 	{0x89, 0, 0, 0, 0},
10766 	{0x8A, 0, 0, 0, 0},
10767 	{0x8B, 0, 0, 0, 0},
10768 	{0x8C, 0, 0, 0, 0},
10769 	{0x8D, 0, 0, 0, 0},
10770 	{0x8E, 0, 0, 0, 0},
10771 	{0x8F, 0, 0, 0, 0},
10772 	{0x90, 0, 0, 0, 0},
10773 	{0x91, 0, 0, 0, 0},
10774 	{0x92, 0, 0, 0, 0},
10775 	{0x93, 0x70, 0x70, 0, 0},
10776 	{0x94, 0x70, 0x70, 0, 0},
10777 	{0x95, 0x70, 0x70, 0, 0},
10778 	{0x96, 0x70, 0x70, 0, 0},
10779 	{0x97, 0x70, 0x70, 0, 0},
10780 	{0x98, 0x70, 0x70, 0, 0},
10781 	{0x99, 0x70, 0x70, 0, 0},
10782 	{0x9A, 0x70, 0x70, 0, 0},
10783 	{0xFFFF, 0, 0, 0, 0},
10784 };
10785 
10786 static struct radio_regs regs_RX_2056_rev8[] = {
10787 	{0x02, 0, 0, 0, 0},
10788 	{0x03, 0, 0, 0, 0},
10789 	{0x04, 0, 0, 0, 0},
10790 	{0x05, 0, 0, 0, 0},
10791 	{0x06, 0, 0, 0, 0},
10792 	{0x07, 0, 0, 0, 0},
10793 	{0x08, 0, 0, 0, 0},
10794 	{0x09, 0, 0, 0, 0},
10795 	{0x0A, 0, 0, 0, 0},
10796 	{0x0B, 0, 0, 0, 0},
10797 	{0x0C, 0, 0, 0, 0},
10798 	{0x0D, 0, 0, 0, 0},
10799 	{0x0E, 0, 0, 0, 0},
10800 	{0x0F, 0, 0, 0, 0},
10801 	{0x10, 0, 0, 0, 0},
10802 	{0x11, 0, 0, 0, 0},
10803 	{0x12, 0, 0, 0, 0},
10804 	{0x13, 0, 0, 0, 0},
10805 	{0x14, 0, 0, 0, 0},
10806 	{0x15, 0, 0, 0, 0},
10807 	{0x16, 0, 0, 0, 0},
10808 	{0x17, 0, 0, 0, 0},
10809 	{0x18, 0, 0, 0, 0},
10810 	{0x19, 0, 0, 0, 0},
10811 	{0x1A, 0, 0, 0, 0},
10812 	{0x1B, 0, 0, 0, 0},
10813 	{0x1C, 0, 0, 0, 0},
10814 	{0x1D, 0, 0, 0, 0},
10815 	{0x1E, 0, 0, 0, 0},
10816 	{0x1F, 0, 0, 0, 0},
10817 	{0x20, 0x3, 0x3, 0, 0},
10818 	{0x21, 0, 0, 0, 0},
10819 	{0x22, 0, 0, 0, 0},
10820 	{0x23, 0x90, 0x90, 0, 0},
10821 	{0x24, 0x55, 0x55, 0, 0},
10822 	{0x25, 0x15, 0x15, 0, 0},
10823 	{0x26, 0x5, 0x5, 0, 0},
10824 	{0x27, 0x15, 0x15, 0, 0},
10825 	{0x28, 0x5, 0x5, 0, 0},
10826 	{0x29, 0x20, 0x20, 0, 0},
10827 	{0x2A, 0x11, 0x11, 0, 0},
10828 	{0x2B, 0x90, 0x90, 0, 0},
10829 	{0x2C, 0, 0, 0, 0},
10830 	{0x2D, 0x88, 0x88, 0, 0},
10831 	{0x2E, 0x32, 0x32, 0, 0},
10832 	{0x2F, 0x77, 0x77, 0, 0},
10833 	{0x30, 0x17, 0x17, 1, 1},
10834 	{0x31, 0xff, 0xff, 1, 1},
10835 	{0x32, 0x20, 0x20, 0, 0},
10836 	{0x33, 0, 0, 0, 0},
10837 	{0x34, 0x88, 0x88, 0, 0},
10838 	{0x35, 0x32, 0x32, 0, 0},
10839 	{0x36, 0x77, 0x77, 0, 0},
10840 	{0x37, 0x17, 0x17, 1, 1},
10841 	{0x38, 0xf0, 0xf0, 1, 1},
10842 	{0x39, 0x20, 0x20, 0, 0},
10843 	{0x3A, 0x8, 0x8, 0, 0},
10844 	{0x3B, 0x55, 0x55, 1, 1},
10845 	{0x3C, 0, 0, 0, 0},
10846 	{0x3D, 0x88, 0x88, 1, 1},
10847 	{0x3E, 0, 0, 0, 0},
10848 	{0x3F, 0x44, 0x44, 0, 0},
10849 	{0x40, 0x7, 0x7, 1, 1},
10850 	{0x41, 0x6, 0x6, 0, 0},
10851 	{0x42, 0x4, 0x4, 0, 0},
10852 	{0x43, 0, 0, 0, 0},
10853 	{0x44, 0x8, 0x8, 0, 0},
10854 	{0x45, 0x55, 0x55, 1, 1},
10855 	{0x46, 0, 0, 0, 0},
10856 	{0x47, 0x11, 0x11, 0, 0},
10857 	{0x48, 0, 0, 0, 0},
10858 	{0x49, 0x44, 0x44, 0, 0},
10859 	{0x4A, 0x7, 0x7, 0, 0},
10860 	{0x4B, 0x6, 0x6, 0, 0},
10861 	{0x4C, 0x4, 0x4, 0, 0},
10862 	{0x4D, 0, 0, 0, 0},
10863 	{0x4E, 0, 0, 0, 0},
10864 	{0x4F, 0x26, 0x26, 1, 1},
10865 	{0x50, 0x26, 0x26, 1, 1},
10866 	{0x51, 0xf, 0xf, 1, 1},
10867 	{0x52, 0xf, 0xf, 1, 1},
10868 	{0x53, 0x44, 0x44, 0, 0},
10869 	{0x54, 0, 0, 0, 0},
10870 	{0x55, 0, 0, 0, 0},
10871 	{0x56, 0x8, 0x8, 0, 0},
10872 	{0x57, 0x8, 0x8, 0, 0},
10873 	{0x58, 0x7, 0x7, 0, 0},
10874 	{0x59, 0x22, 0x22, 0, 0},
10875 	{0x5A, 0x22, 0x22, 0, 0},
10876 	{0x5B, 0x2, 0x2, 0, 0},
10877 	{0x5C, 0x4, 0x4, 1, 1},
10878 	{0x5D, 0x7, 0x7, 0, 0},
10879 	{0x5E, 0x55, 0x55, 0, 0},
10880 	{0x5F, 0x23, 0x23, 0, 0},
10881 	{0x60, 0x41, 0x41, 0, 0},
10882 	{0x61, 0x1, 0x1, 0, 0},
10883 	{0x62, 0xa, 0xa, 0, 0},
10884 	{0x63, 0, 0, 0, 0},
10885 	{0x64, 0, 0, 0, 0},
10886 	{0x65, 0, 0, 0, 0},
10887 	{0x66, 0, 0, 0, 0},
10888 	{0x67, 0, 0, 0, 0},
10889 	{0x68, 0, 0, 0, 0},
10890 	{0x69, 0, 0, 0, 0},
10891 	{0x6A, 0, 0, 0, 0},
10892 	{0x6B, 0xc, 0xc, 0, 0},
10893 	{0x6C, 0, 0, 0, 0},
10894 	{0x6D, 0, 0, 0, 0},
10895 	{0x6E, 0, 0, 0, 0},
10896 	{0x6F, 0, 0, 0, 0},
10897 	{0x70, 0, 0, 0, 0},
10898 	{0x71, 0, 0, 0, 0},
10899 	{0x72, 0x22, 0x22, 0, 0},
10900 	{0x73, 0x22, 0x22, 0, 0},
10901 	{0x74, 0, 0, 1, 1},
10902 	{0x75, 0xa, 0xa, 0, 0},
10903 	{0x76, 0x1, 0x1, 0, 0},
10904 	{0x77, 0x22, 0x22, 0, 0},
10905 	{0x78, 0x30, 0x30, 0, 0},
10906 	{0x79, 0, 0, 0, 0},
10907 	{0x7A, 0, 0, 0, 0},
10908 	{0x7B, 0, 0, 0, 0},
10909 	{0x7C, 0, 0, 0, 0},
10910 	{0x7D, 0x5, 0x5, 1, 1},
10911 	{0x7E, 0, 0, 0, 0},
10912 	{0x7F, 0, 0, 0, 0},
10913 	{0x80, 0, 0, 0, 0},
10914 	{0x81, 0, 0, 0, 0},
10915 	{0x82, 0, 0, 0, 0},
10916 	{0x83, 0, 0, 0, 0},
10917 	{0x84, 0, 0, 0, 0},
10918 	{0x85, 0, 0, 0, 0},
10919 	{0x86, 0, 0, 0, 0},
10920 	{0x87, 0, 0, 0, 0},
10921 	{0x88, 0, 0, 0, 0},
10922 	{0x89, 0, 0, 0, 0},
10923 	{0x8A, 0, 0, 0, 0},
10924 	{0x8B, 0, 0, 0, 0},
10925 	{0x8C, 0, 0, 0, 0},
10926 	{0x8D, 0, 0, 0, 0},
10927 	{0x8E, 0, 0, 0, 0},
10928 	{0x8F, 0, 0, 0, 0},
10929 	{0x90, 0, 0, 0, 0},
10930 	{0x91, 0, 0, 0, 0},
10931 	{0x92, 0, 0, 0, 0},
10932 	{0x93, 0, 0, 0, 0},
10933 	{0x94, 0, 0, 0, 0},
10934 	{0xFFFF, 0, 0, 0, 0},
10935 };
10936 
10937 static const struct radio_regs regs_SYN_2056_rev11[] = {
10938 	{0x02, 0, 0, 0, 0},
10939 	{0x03, 0, 0, 0, 0},
10940 	{0x04, 0, 0, 0, 0},
10941 	{0x05, 0, 0, 0, 0},
10942 	{0x06, 0, 0, 0, 0},
10943 	{0x07, 0, 0, 0, 0},
10944 	{0x08, 0, 0, 0, 0},
10945 	{0x09, 0x1, 0x1, 0, 0},
10946 	{0x0A, 0, 0, 0, 0},
10947 	{0x0B, 0, 0, 0, 0},
10948 	{0x0C, 0, 0, 0, 0},
10949 	{0x0D, 0, 0, 0, 0},
10950 	{0x0E, 0, 0, 0, 0},
10951 	{0x0F, 0, 0, 0, 0},
10952 	{0x10, 0, 0, 0, 0},
10953 	{0x11, 0, 0, 0, 0},
10954 	{0x12, 0, 0, 0, 0},
10955 	{0x13, 0, 0, 0, 0},
10956 	{0x14, 0, 0, 0, 0},
10957 	{0x15, 0, 0, 0, 0},
10958 	{0x16, 0, 0, 0, 0},
10959 	{0x17, 0, 0, 0, 0},
10960 	{0x18, 0, 0, 0, 0},
10961 	{0x19, 0, 0, 0, 0},
10962 	{0x1A, 0, 0, 0, 0},
10963 	{0x1B, 0, 0, 0, 0},
10964 	{0x1C, 0, 0, 0, 0},
10965 	{0x1D, 0, 0, 0, 0},
10966 	{0x1E, 0, 0, 0, 0},
10967 	{0x1F, 0, 0, 0, 0},
10968 	{0x20, 0, 0, 0, 0},
10969 	{0x21, 0, 0, 0, 0},
10970 	{0x22, 0x60, 0x60, 0, 0},
10971 	{0x23, 0x6, 0x6, 0, 0},
10972 	{0x24, 0xc, 0xc, 0, 0},
10973 	{0x25, 0, 0, 0, 0},
10974 	{0x26, 0, 0, 0, 0},
10975 	{0x27, 0, 0, 0, 0},
10976 	{0x28, 0x1, 0x1, 0, 0},
10977 	{0x29, 0, 0, 0, 0},
10978 	{0x2A, 0, 0, 0, 0},
10979 	{0x2B, 0, 0, 0, 0},
10980 	{0x2C, 0, 0, 0, 0},
10981 	{0x2D, 0, 0, 0, 0},
10982 	{0x2E, 0, 0, 0, 0},
10983 	{0x2F, 0x1f, 0x1f, 0, 0},
10984 	{0x30, 0x15, 0x15, 0, 0},
10985 	{0x31, 0xf, 0xf, 0, 0},
10986 	{0x32, 0, 0, 0, 0},
10987 	{0x33, 0, 0, 0, 0},
10988 	{0x34, 0, 0, 0, 0},
10989 	{0x35, 0, 0, 0, 0},
10990 	{0x36, 0, 0, 0, 0},
10991 	{0x37, 0, 0, 0, 0},
10992 	{0x38, 0, 0, 0, 0},
10993 	{0x39, 0, 0, 0, 0},
10994 	{0x3A, 0, 0, 0, 0},
10995 	{0x3B, 0, 0, 0, 0},
10996 	{0x3C, 0x13, 0x13, 0, 0},
10997 	{0x3D, 0xf, 0xf, 0, 0},
10998 	{0x3E, 0x18, 0x18, 0, 0},
10999 	{0x3F, 0, 0, 0, 0},
11000 	{0x40, 0, 0, 0, 0},
11001 	{0x41, 0x20, 0x20, 0, 0},
11002 	{0x42, 0x20, 0x20, 0, 0},
11003 	{0x43, 0, 0, 0, 0},
11004 	{0x44, 0x77, 0x77, 0, 0},
11005 	{0x45, 0x7, 0x7, 0, 0},
11006 	{0x46, 0x1, 0x1, 0, 0},
11007 	{0x47, 0x6, 0x6, 1, 1},
11008 	{0x48, 0xf, 0xf, 0, 0},
11009 	{0x49, 0x3f, 0x3f, 1, 1},
11010 	{0x4A, 0x32, 0x32, 0, 0},
11011 	{0x4B, 0x6, 0x6, 1, 1},
11012 	{0x4C, 0x6, 0x6, 1, 1},
11013 	{0x4D, 0x4, 0x4, 0, 0},
11014 	{0x4E, 0x2b, 0x2b, 1, 1},
11015 	{0x4F, 0x1, 0x1, 0, 0},
11016 	{0x50, 0x1c, 0x1c, 0, 0},
11017 	{0x51, 0x2, 0x2, 0, 0},
11018 	{0x52, 0x2, 0x2, 0, 0},
11019 	{0x53, 0xf7, 0xf7, 1, 1},
11020 	{0x54, 0xb4, 0xb4, 0, 0},
11021 	{0x55, 0xd2, 0xd2, 0, 0},
11022 	{0x56, 0, 0, 0, 0},
11023 	{0x57, 0, 0, 0, 0},
11024 	{0x58, 0x4, 0x4, 0, 0},
11025 	{0x59, 0x96, 0x96, 0, 0},
11026 	{0x5A, 0x3e, 0x3e, 0, 0},
11027 	{0x5B, 0x3e, 0x3e, 0, 0},
11028 	{0x5C, 0x13, 0x13, 0, 0},
11029 	{0x5D, 0x2, 0x2, 0, 0},
11030 	{0x5E, 0, 0, 0, 0},
11031 	{0x5F, 0x7, 0x7, 0, 0},
11032 	{0x60, 0x7, 0x7, 1, 1},
11033 	{0x61, 0x8, 0x8, 0, 0},
11034 	{0x62, 0x3, 0x3, 0, 0},
11035 	{0x63, 0, 0, 0, 0},
11036 	{0x64, 0, 0, 0, 0},
11037 	{0x65, 0, 0, 0, 0},
11038 	{0x66, 0, 0, 0, 0},
11039 	{0x67, 0, 0, 0, 0},
11040 	{0x68, 0x40, 0x40, 0, 0},
11041 	{0x69, 0, 0, 0, 0},
11042 	{0x6A, 0, 0, 0, 0},
11043 	{0x6B, 0, 0, 0, 0},
11044 	{0x6C, 0, 0, 0, 0},
11045 	{0x6D, 0x1, 0x1, 0, 0},
11046 	{0x6E, 0, 0, 0, 0},
11047 	{0x6F, 0, 0, 0, 0},
11048 	{0x70, 0x60, 0x60, 0, 0},
11049 	{0x71, 0x66, 0x66, 0, 0},
11050 	{0x72, 0xc, 0xc, 0, 0},
11051 	{0x73, 0x66, 0x66, 0, 0},
11052 	{0x74, 0x8f, 0x8f, 1, 1},
11053 	{0x75, 0, 0, 0, 0},
11054 	{0x76, 0xcc, 0xcc, 0, 0},
11055 	{0x77, 0x1, 0x1, 0, 0},
11056 	{0x78, 0x66, 0x66, 0, 0},
11057 	{0x79, 0x66, 0x66, 0, 0},
11058 	{0x7A, 0, 0, 0, 0},
11059 	{0x7B, 0, 0, 0, 0},
11060 	{0x7C, 0, 0, 0, 0},
11061 	{0x7D, 0, 0, 0, 0},
11062 	{0x7E, 0, 0, 0, 0},
11063 	{0x7F, 0, 0, 0, 0},
11064 	{0x80, 0, 0, 0, 0},
11065 	{0x81, 0, 0, 0, 0},
11066 	{0x82, 0, 0, 0, 0},
11067 	{0x83, 0, 0, 0, 0},
11068 	{0x84, 0, 0, 0, 0},
11069 	{0x85, 0xff, 0xff, 0, 0},
11070 	{0x86, 0, 0, 0, 0},
11071 	{0x87, 0, 0, 0, 0},
11072 	{0x88, 0, 0, 0, 0},
11073 	{0x89, 0, 0, 0, 0},
11074 	{0x8A, 0, 0, 0, 0},
11075 	{0x8B, 0, 0, 0, 0},
11076 	{0x8C, 0, 0, 0, 0},
11077 	{0x8D, 0, 0, 0, 0},
11078 	{0x8E, 0, 0, 0, 0},
11079 	{0x8F, 0, 0, 0, 0},
11080 	{0x90, 0, 0, 0, 0},
11081 	{0x91, 0, 0, 0, 0},
11082 	{0x92, 0, 0, 0, 0},
11083 	{0x93, 0, 0, 0, 0},
11084 	{0x94, 0, 0, 0, 0},
11085 	{0x95, 0, 0, 0, 0},
11086 	{0x96, 0, 0, 0, 0},
11087 	{0x97, 0, 0, 0, 0},
11088 	{0x98, 0, 0, 0, 0},
11089 	{0x99, 0, 0, 0, 0},
11090 	{0x9A, 0, 0, 0, 0},
11091 	{0x9B, 0, 0, 0, 0},
11092 	{0x9C, 0, 0, 0, 0},
11093 	{0x9D, 0, 0, 0, 0},
11094 	{0x9E, 0, 0, 0, 0},
11095 	{0x9F, 0x6, 0x6, 0, 0},
11096 	{0xA0, 0x66, 0x66, 0, 0},
11097 	{0xA1, 0x66, 0x66, 0, 0},
11098 	{0xA2, 0x66, 0x66, 0, 0},
11099 	{0xA3, 0x66, 0x66, 0, 0},
11100 	{0xA4, 0x66, 0x66, 0, 0},
11101 	{0xA5, 0x66, 0x66, 0, 0},
11102 	{0xA6, 0x66, 0x66, 0, 0},
11103 	{0xA7, 0x66, 0x66, 0, 0},
11104 	{0xA8, 0x66, 0x66, 0, 0},
11105 	{0xA9, 0x66, 0x66, 0, 0},
11106 	{0xAA, 0x66, 0x66, 0, 0},
11107 	{0xAB, 0x66, 0x66, 0, 0},
11108 	{0xAC, 0x66, 0x66, 0, 0},
11109 	{0xAD, 0x66, 0x66, 0, 0},
11110 	{0xAE, 0x66, 0x66, 0, 0},
11111 	{0xAF, 0x66, 0x66, 0, 0},
11112 	{0xB0, 0x66, 0x66, 0, 0},
11113 	{0xB1, 0x66, 0x66, 0, 0},
11114 	{0xB2, 0x66, 0x66, 0, 0},
11115 	{0xB3, 0xa, 0xa, 0, 0},
11116 	{0xB4, 0, 0, 0, 0},
11117 	{0xB5, 0, 0, 0, 0},
11118 	{0xB6, 0, 0, 0, 0},
11119 	{0xFFFF, 0, 0, 0, 0},
11120 };
11121 
11122 static const struct radio_regs regs_TX_2056_rev11[] = {
11123 	{0x02, 0, 0, 0, 0},
11124 	{0x03, 0, 0, 0, 0},
11125 	{0x04, 0, 0, 0, 0},
11126 	{0x05, 0, 0, 0, 0},
11127 	{0x06, 0, 0, 0, 0},
11128 	{0x07, 0, 0, 0, 0},
11129 	{0x08, 0, 0, 0, 0},
11130 	{0x09, 0, 0, 0, 0},
11131 	{0x0A, 0, 0, 0, 0},
11132 	{0x0B, 0, 0, 0, 0},
11133 	{0x0C, 0, 0, 0, 0},
11134 	{0x0D, 0, 0, 0, 0},
11135 	{0x0E, 0, 0, 0, 0},
11136 	{0x0F, 0, 0, 0, 0},
11137 	{0x10, 0, 0, 0, 0},
11138 	{0x11, 0, 0, 0, 0},
11139 	{0x12, 0, 0, 0, 0},
11140 	{0x13, 0, 0, 0, 0},
11141 	{0x14, 0, 0, 0, 0},
11142 	{0x15, 0, 0, 0, 0},
11143 	{0x16, 0, 0, 0, 0},
11144 	{0x17, 0, 0, 0, 0},
11145 	{0x18, 0, 0, 0, 0},
11146 	{0x19, 0, 0, 0, 0},
11147 	{0x1A, 0, 0, 0, 0},
11148 	{0x1B, 0, 0, 0, 0},
11149 	{0x1C, 0, 0, 0, 0},
11150 	{0x1D, 0, 0, 0, 0},
11151 	{0x1E, 0, 0, 0, 0},
11152 	{0x1F, 0, 0, 0, 0},
11153 	{0x20, 0, 0, 0, 0},
11154 	{0x21, 0x88, 0x88, 0, 0},
11155 	{0x22, 0x88, 0x88, 0, 0},
11156 	{0x23, 0x88, 0x88, 0, 0},
11157 	{0x24, 0x88, 0x88, 0, 0},
11158 	{0x25, 0xc, 0xc, 0, 0},
11159 	{0x26, 0, 0, 0, 0},
11160 	{0x27, 0x3, 0x3, 0, 0},
11161 	{0x28, 0, 0, 0, 0},
11162 	{0x29, 0x3, 0x3, 0, 0},
11163 	{0x2A, 0x37, 0x37, 0, 0},
11164 	{0x2B, 0x3, 0x3, 0, 0},
11165 	{0x2C, 0, 0, 0, 0},
11166 	{0x2D, 0, 0, 0, 0},
11167 	{0x2E, 0x1, 0x1, 0, 0},
11168 	{0x2F, 0x1, 0x1, 0, 0},
11169 	{0x30, 0, 0, 0, 0},
11170 	{0x31, 0, 0, 0, 0},
11171 	{0x32, 0, 0, 0, 0},
11172 	{0x33, 0x11, 0x11, 0, 0},
11173 	{0x34, 0xee, 0xee, 1, 1},
11174 	{0x35, 0, 0, 0, 0},
11175 	{0x36, 0, 0, 0, 0},
11176 	{0x37, 0x3, 0x3, 0, 0},
11177 	{0x38, 0x50, 0x50, 1, 1},
11178 	{0x39, 0, 0, 0, 0},
11179 	{0x3A, 0x50, 0x50, 1, 1},
11180 	{0x3B, 0, 0, 0, 0},
11181 	{0x3C, 0x6e, 0x6e, 0, 0},
11182 	{0x3D, 0xf0, 0xf0, 1, 1},
11183 	{0x3E, 0, 0, 0, 0},
11184 	{0x3F, 0, 0, 0, 0},
11185 	{0x40, 0, 0, 0, 0},
11186 	{0x41, 0x3, 0x3, 0, 0},
11187 	{0x42, 0x3, 0x3, 0, 0},
11188 	{0x43, 0, 0, 0, 0},
11189 	{0x44, 0x1e, 0x1e, 0, 0},
11190 	{0x45, 0, 0, 0, 0},
11191 	{0x46, 0x6e, 0x6e, 0, 0},
11192 	{0x47, 0xf0, 0xf0, 1, 1},
11193 	{0x48, 0, 0, 0, 0},
11194 	{0x49, 0x2, 0x2, 0, 0},
11195 	{0x4A, 0xff, 0xff, 1, 1},
11196 	{0x4B, 0xc, 0xc, 0, 0},
11197 	{0x4C, 0, 0, 0, 0},
11198 	{0x4D, 0x38, 0x38, 0, 0},
11199 	{0x4E, 0x70, 0x70, 1, 1},
11200 	{0x4F, 0x2, 0x2, 0, 0},
11201 	{0x50, 0x88, 0x88, 0, 0},
11202 	{0x51, 0xc, 0xc, 0, 0},
11203 	{0x52, 0, 0, 0, 0},
11204 	{0x53, 0x8, 0x8, 0, 0},
11205 	{0x54, 0x70, 0x70, 1, 1},
11206 	{0x55, 0x2, 0x2, 0, 0},
11207 	{0x56, 0xff, 0xff, 1, 1},
11208 	{0x57, 0, 0, 0, 0},
11209 	{0x58, 0x83, 0x83, 0, 0},
11210 	{0x59, 0x77, 0x77, 1, 1},
11211 	{0x5A, 0, 0, 0, 0},
11212 	{0x5B, 0x2, 0x2, 0, 0},
11213 	{0x5C, 0x88, 0x88, 0, 0},
11214 	{0x5D, 0, 0, 0, 0},
11215 	{0x5E, 0x8, 0x8, 0, 0},
11216 	{0x5F, 0x77, 0x77, 1, 1},
11217 	{0x60, 0x1, 0x1, 0, 0},
11218 	{0x61, 0, 0, 0, 0},
11219 	{0x62, 0x7, 0x7, 0, 0},
11220 	{0x63, 0, 0, 0, 0},
11221 	{0x64, 0x7, 0x7, 0, 0},
11222 	{0x65, 0, 0, 0, 0},
11223 	{0x66, 0, 0, 0, 0},
11224 	{0x67, 0, 0, 1, 1},
11225 	{0x68, 0, 0, 0, 0},
11226 	{0x69, 0xa, 0xa, 0, 0},
11227 	{0x6A, 0, 0, 0, 0},
11228 	{0x6B, 0, 0, 0, 0},
11229 	{0x6C, 0, 0, 0, 0},
11230 	{0x6D, 0, 0, 0, 0},
11231 	{0x6E, 0, 0, 0, 0},
11232 	{0x6F, 0, 0, 0, 0},
11233 	{0x70, 0, 0, 0, 0},
11234 	{0x71, 0x2, 0x2, 0, 0},
11235 	{0x72, 0, 0, 0, 0},
11236 	{0x73, 0, 0, 0, 0},
11237 	{0x74, 0xe, 0xe, 0, 0},
11238 	{0x75, 0xe, 0xe, 0, 0},
11239 	{0x76, 0xe, 0xe, 0, 0},
11240 	{0x77, 0x13, 0x13, 0, 0},
11241 	{0x78, 0x13, 0x13, 0, 0},
11242 	{0x79, 0x1b, 0x1b, 0, 0},
11243 	{0x7A, 0x1b, 0x1b, 0, 0},
11244 	{0x7B, 0x55, 0x55, 0, 0},
11245 	{0x7C, 0x5b, 0x5b, 0, 0},
11246 	{0x7D, 0x30, 0x30, 1, 1},
11247 	{0x7E, 0, 0, 0, 0},
11248 	{0x7F, 0, 0, 0, 0},
11249 	{0x80, 0, 0, 0, 0},
11250 	{0x81, 0, 0, 0, 0},
11251 	{0x82, 0, 0, 0, 0},
11252 	{0x83, 0, 0, 0, 0},
11253 	{0x84, 0, 0, 0, 0},
11254 	{0x85, 0, 0, 0, 0},
11255 	{0x86, 0, 0, 0, 0},
11256 	{0x87, 0, 0, 0, 0},
11257 	{0x88, 0, 0, 0, 0},
11258 	{0x89, 0, 0, 0, 0},
11259 	{0x8A, 0, 0, 0, 0},
11260 	{0x8B, 0, 0, 0, 0},
11261 	{0x8C, 0, 0, 0, 0},
11262 	{0x8D, 0, 0, 0, 0},
11263 	{0x8E, 0, 0, 0, 0},
11264 	{0x8F, 0, 0, 0, 0},
11265 	{0x90, 0, 0, 0, 0},
11266 	{0x91, 0, 0, 0, 0},
11267 	{0x92, 0, 0, 0, 0},
11268 	{0x93, 0x70, 0x70, 0, 0},
11269 	{0x94, 0x70, 0x70, 0, 0},
11270 	{0x95, 0x70, 0x70, 0, 0},
11271 	{0x96, 0x70, 0x70, 0, 0},
11272 	{0x97, 0x70, 0x70, 0, 0},
11273 	{0x98, 0x70, 0x70, 0, 0},
11274 	{0x99, 0x70, 0x70, 0, 0},
11275 	{0x9A, 0x70, 0x70, 0, 0},
11276 	{0xFFFF, 0, 0, 0, 0},
11277 };
11278 
11279 static const struct radio_regs regs_RX_2056_rev11[] = {
11280 	{0x02, 0, 0, 0, 0},
11281 	{0x03, 0, 0, 0, 0},
11282 	{0x04, 0, 0, 0, 0},
11283 	{0x05, 0, 0, 0, 0},
11284 	{0x06, 0, 0, 0, 0},
11285 	{0x07, 0, 0, 0, 0},
11286 	{0x08, 0, 0, 0, 0},
11287 	{0x09, 0, 0, 0, 0},
11288 	{0x0A, 0, 0, 0, 0},
11289 	{0x0B, 0, 0, 0, 0},
11290 	{0x0C, 0, 0, 0, 0},
11291 	{0x0D, 0, 0, 0, 0},
11292 	{0x0E, 0, 0, 0, 0},
11293 	{0x0F, 0, 0, 0, 0},
11294 	{0x10, 0, 0, 0, 0},
11295 	{0x11, 0, 0, 0, 0},
11296 	{0x12, 0, 0, 0, 0},
11297 	{0x13, 0, 0, 0, 0},
11298 	{0x14, 0, 0, 0, 0},
11299 	{0x15, 0, 0, 0, 0},
11300 	{0x16, 0, 0, 0, 0},
11301 	{0x17, 0, 0, 0, 0},
11302 	{0x18, 0, 0, 0, 0},
11303 	{0x19, 0, 0, 0, 0},
11304 	{0x1A, 0, 0, 0, 0},
11305 	{0x1B, 0, 0, 0, 0},
11306 	{0x1C, 0, 0, 0, 0},
11307 	{0x1D, 0, 0, 0, 0},
11308 	{0x1E, 0, 0, 0, 0},
11309 	{0x1F, 0, 0, 0, 0},
11310 	{0x20, 0x3, 0x3, 0, 0},
11311 	{0x21, 0, 0, 0, 0},
11312 	{0x22, 0, 0, 0, 0},
11313 	{0x23, 0x90, 0x90, 0, 0},
11314 	{0x24, 0x55, 0x55, 0, 0},
11315 	{0x25, 0x15, 0x15, 0, 0},
11316 	{0x26, 0x5, 0x5, 0, 0},
11317 	{0x27, 0x15, 0x15, 0, 0},
11318 	{0x28, 0x5, 0x5, 0, 0},
11319 	{0x29, 0x20, 0x20, 0, 0},
11320 	{0x2A, 0x11, 0x11, 0, 0},
11321 	{0x2B, 0x90, 0x90, 0, 0},
11322 	{0x2C, 0, 0, 0, 0},
11323 	{0x2D, 0x88, 0x88, 0, 0},
11324 	{0x2E, 0x32, 0x32, 0, 0},
11325 	{0x2F, 0x77, 0x77, 0, 0},
11326 	{0x30, 0x17, 0x17, 1, 1},
11327 	{0x31, 0xff, 0xff, 1, 1},
11328 	{0x32, 0x20, 0x20, 0, 0},
11329 	{0x33, 0, 0, 0, 0},
11330 	{0x34, 0x88, 0x88, 0, 0},
11331 	{0x35, 0x32, 0x32, 0, 0},
11332 	{0x36, 0x77, 0x77, 0, 0},
11333 	{0x37, 0x17, 0x17, 1, 1},
11334 	{0x38, 0xf0, 0xf0, 1, 1},
11335 	{0x39, 0x20, 0x20, 0, 0},
11336 	{0x3A, 0x8, 0x8, 0, 0},
11337 	{0x3B, 0x55, 0x55, 1, 1},
11338 	{0x3C, 0, 0, 0, 0},
11339 	{0x3D, 0x88, 0x88, 1, 1},
11340 	{0x3E, 0, 0, 0, 0},
11341 	{0x3F, 0x44, 0x44, 0, 0},
11342 	{0x40, 0x7, 0x7, 1, 1},
11343 	{0x41, 0x6, 0x6, 0, 0},
11344 	{0x42, 0x4, 0x4, 0, 0},
11345 	{0x43, 0, 0, 0, 0},
11346 	{0x44, 0x8, 0x8, 0, 0},
11347 	{0x45, 0x55, 0x55, 1, 1},
11348 	{0x46, 0, 0, 0, 0},
11349 	{0x47, 0x11, 0x11, 0, 0},
11350 	{0x48, 0, 0, 0, 0},
11351 	{0x49, 0x44, 0x44, 0, 0},
11352 	{0x4A, 0x7, 0x7, 0, 0},
11353 	{0x4B, 0x6, 0x6, 0, 0},
11354 	{0x4C, 0x4, 0x4, 0, 0},
11355 	{0x4D, 0, 0, 0, 0},
11356 	{0x4E, 0, 0, 0, 0},
11357 	{0x4F, 0x26, 0x26, 1, 1},
11358 	{0x50, 0x26, 0x26, 1, 1},
11359 	{0x51, 0xf, 0xf, 1, 1},
11360 	{0x52, 0xf, 0xf, 1, 1},
11361 	{0x53, 0x44, 0x44, 0, 0},
11362 	{0x54, 0, 0, 0, 0},
11363 	{0x55, 0, 0, 0, 0},
11364 	{0x56, 0x8, 0x8, 0, 0},
11365 	{0x57, 0x8, 0x8, 0, 0},
11366 	{0x58, 0x7, 0x7, 0, 0},
11367 	{0x59, 0x22, 0x22, 0, 0},
11368 	{0x5A, 0x22, 0x22, 0, 0},
11369 	{0x5B, 0x2, 0x2, 0, 0},
11370 	{0x5C, 0x4, 0x4, 1, 1},
11371 	{0x5D, 0x7, 0x7, 0, 0},
11372 	{0x5E, 0x55, 0x55, 0, 0},
11373 	{0x5F, 0x23, 0x23, 0, 0},
11374 	{0x60, 0x41, 0x41, 0, 0},
11375 	{0x61, 0x1, 0x1, 0, 0},
11376 	{0x62, 0xa, 0xa, 0, 0},
11377 	{0x63, 0, 0, 0, 0},
11378 	{0x64, 0, 0, 0, 0},
11379 	{0x65, 0, 0, 0, 0},
11380 	{0x66, 0, 0, 0, 0},
11381 	{0x67, 0, 0, 0, 0},
11382 	{0x68, 0, 0, 0, 0},
11383 	{0x69, 0, 0, 0, 0},
11384 	{0x6A, 0, 0, 0, 0},
11385 	{0x6B, 0xc, 0xc, 0, 0},
11386 	{0x6C, 0, 0, 0, 0},
11387 	{0x6D, 0, 0, 0, 0},
11388 	{0x6E, 0, 0, 0, 0},
11389 	{0x6F, 0, 0, 0, 0},
11390 	{0x70, 0, 0, 0, 0},
11391 	{0x71, 0, 0, 0, 0},
11392 	{0x72, 0x22, 0x22, 0, 0},
11393 	{0x73, 0x22, 0x22, 0, 0},
11394 	{0x74, 0, 0, 1, 1},
11395 	{0x75, 0xa, 0xa, 0, 0},
11396 	{0x76, 0x1, 0x1, 0, 0},
11397 	{0x77, 0x22, 0x22, 0, 0},
11398 	{0x78, 0x30, 0x30, 0, 0},
11399 	{0x79, 0, 0, 0, 0},
11400 	{0x7A, 0, 0, 0, 0},
11401 	{0x7B, 0, 0, 0, 0},
11402 	{0x7C, 0, 0, 0, 0},
11403 	{0x7D, 0x5, 0x5, 1, 1},
11404 	{0x7E, 0, 0, 0, 0},
11405 	{0x7F, 0, 0, 0, 0},
11406 	{0x80, 0, 0, 0, 0},
11407 	{0x81, 0, 0, 0, 0},
11408 	{0x82, 0, 0, 0, 0},
11409 	{0x83, 0, 0, 0, 0},
11410 	{0x84, 0, 0, 0, 0},
11411 	{0x85, 0, 0, 0, 0},
11412 	{0x86, 0, 0, 0, 0},
11413 	{0x87, 0, 0, 0, 0},
11414 	{0x88, 0, 0, 0, 0},
11415 	{0x89, 0, 0, 0, 0},
11416 	{0x8A, 0, 0, 0, 0},
11417 	{0x8B, 0, 0, 0, 0},
11418 	{0x8C, 0, 0, 0, 0},
11419 	{0x8D, 0, 0, 0, 0},
11420 	{0x8E, 0, 0, 0, 0},
11421 	{0x8F, 0, 0, 0, 0},
11422 	{0x90, 0, 0, 0, 0},
11423 	{0x91, 0, 0, 0, 0},
11424 	{0x92, 0, 0, 0, 0},
11425 	{0x93, 0, 0, 0, 0},
11426 	{0x94, 0, 0, 0, 0},
11427 	{0xFFFF, 0, 0, 0, 0},
11428 };
11429 
11430 static struct radio_20xx_regs regs_2057_rev4[] = {
11431 	{0x00, 0x84, 0},
11432 	{0x01, 0, 0},
11433 	{0x02, 0x60, 0},
11434 	{0x03, 0x1f, 0},
11435 	{0x04, 0x4, 0},
11436 	{0x05, 0x2, 0},
11437 	{0x06, 0x1, 0},
11438 	{0x07, 0x1, 0},
11439 	{0x08, 0x1, 0},
11440 	{0x09, 0x69, 0},
11441 	{0x0A, 0x66, 0},
11442 	{0x0B, 0x6, 0},
11443 	{0x0C, 0x18, 0},
11444 	{0x0D, 0x3, 0},
11445 	{0x0E, 0x20, 1},
11446 	{0x0F, 0x20, 0},
11447 	{0x10, 0, 0},
11448 	{0x11, 0x7c, 0},
11449 	{0x12, 0x42, 0},
11450 	{0x13, 0xbd, 0},
11451 	{0x14, 0x7, 0},
11452 	{0x15, 0xf7, 0},
11453 	{0x16, 0x8, 0},
11454 	{0x17, 0x17, 0},
11455 	{0x18, 0x7, 0},
11456 	{0x19, 0, 0},
11457 	{0x1A, 0x2, 0},
11458 	{0x1B, 0x13, 0},
11459 	{0x1C, 0x3e, 0},
11460 	{0x1D, 0x3e, 0},
11461 	{0x1E, 0x96, 0},
11462 	{0x1F, 0x4, 0},
11463 	{0x20, 0, 0},
11464 	{0x21, 0, 0},
11465 	{0x22, 0x17, 0},
11466 	{0x23, 0x4, 0},
11467 	{0x24, 0x1, 0},
11468 	{0x25, 0x6, 0},
11469 	{0x26, 0x4, 0},
11470 	{0x27, 0xd, 0},
11471 	{0x28, 0xd, 0},
11472 	{0x29, 0x30, 0},
11473 	{0x2A, 0x32, 0},
11474 	{0x2B, 0x8, 0},
11475 	{0x2C, 0x1c, 0},
11476 	{0x2D, 0x2, 0},
11477 	{0x2E, 0x4, 0},
11478 	{0x2F, 0x7f, 0},
11479 	{0x30, 0x27, 0},
11480 	{0x31, 0, 1},
11481 	{0x32, 0, 1},
11482 	{0x33, 0, 1},
11483 	{0x34, 0, 0},
11484 	{0x35, 0x26, 1},
11485 	{0x36, 0x18, 0},
11486 	{0x37, 0x7, 0},
11487 	{0x38, 0x66, 0},
11488 	{0x39, 0x66, 0},
11489 	{0x3A, 0x66, 0},
11490 	{0x3B, 0x66, 0},
11491 	{0x3C, 0xff, 1},
11492 	{0x3D, 0xff, 1},
11493 	{0x3E, 0xff, 1},
11494 	{0x3F, 0xff, 1},
11495 	{0x40, 0x16, 0},
11496 	{0x41, 0x7, 0},
11497 	{0x42, 0x19, 0},
11498 	{0x43, 0x7, 0},
11499 	{0x44, 0x6, 0},
11500 	{0x45, 0x3, 0},
11501 	{0x46, 0x1, 0},
11502 	{0x47, 0x7, 0},
11503 	{0x48, 0x33, 0},
11504 	{0x49, 0x5, 0},
11505 	{0x4A, 0x77, 0},
11506 	{0x4B, 0x66, 0},
11507 	{0x4C, 0x66, 0},
11508 	{0x4D, 0, 0},
11509 	{0x4E, 0x4, 0},
11510 	{0x4F, 0xc, 0},
11511 	{0x50, 0, 0},
11512 	{0x51, 0x75, 0},
11513 	{0x56, 0x7, 0},
11514 	{0x57, 0, 0},
11515 	{0x58, 0, 0},
11516 	{0x59, 0xa8, 0},
11517 	{0x5A, 0, 0},
11518 	{0x5B, 0x1f, 0},
11519 	{0x5C, 0x30, 0},
11520 	{0x5D, 0x1, 0},
11521 	{0x5E, 0x30, 0},
11522 	{0x5F, 0x70, 0},
11523 	{0x60, 0, 0},
11524 	{0x61, 0, 0},
11525 	{0x62, 0x33, 1},
11526 	{0x63, 0x19, 0},
11527 	{0x64, 0x62, 0},
11528 	{0x65, 0, 0},
11529 	{0x66, 0x11, 0},
11530 	{0x69, 0, 0},
11531 	{0x6A, 0x7e, 0},
11532 	{0x6B, 0x3f, 0},
11533 	{0x6C, 0x7f, 0},
11534 	{0x6D, 0x78, 0},
11535 	{0x6E, 0xc8, 0},
11536 	{0x6F, 0x88, 0},
11537 	{0x70, 0x8, 0},
11538 	{0x71, 0xf, 0},
11539 	{0x72, 0xbc, 0},
11540 	{0x73, 0x8, 0},
11541 	{0x74, 0x60, 0},
11542 	{0x75, 0x1e, 0},
11543 	{0x76, 0x70, 0},
11544 	{0x77, 0, 0},
11545 	{0x78, 0, 0},
11546 	{0x79, 0, 0},
11547 	{0x7A, 0x33, 0},
11548 	{0x7B, 0x1e, 0},
11549 	{0x7C, 0x62, 0},
11550 	{0x7D, 0x11, 0},
11551 	{0x80, 0x3c, 0},
11552 	{0x81, 0x9c, 0},
11553 	{0x82, 0xa, 0},
11554 	{0x83, 0x9d, 0},
11555 	{0x84, 0xa, 0},
11556 	{0x85, 0, 0},
11557 	{0x86, 0x40, 0},
11558 	{0x87, 0x40, 0},
11559 	{0x88, 0x88, 0},
11560 	{0x89, 0x10, 0},
11561 	{0x8A, 0xf0, 1},
11562 	{0x8B, 0x10, 1},
11563 	{0x8C, 0xf0, 1},
11564 	{0x8D, 0, 0},
11565 	{0x8E, 0, 0},
11566 	{0x8F, 0x10, 0},
11567 	{0x90, 0x55, 0},
11568 	{0x91, 0x3f, 1},
11569 	{0x92, 0x36, 1},
11570 	{0x93, 0, 0},
11571 	{0x94, 0, 0},
11572 	{0x95, 0, 0},
11573 	{0x96, 0x87, 0},
11574 	{0x97, 0x11, 0},
11575 	{0x98, 0, 0},
11576 	{0x99, 0x33, 0},
11577 	{0x9A, 0x88, 0},
11578 	{0x9B, 0, 0},
11579 	{0x9C, 0x87, 0},
11580 	{0x9D, 0x11, 0},
11581 	{0x9E, 0, 0},
11582 	{0x9F, 0x33, 0},
11583 	{0xA0, 0x88, 0},
11584 	{0xA1, 0xe1, 0},
11585 	{0xA2, 0x3f, 0},
11586 	{0xA3, 0x44, 0},
11587 	{0xA4, 0x8c, 1},
11588 	{0xA5, 0x6d, 0},
11589 	{0xA6, 0x22, 0},
11590 	{0xA7, 0xbe, 0},
11591 	{0xA8, 0x55, 1},
11592 	{0xA9, 0xc, 0},
11593 	{0xAA, 0xc, 0},
11594 	{0xAB, 0xaa, 0},
11595 	{0xAC, 0x2, 0},
11596 	{0xAD, 0, 0},
11597 	{0xAE, 0x10, 0},
11598 	{0xAF, 0x1, 1},
11599 	{0xB0, 0, 0},
11600 	{0xB1, 0, 0},
11601 	{0xB2, 0x80, 0},
11602 	{0xB3, 0x60, 0},
11603 	{0xB4, 0x44, 0},
11604 	{0xB5, 0x55, 0},
11605 	{0xB6, 0x1, 0},
11606 	{0xB7, 0x55, 0},
11607 	{0xB8, 0x1, 0},
11608 	{0xB9, 0x5, 0},
11609 	{0xBA, 0x55, 0},
11610 	{0xBB, 0x55, 0},
11611 	{0xC1, 0, 0},
11612 	{0xC2, 0, 0},
11613 	{0xC3, 0, 0},
11614 	{0xC4, 0, 0},
11615 	{0xC5, 0, 0},
11616 	{0xC6, 0, 0},
11617 	{0xC7, 0, 0},
11618 	{0xC8, 0, 0},
11619 	{0xC9, 0, 0},
11620 	{0xCA, 0, 0},
11621 	{0xCB, 0, 0},
11622 	{0xCC, 0, 0},
11623 	{0xCD, 0, 0},
11624 	{0xCE, 0x5e, 0},
11625 	{0xCF, 0xc, 0},
11626 	{0xD0, 0xc, 0},
11627 	{0xD1, 0xc, 0},
11628 	{0xD2, 0, 0},
11629 	{0xD3, 0x2b, 0},
11630 	{0xD4, 0xc, 0},
11631 	{0xD5, 0, 0},
11632 	{0xD6, 0x75, 0},
11633 	{0xDB, 0x7, 0},
11634 	{0xDC, 0, 0},
11635 	{0xDD, 0, 0},
11636 	{0xDE, 0xa8, 0},
11637 	{0xDF, 0, 0},
11638 	{0xE0, 0x1f, 0},
11639 	{0xE1, 0x30, 0},
11640 	{0xE2, 0x1, 0},
11641 	{0xE3, 0x30, 0},
11642 	{0xE4, 0x70, 0},
11643 	{0xE5, 0, 0},
11644 	{0xE6, 0, 0},
11645 	{0xE7, 0x33, 0},
11646 	{0xE8, 0x19, 0},
11647 	{0xE9, 0x62, 0},
11648 	{0xEA, 0, 0},
11649 	{0xEB, 0x11, 0},
11650 	{0xEE, 0, 0},
11651 	{0xEF, 0x7e, 0},
11652 	{0xF0, 0x3f, 0},
11653 	{0xF1, 0x7f, 0},
11654 	{0xF2, 0x78, 0},
11655 	{0xF3, 0xc8, 0},
11656 	{0xF4, 0x88, 0},
11657 	{0xF5, 0x8, 0},
11658 	{0xF6, 0xf, 0},
11659 	{0xF7, 0xbc, 0},
11660 	{0xF8, 0x8, 0},
11661 	{0xF9, 0x60, 0},
11662 	{0xFA, 0x1e, 0},
11663 	{0xFB, 0x70, 0},
11664 	{0xFC, 0, 0},
11665 	{0xFD, 0, 0},
11666 	{0xFE, 0, 0},
11667 	{0xFF, 0x33, 0},
11668 	{0x100, 0x1e, 0},
11669 	{0x101, 0x62, 0},
11670 	{0x102, 0x11, 0},
11671 	{0x105, 0x3c, 0},
11672 	{0x106, 0x9c, 0},
11673 	{0x107, 0xa, 0},
11674 	{0x108, 0x9d, 0},
11675 	{0x109, 0xa, 0},
11676 	{0x10A, 0, 0},
11677 	{0x10B, 0x40, 0},
11678 	{0x10C, 0x40, 0},
11679 	{0x10D, 0x88, 0},
11680 	{0x10E, 0x10, 0},
11681 	{0x10F, 0xf0, 1},
11682 	{0x110, 0x10, 1},
11683 	{0x111, 0xf0, 1},
11684 	{0x112, 0, 0},
11685 	{0x113, 0, 0},
11686 	{0x114, 0x10, 0},
11687 	{0x115, 0x55, 0},
11688 	{0x116, 0x3f, 1},
11689 	{0x117, 0x36, 1},
11690 	{0x118, 0, 0},
11691 	{0x119, 0, 0},
11692 	{0x11A, 0, 0},
11693 	{0x11B, 0x87, 0},
11694 	{0x11C, 0x11, 0},
11695 	{0x11D, 0, 0},
11696 	{0x11E, 0x33, 0},
11697 	{0x11F, 0x88, 0},
11698 	{0x120, 0, 0},
11699 	{0x121, 0x87, 0},
11700 	{0x122, 0x11, 0},
11701 	{0x123, 0, 0},
11702 	{0x124, 0x33, 0},
11703 	{0x125, 0x88, 0},
11704 	{0x126, 0xe1, 0},
11705 	{0x127, 0x3f, 0},
11706 	{0x128, 0x44, 0},
11707 	{0x129, 0x8c, 1},
11708 	{0x12A, 0x6d, 0},
11709 	{0x12B, 0x22, 0},
11710 	{0x12C, 0xbe, 0},
11711 	{0x12D, 0x55, 1},
11712 	{0x12E, 0xc, 0},
11713 	{0x12F, 0xc, 0},
11714 	{0x130, 0xaa, 0},
11715 	{0x131, 0x2, 0},
11716 	{0x132, 0, 0},
11717 	{0x133, 0x10, 0},
11718 	{0x134, 0x1, 1},
11719 	{0x135, 0, 0},
11720 	{0x136, 0, 0},
11721 	{0x137, 0x80, 0},
11722 	{0x138, 0x60, 0},
11723 	{0x139, 0x44, 0},
11724 	{0x13A, 0x55, 0},
11725 	{0x13B, 0x1, 0},
11726 	{0x13C, 0x55, 0},
11727 	{0x13D, 0x1, 0},
11728 	{0x13E, 0x5, 0},
11729 	{0x13F, 0x55, 0},
11730 	{0x140, 0x55, 0},
11731 	{0x146, 0, 0},
11732 	{0x147, 0, 0},
11733 	{0x148, 0, 0},
11734 	{0x149, 0, 0},
11735 	{0x14A, 0, 0},
11736 	{0x14B, 0, 0},
11737 	{0x14C, 0, 0},
11738 	{0x14D, 0, 0},
11739 	{0x14E, 0, 0},
11740 	{0x14F, 0, 0},
11741 	{0x150, 0, 0},
11742 	{0x151, 0, 0},
11743 	{0x152, 0, 0},
11744 	{0x153, 0, 0},
11745 	{0x154, 0xc, 0},
11746 	{0x155, 0xc, 0},
11747 	{0x156, 0xc, 0},
11748 	{0x157, 0, 0},
11749 	{0x158, 0x2b, 0},
11750 	{0x159, 0x84, 0},
11751 	{0x15A, 0x15, 0},
11752 	{0x15B, 0xf, 0},
11753 	{0x15C, 0, 0},
11754 	{0x15D, 0, 0},
11755 	{0x15E, 0, 1},
11756 	{0x15F, 0, 1},
11757 	{0x160, 0, 1},
11758 	{0x161, 0, 1},
11759 	{0x162, 0, 1},
11760 	{0x163, 0, 1},
11761 	{0x164, 0, 0},
11762 	{0x165, 0, 0},
11763 	{0x166, 0, 0},
11764 	{0x167, 0, 0},
11765 	{0x168, 0, 0},
11766 	{0x169, 0x2, 1},
11767 	{0x16A, 0, 1},
11768 	{0x16B, 0, 1},
11769 	{0x16C, 0, 1},
11770 	{0x16D, 0, 0},
11771 	{0x170, 0, 0},
11772 	{0x171, 0x77, 0},
11773 	{0x172, 0x77, 0},
11774 	{0x173, 0x77, 0},
11775 	{0x174, 0x77, 0},
11776 	{0x175, 0, 0},
11777 	{0x176, 0x3, 0},
11778 	{0x177, 0x37, 0},
11779 	{0x178, 0x3, 0},
11780 	{0x179, 0, 0},
11781 	{0x17A, 0x21, 0},
11782 	{0x17B, 0x21, 0},
11783 	{0x17C, 0, 0},
11784 	{0x17D, 0xaa, 0},
11785 	{0x17E, 0, 0},
11786 	{0x17F, 0xaa, 0},
11787 	{0x180, 0, 0},
11788 	{0x190, 0, 0},
11789 	{0x191, 0x77, 0},
11790 	{0x192, 0x77, 0},
11791 	{0x193, 0x77, 0},
11792 	{0x194, 0x77, 0},
11793 	{0x195, 0, 0},
11794 	{0x196, 0x3, 0},
11795 	{0x197, 0x37, 0},
11796 	{0x198, 0x3, 0},
11797 	{0x199, 0, 0},
11798 	{0x19A, 0x21, 0},
11799 	{0x19B, 0x21, 0},
11800 	{0x19C, 0, 0},
11801 	{0x19D, 0xaa, 0},
11802 	{0x19E, 0, 0},
11803 	{0x19F, 0xaa, 0},
11804 	{0x1A0, 0, 0},
11805 	{0x1A1, 0x2, 0},
11806 	{0x1A2, 0xf, 0},
11807 	{0x1A3, 0xf, 0},
11808 	{0x1A4, 0, 1},
11809 	{0x1A5, 0, 1},
11810 	{0x1A6, 0, 1},
11811 	{0x1A7, 0x2, 0},
11812 	{0x1A8, 0xf, 0},
11813 	{0x1A9, 0xf, 0},
11814 	{0x1AA, 0, 1},
11815 	{0x1AB, 0, 1},
11816 	{0x1AC, 0, 1},
11817 	{0xFFFF, 0, 0},
11818 };
11819 
11820 static struct radio_20xx_regs regs_2057_rev5[] = {
11821 	{0x00, 0, 1},
11822 	{0x01, 0x57, 1},
11823 	{0x02, 0x20, 1},
11824 	{0x03, 0x1f, 0},
11825 	{0x04, 0x4, 0},
11826 	{0x05, 0x2, 0},
11827 	{0x06, 0x1, 0},
11828 	{0x07, 0x1, 0},
11829 	{0x08, 0x1, 0},
11830 	{0x09, 0x69, 0},
11831 	{0x0A, 0x66, 0},
11832 	{0x0B, 0x6, 0},
11833 	{0x0C, 0x18, 0},
11834 	{0x0D, 0x3, 0},
11835 	{0x0E, 0x20, 0},
11836 	{0x0F, 0x20, 0},
11837 	{0x10, 0, 0},
11838 	{0x11, 0x7c, 0},
11839 	{0x12, 0x42, 0},
11840 	{0x13, 0xbd, 0},
11841 	{0x14, 0x7, 0},
11842 	{0x15, 0x87, 0},
11843 	{0x16, 0x8, 0},
11844 	{0x17, 0x17, 0},
11845 	{0x18, 0x7, 0},
11846 	{0x19, 0, 0},
11847 	{0x1A, 0x2, 0},
11848 	{0x1B, 0x13, 0},
11849 	{0x1C, 0x3e, 0},
11850 	{0x1D, 0x3e, 0},
11851 	{0x1E, 0x96, 0},
11852 	{0x1F, 0x4, 0},
11853 	{0x20, 0, 0},
11854 	{0x21, 0, 0},
11855 	{0x22, 0x17, 0},
11856 	{0x23, 0x6, 1},
11857 	{0x24, 0x1, 0},
11858 	{0x25, 0x6, 0},
11859 	{0x26, 0x4, 0},
11860 	{0x27, 0xd, 0},
11861 	{0x28, 0xd, 0},
11862 	{0x29, 0x30, 0},
11863 	{0x2A, 0x32, 0},
11864 	{0x2B, 0x8, 0},
11865 	{0x2C, 0x1c, 0},
11866 	{0x2D, 0x2, 0},
11867 	{0x2E, 0x4, 0},
11868 	{0x2F, 0x7f, 0},
11869 	{0x30, 0x27, 0},
11870 	{0x31, 0, 1},
11871 	{0x32, 0, 1},
11872 	{0x33, 0, 1},
11873 	{0x34, 0, 0},
11874 	{0x35, 0x20, 0},
11875 	{0x36, 0x18, 0},
11876 	{0x37, 0x7, 0},
11877 	{0x38, 0x66, 0},
11878 	{0x39, 0x66, 0},
11879 	{0x3C, 0xff, 0},
11880 	{0x3D, 0xff, 0},
11881 	{0x40, 0x16, 0},
11882 	{0x41, 0x7, 0},
11883 	{0x45, 0x3, 0},
11884 	{0x46, 0x1, 0},
11885 	{0x47, 0x7, 0},
11886 	{0x4B, 0x66, 0},
11887 	{0x4C, 0x66, 0},
11888 	{0x4D, 0, 0},
11889 	{0x4E, 0x4, 0},
11890 	{0x4F, 0xc, 0},
11891 	{0x50, 0, 0},
11892 	{0x51, 0x70, 1},
11893 	{0x56, 0x7, 0},
11894 	{0x57, 0, 0},
11895 	{0x58, 0, 0},
11896 	{0x59, 0x88, 1},
11897 	{0x5A, 0, 0},
11898 	{0x5B, 0x1f, 0},
11899 	{0x5C, 0x20, 1},
11900 	{0x5D, 0x1, 0},
11901 	{0x5E, 0x30, 0},
11902 	{0x5F, 0x70, 0},
11903 	{0x60, 0, 0},
11904 	{0x61, 0, 0},
11905 	{0x62, 0x33, 1},
11906 	{0x63, 0xf, 1},
11907 	{0x64, 0xf, 1},
11908 	{0x65, 0, 0},
11909 	{0x66, 0x11, 0},
11910 	{0x80, 0x3c, 0},
11911 	{0x81, 0x1, 1},
11912 	{0x82, 0xa, 0},
11913 	{0x85, 0, 0},
11914 	{0x86, 0x40, 0},
11915 	{0x87, 0x40, 0},
11916 	{0x88, 0x88, 0},
11917 	{0x89, 0x10, 0},
11918 	{0x8A, 0xf0, 0},
11919 	{0x8B, 0x10, 0},
11920 	{0x8C, 0xf0, 0},
11921 	{0x8F, 0x10, 0},
11922 	{0x90, 0x55, 0},
11923 	{0x91, 0x3f, 1},
11924 	{0x92, 0x36, 1},
11925 	{0x93, 0, 0},
11926 	{0x94, 0, 0},
11927 	{0x95, 0, 0},
11928 	{0x96, 0x87, 0},
11929 	{0x97, 0x11, 0},
11930 	{0x98, 0, 0},
11931 	{0x99, 0x33, 0},
11932 	{0x9A, 0x88, 0},
11933 	{0xA1, 0x20, 1},
11934 	{0xA2, 0x3f, 0},
11935 	{0xA3, 0x44, 0},
11936 	{0xA4, 0x8c, 0},
11937 	{0xA5, 0x6c, 0},
11938 	{0xA6, 0x22, 0},
11939 	{0xA7, 0xbe, 0},
11940 	{0xA8, 0x55, 0},
11941 	{0xAA, 0xc, 0},
11942 	{0xAB, 0xaa, 0},
11943 	{0xAC, 0x2, 0},
11944 	{0xAD, 0, 0},
11945 	{0xAE, 0x10, 0},
11946 	{0xAF, 0x1, 0},
11947 	{0xB0, 0, 0},
11948 	{0xB1, 0, 0},
11949 	{0xB2, 0x80, 0},
11950 	{0xB3, 0x60, 0},
11951 	{0xB4, 0x44, 0},
11952 	{0xB5, 0x55, 0},
11953 	{0xB6, 0x1, 0},
11954 	{0xB7, 0x55, 0},
11955 	{0xB8, 0x1, 0},
11956 	{0xB9, 0x5, 0},
11957 	{0xBA, 0x55, 0},
11958 	{0xBB, 0x55, 0},
11959 	{0xC3, 0, 0},
11960 	{0xC4, 0, 0},
11961 	{0xC5, 0, 0},
11962 	{0xC6, 0, 0},
11963 	{0xC7, 0, 0},
11964 	{0xC8, 0, 0},
11965 	{0xC9, 0, 0},
11966 	{0xCA, 0, 0},
11967 	{0xCB, 0, 0},
11968 	{0xCD, 0, 0},
11969 	{0xCE, 0x5e, 0},
11970 	{0xCF, 0xc, 0},
11971 	{0xD0, 0xc, 0},
11972 	{0xD1, 0xc, 0},
11973 	{0xD2, 0, 0},
11974 	{0xD3, 0x2b, 0},
11975 	{0xD4, 0xc, 0},
11976 	{0xD5, 0, 0},
11977 	{0xD6, 0x70, 1},
11978 	{0xDB, 0x7, 0},
11979 	{0xDC, 0, 0},
11980 	{0xDD, 0, 0},
11981 	{0xDE, 0x88, 1},
11982 	{0xDF, 0, 0},
11983 	{0xE0, 0x1f, 0},
11984 	{0xE1, 0x20, 1},
11985 	{0xE2, 0x1, 0},
11986 	{0xE3, 0x30, 0},
11987 	{0xE4, 0x70, 0},
11988 	{0xE5, 0, 0},
11989 	{0xE6, 0, 0},
11990 	{0xE7, 0x33, 0},
11991 	{0xE8, 0xf, 1},
11992 	{0xE9, 0xf, 1},
11993 	{0xEA, 0, 0},
11994 	{0xEB, 0x11, 0},
11995 	{0x105, 0x3c, 0},
11996 	{0x106, 0x1, 1},
11997 	{0x107, 0xa, 0},
11998 	{0x10A, 0, 0},
11999 	{0x10B, 0x40, 0},
12000 	{0x10C, 0x40, 0},
12001 	{0x10D, 0x88, 0},
12002 	{0x10E, 0x10, 0},
12003 	{0x10F, 0xf0, 0},
12004 	{0x110, 0x10, 0},
12005 	{0x111, 0xf0, 0},
12006 	{0x114, 0x10, 0},
12007 	{0x115, 0x55, 0},
12008 	{0x116, 0x3f, 1},
12009 	{0x117, 0x36, 1},
12010 	{0x118, 0, 0},
12011 	{0x119, 0, 0},
12012 	{0x11A, 0, 0},
12013 	{0x11B, 0x87, 0},
12014 	{0x11C, 0x11, 0},
12015 	{0x11D, 0, 0},
12016 	{0x11E, 0x33, 0},
12017 	{0x11F, 0x88, 0},
12018 	{0x126, 0x20, 1},
12019 	{0x127, 0x3f, 0},
12020 	{0x128, 0x44, 0},
12021 	{0x129, 0x8c, 0},
12022 	{0x12A, 0x6c, 0},
12023 	{0x12B, 0x22, 0},
12024 	{0x12C, 0xbe, 0},
12025 	{0x12D, 0x55, 0},
12026 	{0x12F, 0xc, 0},
12027 	{0x130, 0xaa, 0},
12028 	{0x131, 0x2, 0},
12029 	{0x132, 0, 0},
12030 	{0x133, 0x10, 0},
12031 	{0x134, 0x1, 0},
12032 	{0x135, 0, 0},
12033 	{0x136, 0, 0},
12034 	{0x137, 0x80, 0},
12035 	{0x138, 0x60, 0},
12036 	{0x139, 0x44, 0},
12037 	{0x13A, 0x55, 0},
12038 	{0x13B, 0x1, 0},
12039 	{0x13C, 0x55, 0},
12040 	{0x13D, 0x1, 0},
12041 	{0x13E, 0x5, 0},
12042 	{0x13F, 0x55, 0},
12043 	{0x140, 0x55, 0},
12044 	{0x148, 0, 0},
12045 	{0x149, 0, 0},
12046 	{0x14A, 0, 0},
12047 	{0x14B, 0, 0},
12048 	{0x14C, 0, 0},
12049 	{0x14D, 0, 0},
12050 	{0x14E, 0, 0},
12051 	{0x14F, 0, 0},
12052 	{0x150, 0, 0},
12053 	{0x154, 0xc, 0},
12054 	{0x155, 0xc, 0},
12055 	{0x156, 0xc, 0},
12056 	{0x157, 0, 0},
12057 	{0x158, 0x2b, 0},
12058 	{0x159, 0x84, 0},
12059 	{0x15A, 0x15, 0},
12060 	{0x15B, 0xf, 0},
12061 	{0x15C, 0, 0},
12062 	{0x15D, 0, 0},
12063 	{0x15E, 0, 1},
12064 	{0x15F, 0, 1},
12065 	{0x160, 0, 1},
12066 	{0x161, 0, 1},
12067 	{0x162, 0, 1},
12068 	{0x163, 0, 1},
12069 	{0x164, 0, 0},
12070 	{0x165, 0, 0},
12071 	{0x166, 0, 0},
12072 	{0x167, 0, 0},
12073 	{0x168, 0, 0},
12074 	{0x169, 0, 0},
12075 	{0x16A, 0, 1},
12076 	{0x16B, 0, 1},
12077 	{0x16C, 0, 1},
12078 	{0x16D, 0, 0},
12079 	{0x170, 0, 0},
12080 	{0x171, 0x77, 0},
12081 	{0x172, 0x77, 0},
12082 	{0x173, 0x77, 0},
12083 	{0x174, 0x77, 0},
12084 	{0x175, 0, 0},
12085 	{0x176, 0x3, 0},
12086 	{0x177, 0x37, 0},
12087 	{0x178, 0x3, 0},
12088 	{0x179, 0, 0},
12089 	{0x17B, 0x21, 0},
12090 	{0x17C, 0, 0},
12091 	{0x17D, 0xaa, 0},
12092 	{0x17E, 0, 0},
12093 	{0x190, 0, 0},
12094 	{0x191, 0x77, 0},
12095 	{0x192, 0x77, 0},
12096 	{0x193, 0x77, 0},
12097 	{0x194, 0x77, 0},
12098 	{0x195, 0, 0},
12099 	{0x196, 0x3, 0},
12100 	{0x197, 0x37, 0},
12101 	{0x198, 0x3, 0},
12102 	{0x199, 0, 0},
12103 	{0x19B, 0x21, 0},
12104 	{0x19C, 0, 0},
12105 	{0x19D, 0xaa, 0},
12106 	{0x19E, 0, 0},
12107 	{0x1A1, 0x2, 0},
12108 	{0x1A2, 0xf, 0},
12109 	{0x1A3, 0xf, 0},
12110 	{0x1A4, 0, 1},
12111 	{0x1A5, 0, 1},
12112 	{0x1A6, 0, 1},
12113 	{0x1A7, 0x2, 0},
12114 	{0x1A8, 0xf, 0},
12115 	{0x1A9, 0xf, 0},
12116 	{0x1AA, 0, 1},
12117 	{0x1AB, 0, 1},
12118 	{0x1AC, 0, 1},
12119 	{0x1AD, 0x84, 0},
12120 	{0x1AE, 0x60, 0},
12121 	{0x1AF, 0x47, 0},
12122 	{0x1B0, 0x47, 0},
12123 	{0x1B1, 0, 0},
12124 	{0x1B2, 0, 0},
12125 	{0x1B3, 0, 0},
12126 	{0x1B4, 0, 0},
12127 	{0x1B5, 0, 0},
12128 	{0x1B6, 0, 0},
12129 	{0x1B7, 0xc, 1},
12130 	{0x1B8, 0, 0},
12131 	{0x1B9, 0, 0},
12132 	{0x1BA, 0, 0},
12133 	{0x1BB, 0, 0},
12134 	{0x1BC, 0, 0},
12135 	{0x1BD, 0, 0},
12136 	{0x1BE, 0, 0},
12137 	{0x1BF, 0, 0},
12138 	{0x1C0, 0, 0},
12139 	{0x1C1, 0x1, 1},
12140 	{0x1C2, 0x80, 1},
12141 	{0x1C3, 0, 0},
12142 	{0x1C4, 0, 0},
12143 	{0x1C5, 0, 0},
12144 	{0x1C6, 0, 0},
12145 	{0x1C7, 0, 0},
12146 	{0x1C8, 0, 0},
12147 	{0x1C9, 0, 0},
12148 	{0x1CA, 0, 0},
12149 	{0xFFFF, 0, 0}
12150 };
12151 
12152 static struct radio_20xx_regs regs_2057_rev5v1[] = {
12153 	{0x00, 0x15, 1},
12154 	{0x01, 0x57, 1},
12155 	{0x02, 0x20, 1},
12156 	{0x03, 0x1f, 0},
12157 	{0x04, 0x4, 0},
12158 	{0x05, 0x2, 0},
12159 	{0x06, 0x1, 0},
12160 	{0x07, 0x1, 0},
12161 	{0x08, 0x1, 0},
12162 	{0x09, 0x69, 0},
12163 	{0x0A, 0x66, 0},
12164 	{0x0B, 0x6, 0},
12165 	{0x0C, 0x18, 0},
12166 	{0x0D, 0x3, 0},
12167 	{0x0E, 0x20, 0},
12168 	{0x0F, 0x20, 0},
12169 	{0x10, 0, 0},
12170 	{0x11, 0x7c, 0},
12171 	{0x12, 0x42, 0},
12172 	{0x13, 0xbd, 0},
12173 	{0x14, 0x7, 0},
12174 	{0x15, 0x87, 0},
12175 	{0x16, 0x8, 0},
12176 	{0x17, 0x17, 0},
12177 	{0x18, 0x7, 0},
12178 	{0x19, 0, 0},
12179 	{0x1A, 0x2, 0},
12180 	{0x1B, 0x13, 0},
12181 	{0x1C, 0x3e, 0},
12182 	{0x1D, 0x3e, 0},
12183 	{0x1E, 0x96, 0},
12184 	{0x1F, 0x4, 0},
12185 	{0x20, 0, 0},
12186 	{0x21, 0, 0},
12187 	{0x22, 0x17, 0},
12188 	{0x23, 0x6, 1},
12189 	{0x24, 0x1, 0},
12190 	{0x25, 0x6, 0},
12191 	{0x26, 0x4, 0},
12192 	{0x27, 0xd, 0},
12193 	{0x28, 0xd, 0},
12194 	{0x29, 0x30, 0},
12195 	{0x2A, 0x32, 0},
12196 	{0x2B, 0x8, 0},
12197 	{0x2C, 0x1c, 0},
12198 	{0x2D, 0x2, 0},
12199 	{0x2E, 0x4, 0},
12200 	{0x2F, 0x7f, 0},
12201 	{0x30, 0x27, 0},
12202 	{0x31, 0, 1},
12203 	{0x32, 0, 1},
12204 	{0x33, 0, 1},
12205 	{0x34, 0, 0},
12206 	{0x35, 0x20, 0},
12207 	{0x36, 0x18, 0},
12208 	{0x37, 0x7, 0},
12209 	{0x38, 0x66, 0},
12210 	{0x39, 0x66, 0},
12211 	{0x3C, 0xff, 0},
12212 	{0x3D, 0xff, 0},
12213 	{0x40, 0x16, 0},
12214 	{0x41, 0x7, 0},
12215 	{0x45, 0x3, 0},
12216 	{0x46, 0x1, 0},
12217 	{0x47, 0x7, 0},
12218 	{0x4B, 0x66, 0},
12219 	{0x4C, 0x66, 0},
12220 	{0x4D, 0, 0},
12221 	{0x4E, 0x4, 0},
12222 	{0x4F, 0xc, 0},
12223 	{0x50, 0, 0},
12224 	{0x51, 0x70, 1},
12225 	{0x56, 0x7, 0},
12226 	{0x57, 0, 0},
12227 	{0x58, 0, 0},
12228 	{0x59, 0x88, 1},
12229 	{0x5A, 0, 0},
12230 	{0x5B, 0x1f, 0},
12231 	{0x5C, 0x20, 1},
12232 	{0x5D, 0x1, 0},
12233 	{0x5E, 0x30, 0},
12234 	{0x5F, 0x70, 0},
12235 	{0x60, 0, 0},
12236 	{0x61, 0, 0},
12237 	{0x62, 0x33, 1},
12238 	{0x63, 0xf, 1},
12239 	{0x64, 0xf, 1},
12240 	{0x65, 0, 0},
12241 	{0x66, 0x11, 0},
12242 	{0x80, 0x3c, 0},
12243 	{0x81, 0x1, 1},
12244 	{0x82, 0xa, 0},
12245 	{0x85, 0, 0},
12246 	{0x86, 0x40, 0},
12247 	{0x87, 0x40, 0},
12248 	{0x88, 0x88, 0},
12249 	{0x89, 0x10, 0},
12250 	{0x8A, 0xf0, 0},
12251 	{0x8B, 0x10, 0},
12252 	{0x8C, 0xf0, 0},
12253 	{0x8F, 0x10, 0},
12254 	{0x90, 0x55, 0},
12255 	{0x91, 0x3f, 1},
12256 	{0x92, 0x36, 1},
12257 	{0x93, 0, 0},
12258 	{0x94, 0, 0},
12259 	{0x95, 0, 0},
12260 	{0x96, 0x87, 0},
12261 	{0x97, 0x11, 0},
12262 	{0x98, 0, 0},
12263 	{0x99, 0x33, 0},
12264 	{0x9A, 0x88, 0},
12265 	{0xA1, 0x20, 1},
12266 	{0xA2, 0x3f, 0},
12267 	{0xA3, 0x44, 0},
12268 	{0xA4, 0x8c, 0},
12269 	{0xA5, 0x6c, 0},
12270 	{0xA6, 0x22, 0},
12271 	{0xA7, 0xbe, 0},
12272 	{0xA8, 0x55, 0},
12273 	{0xAA, 0xc, 0},
12274 	{0xAB, 0xaa, 0},
12275 	{0xAC, 0x2, 0},
12276 	{0xAD, 0, 0},
12277 	{0xAE, 0x10, 0},
12278 	{0xAF, 0x1, 0},
12279 	{0xB0, 0, 0},
12280 	{0xB1, 0, 0},
12281 	{0xB2, 0x80, 0},
12282 	{0xB3, 0x60, 0},
12283 	{0xB4, 0x44, 0},
12284 	{0xB5, 0x55, 0},
12285 	{0xB6, 0x1, 0},
12286 	{0xB7, 0x55, 0},
12287 	{0xB8, 0x1, 0},
12288 	{0xB9, 0x5, 0},
12289 	{0xBA, 0x55, 0},
12290 	{0xBB, 0x55, 0},
12291 	{0xC3, 0, 0},
12292 	{0xC4, 0, 0},
12293 	{0xC5, 0, 0},
12294 	{0xC6, 0, 0},
12295 	{0xC7, 0, 0},
12296 	{0xC8, 0, 0},
12297 	{0xC9, 0x1, 1},
12298 	{0xCA, 0, 0},
12299 	{0xCB, 0, 0},
12300 	{0xCD, 0, 0},
12301 	{0xCE, 0x5e, 0},
12302 	{0xCF, 0xc, 0},
12303 	{0xD0, 0xc, 0},
12304 	{0xD1, 0xc, 0},
12305 	{0xD2, 0, 0},
12306 	{0xD3, 0x2b, 0},
12307 	{0xD4, 0xc, 0},
12308 	{0xD5, 0, 0},
12309 	{0xD6, 0x70, 1},
12310 	{0xDB, 0x7, 0},
12311 	{0xDC, 0, 0},
12312 	{0xDD, 0, 0},
12313 	{0xDE, 0x88, 1},
12314 	{0xDF, 0, 0},
12315 	{0xE0, 0x1f, 0},
12316 	{0xE1, 0x20, 1},
12317 	{0xE2, 0x1, 0},
12318 	{0xE3, 0x30, 0},
12319 	{0xE4, 0x70, 0},
12320 	{0xE5, 0, 0},
12321 	{0xE6, 0, 0},
12322 	{0xE7, 0x33, 0},
12323 	{0xE8, 0xf, 1},
12324 	{0xE9, 0xf, 1},
12325 	{0xEA, 0, 0},
12326 	{0xEB, 0x11, 0},
12327 	{0x105, 0x3c, 0},
12328 	{0x106, 0x1, 1},
12329 	{0x107, 0xa, 0},
12330 	{0x10A, 0, 0},
12331 	{0x10B, 0x40, 0},
12332 	{0x10C, 0x40, 0},
12333 	{0x10D, 0x88, 0},
12334 	{0x10E, 0x10, 0},
12335 	{0x10F, 0xf0, 0},
12336 	{0x110, 0x10, 0},
12337 	{0x111, 0xf0, 0},
12338 	{0x114, 0x10, 0},
12339 	{0x115, 0x55, 0},
12340 	{0x116, 0x3f, 1},
12341 	{0x117, 0x36, 1},
12342 	{0x118, 0, 0},
12343 	{0x119, 0, 0},
12344 	{0x11A, 0, 0},
12345 	{0x11B, 0x87, 0},
12346 	{0x11C, 0x11, 0},
12347 	{0x11D, 0, 0},
12348 	{0x11E, 0x33, 0},
12349 	{0x11F, 0x88, 0},
12350 	{0x126, 0x20, 1},
12351 	{0x127, 0x3f, 0},
12352 	{0x128, 0x44, 0},
12353 	{0x129, 0x8c, 0},
12354 	{0x12A, 0x6c, 0},
12355 	{0x12B, 0x22, 0},
12356 	{0x12C, 0xbe, 0},
12357 	{0x12D, 0x55, 0},
12358 	{0x12F, 0xc, 0},
12359 	{0x130, 0xaa, 0},
12360 	{0x131, 0x2, 0},
12361 	{0x132, 0, 0},
12362 	{0x133, 0x10, 0},
12363 	{0x134, 0x1, 0},
12364 	{0x135, 0, 0},
12365 	{0x136, 0, 0},
12366 	{0x137, 0x80, 0},
12367 	{0x138, 0x60, 0},
12368 	{0x139, 0x44, 0},
12369 	{0x13A, 0x55, 0},
12370 	{0x13B, 0x1, 0},
12371 	{0x13C, 0x55, 0},
12372 	{0x13D, 0x1, 0},
12373 	{0x13E, 0x5, 0},
12374 	{0x13F, 0x55, 0},
12375 	{0x140, 0x55, 0},
12376 	{0x148, 0, 0},
12377 	{0x149, 0, 0},
12378 	{0x14A, 0, 0},
12379 	{0x14B, 0, 0},
12380 	{0x14C, 0, 0},
12381 	{0x14D, 0, 0},
12382 	{0x14E, 0x1, 1},
12383 	{0x14F, 0, 0},
12384 	{0x150, 0, 0},
12385 	{0x154, 0xc, 0},
12386 	{0x155, 0xc, 0},
12387 	{0x156, 0xc, 0},
12388 	{0x157, 0, 0},
12389 	{0x158, 0x2b, 0},
12390 	{0x159, 0x84, 0},
12391 	{0x15A, 0x15, 0},
12392 	{0x15B, 0xf, 0},
12393 	{0x15C, 0, 0},
12394 	{0x15D, 0, 0},
12395 	{0x15E, 0, 1},
12396 	{0x15F, 0, 1},
12397 	{0x160, 0, 1},
12398 	{0x161, 0, 1},
12399 	{0x162, 0, 1},
12400 	{0x163, 0, 1},
12401 	{0x164, 0, 0},
12402 	{0x165, 0, 0},
12403 	{0x166, 0, 0},
12404 	{0x167, 0, 0},
12405 	{0x168, 0, 0},
12406 	{0x169, 0, 0},
12407 	{0x16A, 0, 1},
12408 	{0x16B, 0, 1},
12409 	{0x16C, 0, 1},
12410 	{0x16D, 0, 0},
12411 	{0x170, 0, 0},
12412 	{0x171, 0x77, 0},
12413 	{0x172, 0x77, 0},
12414 	{0x173, 0x77, 0},
12415 	{0x174, 0x77, 0},
12416 	{0x175, 0, 0},
12417 	{0x176, 0x3, 0},
12418 	{0x177, 0x37, 0},
12419 	{0x178, 0x3, 0},
12420 	{0x179, 0, 0},
12421 	{0x17B, 0x21, 0},
12422 	{0x17C, 0, 0},
12423 	{0x17D, 0xaa, 0},
12424 	{0x17E, 0, 0},
12425 	{0x190, 0, 0},
12426 	{0x191, 0x77, 0},
12427 	{0x192, 0x77, 0},
12428 	{0x193, 0x77, 0},
12429 	{0x194, 0x77, 0},
12430 	{0x195, 0, 0},
12431 	{0x196, 0x3, 0},
12432 	{0x197, 0x37, 0},
12433 	{0x198, 0x3, 0},
12434 	{0x199, 0, 0},
12435 	{0x19B, 0x21, 0},
12436 	{0x19C, 0, 0},
12437 	{0x19D, 0xaa, 0},
12438 	{0x19E, 0, 0},
12439 	{0x1A1, 0x2, 0},
12440 	{0x1A2, 0xf, 0},
12441 	{0x1A3, 0xf, 0},
12442 	{0x1A4, 0, 1},
12443 	{0x1A5, 0, 1},
12444 	{0x1A6, 0, 1},
12445 	{0x1A7, 0x2, 0},
12446 	{0x1A8, 0xf, 0},
12447 	{0x1A9, 0xf, 0},
12448 	{0x1AA, 0, 1},
12449 	{0x1AB, 0, 1},
12450 	{0x1AC, 0, 1},
12451 	{0x1AD, 0x84, 0},
12452 	{0x1AE, 0x60, 0},
12453 	{0x1AF, 0x47, 0},
12454 	{0x1B0, 0x47, 0},
12455 	{0x1B1, 0, 0},
12456 	{0x1B2, 0, 0},
12457 	{0x1B3, 0, 0},
12458 	{0x1B4, 0, 0},
12459 	{0x1B5, 0, 0},
12460 	{0x1B6, 0, 0},
12461 	{0x1B7, 0xc, 1},
12462 	{0x1B8, 0, 0},
12463 	{0x1B9, 0, 0},
12464 	{0x1BA, 0, 0},
12465 	{0x1BB, 0, 0},
12466 	{0x1BC, 0, 0},
12467 	{0x1BD, 0, 0},
12468 	{0x1BE, 0, 0},
12469 	{0x1BF, 0, 0},
12470 	{0x1C0, 0, 0},
12471 	{0x1C1, 0x1, 1},
12472 	{0x1C2, 0x80, 1},
12473 	{0x1C3, 0, 0},
12474 	{0x1C4, 0, 0},
12475 	{0x1C5, 0, 0},
12476 	{0x1C6, 0, 0},
12477 	{0x1C7, 0, 0},
12478 	{0x1C8, 0, 0},
12479 	{0x1C9, 0, 0},
12480 	{0x1CA, 0, 0},
12481 	{0xFFFF, 0, 0}
12482 };
12483 
12484 static struct radio_20xx_regs regs_2057_rev7[] = {
12485 	{0x00, 0, 1},
12486 	{0x01, 0x57, 1},
12487 	{0x02, 0x20, 1},
12488 	{0x03, 0x1f, 0},
12489 	{0x04, 0x4, 0},
12490 	{0x05, 0x2, 0},
12491 	{0x06, 0x1, 0},
12492 	{0x07, 0x1, 0},
12493 	{0x08, 0x1, 0},
12494 	{0x09, 0x69, 0},
12495 	{0x0A, 0x66, 0},
12496 	{0x0B, 0x6, 0},
12497 	{0x0C, 0x18, 0},
12498 	{0x0D, 0x3, 0},
12499 	{0x0E, 0x20, 0},
12500 	{0x0F, 0x20, 0},
12501 	{0x10, 0, 0},
12502 	{0x11, 0x7c, 0},
12503 	{0x12, 0x42, 0},
12504 	{0x13, 0xbd, 0},
12505 	{0x14, 0x7, 0},
12506 	{0x15, 0x87, 0},
12507 	{0x16, 0x8, 0},
12508 	{0x17, 0x17, 0},
12509 	{0x18, 0x7, 0},
12510 	{0x19, 0, 0},
12511 	{0x1A, 0x2, 0},
12512 	{0x1B, 0x13, 0},
12513 	{0x1C, 0x3e, 0},
12514 	{0x1D, 0x3e, 0},
12515 	{0x1E, 0x96, 0},
12516 	{0x1F, 0x4, 0},
12517 	{0x20, 0, 0},
12518 	{0x21, 0, 0},
12519 	{0x22, 0x17, 0},
12520 	{0x23, 0x6, 0},
12521 	{0x24, 0x1, 0},
12522 	{0x25, 0x6, 0},
12523 	{0x26, 0x4, 0},
12524 	{0x27, 0xd, 0},
12525 	{0x28, 0xd, 0},
12526 	{0x29, 0x30, 0},
12527 	{0x2A, 0x32, 0},
12528 	{0x2B, 0x8, 0},
12529 	{0x2C, 0x1c, 0},
12530 	{0x2D, 0x2, 0},
12531 	{0x2E, 0x4, 0},
12532 	{0x2F, 0x7f, 0},
12533 	{0x30, 0x27, 0},
12534 	{0x31, 0, 1},
12535 	{0x32, 0, 1},
12536 	{0x33, 0, 1},
12537 	{0x34, 0, 0},
12538 	{0x35, 0x20, 0},
12539 	{0x36, 0x18, 0},
12540 	{0x37, 0x7, 0},
12541 	{0x38, 0x66, 0},
12542 	{0x39, 0x66, 0},
12543 	{0x3A, 0x66, 0},
12544 	{0x3B, 0x66, 0},
12545 	{0x3C, 0xff, 0},
12546 	{0x3D, 0xff, 0},
12547 	{0x3E, 0xff, 0},
12548 	{0x3F, 0xff, 0},
12549 	{0x40, 0x16, 0},
12550 	{0x41, 0x7, 0},
12551 	{0x42, 0x19, 0},
12552 	{0x43, 0x7, 0},
12553 	{0x44, 0x6, 0},
12554 	{0x45, 0x3, 0},
12555 	{0x46, 0x1, 0},
12556 	{0x47, 0x7, 0},
12557 	{0x48, 0x33, 0},
12558 	{0x49, 0x5, 0},
12559 	{0x4A, 0x77, 0},
12560 	{0x4B, 0x66, 0},
12561 	{0x4C, 0x66, 0},
12562 	{0x4D, 0, 0},
12563 	{0x4E, 0x4, 0},
12564 	{0x4F, 0xc, 0},
12565 	{0x50, 0, 0},
12566 	{0x51, 0x70, 1},
12567 	{0x56, 0x7, 0},
12568 	{0x57, 0, 0},
12569 	{0x58, 0, 0},
12570 	{0x59, 0x88, 1},
12571 	{0x5A, 0, 0},
12572 	{0x5B, 0x1f, 0},
12573 	{0x5C, 0x20, 1},
12574 	{0x5D, 0x1, 0},
12575 	{0x5E, 0x30, 0},
12576 	{0x5F, 0x70, 0},
12577 	{0x60, 0, 0},
12578 	{0x61, 0, 0},
12579 	{0x62, 0x33, 1},
12580 	{0x63, 0xf, 1},
12581 	{0x64, 0x13, 1},
12582 	{0x65, 0, 0},
12583 	{0x66, 0xee, 1},
12584 	{0x69, 0, 0},
12585 	{0x6A, 0x7e, 0},
12586 	{0x6B, 0x3f, 0},
12587 	{0x6C, 0x7f, 0},
12588 	{0x6D, 0x78, 0},
12589 	{0x6E, 0x58, 1},
12590 	{0x6F, 0x88, 0},
12591 	{0x70, 0x8, 0},
12592 	{0x71, 0xf, 0},
12593 	{0x72, 0xbc, 0},
12594 	{0x73, 0x8, 0},
12595 	{0x74, 0x60, 0},
12596 	{0x75, 0x13, 1},
12597 	{0x76, 0x70, 0},
12598 	{0x77, 0, 0},
12599 	{0x78, 0, 0},
12600 	{0x79, 0, 0},
12601 	{0x7A, 0x33, 0},
12602 	{0x7B, 0x13, 1},
12603 	{0x7C, 0x14, 1},
12604 	{0x7D, 0xee, 1},
12605 	{0x80, 0x3c, 0},
12606 	{0x81, 0x1, 1},
12607 	{0x82, 0xa, 0},
12608 	{0x83, 0x9d, 0},
12609 	{0x84, 0xa, 0},
12610 	{0x85, 0, 0},
12611 	{0x86, 0x40, 0},
12612 	{0x87, 0x40, 0},
12613 	{0x88, 0x88, 0},
12614 	{0x89, 0x10, 0},
12615 	{0x8A, 0xf0, 0},
12616 	{0x8B, 0x10, 0},
12617 	{0x8C, 0xf0, 0},
12618 	{0x8D, 0, 0},
12619 	{0x8E, 0, 0},
12620 	{0x8F, 0x10, 0},
12621 	{0x90, 0x55, 0},
12622 	{0x91, 0x3f, 1},
12623 	{0x92, 0x36, 1},
12624 	{0x93, 0, 0},
12625 	{0x94, 0, 0},
12626 	{0x95, 0, 0},
12627 	{0x96, 0x87, 0},
12628 	{0x97, 0x11, 0},
12629 	{0x98, 0, 0},
12630 	{0x99, 0x33, 0},
12631 	{0x9A, 0x88, 0},
12632 	{0x9B, 0, 0},
12633 	{0x9C, 0x87, 0},
12634 	{0x9D, 0x11, 0},
12635 	{0x9E, 0, 0},
12636 	{0x9F, 0x33, 0},
12637 	{0xA0, 0x88, 0},
12638 	{0xA1, 0x20, 1},
12639 	{0xA2, 0x3f, 0},
12640 	{0xA3, 0x44, 0},
12641 	{0xA4, 0x8c, 0},
12642 	{0xA5, 0x6c, 0},
12643 	{0xA6, 0x22, 0},
12644 	{0xA7, 0xbe, 0},
12645 	{0xA8, 0x55, 0},
12646 	{0xAA, 0xc, 0},
12647 	{0xAB, 0xaa, 0},
12648 	{0xAC, 0x2, 0},
12649 	{0xAD, 0, 0},
12650 	{0xAE, 0x10, 0},
12651 	{0xAF, 0x1, 0},
12652 	{0xB0, 0, 0},
12653 	{0xB1, 0, 0},
12654 	{0xB2, 0x80, 0},
12655 	{0xB3, 0x60, 0},
12656 	{0xB4, 0x44, 0},
12657 	{0xB5, 0x55, 0},
12658 	{0xB6, 0x1, 0},
12659 	{0xB7, 0x55, 0},
12660 	{0xB8, 0x1, 0},
12661 	{0xB9, 0x5, 0},
12662 	{0xBA, 0x55, 0},
12663 	{0xBB, 0x55, 0},
12664 	{0xC1, 0, 0},
12665 	{0xC2, 0, 0},
12666 	{0xC3, 0, 0},
12667 	{0xC4, 0, 0},
12668 	{0xC5, 0, 0},
12669 	{0xC6, 0, 0},
12670 	{0xC7, 0, 0},
12671 	{0xC8, 0, 0},
12672 	{0xC9, 0, 0},
12673 	{0xCA, 0, 0},
12674 	{0xCB, 0, 0},
12675 	{0xCC, 0, 0},
12676 	{0xCD, 0, 0},
12677 	{0xCE, 0x5e, 0},
12678 	{0xCF, 0xc, 0},
12679 	{0xD0, 0xc, 0},
12680 	{0xD1, 0xc, 0},
12681 	{0xD2, 0, 0},
12682 	{0xD3, 0x2b, 0},
12683 	{0xD4, 0xc, 0},
12684 	{0xD5, 0, 0},
12685 	{0xD6, 0x70, 1},
12686 	{0xDB, 0x7, 0},
12687 	{0xDC, 0, 0},
12688 	{0xDD, 0, 0},
12689 	{0xDE, 0x88, 1},
12690 	{0xDF, 0, 0},
12691 	{0xE0, 0x1f, 0},
12692 	{0xE1, 0x20, 1},
12693 	{0xE2, 0x1, 0},
12694 	{0xE3, 0x30, 0},
12695 	{0xE4, 0x70, 0},
12696 	{0xE5, 0, 0},
12697 	{0xE6, 0, 0},
12698 	{0xE7, 0x33, 0},
12699 	{0xE8, 0xf, 1},
12700 	{0xE9, 0x13, 1},
12701 	{0xEA, 0, 0},
12702 	{0xEB, 0xee, 1},
12703 	{0xEE, 0, 0},
12704 	{0xEF, 0x7e, 0},
12705 	{0xF0, 0x3f, 0},
12706 	{0xF1, 0x7f, 0},
12707 	{0xF2, 0x78, 0},
12708 	{0xF3, 0x58, 1},
12709 	{0xF4, 0x88, 0},
12710 	{0xF5, 0x8, 0},
12711 	{0xF6, 0xf, 0},
12712 	{0xF7, 0xbc, 0},
12713 	{0xF8, 0x8, 0},
12714 	{0xF9, 0x60, 0},
12715 	{0xFA, 0x13, 1},
12716 	{0xFB, 0x70, 0},
12717 	{0xFC, 0, 0},
12718 	{0xFD, 0, 0},
12719 	{0xFE, 0, 0},
12720 	{0xFF, 0x33, 0},
12721 	{0x100, 0x13, 1},
12722 	{0x101, 0x14, 1},
12723 	{0x102, 0xee, 1},
12724 	{0x105, 0x3c, 0},
12725 	{0x106, 0x1, 1},
12726 	{0x107, 0xa, 0},
12727 	{0x108, 0x9d, 0},
12728 	{0x109, 0xa, 0},
12729 	{0x10A, 0, 0},
12730 	{0x10B, 0x40, 0},
12731 	{0x10C, 0x40, 0},
12732 	{0x10D, 0x88, 0},
12733 	{0x10E, 0x10, 0},
12734 	{0x10F, 0xf0, 0},
12735 	{0x110, 0x10, 0},
12736 	{0x111, 0xf0, 0},
12737 	{0x112, 0, 0},
12738 	{0x113, 0, 0},
12739 	{0x114, 0x10, 0},
12740 	{0x115, 0x55, 0},
12741 	{0x116, 0x3f, 1},
12742 	{0x117, 0x36, 1},
12743 	{0x118, 0, 0},
12744 	{0x119, 0, 0},
12745 	{0x11A, 0, 0},
12746 	{0x11B, 0x87, 0},
12747 	{0x11C, 0x11, 0},
12748 	{0x11D, 0, 0},
12749 	{0x11E, 0x33, 0},
12750 	{0x11F, 0x88, 0},
12751 	{0x120, 0, 0},
12752 	{0x121, 0x87, 0},
12753 	{0x122, 0x11, 0},
12754 	{0x123, 0, 0},
12755 	{0x124, 0x33, 0},
12756 	{0x125, 0x88, 0},
12757 	{0x126, 0x20, 1},
12758 	{0x127, 0x3f, 0},
12759 	{0x128, 0x44, 0},
12760 	{0x129, 0x8c, 0},
12761 	{0x12A, 0x6c, 0},
12762 	{0x12B, 0x22, 0},
12763 	{0x12C, 0xbe, 0},
12764 	{0x12D, 0x55, 0},
12765 	{0x12F, 0xc, 0},
12766 	{0x130, 0xaa, 0},
12767 	{0x131, 0x2, 0},
12768 	{0x132, 0, 0},
12769 	{0x133, 0x10, 0},
12770 	{0x134, 0x1, 0},
12771 	{0x135, 0, 0},
12772 	{0x136, 0, 0},
12773 	{0x137, 0x80, 0},
12774 	{0x138, 0x60, 0},
12775 	{0x139, 0x44, 0},
12776 	{0x13A, 0x55, 0},
12777 	{0x13B, 0x1, 0},
12778 	{0x13C, 0x55, 0},
12779 	{0x13D, 0x1, 0},
12780 	{0x13E, 0x5, 0},
12781 	{0x13F, 0x55, 0},
12782 	{0x140, 0x55, 0},
12783 	{0x146, 0, 0},
12784 	{0x147, 0, 0},
12785 	{0x148, 0, 0},
12786 	{0x149, 0, 0},
12787 	{0x14A, 0, 0},
12788 	{0x14B, 0, 0},
12789 	{0x14C, 0, 0},
12790 	{0x14D, 0, 0},
12791 	{0x14E, 0, 0},
12792 	{0x14F, 0, 0},
12793 	{0x150, 0, 0},
12794 	{0x151, 0, 0},
12795 	{0x154, 0xc, 0},
12796 	{0x155, 0xc, 0},
12797 	{0x156, 0xc, 0},
12798 	{0x157, 0, 0},
12799 	{0x158, 0x2b, 0},
12800 	{0x159, 0x84, 0},
12801 	{0x15A, 0x15, 0},
12802 	{0x15B, 0xf, 0},
12803 	{0x15C, 0, 0},
12804 	{0x15D, 0, 0},
12805 	{0x15E, 0, 1},
12806 	{0x15F, 0, 1},
12807 	{0x160, 0, 1},
12808 	{0x161, 0, 1},
12809 	{0x162, 0, 1},
12810 	{0x163, 0, 1},
12811 	{0x164, 0, 0},
12812 	{0x165, 0, 0},
12813 	{0x166, 0, 0},
12814 	{0x167, 0, 0},
12815 	{0x168, 0, 0},
12816 	{0x169, 0, 0},
12817 	{0x16A, 0, 1},
12818 	{0x16B, 0, 1},
12819 	{0x16C, 0, 1},
12820 	{0x16D, 0, 0},
12821 	{0x170, 0, 0},
12822 	{0x171, 0x77, 0},
12823 	{0x172, 0x77, 0},
12824 	{0x173, 0x77, 0},
12825 	{0x174, 0x77, 0},
12826 	{0x175, 0, 0},
12827 	{0x176, 0x3, 0},
12828 	{0x177, 0x37, 0},
12829 	{0x178, 0x3, 0},
12830 	{0x179, 0, 0},
12831 	{0x17A, 0x21, 0},
12832 	{0x17B, 0x21, 0},
12833 	{0x17C, 0, 0},
12834 	{0x17D, 0xaa, 0},
12835 	{0x17E, 0, 0},
12836 	{0x17F, 0xaa, 0},
12837 	{0x180, 0, 0},
12838 	{0x190, 0, 0},
12839 	{0x191, 0x77, 0},
12840 	{0x192, 0x77, 0},
12841 	{0x193, 0x77, 0},
12842 	{0x194, 0x77, 0},
12843 	{0x195, 0, 0},
12844 	{0x196, 0x3, 0},
12845 	{0x197, 0x37, 0},
12846 	{0x198, 0x3, 0},
12847 	{0x199, 0, 0},
12848 	{0x19A, 0x21, 0},
12849 	{0x19B, 0x21, 0},
12850 	{0x19C, 0, 0},
12851 	{0x19D, 0xaa, 0},
12852 	{0x19E, 0, 0},
12853 	{0x19F, 0xaa, 0},
12854 	{0x1A0, 0, 0},
12855 	{0x1A1, 0x2, 0},
12856 	{0x1A2, 0xf, 0},
12857 	{0x1A3, 0xf, 0},
12858 	{0x1A4, 0, 1},
12859 	{0x1A5, 0, 1},
12860 	{0x1A6, 0, 1},
12861 	{0x1A7, 0x2, 0},
12862 	{0x1A8, 0xf, 0},
12863 	{0x1A9, 0xf, 0},
12864 	{0x1AA, 0, 1},
12865 	{0x1AB, 0, 1},
12866 	{0x1AC, 0, 1},
12867 	{0x1AD, 0x84, 0},
12868 	{0x1AE, 0x60, 0},
12869 	{0x1AF, 0x47, 0},
12870 	{0x1B0, 0x47, 0},
12871 	{0x1B1, 0, 0},
12872 	{0x1B2, 0, 0},
12873 	{0x1B3, 0, 0},
12874 	{0x1B4, 0, 0},
12875 	{0x1B5, 0, 0},
12876 	{0x1B6, 0, 0},
12877 	{0x1B7, 0x5, 1},
12878 	{0x1B8, 0, 0},
12879 	{0x1B9, 0, 0},
12880 	{0x1BA, 0, 0},
12881 	{0x1BB, 0, 0},
12882 	{0x1BC, 0, 0},
12883 	{0x1BD, 0, 0},
12884 	{0x1BE, 0, 0},
12885 	{0x1BF, 0, 0},
12886 	{0x1C0, 0, 0},
12887 	{0x1C1, 0, 0},
12888 	{0x1C2, 0xa0, 1},
12889 	{0x1C3, 0, 0},
12890 	{0x1C4, 0, 0},
12891 	{0x1C5, 0, 0},
12892 	{0x1C6, 0, 0},
12893 	{0x1C7, 0, 0},
12894 	{0x1C8, 0, 0},
12895 	{0x1C9, 0, 0},
12896 	{0x1CA, 0, 0},
12897 	{0xFFFF, 0, 0}
12898 };
12899 
12900 static struct radio_20xx_regs regs_2057_rev8[] = {
12901 	{0x00, 0x8, 1},
12902 	{0x01, 0x57, 1},
12903 	{0x02, 0x20, 1},
12904 	{0x03, 0x1f, 0},
12905 	{0x04, 0x4, 0},
12906 	{0x05, 0x2, 0},
12907 	{0x06, 0x1, 0},
12908 	{0x07, 0x1, 0},
12909 	{0x08, 0x1, 0},
12910 	{0x09, 0x69, 0},
12911 	{0x0A, 0x66, 0},
12912 	{0x0B, 0x6, 0},
12913 	{0x0C, 0x18, 0},
12914 	{0x0D, 0x3, 0},
12915 	{0x0E, 0x20, 0},
12916 	{0x0F, 0x20, 0},
12917 	{0x10, 0, 0},
12918 	{0x11, 0x7c, 0},
12919 	{0x12, 0x42, 0},
12920 	{0x13, 0xbd, 0},
12921 	{0x14, 0x7, 0},
12922 	{0x15, 0x87, 0},
12923 	{0x16, 0x8, 0},
12924 	{0x17, 0x17, 0},
12925 	{0x18, 0x7, 0},
12926 	{0x19, 0, 0},
12927 	{0x1A, 0x2, 0},
12928 	{0x1B, 0x13, 0},
12929 	{0x1C, 0x3e, 0},
12930 	{0x1D, 0x3e, 0},
12931 	{0x1E, 0x96, 0},
12932 	{0x1F, 0x4, 0},
12933 	{0x20, 0, 0},
12934 	{0x21, 0, 0},
12935 	{0x22, 0x17, 0},
12936 	{0x23, 0x6, 0},
12937 	{0x24, 0x1, 0},
12938 	{0x25, 0x6, 0},
12939 	{0x26, 0x4, 0},
12940 	{0x27, 0xd, 0},
12941 	{0x28, 0xd, 0},
12942 	{0x29, 0x30, 0},
12943 	{0x2A, 0x32, 0},
12944 	{0x2B, 0x8, 0},
12945 	{0x2C, 0x1c, 0},
12946 	{0x2D, 0x2, 0},
12947 	{0x2E, 0x4, 0},
12948 	{0x2F, 0x7f, 0},
12949 	{0x30, 0x27, 0},
12950 	{0x31, 0, 1},
12951 	{0x32, 0, 1},
12952 	{0x33, 0, 1},
12953 	{0x34, 0, 0},
12954 	{0x35, 0x20, 0},
12955 	{0x36, 0x18, 0},
12956 	{0x37, 0x7, 0},
12957 	{0x38, 0x66, 0},
12958 	{0x39, 0x66, 0},
12959 	{0x3A, 0x66, 0},
12960 	{0x3B, 0x66, 0},
12961 	{0x3C, 0xff, 0},
12962 	{0x3D, 0xff, 0},
12963 	{0x3E, 0xff, 0},
12964 	{0x3F, 0xff, 0},
12965 	{0x40, 0x16, 0},
12966 	{0x41, 0x7, 0},
12967 	{0x42, 0x19, 0},
12968 	{0x43, 0x7, 0},
12969 	{0x44, 0x6, 0},
12970 	{0x45, 0x3, 0},
12971 	{0x46, 0x1, 0},
12972 	{0x47, 0x7, 0},
12973 	{0x48, 0x33, 0},
12974 	{0x49, 0x5, 0},
12975 	{0x4A, 0x77, 0},
12976 	{0x4B, 0x66, 0},
12977 	{0x4C, 0x66, 0},
12978 	{0x4D, 0, 0},
12979 	{0x4E, 0x4, 0},
12980 	{0x4F, 0xc, 0},
12981 	{0x50, 0, 0},
12982 	{0x51, 0x70, 1},
12983 	{0x56, 0x7, 0},
12984 	{0x57, 0, 0},
12985 	{0x58, 0, 0},
12986 	{0x59, 0x88, 1},
12987 	{0x5A, 0, 0},
12988 	{0x5B, 0x1f, 0},
12989 	{0x5C, 0x20, 1},
12990 	{0x5D, 0x1, 0},
12991 	{0x5E, 0x30, 0},
12992 	{0x5F, 0x70, 0},
12993 	{0x60, 0, 0},
12994 	{0x61, 0, 0},
12995 	{0x62, 0x33, 1},
12996 	{0x63, 0xf, 1},
12997 	{0x64, 0xf, 1},
12998 	{0x65, 0, 0},
12999 	{0x66, 0x11, 0},
13000 	{0x69, 0, 0},
13001 	{0x6A, 0x7e, 0},
13002 	{0x6B, 0x3f, 0},
13003 	{0x6C, 0x7f, 0},
13004 	{0x6D, 0x78, 0},
13005 	{0x6E, 0x58, 1},
13006 	{0x6F, 0x88, 0},
13007 	{0x70, 0x8, 0},
13008 	{0x71, 0xf, 0},
13009 	{0x72, 0xbc, 0},
13010 	{0x73, 0x8, 0},
13011 	{0x74, 0x60, 0},
13012 	{0x75, 0x13, 1},
13013 	{0x76, 0x70, 0},
13014 	{0x77, 0, 0},
13015 	{0x78, 0, 0},
13016 	{0x79, 0, 0},
13017 	{0x7A, 0x33, 0},
13018 	{0x7B, 0x13, 1},
13019 	{0x7C, 0xf, 1},
13020 	{0x7D, 0xee, 1},
13021 	{0x80, 0x3c, 0},
13022 	{0x81, 0x1, 1},
13023 	{0x82, 0xa, 0},
13024 	{0x83, 0x9d, 0},
13025 	{0x84, 0xa, 0},
13026 	{0x85, 0, 0},
13027 	{0x86, 0x40, 0},
13028 	{0x87, 0x40, 0},
13029 	{0x88, 0x88, 0},
13030 	{0x89, 0x10, 0},
13031 	{0x8A, 0xf0, 0},
13032 	{0x8B, 0x10, 0},
13033 	{0x8C, 0xf0, 0},
13034 	{0x8D, 0, 0},
13035 	{0x8E, 0, 0},
13036 	{0x8F, 0x10, 0},
13037 	{0x90, 0x55, 0},
13038 	{0x91, 0x3f, 1},
13039 	{0x92, 0x36, 1},
13040 	{0x93, 0, 0},
13041 	{0x94, 0, 0},
13042 	{0x95, 0, 0},
13043 	{0x96, 0x87, 0},
13044 	{0x97, 0x11, 0},
13045 	{0x98, 0, 0},
13046 	{0x99, 0x33, 0},
13047 	{0x9A, 0x88, 0},
13048 	{0x9B, 0, 0},
13049 	{0x9C, 0x87, 0},
13050 	{0x9D, 0x11, 0},
13051 	{0x9E, 0, 0},
13052 	{0x9F, 0x33, 0},
13053 	{0xA0, 0x88, 0},
13054 	{0xA1, 0x20, 1},
13055 	{0xA2, 0x3f, 0},
13056 	{0xA3, 0x44, 0},
13057 	{0xA4, 0x8c, 0},
13058 	{0xA5, 0x6c, 0},
13059 	{0xA6, 0x22, 0},
13060 	{0xA7, 0xbe, 0},
13061 	{0xA8, 0x55, 0},
13062 	{0xAA, 0xc, 0},
13063 	{0xAB, 0xaa, 0},
13064 	{0xAC, 0x2, 0},
13065 	{0xAD, 0, 0},
13066 	{0xAE, 0x10, 0},
13067 	{0xAF, 0x1, 0},
13068 	{0xB0, 0, 0},
13069 	{0xB1, 0, 0},
13070 	{0xB2, 0x80, 0},
13071 	{0xB3, 0x60, 0},
13072 	{0xB4, 0x44, 0},
13073 	{0xB5, 0x55, 0},
13074 	{0xB6, 0x1, 0},
13075 	{0xB7, 0x55, 0},
13076 	{0xB8, 0x1, 0},
13077 	{0xB9, 0x5, 0},
13078 	{0xBA, 0x55, 0},
13079 	{0xBB, 0x55, 0},
13080 	{0xC1, 0, 0},
13081 	{0xC2, 0, 0},
13082 	{0xC3, 0, 0},
13083 	{0xC4, 0, 0},
13084 	{0xC5, 0, 0},
13085 	{0xC6, 0, 0},
13086 	{0xC7, 0, 0},
13087 	{0xC8, 0, 0},
13088 	{0xC9, 0x1, 1},
13089 	{0xCA, 0, 0},
13090 	{0xCB, 0, 0},
13091 	{0xCC, 0, 0},
13092 	{0xCD, 0, 0},
13093 	{0xCE, 0x5e, 0},
13094 	{0xCF, 0xc, 0},
13095 	{0xD0, 0xc, 0},
13096 	{0xD1, 0xc, 0},
13097 	{0xD2, 0, 0},
13098 	{0xD3, 0x2b, 0},
13099 	{0xD4, 0xc, 0},
13100 	{0xD5, 0, 0},
13101 	{0xD6, 0x70, 1},
13102 	{0xDB, 0x7, 0},
13103 	{0xDC, 0, 0},
13104 	{0xDD, 0, 0},
13105 	{0xDE, 0x88, 1},
13106 	{0xDF, 0, 0},
13107 	{0xE0, 0x1f, 0},
13108 	{0xE1, 0x20, 1},
13109 	{0xE2, 0x1, 0},
13110 	{0xE3, 0x30, 0},
13111 	{0xE4, 0x70, 0},
13112 	{0xE5, 0, 0},
13113 	{0xE6, 0, 0},
13114 	{0xE7, 0x33, 0},
13115 	{0xE8, 0xf, 1},
13116 	{0xE9, 0xf, 1},
13117 	{0xEA, 0, 0},
13118 	{0xEB, 0x11, 0},
13119 	{0xEE, 0, 0},
13120 	{0xEF, 0x7e, 0},
13121 	{0xF0, 0x3f, 0},
13122 	{0xF1, 0x7f, 0},
13123 	{0xF2, 0x78, 0},
13124 	{0xF3, 0x58, 1},
13125 	{0xF4, 0x88, 0},
13126 	{0xF5, 0x8, 0},
13127 	{0xF6, 0xf, 0},
13128 	{0xF7, 0xbc, 0},
13129 	{0xF8, 0x8, 0},
13130 	{0xF9, 0x60, 0},
13131 	{0xFA, 0x13, 1},
13132 	{0xFB, 0x70, 0},
13133 	{0xFC, 0, 0},
13134 	{0xFD, 0, 0},
13135 	{0xFE, 0, 0},
13136 	{0xFF, 0x33, 0},
13137 	{0x100, 0x13, 1},
13138 	{0x101, 0xf, 1},
13139 	{0x102, 0xee, 1},
13140 	{0x105, 0x3c, 0},
13141 	{0x106, 0x1, 1},
13142 	{0x107, 0xa, 0},
13143 	{0x108, 0x9d, 0},
13144 	{0x109, 0xa, 0},
13145 	{0x10A, 0, 0},
13146 	{0x10B, 0x40, 0},
13147 	{0x10C, 0x40, 0},
13148 	{0x10D, 0x88, 0},
13149 	{0x10E, 0x10, 0},
13150 	{0x10F, 0xf0, 0},
13151 	{0x110, 0x10, 0},
13152 	{0x111, 0xf0, 0},
13153 	{0x112, 0, 0},
13154 	{0x113, 0, 0},
13155 	{0x114, 0x10, 0},
13156 	{0x115, 0x55, 0},
13157 	{0x116, 0x3f, 1},
13158 	{0x117, 0x36, 1},
13159 	{0x118, 0, 0},
13160 	{0x119, 0, 0},
13161 	{0x11A, 0, 0},
13162 	{0x11B, 0x87, 0},
13163 	{0x11C, 0x11, 0},
13164 	{0x11D, 0, 0},
13165 	{0x11E, 0x33, 0},
13166 	{0x11F, 0x88, 0},
13167 	{0x120, 0, 0},
13168 	{0x121, 0x87, 0},
13169 	{0x122, 0x11, 0},
13170 	{0x123, 0, 0},
13171 	{0x124, 0x33, 0},
13172 	{0x125, 0x88, 0},
13173 	{0x126, 0x20, 1},
13174 	{0x127, 0x3f, 0},
13175 	{0x128, 0x44, 0},
13176 	{0x129, 0x8c, 0},
13177 	{0x12A, 0x6c, 0},
13178 	{0x12B, 0x22, 0},
13179 	{0x12C, 0xbe, 0},
13180 	{0x12D, 0x55, 0},
13181 	{0x12F, 0xc, 0},
13182 	{0x130, 0xaa, 0},
13183 	{0x131, 0x2, 0},
13184 	{0x132, 0, 0},
13185 	{0x133, 0x10, 0},
13186 	{0x134, 0x1, 0},
13187 	{0x135, 0, 0},
13188 	{0x136, 0, 0},
13189 	{0x137, 0x80, 0},
13190 	{0x138, 0x60, 0},
13191 	{0x139, 0x44, 0},
13192 	{0x13A, 0x55, 0},
13193 	{0x13B, 0x1, 0},
13194 	{0x13C, 0x55, 0},
13195 	{0x13D, 0x1, 0},
13196 	{0x13E, 0x5, 0},
13197 	{0x13F, 0x55, 0},
13198 	{0x140, 0x55, 0},
13199 	{0x146, 0, 0},
13200 	{0x147, 0, 0},
13201 	{0x148, 0, 0},
13202 	{0x149, 0, 0},
13203 	{0x14A, 0, 0},
13204 	{0x14B, 0, 0},
13205 	{0x14C, 0, 0},
13206 	{0x14D, 0, 0},
13207 	{0x14E, 0x1, 1},
13208 	{0x14F, 0, 0},
13209 	{0x150, 0, 0},
13210 	{0x151, 0, 0},
13211 	{0x154, 0xc, 0},
13212 	{0x155, 0xc, 0},
13213 	{0x156, 0xc, 0},
13214 	{0x157, 0, 0},
13215 	{0x158, 0x2b, 0},
13216 	{0x159, 0x84, 0},
13217 	{0x15A, 0x15, 0},
13218 	{0x15B, 0xf, 0},
13219 	{0x15C, 0, 0},
13220 	{0x15D, 0, 0},
13221 	{0x15E, 0, 1},
13222 	{0x15F, 0, 1},
13223 	{0x160, 0, 1},
13224 	{0x161, 0, 1},
13225 	{0x162, 0, 1},
13226 	{0x163, 0, 1},
13227 	{0x164, 0, 0},
13228 	{0x165, 0, 0},
13229 	{0x166, 0, 0},
13230 	{0x167, 0, 0},
13231 	{0x168, 0, 0},
13232 	{0x169, 0, 0},
13233 	{0x16A, 0, 1},
13234 	{0x16B, 0, 1},
13235 	{0x16C, 0, 1},
13236 	{0x16D, 0, 0},
13237 	{0x170, 0, 0},
13238 	{0x171, 0x77, 0},
13239 	{0x172, 0x77, 0},
13240 	{0x173, 0x77, 0},
13241 	{0x174, 0x77, 0},
13242 	{0x175, 0, 0},
13243 	{0x176, 0x3, 0},
13244 	{0x177, 0x37, 0},
13245 	{0x178, 0x3, 0},
13246 	{0x179, 0, 0},
13247 	{0x17A, 0x21, 0},
13248 	{0x17B, 0x21, 0},
13249 	{0x17C, 0, 0},
13250 	{0x17D, 0xaa, 0},
13251 	{0x17E, 0, 0},
13252 	{0x17F, 0xaa, 0},
13253 	{0x180, 0, 0},
13254 	{0x190, 0, 0},
13255 	{0x191, 0x77, 0},
13256 	{0x192, 0x77, 0},
13257 	{0x193, 0x77, 0},
13258 	{0x194, 0x77, 0},
13259 	{0x195, 0, 0},
13260 	{0x196, 0x3, 0},
13261 	{0x197, 0x37, 0},
13262 	{0x198, 0x3, 0},
13263 	{0x199, 0, 0},
13264 	{0x19A, 0x21, 0},
13265 	{0x19B, 0x21, 0},
13266 	{0x19C, 0, 0},
13267 	{0x19D, 0xaa, 0},
13268 	{0x19E, 0, 0},
13269 	{0x19F, 0xaa, 0},
13270 	{0x1A0, 0, 0},
13271 	{0x1A1, 0x2, 0},
13272 	{0x1A2, 0xf, 0},
13273 	{0x1A3, 0xf, 0},
13274 	{0x1A4, 0, 1},
13275 	{0x1A5, 0, 1},
13276 	{0x1A6, 0, 1},
13277 	{0x1A7, 0x2, 0},
13278 	{0x1A8, 0xf, 0},
13279 	{0x1A9, 0xf, 0},
13280 	{0x1AA, 0, 1},
13281 	{0x1AB, 0, 1},
13282 	{0x1AC, 0, 1},
13283 	{0x1AD, 0x84, 0},
13284 	{0x1AE, 0x60, 0},
13285 	{0x1AF, 0x47, 0},
13286 	{0x1B0, 0x47, 0},
13287 	{0x1B1, 0, 0},
13288 	{0x1B2, 0, 0},
13289 	{0x1B3, 0, 0},
13290 	{0x1B4, 0, 0},
13291 	{0x1B5, 0, 0},
13292 	{0x1B6, 0, 0},
13293 	{0x1B7, 0x5, 1},
13294 	{0x1B8, 0, 0},
13295 	{0x1B9, 0, 0},
13296 	{0x1BA, 0, 0},
13297 	{0x1BB, 0, 0},
13298 	{0x1BC, 0, 0},
13299 	{0x1BD, 0, 0},
13300 	{0x1BE, 0, 0},
13301 	{0x1BF, 0, 0},
13302 	{0x1C0, 0, 0},
13303 	{0x1C1, 0, 0},
13304 	{0x1C2, 0xa0, 1},
13305 	{0x1C3, 0, 0},
13306 	{0x1C4, 0, 0},
13307 	{0x1C5, 0, 0},
13308 	{0x1C6, 0, 0},
13309 	{0x1C7, 0, 0},
13310 	{0x1C8, 0, 0},
13311 	{0x1C9, 0, 0},
13312 	{0x1CA, 0, 0},
13313 	{0xFFFF, 0, 0}
13314 };
13315 
13316 static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13317 
13318 static s32 nphy_lnagain_est0[] = { -315, 40370 };
13319 static s32 nphy_lnagain_est1[] = { -224, 23242 };
13320 
13321 static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13322 	{
13323 		{0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13324 		{0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13325 		{0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13326 		{0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13327 		{0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13328 		{0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13329 		{0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13330 		{0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13331 		{0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13332 	},
13333 	{
13334 		{0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13335 		{0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13336 		{0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13337 		{0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13338 		{0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13339 		{0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13340 		{0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13341 		{0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13342 		{0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13343 	}
13344 };
13345 
13346 static const u32 nphy_tpc_txgain[] = {
13347 	0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13348 	0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13349 	0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13350 	0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13351 	0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13352 	0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13353 	0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13354 	0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13355 	0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13356 	0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13357 	0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13358 	0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13359 	0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13360 	0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13361 	0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13362 	0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13363 	0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13364 	0x03902942, 0x03902844, 0x03902842, 0x03902744,
13365 	0x03902742, 0x03902644, 0x03902642, 0x03902544,
13366 	0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13367 	0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13368 	0x03802842, 0x03802744, 0x03802742, 0x03802644,
13369 	0x03802642, 0x03802544, 0x03802542, 0x03802444,
13370 	0x03802442, 0x03802344, 0x03802342, 0x03802244,
13371 	0x03802242, 0x03802144, 0x03802142, 0x03802044,
13372 	0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13373 	0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13374 	0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13375 	0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13376 	0x03801842, 0x03801744, 0x03801742, 0x03801644,
13377 	0x03801642, 0x03801544, 0x03801542, 0x03801444,
13378 	0x03801442, 0x03801344, 0x03801342, 0x00002b00
13379 };
13380 
13381 static const u16 nphy_tpc_loscale[] = {
13382 	256, 256, 271, 271, 287, 256, 256, 271,
13383 	271, 287, 287, 304, 304, 256, 256, 271,
13384 	271, 287, 287, 304, 304, 322, 322, 341,
13385 	341, 362, 362, 383, 383, 256, 256, 271,
13386 	271, 287, 287, 304, 304, 322, 322, 256,
13387 	256, 271, 271, 287, 287, 304, 304, 322,
13388 	322, 341, 341, 362, 362, 256, 256, 271,
13389 	271, 287, 287, 304, 304, 322, 322, 256,
13390 	256, 271, 271, 287, 287, 304, 304, 322,
13391 	322, 341, 341, 362, 362, 256, 256, 271,
13392 	271, 287, 287, 304, 304, 322, 322, 341,
13393 	341, 362, 362, 383, 383, 406, 406, 430,
13394 	430, 455, 455, 482, 482, 511, 511, 541,
13395 	541, 573, 573, 607, 607, 643, 643, 681,
13396 	681, 722, 722, 764, 764, 810, 810, 858,
13397 	858, 908, 908, 962, 962, 1019, 1019, 256
13398 };
13399 
13400 static u32 nphy_tpc_txgain_ipa[] = {
13401 	0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13402 	0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13403 	0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13404 	0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13405 	0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13406 	0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13407 	0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13408 	0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13409 	0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13410 	0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13411 	0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13412 	0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13413 	0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13414 	0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13415 	0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13416 	0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13417 	0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13418 	0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13419 	0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13420 	0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13421 	0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13422 	0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13423 	0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13424 	0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13425 	0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13426 	0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13427 	0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13428 	0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13429 	0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13430 	0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13431 	0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13432 	0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13433 };
13434 
13435 static u32 nphy_tpc_txgain_ipa_rev5[] = {
13436 	0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13437 	0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13438 	0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13439 	0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13440 	0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13441 	0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13442 	0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13443 	0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13444 	0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13445 	0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13446 	0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13447 	0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13448 	0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13449 	0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13450 	0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13451 	0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13452 	0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13453 	0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13454 	0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13455 	0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13456 	0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13457 	0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13458 	0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13459 	0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13460 	0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13461 	0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13462 	0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13463 	0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13464 	0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13465 	0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13466 	0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13467 	0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13468 };
13469 
13470 static u32 nphy_tpc_txgain_ipa_rev6[] = {
13471 	0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13472 	0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13473 	0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13474 	0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13475 	0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13476 	0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13477 	0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13478 	0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13479 	0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13480 	0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13481 	0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13482 	0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13483 	0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13484 	0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13485 	0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13486 	0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13487 	0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13488 	0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13489 	0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13490 	0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13491 	0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13492 	0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13493 	0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13494 	0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13495 	0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13496 	0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13497 	0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13498 	0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13499 	0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13500 	0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13501 	0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13502 	0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13503 };
13504 
13505 static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13506 	0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13507 	0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13508 	0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13509 	0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13510 	0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13511 	0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13512 	0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13513 	0x70470028, 0x70470026, 0x70470024, 0x70470022,
13514 	0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13515 	0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13516 	0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13517 	0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13518 	0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13519 	0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13520 	0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13521 	0x70170019, 0x70170018, 0x70170016, 0x70170015,
13522 	0x70170014, 0x70170013, 0x70170012, 0x70170010,
13523 	0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13524 	0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13525 	0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13526 	0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13527 	0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13528 	0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13529 	0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13530 	0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13531 	0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13532 	0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13533 	0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13534 	0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13535 	0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13536 	0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13537 	0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13538 };
13539 
13540 static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13541 	0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13542 	0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13543 	0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13544 	0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13545 	0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13546 	0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13547 	0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13548 	0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13549 	0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13550 	0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13551 	0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13552 	0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13553 	0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13554 	0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13555 	0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13556 	0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13557 	0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13558 	0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13559 	0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13560 	0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13561 	0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13562 	0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13563 	0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13564 	0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13565 	0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13566 	0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13567 	0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13568 	0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13569 	0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13570 	0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13571 	0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13572 	0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13573 };
13574 
13575 static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13576 	0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13577 	0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13578 	0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13579 	0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13580 	0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13581 	0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13582 	0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13583 	0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13584 	0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13585 	0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13586 	0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13587 	0x30170028, 0x30170026, 0x30170024, 0x30170022,
13588 	0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13589 	0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13590 	0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13591 	0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13592 	0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13593 	0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13594 	0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13595 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13596 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
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 };
13609 
13610 static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13611 	0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13612 	0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13613 	0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13614 	0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13615 	0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13616 	0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13617 	0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13618 	0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13619 	0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13620 	0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13621 	0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13622 	0x30170028, 0x30170026, 0x30170024, 0x30170022,
13623 	0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13624 	0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13625 	0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13626 	0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13627 	0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13628 	0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13629 	0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13630 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13631 	0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
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 };
13644 
13645 static u32 nphy_tpc_txgain_ipa_5g[] = {
13646 	0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13647 	0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13648 	0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13649 	0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13650 	0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13651 	0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13652 	0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13653 	0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13654 	0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13655 	0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13656 	0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13657 	0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13658 	0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13659 	0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13660 	0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13661 	0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13662 	0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13663 	0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13664 	0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13665 	0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13666 	0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13667 	0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13668 	0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13669 	0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13670 	0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13671 	0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13672 	0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13673 	0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13674 	0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13675 	0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13676 	0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13677 	0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13678 };
13679 
13680 static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13681 	0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13682 	0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13683 	0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13684 	0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13685 	0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13686 	0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13687 	0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13688 	0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13689 	0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13690 	0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13691 	0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13692 	0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13693 	0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13694 	0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13695 	0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13696 	0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13697 	0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13698 	0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13699 	0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13700 	0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13701 	0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13702 	0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13703 	0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13704 	0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13705 	0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13706 	0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13707 	0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13708 	0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13709 	0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13710 	0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13711 	0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13712 	0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13713 };
13714 
13715 static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13716 	0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13717 	0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13718 	0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13719 	0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13720 	0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13721 	0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13722 	0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13723 	0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13724 	0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13725 	0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13726 	0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13727 	0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13728 	0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13729 	0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13730 	0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13731 	0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13732 	0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13733 	0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13734 	0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13735 	0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13736 	0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13737 	0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13738 	0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13739 	0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13740 	0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13741 	0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13742 	0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13743 	0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13744 	0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13745 	0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13746 	0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13747 	0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13748 };
13749 
13750 static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13751 	-114, -108, -98, -91, -84, -78, -70, -62,
13752 	-54, -46, -39, -31, -23, -15, -8, 0
13753 };
13754 
13755 static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13756 	-100, -95, -89, -83, -77, -70, -63, -56,
13757 	-48, -41, -33, -25, -19, -12, -6, 0
13758 };
13759 
13760 static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13761 	-159, -113, -86, -72, -62, -54, -48, -43,
13762 	-39, -35, -31, -28, -25, -23, -20, -18,
13763 	-17, -15, -13, -11, -10, -8, -7, -6,
13764 	-5, -4, -3, -3, -2, -1, -1, 0
13765 };
13766 
13767 static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13768 	-109, -109, -82, -68, -58, -50, -44, -39,
13769 	-35, -31, -28, -26, -23, -21, -19, -17,
13770 	-16, -14, -13, -11, -10, -9, -8, -7,
13771 	-5, -5, -4, -3, -2, -1, -1, 0
13772 };
13773 
13774 static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13775 	-122, -122, -95, -80, -69, -61, -54, -49,
13776 	-43, -39, -35, -32, -28, -26, -23, -21,
13777 	-18, -16, -15, -13, -11, -10, -8, -7,
13778 	-6, -5, -4, -3, -2, -1, -1, 0
13779 };
13780 
13781 static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13782 	-107, -101, -92, -85, -78, -71, -62, -55,
13783 	-47, -39, -32, -24, -19, -12, -6, 0
13784 };
13785 
13786 static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13787 	-110, -104, -95, -88, -81, -74, -66, -58,
13788 	-50, -44, -36, -28, -23, -15, -8, 0
13789 };
13790 
13791 static u8 pad_gain_codes_used_2057rev5[] = {
13792 	20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13793 	10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13794 };
13795 
13796 static u8 pad_gain_codes_used_2057rev7[] = {
13797 	15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13798 	5, 4, 3, 2, 1
13799 };
13800 
13801 static u8 pad_all_gain_codes_2057[] = {
13802 	31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13803 	21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13804 	11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13805 	1, 0
13806 };
13807 
13808 static u8 pga_all_gain_codes_2057[] = {
13809 	15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13810 };
13811 
13812 static u32 nphy_papd_scaltbl[] = {
13813 	0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13814 	0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13815 	0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13816 	0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13817 	0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13818 	0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13819 	0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13820 	0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13821 	0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13822 	0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13823 	0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13824 	0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13825 	0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13826 	0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13827 	0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13828 	0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13829 };
13830 
13831 static u32 nphy_tpc_txgain_rev3[] = {
13832 	0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13833 	0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13834 	0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13835 	0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13836 	0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13837 	0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13838 	0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13839 	0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13840 	0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13841 	0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13842 	0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13843 	0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13844 	0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13845 	0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13846 	0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13847 	0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13848 	0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13849 	0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13850 	0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13851 	0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13852 	0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13853 	0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13854 	0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13855 	0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13856 	0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13857 	0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13858 	0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13859 	0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13860 	0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13861 	0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13862 	0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13863 	0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13864 };
13865 
13866 static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13867 	0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13868 	0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13869 	0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13870 	0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13871 	0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13872 	0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13873 	0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13874 	0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13875 	0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13876 	0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13877 	0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13878 	0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13879 	0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13880 	0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13881 	0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13882 	0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13883 	0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13884 	0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13885 	0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13886 	0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13887 	0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13888 	0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13889 	0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13890 	0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13891 	0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13892 	0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13893 	0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13894 	0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13895 	0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13896 	0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13897 	0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13898 	0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13899 };
13900 
13901 static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13902 	0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13903 	0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13904 	0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13905 	0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13906 	0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13907 	0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13908 	0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13909 	0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13910 	0x80290031, 0x80210039, 0x80210036, 0x80210033,
13911 	0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13912 	0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13913 	0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13914 	0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13915 	0x80110027, 0x80110024, 0x80110022, 0x80110020,
13916 	0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13917 	0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13918 	0x80090029, 0x80090027, 0x80090025, 0x80090023,
13919 	0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13920 	0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13921 	0x8009061d, 0x8009071d, 0x8009071d, 0x8009071d,
13922 	0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13923 	0x8009071d, 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 };
13935 
13936 static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13937 	0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13938 	0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13939 	0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13940 	0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13941 	0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13942 	0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13943 	0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13944 	0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13945 	0x10290031, 0x10210039, 0x10210036, 0x10210033,
13946 	0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13947 	0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13948 	0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13949 	0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13950 	0x10110027, 0x10110024, 0x10110022, 0x10110020,
13951 	0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13952 	0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13953 	0x10090029, 0x10090027, 0x10090025, 0x10090023,
13954 	0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13955 	0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13956 	0x10090015, 0x10090013, 0x10090012, 0x10090011,
13957 	0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13958 	0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13959 	0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13960 	0x10090008, 0x10090008, 0x10090007, 0x10090007,
13961 	0x10090007, 0x10090006, 0x10090006, 0x10090005,
13962 	0x10090005, 0x10090005, 0x10090005, 0x10090004,
13963 	0x10090004, 0x10090004, 0x10090004, 0x10090003,
13964 	0x10090003, 0x10090003, 0x10090003, 0x10090003,
13965 	0x10090003, 0x10090002, 0x10090002, 0x10090002,
13966 	0x10090002, 0x10090002, 0x10090002, 0x10090002,
13967 	0x10090002, 0x10090002, 0x10090001, 0x10090001,
13968 	0x10090001, 0x10090001, 0x10090001, 0x10090001
13969 };
13970 
13971 static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13972 	0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13973 	0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13974 	0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13975 	0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13976 	0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13977 	0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13978 	0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13979 	0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13980 	0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13981 	0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13982 	0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13983 	0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13984 	0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13985 	0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13986 	0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13987 	0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13988 	0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13989 	0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13990 	0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13991 	0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13992 	0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13993 	0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13994 	0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13995 	0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13996 	0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13997 	0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
13998 	0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
13999 	0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
14000 	0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
14001 	0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
14002 	0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
14003 	0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
14004 };
14005 
14006 static u32 nphy_tpc_5GHz_txgain_rev4[] = {
14007 	0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
14008 	0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
14009 	0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
14010 	0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
14011 	0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
14012 	0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
14013 	0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
14014 	0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
14015 	0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
14016 	0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
14017 	0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
14018 	0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
14019 	0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
14020 	0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
14021 	0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
14022 	0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
14023 	0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
14024 	0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
14025 	0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
14026 	0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
14027 	0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
14028 	0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
14029 	0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
14030 	0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
14031 	0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
14032 	0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
14033 	0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14034 	0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14035 	0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14036 	0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14037 	0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14038 	0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14039 };
14040 
14041 static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14042 	0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14043 	0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14044 	0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14045 	0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14046 	0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14047 	0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14048 	0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14049 	0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14050 	0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14051 	0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14052 	0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14053 	0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14054 	0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14055 	0x09620039, 0x09620037, 0x09620035, 0x09620033,
14056 	0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14057 	0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14058 	0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14059 	0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14060 	0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14061 	0x06620039, 0x06620037, 0x06620035, 0x06620033,
14062 	0x05620046, 0x05620044, 0x05620042, 0x05620040,
14063 	0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14064 	0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14065 	0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14066 	0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14067 	0x03620038, 0x03620037, 0x03620035, 0x03620033,
14068 	0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14069 	0x02620046, 0x02620044, 0x02620043, 0x02620042,
14070 	0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14071 	0x01620043, 0x01620042, 0x01620041, 0x01620040,
14072 	0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14073 	0x0062003b, 0x00620039, 0x00620037, 0x00620035
14074 };
14075 
14076 static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14077 	0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14078 	0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14079 	0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14080 	0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14081 	0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14082 	0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14083 	0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14084 	0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14085 	0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14086 	0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14087 	0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14088 	0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14089 	0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14090 	0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14091 	0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14092 	0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14093 	0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14094 	0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14095 	0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14096 	0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14097 	0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14098 	0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14099 	0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14100 	0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14101 	0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14102 	0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14103 	0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14104 	0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14105 	0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14106 	0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14107 	0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14108 	0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14109 };
14110 
14111 static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14112 static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14113 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14114 	0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a
14115 };
14116 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14117 	0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16
14118 };
14119 
wlc_phy_bist_check_phy(struct brcms_phy_pub * pih)14120 bool wlc_phy_bist_check_phy(struct brcms_phy_pub *pih)
14121 {
14122 	struct brcms_phy *pi = (struct brcms_phy *) pih;
14123 	u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14124 
14125 	if (NREV_GE(pi->pubpi.phy_rev, 16))
14126 		return true;
14127 
14128 	phybist0 = read_phy_reg(pi, 0x0e);
14129 	phybist1 = read_phy_reg(pi, 0x0f);
14130 	phybist2 = read_phy_reg(pi, 0xea);
14131 	phybist3 = read_phy_reg(pi, 0xeb);
14132 	phybist4 = read_phy_reg(pi, 0x156);
14133 
14134 	if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14135 	    (phybist3 == 0) && (phybist4 == 0))
14136 		return true;
14137 
14138 	return false;
14139 }
14140 
wlc_phy_bphy_init_nphy(struct brcms_phy * pi)14141 static void wlc_phy_bphy_init_nphy(struct brcms_phy *pi)
14142 {
14143 	u16 addr, val;
14144 
14145 	val = 0x1e1f;
14146 	for (addr = (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT);
14147 	     addr <= (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT_END); addr++) {
14148 		write_phy_reg(pi, addr, val);
14149 		if (addr == (NPHY_TO_BPHY_OFF + 0x97))
14150 			val = 0x3e3f;
14151 		else
14152 			val -= 0x0202;
14153 	}
14154 
14155 	write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_STEP, 0x668);
14156 }
14157 
14158 void
wlc_phy_table_write_nphy(struct brcms_phy * pi,u32 id,u32 len,u32 offset,u32 width,const void * data)14159 wlc_phy_table_write_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14160 			 u32 width, const void *data)
14161 {
14162 	struct phytbl_info tbl;
14163 
14164 	tbl.tbl_id = id;
14165 	tbl.tbl_len = len;
14166 	tbl.tbl_offset = offset;
14167 	tbl.tbl_width = width;
14168 	tbl.tbl_ptr = data;
14169 	wlc_phy_write_table_nphy(pi, &tbl);
14170 }
14171 
14172 void
wlc_phy_table_read_nphy(struct brcms_phy * pi,u32 id,u32 len,u32 offset,u32 width,void * data)14173 wlc_phy_table_read_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14174 			u32 width, void *data)
14175 {
14176 	struct phytbl_info tbl;
14177 
14178 	tbl.tbl_id = id;
14179 	tbl.tbl_len = len;
14180 	tbl.tbl_offset = offset;
14181 	tbl.tbl_width = width;
14182 	tbl.tbl_ptr = data;
14183 	wlc_phy_read_table_nphy(pi, &tbl);
14184 }
14185 
14186 static void
wlc_phy_static_table_download_nphy(struct brcms_phy * pi)14187 wlc_phy_static_table_download_nphy(struct brcms_phy *pi)
14188 {
14189 	uint idx;
14190 
14191 	if (NREV_GE(pi->pubpi.phy_rev, 16)) {
14192 		for (idx = 0; idx < mimophytbl_info_sz_rev16; idx++)
14193 			wlc_phy_write_table_nphy(pi,
14194 						 &mimophytbl_info_rev16[idx]);
14195 	} else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14196 		for (idx = 0; idx < mimophytbl_info_sz_rev7; idx++)
14197 			wlc_phy_write_table_nphy(pi,
14198 						 &mimophytbl_info_rev7[idx]);
14199 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14200 		for (idx = 0; idx < mimophytbl_info_sz_rev3; idx++)
14201 			wlc_phy_write_table_nphy(pi,
14202 						 &mimophytbl_info_rev3[idx]);
14203 	} else {
14204 		for (idx = 0; idx < mimophytbl_info_sz_rev0; idx++)
14205 			wlc_phy_write_table_nphy(pi,
14206 						 &mimophytbl_info_rev0[idx]);
14207 	}
14208 }
14209 
wlc_phy_tbl_init_nphy(struct brcms_phy * pi)14210 static void wlc_phy_tbl_init_nphy(struct brcms_phy *pi)
14211 {
14212 	uint idx = 0;
14213 	u8 antswctrllut;
14214 
14215 	if (pi->phy_init_por)
14216 		wlc_phy_static_table_download_nphy(pi);
14217 
14218 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14219 
14220 		antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14221 			       pi->srom_fem2g.antswctrllut : pi->srom_fem5g.
14222 			       antswctrllut;
14223 
14224 		switch (antswctrllut) {
14225 		case 0:
14226 
14227 			break;
14228 
14229 		case 1:
14230 
14231 			if (pi->aa2g == 7)
14232 				wlc_phy_table_write_nphy(
14233 					pi,
14234 					NPHY_TBL_ID_ANTSWCTRLLUT,
14235 					2, 0x21, 8,
14236 					&ant_sw_ctrl_tbl_rev8_2o3[0]);
14237 			else
14238 				wlc_phy_table_write_nphy(
14239 					pi,
14240 					NPHY_TBL_ID_ANTSWCTRLLUT,
14241 					2, 0x21, 8,
14242 					&ant_sw_ctrl_tbl_rev8
14243 					[0]);
14244 
14245 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14246 						 2, 0x25, 8,
14247 						 &ant_sw_ctrl_tbl_rev8[2]);
14248 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14249 						 2, 0x29, 8,
14250 						 &ant_sw_ctrl_tbl_rev8[4]);
14251 			break;
14252 
14253 		case 2:
14254 
14255 			wlc_phy_table_write_nphy(
14256 				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14257 				2, 0x1, 8,
14258 				&ant_sw_ctrl_tbl_rev8_2057v7_core0[0]);
14259 			wlc_phy_table_write_nphy(
14260 				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14261 				2, 0x5, 8,
14262 				&ant_sw_ctrl_tbl_rev8_2057v7_core0[2]);
14263 			wlc_phy_table_write_nphy(
14264 				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14265 				2, 0x9, 8,
14266 				&ant_sw_ctrl_tbl_rev8_2057v7_core0[4]);
14267 
14268 			wlc_phy_table_write_nphy(
14269 				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14270 				2, 0x21, 8,
14271 				&ant_sw_ctrl_tbl_rev8_2057v7_core1[0]);
14272 			wlc_phy_table_write_nphy(
14273 				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14274 				2, 0x25, 8,
14275 				&ant_sw_ctrl_tbl_rev8_2057v7_core1[2]);
14276 			wlc_phy_table_write_nphy(
14277 				pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14278 				2, 0x29, 8,
14279 				&ant_sw_ctrl_tbl_rev8_2057v7_core1[4]);
14280 			break;
14281 
14282 		default:
14283 			break;
14284 		}
14285 
14286 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14287 		for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14288 
14289 			if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14290 				antswctrllut =
14291 					CHSPEC_IS2G(pi->radio_chanspec) ?
14292 					pi->srom_fem2g.antswctrllut :
14293 					pi->srom_fem5g.antswctrllut;
14294 				switch (antswctrllut) {
14295 				case 0:
14296 					wlc_phy_write_table_nphy(
14297 						pi,
14298 						&mimophytbl_info_rev3_volatile
14299 						[idx]);
14300 					break;
14301 				case 1:
14302 					wlc_phy_write_table_nphy(
14303 						pi,
14304 						&mimophytbl_info_rev3_volatile1
14305 						[idx]);
14306 					break;
14307 				case 2:
14308 					wlc_phy_write_table_nphy(
14309 						pi,
14310 						&mimophytbl_info_rev3_volatile2
14311 						[idx]);
14312 					break;
14313 				case 3:
14314 					wlc_phy_write_table_nphy(
14315 						pi,
14316 						&mimophytbl_info_rev3_volatile3
14317 						[idx]);
14318 					break;
14319 				default:
14320 					break;
14321 				}
14322 			} else {
14323 				wlc_phy_write_table_nphy(
14324 					pi,
14325 					&mimophytbl_info_rev3_volatile[idx]);
14326 			}
14327 		}
14328 	} else {
14329 		for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++)
14330 			wlc_phy_write_table_nphy(pi,
14331 						 &mimophytbl_info_rev0_volatile
14332 						 [idx]);
14333 	}
14334 }
14335 
14336 static void
wlc_phy_write_txmacreg_nphy(struct brcms_phy * pi,u16 holdoff,u16 delay)14337 wlc_phy_write_txmacreg_nphy(struct brcms_phy *pi, u16 holdoff, u16 delay)
14338 {
14339 	write_phy_reg(pi, 0x77, holdoff);
14340 	write_phy_reg(pi, 0xb4, delay);
14341 }
14342 
wlc_phy_nphy_tkip_rifs_war(struct brcms_phy * pi,u8 rifs)14343 void wlc_phy_nphy_tkip_rifs_war(struct brcms_phy *pi, u8 rifs)
14344 {
14345 	u16 holdoff, delay;
14346 
14347 	if (rifs) {
14348 
14349 		holdoff = 0x10;
14350 		delay = 0x258;
14351 	} else {
14352 
14353 		holdoff = 0x15;
14354 		delay = 0x320;
14355 	}
14356 
14357 	wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14358 
14359 	if (pi && pi->sh && (pi->sh->_rifs_phy != rifs))
14360 		pi->sh->_rifs_phy = rifs;
14361 }
14362 
wlc_phy_txpwrctrl_config_nphy(struct brcms_phy * pi)14363 static void wlc_phy_txpwrctrl_config_nphy(struct brcms_phy *pi)
14364 {
14365 
14366 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14367 		pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14368 		pi->phy_5g_pwrgain = true;
14369 		return;
14370 	}
14371 
14372 	pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14373 	pi->phy_5g_pwrgain = false;
14374 
14375 	if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14376 	    NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14377 		pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14378 	else if ((pi->sh->sromrev >= 4)
14379 		 && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14380 		pi->phy_5g_pwrgain = true;
14381 }
14382 
wlc_phy_txpwr_srom_read_ppr_nphy(struct brcms_phy * pi)14383 static void wlc_phy_txpwr_srom_read_ppr_nphy(struct brcms_phy *pi)
14384 {
14385 	u16 bw40po, cddpo, stbcpo, bwduppo;
14386 	uint band_num;
14387 	struct phy_shim_info *shim = pi->sh->physhim;
14388 
14389 	if (pi->sh->sromrev >= 9)
14390 		return;
14391 
14392 	bw40po = (u16) wlapi_getintvar(shim, BRCMS_SROM_BW40PO);
14393 	pi->bw402gpo = bw40po & 0xf;
14394 	pi->bw405gpo = (bw40po & 0xf0) >> 4;
14395 	pi->bw405glpo = (bw40po & 0xf00) >> 8;
14396 	pi->bw405ghpo = (bw40po & 0xf000) >> 12;
14397 
14398 	cddpo = (u16) wlapi_getintvar(shim, BRCMS_SROM_CDDPO);
14399 	pi->cdd2gpo = cddpo & 0xf;
14400 	pi->cdd5gpo = (cddpo & 0xf0) >> 4;
14401 	pi->cdd5glpo = (cddpo & 0xf00) >> 8;
14402 	pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
14403 
14404 	stbcpo = (u16) wlapi_getintvar(shim, BRCMS_SROM_STBCPO);
14405 	pi->stbc2gpo = stbcpo & 0xf;
14406 	pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
14407 	pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
14408 	pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
14409 
14410 	bwduppo = (u16) wlapi_getintvar(shim, BRCMS_SROM_BWDUPPO);
14411 	pi->bwdup2gpo = bwduppo & 0xf;
14412 	pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
14413 	pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
14414 	pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
14415 
14416 	for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
14417 	     band_num++) {
14418 		switch (band_num) {
14419 		case 0:
14420 
14421 			pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
14422 				(s8) wlapi_getintvar(shim,
14423 						     BRCMS_SROM_MAXP2GA0);
14424 			pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
14425 				(s8) wlapi_getintvar(shim,
14426 						     BRCMS_SROM_MAXP2GA1);
14427 			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
14428 				(s16) wlapi_getintvar(shim,
14429 						      BRCMS_SROM_PA2GW0A0);
14430 			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
14431 				(s16) wlapi_getintvar(shim,
14432 						      BRCMS_SROM_PA2GW0A1);
14433 			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
14434 				(s16) wlapi_getintvar(shim,
14435 						      BRCMS_SROM_PA2GW1A0);
14436 			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
14437 				(s16) wlapi_getintvar(shim,
14438 						      BRCMS_SROM_PA2GW1A1);
14439 			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
14440 				(s16) wlapi_getintvar(shim,
14441 						      BRCMS_SROM_PA2GW2A0);
14442 			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
14443 				(s16) wlapi_getintvar(shim,
14444 						      BRCMS_SROM_PA2GW2A1);
14445 			pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
14446 				(s8) wlapi_getintvar(shim, BRCMS_SROM_ITT2GA0);
14447 			pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
14448 				(s8) wlapi_getintvar(shim, BRCMS_SROM_ITT2GA1);
14449 
14450 			pi->cck2gpo = (u16) wlapi_getintvar(shim,
14451 							    BRCMS_SROM_CCK2GPO);
14452 
14453 			pi->ofdm2gpo =
14454 				(u32) wlapi_getintvar(shim,
14455 						      BRCMS_SROM_OFDM2GPO);
14456 
14457 			pi->mcs2gpo[0] =
14458 				(u16) wlapi_getintvar(shim,
14459 						      BRCMS_SROM_MCS2GPO0);
14460 			pi->mcs2gpo[1] =
14461 				(u16) wlapi_getintvar(shim,
14462 						      BRCMS_SROM_MCS2GPO1);
14463 			pi->mcs2gpo[2] =
14464 				(u16) wlapi_getintvar(shim,
14465 						      BRCMS_SROM_MCS2GPO2);
14466 			pi->mcs2gpo[3] =
14467 				(u16) wlapi_getintvar(shim,
14468 						      BRCMS_SROM_MCS2GPO3);
14469 			pi->mcs2gpo[4] =
14470 				(u16) wlapi_getintvar(shim,
14471 						      BRCMS_SROM_MCS2GPO4);
14472 			pi->mcs2gpo[5] =
14473 				(u16) wlapi_getintvar(shim,
14474 						      BRCMS_SROM_MCS2GPO5);
14475 			pi->mcs2gpo[6] =
14476 				(u16) wlapi_getintvar(shim,
14477 						      BRCMS_SROM_MCS2GPO6);
14478 			pi->mcs2gpo[7] =
14479 				(u16) wlapi_getintvar(shim,
14480 						      BRCMS_SROM_MCS2GPO7);
14481 			break;
14482 		case 1:
14483 
14484 			pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
14485 				(s8) wlapi_getintvar(shim, BRCMS_SROM_MAXP5GA0);
14486 			pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
14487 				(s8) wlapi_getintvar(shim,
14488 						     BRCMS_SROM_MAXP5GA1);
14489 			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
14490 				(s16) wlapi_getintvar(shim,
14491 						      BRCMS_SROM_PA5GW0A0);
14492 			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
14493 				(s16) wlapi_getintvar(shim,
14494 						      BRCMS_SROM_PA5GW0A1);
14495 			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
14496 				(s16) wlapi_getintvar(shim,
14497 						      BRCMS_SROM_PA5GW1A0);
14498 			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
14499 				(s16) wlapi_getintvar(shim,
14500 						      BRCMS_SROM_PA5GW1A1);
14501 			pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
14502 				(s16) wlapi_getintvar(shim,
14503 						      BRCMS_SROM_PA5GW2A0);
14504 			pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
14505 				(s16) wlapi_getintvar(shim,
14506 						      BRCMS_SROM_PA5GW2A1);
14507 			pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
14508 				(s8) wlapi_getintvar(shim, BRCMS_SROM_ITT5GA0);
14509 			pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
14510 				(s8) wlapi_getintvar(shim, BRCMS_SROM_ITT5GA1);
14511 
14512 			pi->ofdm5gpo =
14513 				(u32) wlapi_getintvar(shim,
14514 						      BRCMS_SROM_OFDM5GPO);
14515 
14516 			pi->mcs5gpo[0] =
14517 				(u16) wlapi_getintvar(shim,
14518 						      BRCMS_SROM_MCS5GPO0);
14519 			pi->mcs5gpo[1] =
14520 				(u16) wlapi_getintvar(shim,
14521 						      BRCMS_SROM_MCS5GPO1);
14522 			pi->mcs5gpo[2] =
14523 				(u16) wlapi_getintvar(shim,
14524 						      BRCMS_SROM_MCS5GPO2);
14525 			pi->mcs5gpo[3] =
14526 				(u16) wlapi_getintvar(shim,
14527 						      BRCMS_SROM_MCS5GPO3);
14528 			pi->mcs5gpo[4] =
14529 				(u16) wlapi_getintvar(shim,
14530 						      BRCMS_SROM_MCS5GPO4);
14531 			pi->mcs5gpo[5] =
14532 				(u16) wlapi_getintvar(shim,
14533 						      BRCMS_SROM_MCS5GPO5);
14534 			pi->mcs5gpo[6] =
14535 				(u16) wlapi_getintvar(shim,
14536 						      BRCMS_SROM_MCS5GPO6);
14537 			pi->mcs5gpo[7] =
14538 				(u16) wlapi_getintvar(shim,
14539 						      BRCMS_SROM_MCS5GPO7);
14540 			break;
14541 		case 2:
14542 
14543 			pi->nphy_pwrctrl_info[0].max_pwr_5gl =
14544 				(s8) wlapi_getintvar(shim,
14545 						     BRCMS_SROM_MAXP5GLA0);
14546 			pi->nphy_pwrctrl_info[1].max_pwr_5gl =
14547 				(s8) wlapi_getintvar(shim,
14548 						     BRCMS_SROM_MAXP5GLA1);
14549 			pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
14550 				(s16) wlapi_getintvar(shim,
14551 						      BRCMS_SROM_PA5GLW0A0);
14552 			pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
14553 				(s16) wlapi_getintvar(shim,
14554 						      BRCMS_SROM_PA5GLW0A1);
14555 			pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
14556 				(s16) wlapi_getintvar(shim,
14557 						      BRCMS_SROM_PA5GLW1A0);
14558 			pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
14559 				(s16) wlapi_getintvar(shim,
14560 						      BRCMS_SROM_PA5GLW1A1);
14561 			pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
14562 				(s16) wlapi_getintvar(shim,
14563 						      BRCMS_SROM_PA5GLW2A0);
14564 			pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
14565 				(s16) wlapi_getintvar(shim,
14566 						      BRCMS_SROM_PA5GLW2A1);
14567 			pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
14568 			pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
14569 
14570 			pi->ofdm5glpo =
14571 				(u32) wlapi_getintvar(shim,
14572 						      BRCMS_SROM_OFDM5GLPO);
14573 
14574 			pi->mcs5glpo[0] =
14575 				(u16) wlapi_getintvar(shim,
14576 						      BRCMS_SROM_MCS5GLPO0);
14577 			pi->mcs5glpo[1] =
14578 				(u16) wlapi_getintvar(shim,
14579 						      BRCMS_SROM_MCS5GLPO1);
14580 			pi->mcs5glpo[2] =
14581 				(u16) wlapi_getintvar(shim,
14582 						      BRCMS_SROM_MCS5GLPO2);
14583 			pi->mcs5glpo[3] =
14584 				(u16) wlapi_getintvar(shim,
14585 						      BRCMS_SROM_MCS5GLPO3);
14586 			pi->mcs5glpo[4] =
14587 				(u16) wlapi_getintvar(shim,
14588 						      BRCMS_SROM_MCS5GLPO4);
14589 			pi->mcs5glpo[5] =
14590 				(u16) wlapi_getintvar(shim,
14591 						      BRCMS_SROM_MCS5GLPO5);
14592 			pi->mcs5glpo[6] =
14593 				(u16) wlapi_getintvar(shim,
14594 						      BRCMS_SROM_MCS5GLPO6);
14595 			pi->mcs5glpo[7] =
14596 				(u16) wlapi_getintvar(shim,
14597 						      BRCMS_SROM_MCS5GLPO7);
14598 			break;
14599 		case 3:
14600 
14601 			pi->nphy_pwrctrl_info[0].max_pwr_5gh =
14602 				(s8) wlapi_getintvar(shim,
14603 						     BRCMS_SROM_MAXP5GHA0);
14604 			pi->nphy_pwrctrl_info[1].max_pwr_5gh =
14605 				(s8) wlapi_getintvar(shim,
14606 						     BRCMS_SROM_MAXP5GHA1);
14607 			pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
14608 				(s16) wlapi_getintvar(shim,
14609 						      BRCMS_SROM_PA5GHW0A0);
14610 			pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
14611 				(s16) wlapi_getintvar(shim,
14612 						      BRCMS_SROM_PA5GHW0A1);
14613 			pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
14614 				(s16) wlapi_getintvar(shim,
14615 						      BRCMS_SROM_PA5GHW1A0);
14616 			pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
14617 				(s16) wlapi_getintvar(shim,
14618 						      BRCMS_SROM_PA5GHW1A1);
14619 			pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
14620 				(s16) wlapi_getintvar(shim,
14621 						      BRCMS_SROM_PA5GHW2A0);
14622 			pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
14623 				(s16) wlapi_getintvar(shim,
14624 						      BRCMS_SROM_PA5GHW2A1);
14625 			pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
14626 			pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
14627 
14628 			pi->ofdm5ghpo =
14629 				(u32) wlapi_getintvar(shim,
14630 						      BRCMS_SROM_OFDM5GHPO);
14631 
14632 			pi->mcs5ghpo[0] =
14633 				(u16) wlapi_getintvar(shim,
14634 						      BRCMS_SROM_MCS5GHPO0);
14635 			pi->mcs5ghpo[1] =
14636 				(u16) wlapi_getintvar(shim,
14637 						      BRCMS_SROM_MCS5GHPO1);
14638 			pi->mcs5ghpo[2] =
14639 				(u16) wlapi_getintvar(shim,
14640 						      BRCMS_SROM_MCS5GHPO2);
14641 			pi->mcs5ghpo[3] =
14642 				(u16) wlapi_getintvar(shim,
14643 						      BRCMS_SROM_MCS5GHPO3);
14644 			pi->mcs5ghpo[4] =
14645 				(u16) wlapi_getintvar(shim,
14646 						      BRCMS_SROM_MCS5GHPO4);
14647 			pi->mcs5ghpo[5] =
14648 				(u16) wlapi_getintvar(shim,
14649 						      BRCMS_SROM_MCS5GHPO5);
14650 			pi->mcs5ghpo[6] =
14651 				(u16) wlapi_getintvar(shim,
14652 						      BRCMS_SROM_MCS5GHPO6);
14653 			pi->mcs5ghpo[7] =
14654 				(u16) wlapi_getintvar(shim,
14655 						      BRCMS_SROM_MCS5GHPO7);
14656 			break;
14657 		}
14658 	}
14659 
14660 	wlc_phy_txpwr_apply_nphy(pi);
14661 }
14662 
wlc_phy_txpwr_srom_read_nphy(struct brcms_phy * pi)14663 static bool wlc_phy_txpwr_srom_read_nphy(struct brcms_phy *pi)
14664 {
14665 	struct phy_shim_info *shim = pi->sh->physhim;
14666 
14667 	pi->antswitch = (u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWITCH);
14668 	pi->aa2g = (u8) wlapi_getintvar(shim, BRCMS_SROM_AA2G);
14669 	pi->aa5g = (u8) wlapi_getintvar(shim, BRCMS_SROM_AA5G);
14670 
14671 	pi->srom_fem2g.tssipos = (u8) wlapi_getintvar(shim,
14672 						      BRCMS_SROM_TSSIPOS2G);
14673 	pi->srom_fem2g.extpagain = (u8) wlapi_getintvar(shim,
14674 							BRCMS_SROM_EXTPAGAIN2G);
14675 	pi->srom_fem2g.pdetrange = (u8) wlapi_getintvar(shim,
14676 							BRCMS_SROM_PDETRANGE2G);
14677 	pi->srom_fem2g.triso = (u8) wlapi_getintvar(shim, BRCMS_SROM_TRISO2G);
14678 	pi->srom_fem2g.antswctrllut =
14679 			(u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWCTL2G);
14680 
14681 	pi->srom_fem5g.tssipos = (u8) wlapi_getintvar(shim,
14682 						      BRCMS_SROM_TSSIPOS5G);
14683 	pi->srom_fem5g.extpagain = (u8) wlapi_getintvar(shim,
14684 							BRCMS_SROM_EXTPAGAIN5G);
14685 	pi->srom_fem5g.pdetrange = (u8) wlapi_getintvar(shim,
14686 							BRCMS_SROM_PDETRANGE5G);
14687 	pi->srom_fem5g.triso = (u8) wlapi_getintvar(shim, BRCMS_SROM_TRISO5G);
14688 	if (wlapi_getvar(shim, BRCMS_SROM_ANTSWCTL5G))
14689 		pi->srom_fem5g.antswctrllut =
14690 			(u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWCTL5G);
14691 	else
14692 		pi->srom_fem5g.antswctrllut =
14693 			(u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWCTL2G);
14694 
14695 	wlc_phy_txpower_ipa_upd(pi);
14696 
14697 	pi->phy_txcore_disable_temp =
14698 			(s16) wlapi_getintvar(shim, BRCMS_SROM_TEMPTHRESH);
14699 	if (pi->phy_txcore_disable_temp == 0)
14700 		pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
14701 
14702 	pi->phy_tempsense_offset = (s8) wlapi_getintvar(shim,
14703 							BRCMS_SROM_TEMPOFFSET);
14704 	if (pi->phy_tempsense_offset != 0) {
14705 		if (pi->phy_tempsense_offset >
14706 		    (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET))
14707 			pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
14708 		else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
14709 						     NPHY_SROM_MINTEMPOFFSET))
14710 			pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
14711 		else
14712 			pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
14713 	}
14714 
14715 	pi->phy_txcore_enable_temp =
14716 		pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
14717 
14718 	pi->phycal_tempdelta =
14719 			(u8) wlapi_getintvar(shim, BRCMS_SROM_PHYCAL_TEMPDELTA);
14720 	if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA)
14721 		pi->phycal_tempdelta = 0;
14722 
14723 	wlc_phy_txpwr_srom_read_ppr_nphy(pi);
14724 
14725 	return true;
14726 }
14727 
wlc_phy_attach_nphy(struct brcms_phy * pi)14728 bool wlc_phy_attach_nphy(struct brcms_phy *pi)
14729 {
14730 	uint i;
14731 
14732 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6))
14733 		pi->phyhang_avoid = true;
14734 
14735 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14736 		pi->nphy_gband_spurwar_en = true;
14737 		if (pi->sh->boardflags2 & BFL2_SPUR_WAR)
14738 			pi->nphy_aband_spurwar_en = true;
14739 	}
14740 	if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14741 		if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR)
14742 			pi->nphy_gband_spurwar2_en = true;
14743 	}
14744 
14745 	pi->n_preamble_override = AUTO;
14746 	if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14747 		pi->n_preamble_override = BRCMS_N_PREAMBLE_MIXEDMODE;
14748 
14749 	pi->nphy_txrx_chain = AUTO;
14750 	pi->phy_scraminit = AUTO;
14751 
14752 	pi->nphy_rxcalparams = 0x010100B5;
14753 
14754 	pi->nphy_perical = PHY_PERICAL_MPHASE;
14755 	pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14756 	pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14757 
14758 	pi->nphy_gain_boost = true;
14759 	pi->nphy_elna_gain_config = false;
14760 	pi->radio_is_on = false;
14761 
14762 	for (i = 0; i < pi->pubpi.phy_corenum; i++)
14763 		pi->nphy_txpwrindex[i].index = AUTO;
14764 
14765 	wlc_phy_txpwrctrl_config_nphy(pi);
14766 	if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14767 		pi->hwpwrctrl_capable = true;
14768 
14769 	pi->pi_fptr.init = wlc_phy_init_nphy;
14770 	pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14771 	pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14772 	pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14773 
14774 	if (!wlc_phy_txpwr_srom_read_nphy(pi))
14775 		return false;
14776 
14777 	return true;
14778 }
14779 
get_rf_pwr_offset(struct brcms_phy * pi,s16 pga_gn,s16 pad_gn)14780 static s32 get_rf_pwr_offset(struct brcms_phy *pi, s16 pga_gn, s16 pad_gn)
14781 {
14782 	s32 rfpwr_offset = 0;
14783 
14784 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
14785 		if ((pi->pubpi.radiorev == 3) ||
14786 		    (pi->pubpi.radiorev == 4) ||
14787 		    (pi->pubpi.radiorev == 6))
14788 			rfpwr_offset = (s16)
14789 				       nphy_papd_padgain_dlt_2g_2057rev3n4
14790 				       [pad_gn];
14791 		else if (pi->pubpi.radiorev == 5)
14792 			rfpwr_offset = (s16)
14793 				       nphy_papd_padgain_dlt_2g_2057rev5
14794 				       [pad_gn];
14795 		else if ((pi->pubpi.radiorev == 7)
14796 			 || (pi->pubpi.radiorev ==
14797 			     8))
14798 			rfpwr_offset = (s16)
14799 				       nphy_papd_padgain_dlt_2g_2057rev7
14800 				       [pad_gn];
14801 	} else {
14802 		if ((pi->pubpi.radiorev == 3) ||
14803 		    (pi->pubpi.radiorev == 4) ||
14804 		    (pi->pubpi.radiorev == 6))
14805 			rfpwr_offset = (s16)
14806 				       nphy_papd_pgagain_dlt_5g_2057
14807 				       [pga_gn];
14808 		else if ((pi->pubpi.radiorev == 7)
14809 			 || (pi->pubpi.radiorev ==
14810 			     8))
14811 			rfpwr_offset = (s16)
14812 				       nphy_papd_pgagain_dlt_5g_2057rev7
14813 				       [pga_gn];
14814 	}
14815 	return rfpwr_offset;
14816 }
14817 
wlc_phy_update_mimoconfig_nphy(struct brcms_phy * pi,s32 preamble)14818 static void wlc_phy_update_mimoconfig_nphy(struct brcms_phy *pi, s32 preamble)
14819 {
14820 	bool gf_preamble = false;
14821 	u16 val;
14822 
14823 	if (preamble == BRCMS_N_PREAMBLE_GF)
14824 		gf_preamble = true;
14825 
14826 	val = read_phy_reg(pi, 0xed);
14827 
14828 	val |= RX_GF_MM_AUTO;
14829 	val &= ~RX_GF_OR_MM;
14830 	if (gf_preamble)
14831 		val |= RX_GF_OR_MM;
14832 
14833 	write_phy_reg(pi, 0xed, val);
14834 }
14835 
wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy * pi)14836 static void wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
14837 {
14838 	int j, type;
14839 	u16 addr_offset[] = { 0x186, 0x195, 0x2c5};
14840 
14841 	for (type = 0; type < 3; type++) {
14842 		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14843 			write_phy_reg(pi, addr_offset[type] + j,
14844 				      NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
14845 	}
14846 
14847 	if (pi->bw == WL_CHANSPEC_BW_40) {
14848 		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14849 			write_phy_reg(pi, 0x186 + j,
14850 				      NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14851 	} else {
14852 		if (CHSPEC_IS5G(pi->radio_chanspec)) {
14853 			for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14854 				write_phy_reg(pi, 0x186 + j,
14855 					NPHY_IPA_REV4_txdigi_filtcoeffs[5][j]);
14856 		}
14857 
14858 		if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
14859 			for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14860 				write_phy_reg(pi, 0x2c5 + j,
14861 					NPHY_IPA_REV4_txdigi_filtcoeffs[6][j]);
14862 		}
14863 	}
14864 }
14865 
wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy * pi)14866 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy *pi)
14867 {
14868 	int j;
14869 
14870 	if (pi->bw == WL_CHANSPEC_BW_40) {
14871 		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14872 			write_phy_reg(pi, 0x195 + j,
14873 				      NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
14874 	} else {
14875 		for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14876 			write_phy_reg(pi, 0x186 + j,
14877 				      NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14878 	}
14879 }
14880 
14881 static void
wlc_phy_set_rfseq_nphy(struct brcms_phy * pi,u8 cmd,u8 * events,u8 * dlys,u8 len)14882 wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, u8 *events, u8 *dlys,
14883 		       u8 len)
14884 {
14885 	u32 t1_offset, t2_offset;
14886 	u8 ctr;
14887 	u8 end_event =
14888 		NREV_GE(pi->pubpi.phy_rev,
14889 			3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
14890 	u8 end_dly = 1;
14891 
14892 	if (pi->phyhang_avoid)
14893 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
14894 
14895 	t1_offset = cmd << 4;
14896 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
14897 				 events);
14898 	t2_offset = t1_offset + 0x080;
14899 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
14900 				 dlys);
14901 
14902 	for (ctr = len; ctr < 16; ctr++) {
14903 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14904 					 t1_offset + ctr, 8, &end_event);
14905 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14906 					 t2_offset + ctr, 8, &end_dly);
14907 	}
14908 
14909 	if (pi->phyhang_avoid)
14910 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
14911 }
14912 
wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy * pi,u16 offset)14913 static u16 wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy *pi, u16 offset)
14914 {
14915 	u16 lpf_bw_ctl_val = 0;
14916 	u16 rx2tx_lpf_rc_lut_offset = 0;
14917 
14918 	if (offset == 0) {
14919 		if (CHSPEC_IS40(pi->radio_chanspec))
14920 			rx2tx_lpf_rc_lut_offset = 0x159;
14921 		else
14922 			rx2tx_lpf_rc_lut_offset = 0x154;
14923 	} else {
14924 		rx2tx_lpf_rc_lut_offset = offset;
14925 	}
14926 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14927 				(u32) rx2tx_lpf_rc_lut_offset, 16,
14928 				&lpf_bw_ctl_val);
14929 
14930 	lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
14931 
14932 	return lpf_bw_ctl_val;
14933 }
14934 
14935 static void
wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy * pi,u16 field,u16 value,u8 core_mask,u8 off,u8 override_id)14936 wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy *pi, u16 field, u16 value,
14937 				  u8 core_mask, u8 off, u8 override_id)
14938 {
14939 	u8 core_num;
14940 	u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
14941 	u8 val_shift = 0;
14942 
14943 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14944 		en_mask = field;
14945 		for (core_num = 0; core_num < 2; core_num++) {
14946 			if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
14947 
14948 				switch (field) {
14949 				case (0x1 << 2):
14950 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14951 					val_addr = (core_num == 0) ? 0x7a :
14952 						   0x7d;
14953 					val_mask = (0x1 << 1);
14954 					val_shift = 1;
14955 					break;
14956 				case (0x1 << 3):
14957 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14958 					val_addr = (core_num == 0) ? 0x7a :
14959 						   0x7d;
14960 					val_mask = (0x1 << 2);
14961 					val_shift = 2;
14962 					break;
14963 				case (0x1 << 4):
14964 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14965 					val_addr = (core_num == 0) ? 0x7a :
14966 						   0x7d;
14967 					val_mask = (0x1 << 4);
14968 					val_shift = 4;
14969 					break;
14970 				case (0x1 << 5):
14971 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14972 					val_addr = (core_num == 0) ? 0x7a :
14973 						   0x7d;
14974 					val_mask = (0x1 << 5);
14975 					val_shift = 5;
14976 					break;
14977 				case (0x1 << 6):
14978 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14979 					val_addr = (core_num == 0) ? 0x7a :
14980 						   0x7d;
14981 					val_mask = (0x1 << 6);
14982 					val_shift = 6;
14983 					break;
14984 				case (0x1 << 7):
14985 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14986 					val_addr = (core_num == 0) ? 0x7a :
14987 						   0x7d;
14988 					val_mask = (0x1 << 7);
14989 					val_shift = 7;
14990 					break;
14991 				case (0x1 << 10):
14992 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
14993 					val_addr = (core_num == 0) ? 0xf8 :
14994 						   0xfa;
14995 					val_mask = (0x7 << 4);
14996 					val_shift = 4;
14997 					break;
14998 				case (0x1 << 11):
14999 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
15000 					val_addr = (core_num == 0) ? 0x7b :
15001 						   0x7e;
15002 					val_mask = (0xffff << 0);
15003 					val_shift = 0;
15004 					break;
15005 				case (0x1 << 12):
15006 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
15007 					val_addr = (core_num == 0) ? 0x7c :
15008 						   0x7f;
15009 					val_mask = (0xffff << 0);
15010 					val_shift = 0;
15011 					break;
15012 				case (0x3 << 13):
15013 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
15014 					val_addr = (core_num == 0) ? 0x348 :
15015 						   0x349;
15016 					val_mask = (0xff << 0);
15017 					val_shift = 0;
15018 					break;
15019 				case (0x1 << 13):
15020 					en_addr = (core_num == 0) ? 0xe7 : 0xec;
15021 					val_addr = (core_num == 0) ? 0x348 :
15022 						   0x349;
15023 					val_mask = (0xf << 0);
15024 					val_shift = 0;
15025 					break;
15026 				default:
15027 					addr = 0xffff;
15028 					break;
15029 				}
15030 			} else if (override_id ==
15031 				   NPHY_REV7_RFCTRLOVERRIDE_ID1) {
15032 
15033 				switch (field) {
15034 				case (0x1 << 1):
15035 					en_addr = (core_num == 0) ? 0x342 :
15036 						  0x343;
15037 					val_addr = (core_num == 0) ? 0x340 :
15038 						   0x341;
15039 					val_mask = (0x1 << 1);
15040 					val_shift = 1;
15041 					break;
15042 				case (0x1 << 3):
15043 					en_addr = (core_num == 0) ? 0x342 :
15044 						  0x343;
15045 					val_addr = (core_num == 0) ? 0x340 :
15046 						   0x341;
15047 					val_mask = (0x1 << 3);
15048 					val_shift = 3;
15049 					break;
15050 				case (0x1 << 5):
15051 					en_addr = (core_num == 0) ? 0x342 :
15052 						  0x343;
15053 					val_addr = (core_num == 0) ? 0x340 :
15054 						   0x341;
15055 					val_mask = (0x1 << 5);
15056 					val_shift = 5;
15057 					break;
15058 				case (0x1 << 4):
15059 					en_addr = (core_num == 0) ? 0x342 :
15060 						  0x343;
15061 					val_addr = (core_num == 0) ? 0x340 :
15062 						   0x341;
15063 					val_mask = (0x1 << 4);
15064 					val_shift = 4;
15065 					break;
15066 				case (0x1 << 2):
15067 
15068 					en_addr = (core_num == 0) ? 0x342 :
15069 						  0x343;
15070 					val_addr = (core_num == 0) ? 0x340 :
15071 						   0x341;
15072 					val_mask = (0x1 << 2);
15073 					val_shift = 2;
15074 					break;
15075 				case (0x1 << 7):
15076 
15077 					en_addr = (core_num == 0) ? 0x342 :
15078 						  0x343;
15079 					val_addr = (core_num == 0) ? 0x340 :
15080 						   0x341;
15081 					val_mask = (0x7 << 8);
15082 					val_shift = 8;
15083 					break;
15084 				case (0x1 << 11):
15085 					en_addr = (core_num == 0) ? 0x342 :
15086 						  0x343;
15087 					val_addr = (core_num == 0) ? 0x340 :
15088 						   0x341;
15089 					val_mask = (0x1 << 14);
15090 					val_shift = 14;
15091 					break;
15092 				case (0x1 << 10):
15093 					en_addr = (core_num == 0) ? 0x342 :
15094 						  0x343;
15095 					val_addr = (core_num == 0) ? 0x340 :
15096 						   0x341;
15097 					val_mask = (0x1 << 13);
15098 					val_shift = 13;
15099 					break;
15100 				case (0x1 << 9):
15101 					en_addr = (core_num == 0) ? 0x342 :
15102 						  0x343;
15103 					val_addr = (core_num == 0) ? 0x340 :
15104 						   0x341;
15105 					val_mask = (0x1 << 12);
15106 					val_shift = 12;
15107 					break;
15108 				case (0x1 << 8):
15109 					en_addr = (core_num == 0) ? 0x342 :
15110 						  0x343;
15111 					val_addr = (core_num == 0) ? 0x340 :
15112 						   0x341;
15113 					val_mask = (0x1 << 11);
15114 					val_shift = 11;
15115 					break;
15116 				case (0x1 << 6):
15117 					en_addr = (core_num == 0) ? 0x342 :
15118 						  0x343;
15119 					val_addr = (core_num == 0) ? 0x340 :
15120 						   0x341;
15121 					val_mask = (0x1 << 6);
15122 					val_shift = 6;
15123 					break;
15124 				case (0x1 << 0):
15125 					en_addr = (core_num == 0) ? 0x342 :
15126 						  0x343;
15127 					val_addr = (core_num == 0) ? 0x340 :
15128 						   0x341;
15129 					val_mask = (0x1 << 0);
15130 					val_shift = 0;
15131 					break;
15132 				default:
15133 					addr = 0xffff;
15134 					break;
15135 				}
15136 			} else if (override_id ==
15137 				   NPHY_REV7_RFCTRLOVERRIDE_ID2) {
15138 
15139 				switch (field) {
15140 				case (0x1 << 3):
15141 					en_addr = (core_num == 0) ? 0x346 :
15142 						  0x347;
15143 					val_addr = (core_num == 0) ? 0x344 :
15144 						   0x345;
15145 					val_mask = (0x1 << 3);
15146 					val_shift = 3;
15147 					break;
15148 				case (0x1 << 1):
15149 					en_addr = (core_num == 0) ? 0x346 :
15150 						  0x347;
15151 					val_addr = (core_num == 0) ? 0x344 :
15152 						   0x345;
15153 					val_mask = (0x1 << 1);
15154 					val_shift = 1;
15155 					break;
15156 				case (0x1 << 0):
15157 					en_addr = (core_num == 0) ? 0x346 :
15158 						  0x347;
15159 					val_addr = (core_num == 0) ? 0x344 :
15160 						   0x345;
15161 					val_mask = (0x1 << 0);
15162 					val_shift = 0;
15163 					break;
15164 				case (0x1 << 2):
15165 					en_addr = (core_num == 0) ? 0x346 :
15166 						  0x347;
15167 					val_addr = (core_num == 0) ? 0x344 :
15168 						   0x345;
15169 					val_mask = (0x1 << 2);
15170 					val_shift = 2;
15171 					break;
15172 				case (0x1 << 4):
15173 					en_addr = (core_num == 0) ? 0x346 :
15174 						  0x347;
15175 					val_addr = (core_num == 0) ? 0x344 :
15176 						   0x345;
15177 					val_mask = (0x1 << 4);
15178 					val_shift = 4;
15179 					break;
15180 				default:
15181 					addr = 0xffff;
15182 					break;
15183 				}
15184 			}
15185 
15186 			if (off) {
15187 				and_phy_reg(pi, en_addr, ~en_mask);
15188 				and_phy_reg(pi, val_addr, ~val_mask);
15189 			} else {
15190 
15191 				if ((core_mask == 0)
15192 				    || (core_mask & (1 << core_num))) {
15193 					or_phy_reg(pi, en_addr, en_mask);
15194 
15195 					if (addr != 0xffff)
15196 						mod_phy_reg(pi, val_addr,
15197 							    val_mask,
15198 							    (value <<
15199 							     val_shift));
15200 				}
15201 			}
15202 		}
15203 	}
15204 }
15205 
wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy * pi)15206 static void wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy *pi)
15207 {
15208 	uint core;
15209 	int ctr;
15210 	s16 gain_delta[2];
15211 	u8 curr_channel;
15212 	u16 minmax_gain[2];
15213 	u16 regval[4];
15214 
15215 	if (pi->phyhang_avoid)
15216 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
15217 
15218 	if (pi->nphy_gain_boost) {
15219 		if ((CHSPEC_IS2G(pi->radio_chanspec))) {
15220 
15221 			gain_delta[0] = 6;
15222 			gain_delta[1] = 6;
15223 		} else {
15224 
15225 			curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
15226 			gain_delta[0] =
15227 				(s16)
15228 				PHY_HW_ROUND(((nphy_lnagain_est0[0] *
15229 					       curr_channel) +
15230 					      nphy_lnagain_est0[1]), 13);
15231 			gain_delta[1] =
15232 				(s16)
15233 				PHY_HW_ROUND(((nphy_lnagain_est1[0] *
15234 					       curr_channel) +
15235 					      nphy_lnagain_est1[1]), 13);
15236 		}
15237 	} else {
15238 
15239 		gain_delta[0] = 0;
15240 		gain_delta[1] = 0;
15241 	}
15242 
15243 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
15244 		if (pi->nphy_elna_gain_config) {
15245 
15246 			regval[0] = nphy_def_lnagains[2] + gain_delta[core];
15247 			regval[1] = nphy_def_lnagains[3] + gain_delta[core];
15248 			regval[2] = nphy_def_lnagains[3] + gain_delta[core];
15249 			regval[3] = nphy_def_lnagains[3] + gain_delta[core];
15250 		} else {
15251 			for (ctr = 0; ctr < 4; ctr++)
15252 				regval[ctr] =
15253 					nphy_def_lnagains[ctr] +
15254 					gain_delta[core];
15255 		}
15256 		wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
15257 
15258 		minmax_gain[core] =
15259 			(u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
15260 	}
15261 
15262 	mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
15263 	mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
15264 
15265 	if (pi->phyhang_avoid)
15266 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
15267 }
15268 
15269 static void
wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy * pi,u8 core)15270 wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy *pi, u8 core)
15271 {
15272 	if (core == PHY_CORE_0) {
15273 		write_phy_reg(pi, 0x38, 0x4);
15274 		if (CHSPEC_IS2G(pi->radio_chanspec))
15275 			write_phy_reg(pi, 0x37, 0x0060);
15276 		else
15277 			write_phy_reg(pi, 0x37, 0x1080);
15278 	} else if (core == PHY_CORE_1) {
15279 		write_phy_reg(pi, 0x2ae, 0x4);
15280 		if (CHSPEC_IS2G(pi->radio_chanspec))
15281 			write_phy_reg(pi, 0x2ad, 0x0060);
15282 		else
15283 			write_phy_reg(pi, 0x2ad, 0x1080);
15284 	}
15285 }
15286 
wlc_phy_war_txchain_upd_nphy(struct brcms_phy * pi,u8 txchain)15287 static void wlc_phy_war_txchain_upd_nphy(struct brcms_phy *pi, u8 txchain)
15288 {
15289 	u8 txchain0, txchain1;
15290 
15291 	txchain0 = txchain & 0x1;
15292 	txchain1 = (txchain & 0x2) >> 1;
15293 	if (!txchain0)
15294 		wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15295 
15296 	if (!txchain1)
15297 		wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15298 }
15299 
wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy * pi)15300 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy *pi)
15301 {
15302 	s8 lna1_gain_db[] = { 8, 13, 17, 22 };
15303 	s8 lna2_gain_db[] = { -2, 7, 11, 15 };
15304 	s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
15305 	s8 tia_gainbits[] = {
15306 		0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15307 
15308 	mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15309 	mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15310 
15311 	mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15312 
15313 	mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
15314 	mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
15315 
15316 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
15317 				 lna1_gain_db);
15318 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
15319 				 lna1_gain_db);
15320 
15321 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
15322 				 lna2_gain_db);
15323 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
15324 				 lna2_gain_db);
15325 
15326 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15327 				 tia_gain_db);
15328 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15329 				 tia_gain_db);
15330 
15331 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15332 				 tia_gainbits);
15333 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15334 				 tia_gainbits);
15335 
15336 	write_phy_reg(pi, 0x37, 0x74);
15337 	write_phy_reg(pi, 0x2ad, 0x74);
15338 	write_phy_reg(pi, 0x38, 0x18);
15339 	write_phy_reg(pi, 0x2ae, 0x18);
15340 
15341 	write_phy_reg(pi, 0x2b, 0xe8);
15342 	write_phy_reg(pi, 0x41, 0xe8);
15343 
15344 	if (CHSPEC_IS20(pi->radio_chanspec)) {
15345 
15346 		mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
15347 		mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
15348 	} else {
15349 
15350 		mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
15351 		mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
15352 	}
15353 }
15354 
wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy * pi)15355 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
15356 {
15357 	u16 currband;
15358 	s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
15359 	s8 *lna1_gain_db = NULL;
15360 	s8 *lna1_gain_db_2 = NULL;
15361 	s8 *lna2_gain_db = NULL;
15362 	s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
15363 	s8 *tia_gain_db;
15364 	s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
15365 	s8 *tia_gainbits;
15366 	u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
15367 	u16 *rfseq_init_gain;
15368 	u16 init_gaincode;
15369 	u16 clip1hi_gaincode;
15370 	u16 clip1md_gaincode = 0;
15371 	u16 clip1md_gaincode_B;
15372 	u16 clip1lo_gaincode;
15373 	u16 clip1lo_gaincode_B;
15374 	u8 crsminl_th = 0;
15375 	u8 crsminu_th;
15376 	u16 nbclip_th = 0;
15377 	u8 w1clip_th;
15378 	u16 freq;
15379 	s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
15380 	u8 chg_nbclip_th = 0;
15381 
15382 	mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15383 	mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15384 
15385 	currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15386 	if (currband == 0) {
15387 
15388 		lna1_gain_db = lna1G_gain_db_rev7;
15389 
15390 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15391 					 lna1_gain_db);
15392 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15393 					 lna1_gain_db);
15394 
15395 		mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
15396 
15397 		if (CHSPEC_IS40(pi->radio_chanspec)) {
15398 			mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
15399 			mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
15400 		}
15401 
15402 		mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15403 
15404 		if (CHSPEC_IS20(pi->radio_chanspec)) {
15405 			mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
15406 			mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
15407 		}
15408 	} else {
15409 
15410 		init_gaincode = 0x9e;
15411 		clip1hi_gaincode = 0x9e;
15412 		clip1md_gaincode_B = 0x24;
15413 		clip1lo_gaincode = 0x8a;
15414 		clip1lo_gaincode_B = 8;
15415 		rfseq_init_gain = rfseqA_init_gain_rev7;
15416 
15417 		tia_gain_db = tiaA_gain_db_rev7;
15418 		tia_gainbits = tiaA_gainbits_rev7;
15419 
15420 		freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
15421 		if (CHSPEC_IS20(pi->radio_chanspec)) {
15422 
15423 			w1clip_th = 25;
15424 			clip1md_gaincode = 0x82;
15425 
15426 			if ((freq <= 5080) || (freq == 5825)) {
15427 
15428 				s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
15429 				s8 lna1A_gain_db_2_rev7[] = {
15430 					11, 17, 22, 25};
15431 				s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15432 
15433 				crsminu_th = 0x3e;
15434 				lna1_gain_db = lna1A_gain_db_rev7;
15435 				lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15436 				lna2_gain_db = lna2A_gain_db_rev7;
15437 			} else if ((freq >= 5500) && (freq <= 5700)) {
15438 
15439 				s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
15440 				s8 lna1A_gain_db_2_rev7[] = {
15441 					12, 18, 22, 26};
15442 				s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
15443 
15444 				crsminu_th = 0x45;
15445 				clip1md_gaincode_B = 0x14;
15446 				nbclip_th = 0xff;
15447 				chg_nbclip_th = 1;
15448 				lna1_gain_db = lna1A_gain_db_rev7;
15449 				lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15450 				lna2_gain_db = lna2A_gain_db_rev7;
15451 			} else {
15452 
15453 				s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
15454 				s8 lna1A_gain_db_2_rev7[] = {
15455 					12, 18, 22, 26};
15456 				s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15457 
15458 				crsminu_th = 0x41;
15459 				lna1_gain_db = lna1A_gain_db_rev7;
15460 				lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15461 				lna2_gain_db = lna2A_gain_db_rev7;
15462 			}
15463 
15464 			if (freq <= 4920) {
15465 				nvar_baseline_offset0 = 5;
15466 				nvar_baseline_offset1 = 5;
15467 			} else if ((freq > 4920) && (freq <= 5320)) {
15468 				nvar_baseline_offset0 = 3;
15469 				nvar_baseline_offset1 = 5;
15470 			} else if ((freq > 5320) && (freq <= 5700)) {
15471 				nvar_baseline_offset0 = 3;
15472 				nvar_baseline_offset1 = 2;
15473 			} else {
15474 				nvar_baseline_offset0 = 4;
15475 				nvar_baseline_offset1 = 0;
15476 			}
15477 		} else {
15478 
15479 			crsminu_th = 0x3a;
15480 			crsminl_th = 0x3a;
15481 			w1clip_th = 20;
15482 
15483 			if ((freq >= 4920) && (freq <= 5320)) {
15484 				nvar_baseline_offset0 = 4;
15485 				nvar_baseline_offset1 = 5;
15486 			} else if ((freq > 5320) && (freq <= 5550)) {
15487 				nvar_baseline_offset0 = 4;
15488 				nvar_baseline_offset1 = 2;
15489 			} else {
15490 				nvar_baseline_offset0 = 5;
15491 				nvar_baseline_offset1 = 3;
15492 			}
15493 		}
15494 
15495 		write_phy_reg(pi, 0x20, init_gaincode);
15496 		write_phy_reg(pi, 0x2a7, init_gaincode);
15497 
15498 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15499 					 pi->pubpi.phy_corenum, 0x106, 16,
15500 					 rfseq_init_gain);
15501 
15502 		write_phy_reg(pi, 0x22, clip1hi_gaincode);
15503 		write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15504 
15505 		write_phy_reg(pi, 0x36, clip1md_gaincode_B);
15506 		write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
15507 
15508 		write_phy_reg(pi, 0x37, clip1lo_gaincode);
15509 		write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15510 		write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
15511 		write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
15512 
15513 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15514 					 tia_gain_db);
15515 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15516 					 tia_gain_db);
15517 
15518 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15519 					 tia_gainbits);
15520 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15521 					 tia_gainbits);
15522 
15523 		mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15524 
15525 		if (chg_nbclip_th == 1) {
15526 			write_phy_reg(pi, 0x2b, nbclip_th);
15527 			write_phy_reg(pi, 0x41, nbclip_th);
15528 		}
15529 
15530 		mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
15531 		mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
15532 
15533 		mod_phy_reg(pi, 0x2e4,
15534 			    (0x3f << 0), (nvar_baseline_offset0 << 0));
15535 
15536 		mod_phy_reg(pi, 0x2e4,
15537 			    (0x3f << 6), (nvar_baseline_offset1 << 6));
15538 
15539 		if (CHSPEC_IS20(pi->radio_chanspec)) {
15540 
15541 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15542 						 lna1_gain_db);
15543 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15544 						 lna1_gain_db_2);
15545 
15546 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15547 						 8, lna2_gain_db);
15548 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15549 						 8, lna2_gain_db);
15550 
15551 			write_phy_reg(pi, 0x24, clip1md_gaincode);
15552 			write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15553 		} else {
15554 			mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15555 		}
15556 	}
15557 }
15558 
wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy * pi)15559 static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
15560 {
15561 	u16 w1th, hpf_code, currband;
15562 	int ctr;
15563 	u8 rfseq_updategainu_events[] = {
15564 		NPHY_RFSEQ_CMD_RX_GAIN,
15565 		NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15566 		NPHY_RFSEQ_CMD_SET_HPF_BW
15567 	};
15568 	u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
15569 	s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
15570 	s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
15571 	s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
15572 	s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
15573 	s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
15574 	s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
15575 	s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
15576 	s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
15577 	s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
15578 	s8 *lna1_gain_db = NULL;
15579 	s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
15580 	s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
15581 	s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
15582 	s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
15583 	s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
15584 	s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
15585 	s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
15586 	s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
15587 	s8 *lna2_gain_db = NULL;
15588 	s8 tiaG_gain_db[] = {
15589 		0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
15590 	s8 tiaA_gain_db[] = {
15591 		0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
15592 	s8 tiaA_gain_db_rev4[] = {
15593 		0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15594 	s8 tiaA_gain_db_rev5[] = {
15595 		0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15596 	s8 tiaA_gain_db_rev6[] = {
15597 		0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15598 	s8 *tia_gain_db;
15599 	s8 tiaG_gainbits[] = {
15600 		0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15601 	s8 tiaA_gainbits[] = {
15602 		0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
15603 	s8 tiaA_gainbits_rev4[] = {
15604 		0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15605 	s8 tiaA_gainbits_rev5[] = {
15606 		0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15607 	s8 tiaA_gainbits_rev6[] = {
15608 		0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15609 	s8 *tia_gainbits;
15610 	s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
15611 	s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
15612 	u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
15613 	u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
15614 	u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
15615 	u16 rfseqG_init_gain_rev5_elna[] = {
15616 		0x013f, 0x013f, 0x013f, 0x013f };
15617 	u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
15618 	u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
15619 	u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
15620 	u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
15621 	u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
15622 	u16 rfseqA_init_gain_rev4_elna[] = {
15623 		0x314f, 0x314f, 0x314f, 0x314f };
15624 	u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
15625 	u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
15626 	u16 *rfseq_init_gain;
15627 	u16 initG_gaincode = 0x627e;
15628 	u16 initG_gaincode_rev4 = 0x527e;
15629 	u16 initG_gaincode_rev5 = 0x427e;
15630 	u16 initG_gaincode_rev5_elna = 0x027e;
15631 	u16 initG_gaincode_rev6 = 0x527e;
15632 	u16 initG_gaincode_rev6_224B0 = 0x427e;
15633 	u16 initG_gaincode_rev6_elna = 0x127e;
15634 	u16 initA_gaincode = 0x52de;
15635 	u16 initA_gaincode_rev4 = 0x629e;
15636 	u16 initA_gaincode_rev4_elna = 0x329e;
15637 	u16 initA_gaincode_rev5 = 0x729e;
15638 	u16 initA_gaincode_rev6 = 0x729e;
15639 	u16 init_gaincode;
15640 	u16 clip1hiG_gaincode = 0x107e;
15641 	u16 clip1hiG_gaincode_rev4 = 0x007e;
15642 	u16 clip1hiG_gaincode_rev5 = 0x1076;
15643 	u16 clip1hiG_gaincode_rev6 = 0x007e;
15644 	u16 clip1hiA_gaincode = 0x00de;
15645 	u16 clip1hiA_gaincode_rev4 = 0x029e;
15646 	u16 clip1hiA_gaincode_rev5 = 0x029e;
15647 	u16 clip1hiA_gaincode_rev6 = 0x029e;
15648 	u16 clip1hi_gaincode;
15649 	u16 clip1mdG_gaincode = 0x0066;
15650 	u16 clip1mdA_gaincode = 0x00ca;
15651 	u16 clip1mdA_gaincode_rev4 = 0x1084;
15652 	u16 clip1mdA_gaincode_rev5 = 0x2084;
15653 	u16 clip1mdA_gaincode_rev6 = 0x2084;
15654 	u16 clip1md_gaincode = 0;
15655 	u16 clip1loG_gaincode = 0x0074;
15656 	u16 clip1loG_gaincode_rev5[] = {
15657 		0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
15658 	};
15659 	u16 clip1loG_gaincode_rev6[] = {
15660 		0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
15661 	};
15662 	u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
15663 	u16 clip1loA_gaincode = 0x00cc;
15664 	u16 clip1loA_gaincode_rev4 = 0x0086;
15665 	u16 clip1loA_gaincode_rev5 = 0x2086;
15666 	u16 clip1loA_gaincode_rev6 = 0x2086;
15667 	u16 clip1lo_gaincode;
15668 	u8 crsminG_th = 0x18;
15669 	u8 crsminG_th_rev5 = 0x18;
15670 	u8 crsminG_th_rev6 = 0x18;
15671 	u8 crsminA_th = 0x1e;
15672 	u8 crsminA_th_rev4 = 0x24;
15673 	u8 crsminA_th_rev5 = 0x24;
15674 	u8 crsminA_th_rev6 = 0x24;
15675 	u8 crsmin_th;
15676 	u8 crsminlG_th = 0x18;
15677 	u8 crsminlG_th_rev5 = 0x18;
15678 	u8 crsminlG_th_rev6 = 0x18;
15679 	u8 crsminlA_th = 0x1e;
15680 	u8 crsminlA_th_rev4 = 0x24;
15681 	u8 crsminlA_th_rev5 = 0x24;
15682 	u8 crsminlA_th_rev6 = 0x24;
15683 	u8 crsminl_th = 0;
15684 	u8 crsminuG_th = 0x18;
15685 	u8 crsminuG_th_rev5 = 0x18;
15686 	u8 crsminuG_th_rev6 = 0x18;
15687 	u8 crsminuA_th = 0x1e;
15688 	u8 crsminuA_th_rev4 = 0x24;
15689 	u8 crsminuA_th_rev5 = 0x24;
15690 	u8 crsminuA_th_rev6 = 0x24;
15691 	u8 crsminuA_th_rev6_224B0 = 0x2d;
15692 	u8 crsminu_th;
15693 	u16 nbclipG_th = 0x20d;
15694 	u16 nbclipG_th_rev4 = 0x1a1;
15695 	u16 nbclipG_th_rev5 = 0x1d0;
15696 	u16 nbclipG_th_rev6 = 0x1d0;
15697 	u16 nbclipA_th = 0x1a1;
15698 	u16 nbclipA_th_rev4 = 0x107;
15699 	u16 nbclipA_th_rev5 = 0x0a9;
15700 	u16 nbclipA_th_rev6 = 0x0f0;
15701 	u16 nbclip_th = 0;
15702 	u8 w1clipG_th = 5;
15703 	u8 w1clipG_th_rev5 = 9;
15704 	u8 w1clipG_th_rev6 = 5;
15705 	u8 w1clipA_th = 25, w1clip_th;
15706 	u8 rssi_gain_default = 0x50;
15707 	u8 rssiG_gain_rev6_224B0 = 0x50;
15708 	u8 rssiA_gain_rev5 = 0x90;
15709 	u8 rssiA_gain_rev6 = 0x90;
15710 	u8 rssi_gain;
15711 	u16 regval[21];
15712 	u8 triso;
15713 
15714 	triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
15715 		pi->srom_fem2g.triso;
15716 
15717 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15718 		if (pi->pubpi.radiorev == 5) {
15719 			wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
15720 		} else if (pi->pubpi.radiorev == 7) {
15721 			wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15722 
15723 			mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
15724 			mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
15725 
15726 		} else if ((pi->pubpi.radiorev == 3)
15727 			   || (pi->pubpi.radiorev == 8)) {
15728 			wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15729 
15730 			if (pi->pubpi.radiorev == 8) {
15731 				mod_phy_reg(pi, 0x283,
15732 					    (0xff << 0), (0x44 << 0));
15733 				mod_phy_reg(pi, 0x280,
15734 					    (0xff << 0), (0x44 << 0));
15735 			}
15736 		} else {
15737 			wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15738 		}
15739 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15740 
15741 		mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
15742 
15743 		mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15744 		mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15745 
15746 		currband =
15747 			read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15748 		if (currband == 0) {
15749 			if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15750 				if (pi->pubpi.radiorev == 11) {
15751 					lna1_gain_db = lna1G_gain_db_rev6_224B0;
15752 					lna2_gain_db = lna2G_gain_db_rev6_224B0;
15753 					rfseq_init_gain =
15754 						rfseqG_init_gain_rev6_224B0;
15755 					init_gaincode =
15756 						initG_gaincode_rev6_224B0;
15757 					clip1hi_gaincode =
15758 						clip1hiG_gaincode_rev6;
15759 					clip1lo_gaincode =
15760 						clip1loG_gaincode_rev6_224B0;
15761 					nbclip_th = nbclipG_th_rev6;
15762 					w1clip_th = w1clipG_th_rev6;
15763 					crsmin_th = crsminG_th_rev6;
15764 					crsminl_th = crsminlG_th_rev6;
15765 					crsminu_th = crsminuG_th_rev6;
15766 					rssi_gain = rssiG_gain_rev6_224B0;
15767 				} else {
15768 					lna1_gain_db = lna1G_gain_db_rev6;
15769 					lna2_gain_db = lna2G_gain_db_rev6;
15770 					if (pi->sh->boardflags & BFL_EXTLNA) {
15771 
15772 						rfseq_init_gain =
15773 						     rfseqG_init_gain_rev6_elna;
15774 						init_gaincode =
15775 						       initG_gaincode_rev6_elna;
15776 					} else {
15777 						rfseq_init_gain =
15778 							rfseqG_init_gain_rev6;
15779 						init_gaincode =
15780 							initG_gaincode_rev6;
15781 					}
15782 					clip1hi_gaincode =
15783 						clip1hiG_gaincode_rev6;
15784 					switch (triso) {
15785 					case 0:
15786 						clip1lo_gaincode =
15787 							clip1loG_gaincode_rev6
15788 							[0];
15789 						break;
15790 					case 1:
15791 						clip1lo_gaincode =
15792 							clip1loG_gaincode_rev6
15793 							[1];
15794 						break;
15795 					case 2:
15796 						clip1lo_gaincode =
15797 							clip1loG_gaincode_rev6
15798 							[2];
15799 						break;
15800 					case 3:
15801 					default:
15802 
15803 						clip1lo_gaincode =
15804 							clip1loG_gaincode_rev6
15805 							[3];
15806 						break;
15807 					case 4:
15808 						clip1lo_gaincode =
15809 							clip1loG_gaincode_rev6
15810 							[4];
15811 						break;
15812 					case 5:
15813 						clip1lo_gaincode =
15814 							clip1loG_gaincode_rev6
15815 							[5];
15816 						break;
15817 					case 6:
15818 						clip1lo_gaincode =
15819 							clip1loG_gaincode_rev6
15820 							[6];
15821 						break;
15822 					case 7:
15823 						clip1lo_gaincode =
15824 							clip1loG_gaincode_rev6
15825 							[7];
15826 						break;
15827 					}
15828 					nbclip_th = nbclipG_th_rev6;
15829 					w1clip_th = w1clipG_th_rev6;
15830 					crsmin_th = crsminG_th_rev6;
15831 					crsminl_th = crsminlG_th_rev6;
15832 					crsminu_th = crsminuG_th_rev6;
15833 					rssi_gain = rssi_gain_default;
15834 				}
15835 			} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15836 				lna1_gain_db = lna1G_gain_db_rev5;
15837 				lna2_gain_db = lna2G_gain_db_rev5;
15838 				if (pi->sh->boardflags & BFL_EXTLNA) {
15839 
15840 					rfseq_init_gain =
15841 						rfseqG_init_gain_rev5_elna;
15842 					init_gaincode =
15843 						initG_gaincode_rev5_elna;
15844 				} else {
15845 					rfseq_init_gain = rfseqG_init_gain_rev5;
15846 					init_gaincode = initG_gaincode_rev5;
15847 				}
15848 				clip1hi_gaincode = clip1hiG_gaincode_rev5;
15849 				switch (triso) {
15850 				case 0:
15851 					clip1lo_gaincode =
15852 						clip1loG_gaincode_rev5[0];
15853 					break;
15854 				case 1:
15855 					clip1lo_gaincode =
15856 						clip1loG_gaincode_rev5[1];
15857 					break;
15858 				case 2:
15859 					clip1lo_gaincode =
15860 						clip1loG_gaincode_rev5[2];
15861 					break;
15862 				case 3:
15863 
15864 					clip1lo_gaincode =
15865 						clip1loG_gaincode_rev5[3];
15866 					break;
15867 				case 4:
15868 					clip1lo_gaincode =
15869 						clip1loG_gaincode_rev5[4];
15870 					break;
15871 				case 5:
15872 					clip1lo_gaincode =
15873 						clip1loG_gaincode_rev5[5];
15874 					break;
15875 				case 6:
15876 					clip1lo_gaincode =
15877 						clip1loG_gaincode_rev5[6];
15878 					break;
15879 				case 7:
15880 					clip1lo_gaincode =
15881 						clip1loG_gaincode_rev5[7];
15882 					break;
15883 				default:
15884 					clip1lo_gaincode =
15885 						clip1loG_gaincode_rev5[3];
15886 					break;
15887 				}
15888 				nbclip_th = nbclipG_th_rev5;
15889 				w1clip_th = w1clipG_th_rev5;
15890 				crsmin_th = crsminG_th_rev5;
15891 				crsminl_th = crsminlG_th_rev5;
15892 				crsminu_th = crsminuG_th_rev5;
15893 				rssi_gain = rssi_gain_default;
15894 			} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15895 				lna1_gain_db = lna1G_gain_db_rev4;
15896 				lna2_gain_db = lna2G_gain_db;
15897 				rfseq_init_gain = rfseqG_init_gain_rev4;
15898 				init_gaincode = initG_gaincode_rev4;
15899 				clip1hi_gaincode = clip1hiG_gaincode_rev4;
15900 				clip1lo_gaincode = clip1loG_gaincode;
15901 				nbclip_th = nbclipG_th_rev4;
15902 				w1clip_th = w1clipG_th;
15903 				crsmin_th = crsminG_th;
15904 				crsminl_th = crsminlG_th;
15905 				crsminu_th = crsminuG_th;
15906 				rssi_gain = rssi_gain_default;
15907 			} else {
15908 				lna1_gain_db = lna1G_gain_db;
15909 				lna2_gain_db = lna2G_gain_db;
15910 				rfseq_init_gain = rfseqG_init_gain;
15911 				init_gaincode = initG_gaincode;
15912 				clip1hi_gaincode = clip1hiG_gaincode;
15913 				clip1lo_gaincode = clip1loG_gaincode;
15914 				nbclip_th = nbclipG_th;
15915 				w1clip_th = w1clipG_th;
15916 				crsmin_th = crsminG_th;
15917 				crsminl_th = crsminlG_th;
15918 				crsminu_th = crsminuG_th;
15919 				rssi_gain = rssi_gain_default;
15920 			}
15921 			tia_gain_db = tiaG_gain_db;
15922 			tia_gainbits = tiaG_gainbits;
15923 			clip1md_gaincode = clip1mdG_gaincode;
15924 		} else {
15925 			if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15926 				lna1_gain_db = lna1A_gain_db_rev6;
15927 				lna2_gain_db = lna2A_gain_db_rev6;
15928 				tia_gain_db = tiaA_gain_db_rev6;
15929 				tia_gainbits = tiaA_gainbits_rev6;
15930 				rfseq_init_gain = rfseqA_init_gain_rev6;
15931 				init_gaincode = initA_gaincode_rev6;
15932 				clip1hi_gaincode = clip1hiA_gaincode_rev6;
15933 				clip1md_gaincode = clip1mdA_gaincode_rev6;
15934 				clip1lo_gaincode = clip1loA_gaincode_rev6;
15935 				crsmin_th = crsminA_th_rev6;
15936 				crsminl_th = crsminlA_th_rev6;
15937 				if ((pi->pubpi.radiorev == 11) &&
15938 				    (CHSPEC_IS40(pi->radio_chanspec) == 0))
15939 					crsminu_th = crsminuA_th_rev6_224B0;
15940 				else
15941 					crsminu_th = crsminuA_th_rev6;
15942 
15943 				nbclip_th = nbclipA_th_rev6;
15944 				rssi_gain = rssiA_gain_rev6;
15945 			} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15946 				lna1_gain_db = lna1A_gain_db_rev5;
15947 				lna2_gain_db = lna2A_gain_db_rev5;
15948 				tia_gain_db = tiaA_gain_db_rev5;
15949 				tia_gainbits = tiaA_gainbits_rev5;
15950 				rfseq_init_gain = rfseqA_init_gain_rev5;
15951 				init_gaincode = initA_gaincode_rev5;
15952 				clip1hi_gaincode = clip1hiA_gaincode_rev5;
15953 				clip1md_gaincode = clip1mdA_gaincode_rev5;
15954 				clip1lo_gaincode = clip1loA_gaincode_rev5;
15955 				crsmin_th = crsminA_th_rev5;
15956 				crsminl_th = crsminlA_th_rev5;
15957 				crsminu_th = crsminuA_th_rev5;
15958 				nbclip_th = nbclipA_th_rev5;
15959 				rssi_gain = rssiA_gain_rev5;
15960 			} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15961 				lna1_gain_db = lna1A_gain_db_rev4;
15962 				lna2_gain_db = lna2A_gain_db_rev4;
15963 				tia_gain_db = tiaA_gain_db_rev4;
15964 				tia_gainbits = tiaA_gainbits_rev4;
15965 				if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
15966 
15967 					rfseq_init_gain =
15968 						rfseqA_init_gain_rev4_elna;
15969 					init_gaincode =
15970 						initA_gaincode_rev4_elna;
15971 				} else {
15972 					rfseq_init_gain = rfseqA_init_gain_rev4;
15973 					init_gaincode = initA_gaincode_rev4;
15974 				}
15975 				clip1hi_gaincode = clip1hiA_gaincode_rev4;
15976 				clip1md_gaincode = clip1mdA_gaincode_rev4;
15977 				clip1lo_gaincode = clip1loA_gaincode_rev4;
15978 				crsmin_th = crsminA_th_rev4;
15979 				crsminl_th = crsminlA_th_rev4;
15980 				crsminu_th = crsminuA_th_rev4;
15981 				nbclip_th = nbclipA_th_rev4;
15982 				rssi_gain = rssi_gain_default;
15983 			} else {
15984 				lna1_gain_db = lna1A_gain_db;
15985 				lna2_gain_db = lna2A_gain_db;
15986 				tia_gain_db = tiaA_gain_db;
15987 				tia_gainbits = tiaA_gainbits;
15988 				rfseq_init_gain = rfseqA_init_gain;
15989 				init_gaincode = initA_gaincode;
15990 				clip1hi_gaincode = clip1hiA_gaincode;
15991 				clip1md_gaincode = clip1mdA_gaincode;
15992 				clip1lo_gaincode = clip1loA_gaincode;
15993 				crsmin_th = crsminA_th;
15994 				crsminl_th = crsminlA_th;
15995 				crsminu_th = crsminuA_th;
15996 				nbclip_th = nbclipA_th;
15997 				rssi_gain = rssi_gain_default;
15998 			}
15999 			w1clip_th = w1clipA_th;
16000 		}
16001 
16002 		write_radio_reg(pi,
16003 				(RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16004 				 RADIO_2056_RX0), 0x17);
16005 		write_radio_reg(pi,
16006 				(RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16007 				 RADIO_2056_RX1), 0x17);
16008 
16009 		write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
16010 				0xf0);
16011 		write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
16012 				0xf0);
16013 
16014 		write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
16015 				0x0);
16016 		write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
16017 				0x0);
16018 
16019 		write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
16020 				rssi_gain);
16021 		write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
16022 				rssi_gain);
16023 
16024 		write_radio_reg(pi,
16025 				(RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16026 				 RADIO_2056_RX0), 0x17);
16027 		write_radio_reg(pi,
16028 				(RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16029 				 RADIO_2056_RX1), 0x17);
16030 
16031 		write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
16032 				0xFF);
16033 		write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
16034 				0xFF);
16035 
16036 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
16037 					 8, lna1_gain_db);
16038 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
16039 					 8, lna1_gain_db);
16040 
16041 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
16042 					 8, lna2_gain_db);
16043 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
16044 					 8, lna2_gain_db);
16045 
16046 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
16047 					 8, tia_gain_db);
16048 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
16049 					 8, tia_gain_db);
16050 
16051 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
16052 					 8, tia_gainbits);
16053 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
16054 					 8, tia_gainbits);
16055 
16056 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
16057 					 8, &lpf_gain_db);
16058 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
16059 					 8, &lpf_gain_db);
16060 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
16061 					 8, &lpf_gainbits);
16062 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
16063 					 8, &lpf_gainbits);
16064 
16065 		write_phy_reg(pi, 0x20, init_gaincode);
16066 		write_phy_reg(pi, 0x2a7, init_gaincode);
16067 
16068 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16069 					 pi->pubpi.phy_corenum, 0x106, 16,
16070 					 rfseq_init_gain);
16071 
16072 		write_phy_reg(pi, 0x22, clip1hi_gaincode);
16073 		write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
16074 
16075 		write_phy_reg(pi, 0x24, clip1md_gaincode);
16076 		write_phy_reg(pi, 0x2ab, clip1md_gaincode);
16077 
16078 		write_phy_reg(pi, 0x37, clip1lo_gaincode);
16079 		write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
16080 
16081 		mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
16082 		mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
16083 		mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
16084 
16085 		write_phy_reg(pi, 0x2b, nbclip_th);
16086 		write_phy_reg(pi, 0x41, nbclip_th);
16087 
16088 		mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
16089 		mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
16090 
16091 		write_phy_reg(pi, 0x150, 0x809c);
16092 
16093 	} else {
16094 
16095 		mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16096 		mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16097 
16098 		write_phy_reg(pi, 0x2b, 0x84);
16099 		write_phy_reg(pi, 0x41, 0x84);
16100 
16101 		if (CHSPEC_IS20(pi->radio_chanspec)) {
16102 			write_phy_reg(pi, 0x6b, 0x2b);
16103 			write_phy_reg(pi, 0x6c, 0x2b);
16104 			write_phy_reg(pi, 0x6d, 0x9);
16105 			write_phy_reg(pi, 0x6e, 0x9);
16106 		}
16107 
16108 		w1th = NPHY_RSSICAL_W1_TARGET - 4;
16109 		mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
16110 		mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
16111 
16112 		if (CHSPEC_IS20(pi->radio_chanspec)) {
16113 			mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
16114 			mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
16115 
16116 			mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
16117 			mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16118 		}
16119 
16120 		write_phy_reg(pi, 0x150, 0x809c);
16121 
16122 		if (pi->nphy_gain_boost)
16123 			if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16124 			    (CHSPEC_IS40(pi->radio_chanspec)))
16125 				hpf_code = 4;
16126 			else
16127 				hpf_code = 5;
16128 		else if (CHSPEC_IS40(pi->radio_chanspec))
16129 			hpf_code = 6;
16130 		else
16131 			hpf_code = 7;
16132 
16133 		mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16134 		mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16135 
16136 		for (ctr = 0; ctr < 4; ctr++)
16137 			regval[ctr] = (hpf_code << 8) | 0x7c;
16138 		wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16139 
16140 		wlc_phy_adjust_lnagaintbl_nphy(pi);
16141 
16142 		if (pi->nphy_elna_gain_config) {
16143 			regval[0] = 0;
16144 			regval[1] = 1;
16145 			regval[2] = 1;
16146 			regval[3] = 1;
16147 			wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16148 			wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16149 
16150 			for (ctr = 0; ctr < 4; ctr++)
16151 				regval[ctr] = (hpf_code << 8) | 0x74;
16152 			wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16153 		}
16154 
16155 		if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16156 			for (ctr = 0; ctr < 21; ctr++)
16157 				regval[ctr] = 3 * ctr;
16158 			wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16159 			wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16160 
16161 			for (ctr = 0; ctr < 21; ctr++)
16162 				regval[ctr] = (u16) ctr;
16163 			wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16164 			wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16165 		}
16166 
16167 		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16168 				       rfseq_updategainu_events,
16169 				       rfseq_updategainu_dlys,
16170 				       sizeof(rfseq_updategainu_events) /
16171 				       sizeof(rfseq_updategainu_events[0]));
16172 
16173 		mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16174 
16175 		if (CHSPEC_IS2G(pi->radio_chanspec))
16176 			mod_phy_reg(pi,
16177 				    (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16178 				    0x7f, 0x4);
16179 	}
16180 }
16181 
wlc_phy_workarounds_nphy(struct brcms_phy * pi)16182 static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
16183 {
16184 	u8 rfseq_rx2tx_events[] = {
16185 		NPHY_RFSEQ_CMD_NOP,
16186 		NPHY_RFSEQ_CMD_RXG_FBW,
16187 		NPHY_RFSEQ_CMD_TR_SWITCH,
16188 		NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16189 		NPHY_RFSEQ_CMD_RXPD_TXPD,
16190 		NPHY_RFSEQ_CMD_TX_GAIN,
16191 		NPHY_RFSEQ_CMD_EXT_PA
16192 	};
16193 	u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
16194 	u8 rfseq_tx2rx_events[] = {
16195 		NPHY_RFSEQ_CMD_NOP,
16196 		NPHY_RFSEQ_CMD_EXT_PA,
16197 		NPHY_RFSEQ_CMD_TX_GAIN,
16198 		NPHY_RFSEQ_CMD_RXPD_TXPD,
16199 		NPHY_RFSEQ_CMD_TR_SWITCH,
16200 		NPHY_RFSEQ_CMD_RXG_FBW,
16201 		NPHY_RFSEQ_CMD_CLR_HIQ_DIS
16202 	};
16203 	u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
16204 	u8 rfseq_tx2rx_events_rev3[] = {
16205 		NPHY_REV3_RFSEQ_CMD_EXT_PA,
16206 		NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16207 		NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16208 		NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16209 		NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16210 		NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16211 		NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16212 		NPHY_REV3_RFSEQ_CMD_END
16213 	};
16214 	u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
16215 	u8 rfseq_rx2tx_events_rev3[] = {
16216 		NPHY_REV3_RFSEQ_CMD_NOP,
16217 		NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16218 		NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16219 		NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16220 		NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16221 		NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16222 		NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16223 		NPHY_REV3_RFSEQ_CMD_EXT_PA,
16224 		NPHY_REV3_RFSEQ_CMD_END
16225 	};
16226 	u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
16227 
16228 	u8 rfseq_rx2tx_events_rev3_ipa[] = {
16229 		NPHY_REV3_RFSEQ_CMD_NOP,
16230 		NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16231 		NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16232 		NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16233 		NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16234 		NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16235 		NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16236 		NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16237 		NPHY_REV3_RFSEQ_CMD_END
16238 	};
16239 	u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16240 	u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
16241 
16242 	s16 alpha0, alpha1, alpha2;
16243 	s16 beta0, beta1, beta2;
16244 	u32 leg_data_weights, ht_data_weights, nss1_data_weights,
16245 	    stbc_data_weights;
16246 	u8 chan_freq_range = 0;
16247 	u16 dac_control = 0x0002;
16248 	u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
16249 	u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
16250 	u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16251 	u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16252 	u16 *aux_adc_vmid;
16253 	u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
16254 	u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
16255 	u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
16256 	u16 *aux_adc_gain;
16257 	u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
16258 	u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
16259 	s32 min_nvar_val = 0x18d;
16260 	s32 min_nvar_offset_6mbps = 20;
16261 	u8 pdetrange;
16262 	u8 triso;
16263 	u16 regval;
16264 	u16 afectrl_adc_ctrl1_rev7 = 0x20;
16265 	u16 afectrl_adc_ctrl2_rev7 = 0x0;
16266 	u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
16267 	u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
16268 	u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
16269 	u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
16270 	u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16271 	u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16272 	u16 ipalvlshift_3p3_war_en = 0;
16273 	u16 rccal_bcap_val, rccal_scap_val;
16274 	u16 rccal_tx20_11b_bcap = 0;
16275 	u16 rccal_tx20_11b_scap = 0;
16276 	u16 rccal_tx20_11n_bcap = 0;
16277 	u16 rccal_tx20_11n_scap = 0;
16278 	u16 rccal_tx40_11n_bcap = 0;
16279 	u16 rccal_tx40_11n_scap = 0;
16280 	u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
16281 	u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
16282 	u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
16283 	u16 tx_lpf_bw_ofdm_20mhz = 0;
16284 	u16 tx_lpf_bw_ofdm_40mhz = 0;
16285 	u16 tx_lpf_bw_11b = 0;
16286 	u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
16287 	u16 txgm_idac_bleed = 0;
16288 	bool rccal_ovrd = false;
16289 	u16 freq;
16290 	int coreNum;
16291 
16292 	if (CHSPEC_IS5G(pi->radio_chanspec))
16293 		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
16294 	else
16295 		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
16296 
16297 	if (pi->phyhang_avoid)
16298 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
16299 
16300 	or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
16301 
16302 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
16303 
16304 		if (NREV_IS(pi->pubpi.phy_rev, 7)) {
16305 			mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
16306 
16307 			mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
16308 			mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
16309 			mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
16310 			mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
16311 			mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
16312 			mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
16313 			mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
16314 			mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
16315 			mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
16316 			mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
16317 			mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
16318 			mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
16319 			mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
16320 			mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
16321 			mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
16322 			mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
16323 		}
16324 
16325 		if (NREV_LE(pi->pubpi.phy_rev, 8)) {
16326 			write_phy_reg(pi, 0x23f, 0x1b0);
16327 			write_phy_reg(pi, 0x240, 0x1b0);
16328 		}
16329 
16330 		if (NREV_GE(pi->pubpi.phy_rev, 8))
16331 			mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
16332 
16333 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16334 					 &dac_control);
16335 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16336 					 &dac_control);
16337 
16338 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16339 					1, 0, 32, &leg_data_weights);
16340 		leg_data_weights = leg_data_weights & 0xffffff;
16341 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16342 					 1, 0, 32, &leg_data_weights);
16343 
16344 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16345 					 2, 0x15e, 16,
16346 					 rfseq_rx2tx_dacbufpu_rev7);
16347 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
16348 					 rfseq_rx2tx_dacbufpu_rev7);
16349 
16350 		if (PHY_IPA(pi))
16351 			wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16352 					       rfseq_rx2tx_events_rev3_ipa,
16353 					       rfseq_rx2tx_dlys_rev3_ipa,
16354 					       sizeof
16355 					       (rfseq_rx2tx_events_rev3_ipa) /
16356 					       sizeof
16357 					       (rfseq_rx2tx_events_rev3_ipa
16358 						[0]));
16359 
16360 		mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
16361 		mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
16362 
16363 		tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
16364 		tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
16365 		tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
16366 
16367 		if (PHY_IPA(pi)) {
16368 
16369 			if (((pi->pubpi.radiorev == 5)
16370 			     && (CHSPEC_IS40(pi->radio_chanspec) == 1))
16371 			    || (pi->pubpi.radiorev == 7)
16372 			    || (pi->pubpi.radiorev == 8)) {
16373 
16374 				rccal_bcap_val =
16375 					read_radio_reg(
16376 						pi,
16377 						RADIO_2057_RCCAL_BCAP_VAL);
16378 				rccal_scap_val =
16379 					read_radio_reg(
16380 						pi,
16381 						RADIO_2057_RCCAL_SCAP_VAL);
16382 
16383 				rccal_tx20_11b_bcap = rccal_bcap_val;
16384 				rccal_tx20_11b_scap = rccal_scap_val;
16385 
16386 				if ((pi->pubpi.radiorev == 5) &&
16387 				    (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
16388 
16389 					rccal_tx20_11n_bcap = rccal_bcap_val;
16390 					rccal_tx20_11n_scap = rccal_scap_val;
16391 					rccal_tx40_11n_bcap = 0xc;
16392 					rccal_tx40_11n_scap = 0xc;
16393 
16394 					rccal_ovrd = true;
16395 
16396 				} else if ((pi->pubpi.radiorev == 7)
16397 					   || (pi->pubpi.radiorev == 8)) {
16398 
16399 					tx_lpf_bw_ofdm_20mhz = 4;
16400 					tx_lpf_bw_11b = 1;
16401 
16402 					if (CHSPEC_IS2G(pi->radio_chanspec)) {
16403 						rccal_tx20_11n_bcap = 0xc;
16404 						rccal_tx20_11n_scap = 0xc;
16405 						rccal_tx40_11n_bcap = 0xa;
16406 						rccal_tx40_11n_scap = 0xa;
16407 					} else {
16408 						rccal_tx20_11n_bcap = 0x14;
16409 						rccal_tx20_11n_scap = 0x14;
16410 						rccal_tx40_11n_bcap = 0xf;
16411 						rccal_tx40_11n_scap = 0xf;
16412 					}
16413 
16414 					rccal_ovrd = true;
16415 				}
16416 			}
16417 
16418 		} else {
16419 
16420 			if (pi->pubpi.radiorev == 5) {
16421 
16422 				tx_lpf_bw_ofdm_20mhz = 1;
16423 				tx_lpf_bw_ofdm_40mhz = 3;
16424 
16425 				rccal_bcap_val =
16426 					read_radio_reg(
16427 						pi,
16428 						RADIO_2057_RCCAL_BCAP_VAL);
16429 				rccal_scap_val =
16430 					read_radio_reg(
16431 						pi,
16432 						RADIO_2057_RCCAL_SCAP_VAL);
16433 
16434 				rccal_tx20_11b_bcap = rccal_bcap_val;
16435 				rccal_tx20_11b_scap = rccal_scap_val;
16436 
16437 				rccal_tx20_11n_bcap = 0x13;
16438 				rccal_tx20_11n_scap = 0x11;
16439 				rccal_tx40_11n_bcap = 0x13;
16440 				rccal_tx40_11n_scap = 0x11;
16441 
16442 				rccal_ovrd = true;
16443 			}
16444 		}
16445 
16446 		if (rccal_ovrd) {
16447 
16448 			rx2tx_lpf_rc_lut_tx20_11b =
16449 				(rccal_tx20_11b_bcap << 8) |
16450 				(rccal_tx20_11b_scap << 3) |
16451 				tx_lpf_bw_11b;
16452 			rx2tx_lpf_rc_lut_tx20_11n =
16453 				(rccal_tx20_11n_bcap << 8) |
16454 				(rccal_tx20_11n_scap << 3) |
16455 				tx_lpf_bw_ofdm_20mhz;
16456 			rx2tx_lpf_rc_lut_tx40_11n =
16457 				(rccal_tx40_11n_bcap << 8) |
16458 				(rccal_tx40_11n_scap << 3) |
16459 				tx_lpf_bw_ofdm_40mhz;
16460 
16461 			for (coreNum = 0; coreNum <= 1; coreNum++) {
16462 				wlc_phy_table_write_nphy(
16463 					pi, NPHY_TBL_ID_RFSEQ,
16464 					1,
16465 					0x152 + coreNum * 0x10,
16466 					16,
16467 					&rx2tx_lpf_rc_lut_tx20_11b);
16468 				wlc_phy_table_write_nphy(
16469 					pi, NPHY_TBL_ID_RFSEQ,
16470 					1,
16471 					0x153 + coreNum * 0x10,
16472 					16,
16473 					&rx2tx_lpf_rc_lut_tx20_11n);
16474 				wlc_phy_table_write_nphy(
16475 					pi, NPHY_TBL_ID_RFSEQ,
16476 					1,
16477 					0x154 + coreNum * 0x10,
16478 					16,
16479 					&rx2tx_lpf_rc_lut_tx20_11n);
16480 				wlc_phy_table_write_nphy(
16481 					pi, NPHY_TBL_ID_RFSEQ,
16482 					1,
16483 					0x155 + coreNum * 0x10,
16484 					16,
16485 					&rx2tx_lpf_rc_lut_tx40_11n);
16486 				wlc_phy_table_write_nphy(
16487 					pi, NPHY_TBL_ID_RFSEQ,
16488 					1,
16489 					0x156 + coreNum * 0x10,
16490 					16,
16491 					&rx2tx_lpf_rc_lut_tx40_11n);
16492 				wlc_phy_table_write_nphy(
16493 					pi, NPHY_TBL_ID_RFSEQ,
16494 					1,
16495 					0x157 + coreNum * 0x10,
16496 					16,
16497 					&rx2tx_lpf_rc_lut_tx40_11n);
16498 				wlc_phy_table_write_nphy(
16499 					pi, NPHY_TBL_ID_RFSEQ,
16500 					1,
16501 					0x158 + coreNum * 0x10,
16502 					16,
16503 					&rx2tx_lpf_rc_lut_tx40_11n);
16504 				wlc_phy_table_write_nphy(
16505 					pi, NPHY_TBL_ID_RFSEQ,
16506 					1,
16507 					0x159 + coreNum * 0x10,
16508 					16,
16509 					&rx2tx_lpf_rc_lut_tx40_11n);
16510 			}
16511 
16512 			wlc_phy_rfctrl_override_nphy_rev7(
16513 				pi, (0x1 << 4),
16514 				1, 0x3, 0,
16515 				NPHY_REV7_RFCTRLOVERRIDE_ID2);
16516 		}
16517 
16518 		write_phy_reg(pi, 0x32f, 0x3);
16519 
16520 		if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
16521 			wlc_phy_rfctrl_override_nphy_rev7(
16522 				pi, (0x1 << 2),
16523 				1, 0x3, 0,
16524 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
16525 
16526 		if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
16527 		    (pi->pubpi.radiorev == 6)) {
16528 			if ((pi->sh->sromrev >= 8)
16529 			    && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
16530 				ipalvlshift_3p3_war_en = 1;
16531 
16532 			if (ipalvlshift_3p3_war_en) {
16533 				write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG,
16534 						0x5);
16535 				write_radio_reg(pi, RADIO_2057_GPAIO_SEL1,
16536 						0x30);
16537 				write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
16538 				or_radio_reg(pi,
16539 					     RADIO_2057_RXTXBIAS_CONFIG_CORE0,
16540 					     0x1);
16541 				or_radio_reg(pi,
16542 					     RADIO_2057_RXTXBIAS_CONFIG_CORE1,
16543 					     0x1);
16544 
16545 				ipa2g_mainbias = 0x1f;
16546 
16547 				ipa2g_casconv = 0x6f;
16548 
16549 				ipa2g_biasfilt = 0xaa;
16550 			} else {
16551 
16552 				ipa2g_mainbias = 0x2b;
16553 
16554 				ipa2g_casconv = 0x7f;
16555 
16556 				ipa2g_biasfilt = 0xee;
16557 			}
16558 
16559 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
16560 				for (coreNum = 0; coreNum <= 1; coreNum++) {
16561 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16562 							 coreNum, IPA2G_IMAIN,
16563 							 ipa2g_mainbias);
16564 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16565 							 coreNum, IPA2G_CASCONV,
16566 							 ipa2g_casconv);
16567 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16568 							 coreNum,
16569 							 IPA2G_BIAS_FILTER,
16570 							 ipa2g_biasfilt);
16571 				}
16572 			}
16573 		}
16574 
16575 		if (PHY_IPA(pi)) {
16576 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
16577 				if ((pi->pubpi.radiorev == 3)
16578 				    || (pi->pubpi.radiorev == 4)
16579 				    || (pi->pubpi.radiorev == 6))
16580 					txgm_idac_bleed = 0x7f;
16581 
16582 				for (coreNum = 0; coreNum <= 1; coreNum++) {
16583 					if (txgm_idac_bleed != 0)
16584 						WRITE_RADIO_REG4(
16585 							pi, RADIO_2057,
16586 							CORE, coreNum,
16587 							TXGM_IDAC_BLEED,
16588 							txgm_idac_bleed);
16589 				}
16590 
16591 				if (pi->pubpi.radiorev == 5) {
16592 
16593 					for (coreNum = 0; coreNum <= 1;
16594 					     coreNum++) {
16595 						WRITE_RADIO_REG4(pi, RADIO_2057,
16596 								 CORE, coreNum,
16597 								 IPA2G_CASCONV,
16598 								 0x13);
16599 						WRITE_RADIO_REG4(pi, RADIO_2057,
16600 								 CORE, coreNum,
16601 								 IPA2G_IMAIN,
16602 								 0x1f);
16603 						WRITE_RADIO_REG4(
16604 							pi, RADIO_2057,
16605 							CORE, coreNum,
16606 							IPA2G_BIAS_FILTER,
16607 							0xee);
16608 						WRITE_RADIO_REG4(pi, RADIO_2057,
16609 								 CORE, coreNum,
16610 								 PAD2G_IDACS,
16611 								 0x8a);
16612 						WRITE_RADIO_REG4(
16613 							pi, RADIO_2057,
16614 							CORE, coreNum,
16615 							PAD_BIAS_FILTER_BWS,
16616 							0x3e);
16617 					}
16618 
16619 				} else if ((pi->pubpi.radiorev == 7)
16620 					   || (pi->pubpi.radiorev == 8)) {
16621 
16622 					if (CHSPEC_IS40(pi->radio_chanspec) ==
16623 					    0) {
16624 						WRITE_RADIO_REG4(pi, RADIO_2057,
16625 								 CORE, 0,
16626 								 IPA2G_IMAIN,
16627 								 0x14);
16628 						WRITE_RADIO_REG4(pi, RADIO_2057,
16629 								 CORE, 1,
16630 								 IPA2G_IMAIN,
16631 								 0x12);
16632 					} else {
16633 						WRITE_RADIO_REG4(pi, RADIO_2057,
16634 								 CORE, 0,
16635 								 IPA2G_IMAIN,
16636 								 0x16);
16637 						WRITE_RADIO_REG4(pi, RADIO_2057,
16638 								 CORE, 1,
16639 								 IPA2G_IMAIN,
16640 								 0x16);
16641 					}
16642 				}
16643 
16644 			} else {
16645 				freq = CHAN5G_FREQ(CHSPEC_CHANNEL(
16646 							pi->radio_chanspec));
16647 				if (((freq >= 5180) && (freq <= 5230))
16648 				    || ((freq >= 5745) && (freq <= 5805))) {
16649 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16650 							 0, IPA5G_BIAS_FILTER,
16651 							 0xff);
16652 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16653 							 1, IPA5G_BIAS_FILTER,
16654 							 0xff);
16655 				}
16656 			}
16657 		} else {
16658 
16659 			if (pi->pubpi.radiorev != 5) {
16660 				for (coreNum = 0; coreNum <= 1; coreNum++) {
16661 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16662 							 coreNum,
16663 							 TXMIX2G_TUNE_BOOST_PU,
16664 							 0x61);
16665 					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16666 							 coreNum,
16667 							 TXGM_IDAC_BLEED, 0x70);
16668 				}
16669 			}
16670 		}
16671 
16672 		if (pi->pubpi.radiorev == 4) {
16673 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16674 						 0x05, 16,
16675 						 &afectrl_adc_ctrl1_rev7);
16676 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16677 						 0x15, 16,
16678 						 &afectrl_adc_ctrl1_rev7);
16679 
16680 			for (coreNum = 0; coreNum <= 1; coreNum++) {
16681 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16682 						 AFE_VCM_CAL_MASTER, 0x0);
16683 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16684 						 AFE_SET_VCM_I, 0x3f);
16685 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16686 						 AFE_SET_VCM_Q, 0x3f);
16687 			}
16688 		} else {
16689 			mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
16690 			mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
16691 			mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
16692 			mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
16693 
16694 			mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
16695 			mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
16696 			mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
16697 			mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
16698 
16699 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16700 						 0x05, 16,
16701 						 &afectrl_adc_ctrl2_rev7);
16702 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16703 						 0x15, 16,
16704 						 &afectrl_adc_ctrl2_rev7);
16705 
16706 			mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
16707 			mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
16708 			mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
16709 			mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
16710 		}
16711 
16712 		write_phy_reg(pi, 0x6a, 0x2);
16713 
16714 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
16715 					 &min_nvar_offset_6mbps);
16716 
16717 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
16718 					 &rfseq_pktgn_lpf_hpc_rev7);
16719 
16720 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
16721 					 &rfseq_pktgn_lpf_h_hpc_rev7);
16722 
16723 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
16724 					 &rfseq_htpktgn_lpf_hpc_rev7);
16725 
16726 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
16727 					 &rfseq_cckpktgn_lpf_hpc_rev7);
16728 
16729 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
16730 					 &rfseq_tx2rx_lpf_h_hpc_rev7);
16731 
16732 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
16733 					 &rfseq_rx2tx_lpf_h_hpc_rev7);
16734 
16735 		if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16736 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16737 						 32, &min_nvar_val);
16738 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16739 						 127, 32, &min_nvar_val);
16740 		} else {
16741 			min_nvar_val = noise_var_tbl_rev7[3];
16742 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16743 						 32, &min_nvar_val);
16744 
16745 			min_nvar_val = noise_var_tbl_rev7[127];
16746 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16747 						 127, 32, &min_nvar_val);
16748 		}
16749 
16750 		wlc_phy_workarounds_nphy_gainctrl(pi);
16751 
16752 		pdetrange =
16753 			(CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16754 			pdetrange : pi->srom_fem2g.pdetrange;
16755 
16756 		if (pdetrange == 0) {
16757 			chan_freq_range =
16758 				wlc_phy_get_chan_freq_range_nphy(pi, 0);
16759 			if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16760 				aux_adc_vmid_rev7_core0[3] = 0x70;
16761 				aux_adc_vmid_rev7_core1[3] = 0x70;
16762 				aux_adc_gain_rev7[3] = 2;
16763 			} else {
16764 				aux_adc_vmid_rev7_core0[3] = 0x80;
16765 				aux_adc_vmid_rev7_core1[3] = 0x80;
16766 				aux_adc_gain_rev7[3] = 3;
16767 			}
16768 		} else if (pdetrange == 1) {
16769 			if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16770 				aux_adc_vmid_rev7_core0[3] = 0x7c;
16771 				aux_adc_vmid_rev7_core1[3] = 0x7c;
16772 				aux_adc_gain_rev7[3] = 2;
16773 			} else {
16774 				aux_adc_vmid_rev7_core0[3] = 0x8c;
16775 				aux_adc_vmid_rev7_core1[3] = 0x8c;
16776 				aux_adc_gain_rev7[3] = 1;
16777 			}
16778 		} else if (pdetrange == 2) {
16779 			if (pi->pubpi.radioid == BCM2057_ID) {
16780 				if ((pi->pubpi.radiorev == 5)
16781 				    || (pi->pubpi.radiorev == 7)
16782 				    || (pi->pubpi.radiorev == 8)) {
16783 					if (chan_freq_range ==
16784 					    WL_CHAN_FREQ_RANGE_2G) {
16785 						aux_adc_vmid_rev7_core0[3] =
16786 							0x8c;
16787 						aux_adc_vmid_rev7_core1[3] =
16788 							0x8c;
16789 						aux_adc_gain_rev7[3] = 0;
16790 					} else {
16791 						aux_adc_vmid_rev7_core0[3] =
16792 							0x96;
16793 						aux_adc_vmid_rev7_core1[3] =
16794 							0x96;
16795 						aux_adc_gain_rev7[3] = 0;
16796 					}
16797 				}
16798 			}
16799 
16800 		} else if (pdetrange == 3) {
16801 			if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
16802 				aux_adc_vmid_rev7_core0[3] = 0x89;
16803 				aux_adc_vmid_rev7_core1[3] = 0x89;
16804 				aux_adc_gain_rev7[3] = 0;
16805 			}
16806 
16807 		} else if (pdetrange == 5) {
16808 
16809 			if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16810 				aux_adc_vmid_rev7_core0[3] = 0x80;
16811 				aux_adc_vmid_rev7_core1[3] = 0x80;
16812 				aux_adc_gain_rev7[3] = 3;
16813 			} else {
16814 				aux_adc_vmid_rev7_core0[3] = 0x70;
16815 				aux_adc_vmid_rev7_core1[3] = 0x70;
16816 				aux_adc_gain_rev7[3] = 2;
16817 			}
16818 		}
16819 
16820 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
16821 					 &aux_adc_vmid_rev7_core0);
16822 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
16823 					 &aux_adc_vmid_rev7_core1);
16824 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
16825 					 &aux_adc_gain_rev7);
16826 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
16827 					 &aux_adc_gain_rev7);
16828 
16829 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
16830 
16831 		write_phy_reg(pi, 0x23f, 0x1f8);
16832 		write_phy_reg(pi, 0x240, 0x1f8);
16833 
16834 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16835 					1, 0, 32, &leg_data_weights);
16836 		leg_data_weights = leg_data_weights & 0xffffff;
16837 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16838 					 1, 0, 32, &leg_data_weights);
16839 
16840 		alpha0 = 293;
16841 		alpha1 = 435;
16842 		alpha2 = 261;
16843 		beta0 = 366;
16844 		beta1 = 205;
16845 		beta2 = 32;
16846 		write_phy_reg(pi, 0x145, alpha0);
16847 		write_phy_reg(pi, 0x146, alpha1);
16848 		write_phy_reg(pi, 0x147, alpha2);
16849 		write_phy_reg(pi, 0x148, beta0);
16850 		write_phy_reg(pi, 0x149, beta1);
16851 		write_phy_reg(pi, 0x14a, beta2);
16852 
16853 		write_phy_reg(pi, 0x38, 0xC);
16854 		write_phy_reg(pi, 0x2ae, 0xC);
16855 
16856 		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
16857 				       rfseq_tx2rx_events_rev3,
16858 				       rfseq_tx2rx_dlys_rev3,
16859 				       sizeof(rfseq_tx2rx_events_rev3) /
16860 				       sizeof(rfseq_tx2rx_events_rev3[0]));
16861 
16862 		if (PHY_IPA(pi))
16863 			wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16864 					       rfseq_rx2tx_events_rev3_ipa,
16865 					       rfseq_rx2tx_dlys_rev3_ipa,
16866 					       sizeof
16867 					       (rfseq_rx2tx_events_rev3_ipa) /
16868 					       sizeof
16869 					       (rfseq_rx2tx_events_rev3_ipa
16870 						[0]));
16871 
16872 		if ((pi->sh->hw_phyrxchain != 0x3) &&
16873 		    (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
16874 
16875 			if (PHY_IPA(pi)) {
16876 				rfseq_rx2tx_dlys_rev3[5] = 59;
16877 				rfseq_rx2tx_dlys_rev3[6] = 1;
16878 				rfseq_rx2tx_events_rev3[7] =
16879 					NPHY_REV3_RFSEQ_CMD_END;
16880 			}
16881 
16882 			wlc_phy_set_rfseq_nphy(
16883 				pi, NPHY_RFSEQ_RX2TX,
16884 				rfseq_rx2tx_events_rev3,
16885 				rfseq_rx2tx_dlys_rev3,
16886 				sizeof(rfseq_rx2tx_events_rev3)	/
16887 				sizeof(rfseq_rx2tx_events_rev3[0]));
16888 		}
16889 
16890 		if (CHSPEC_IS2G(pi->radio_chanspec))
16891 			write_phy_reg(pi, 0x6a, 0x2);
16892 		else
16893 			write_phy_reg(pi, 0x6a, 0x9c40);
16894 
16895 		mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
16896 
16897 		if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16898 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16899 						 32, &min_nvar_val);
16900 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16901 						 127, 32, &min_nvar_val);
16902 		} else {
16903 			min_nvar_val = noise_var_tbl_rev3[3];
16904 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16905 						 32, &min_nvar_val);
16906 
16907 			min_nvar_val = noise_var_tbl_rev3[127];
16908 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16909 						 127, 32, &min_nvar_val);
16910 		}
16911 
16912 		wlc_phy_workarounds_nphy_gainctrl(pi);
16913 
16914 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16915 					 &dac_control);
16916 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16917 					 &dac_control);
16918 
16919 		pdetrange =
16920 			(CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16921 			pdetrange : pi->srom_fem2g.pdetrange;
16922 
16923 		if (pdetrange == 0) {
16924 			if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16925 				aux_adc_vmid = aux_adc_vmid_rev4;
16926 				aux_adc_gain = aux_adc_gain_rev4;
16927 			} else {
16928 				aux_adc_vmid = aux_adc_vmid_rev3;
16929 				aux_adc_gain = aux_adc_gain_rev3;
16930 			}
16931 			chan_freq_range =
16932 				wlc_phy_get_chan_freq_range_nphy(pi, 0);
16933 			if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16934 				switch (chan_freq_range) {
16935 				case WL_CHAN_FREQ_RANGE_5GL:
16936 					aux_adc_vmid[3] = 0x89;
16937 					aux_adc_gain[3] = 0;
16938 					break;
16939 				case WL_CHAN_FREQ_RANGE_5GM:
16940 					aux_adc_vmid[3] = 0x89;
16941 					aux_adc_gain[3] = 0;
16942 					break;
16943 				case WL_CHAN_FREQ_RANGE_5GH:
16944 					aux_adc_vmid[3] = 0x89;
16945 					aux_adc_gain[3] = 0;
16946 					break;
16947 				default:
16948 					break;
16949 				}
16950 			}
16951 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16952 						 0x08, 16, aux_adc_vmid);
16953 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16954 						 0x18, 16, aux_adc_vmid);
16955 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16956 						 0x0c, 16, aux_adc_gain);
16957 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16958 						 0x1c, 16, aux_adc_gain);
16959 		} else if (pdetrange == 1) {
16960 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16961 						 0x08, 16, sk_adc_vmid);
16962 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16963 						 0x18, 16, sk_adc_vmid);
16964 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16965 						 0x0c, 16, sk_adc_gain);
16966 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16967 						 0x1c, 16, sk_adc_gain);
16968 		} else if (pdetrange == 2) {
16969 
16970 			u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16971 			u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16972 
16973 			if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16974 				chan_freq_range =
16975 					wlc_phy_get_chan_freq_range_nphy(pi, 0);
16976 				if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16977 					bcm_adc_vmid[3] = 0x8e;
16978 					bcm_adc_gain[3] = 0x03;
16979 				} else {
16980 					bcm_adc_vmid[3] = 0x94;
16981 					bcm_adc_gain[3] = 0x03;
16982 				}
16983 			} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16984 				bcm_adc_vmid[3] = 0x84;
16985 				bcm_adc_gain[3] = 0x02;
16986 			}
16987 
16988 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16989 						 0x08, 16, bcm_adc_vmid);
16990 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16991 						 0x18, 16, bcm_adc_vmid);
16992 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16993 						 0x0c, 16, bcm_adc_gain);
16994 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16995 						 0x1c, 16, bcm_adc_gain);
16996 		} else if (pdetrange == 3) {
16997 			chan_freq_range =
16998 				wlc_phy_get_chan_freq_range_nphy(pi, 0);
16999 			if ((NREV_GE(pi->pubpi.phy_rev, 4))
17000 			    && (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
17001 
17002 				u16 auxadc_vmid[] = {
17003 					0xa2, 0xb4, 0xb4, 0x270
17004 				};
17005 				u16 auxadc_gain[] = {
17006 					0x02, 0x02, 0x02, 0x00
17007 				};
17008 
17009 				wlc_phy_table_write_nphy(pi,
17010 							 NPHY_TBL_ID_AFECTRL, 4,
17011 							 0x08, 16, auxadc_vmid);
17012 				wlc_phy_table_write_nphy(pi,
17013 							 NPHY_TBL_ID_AFECTRL, 4,
17014 							 0x18, 16, auxadc_vmid);
17015 				wlc_phy_table_write_nphy(pi,
17016 							 NPHY_TBL_ID_AFECTRL, 4,
17017 							 0x0c, 16, auxadc_gain);
17018 				wlc_phy_table_write_nphy(pi,
17019 							 NPHY_TBL_ID_AFECTRL, 4,
17020 							 0x1c, 16, auxadc_gain);
17021 			}
17022 		} else if ((pdetrange == 4) || (pdetrange == 5)) {
17023 			u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
17024 			u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
17025 			u16 Vmid[2], Av[2];
17026 
17027 			chan_freq_range =
17028 				wlc_phy_get_chan_freq_range_nphy(pi, 0);
17029 			if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
17030 				Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
17031 				Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
17032 				Av[0] = (pdetrange == 4) ? 2 : 0;
17033 				Av[1] = (pdetrange == 4) ? 2 : 0;
17034 			} else {
17035 				Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
17036 				Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
17037 				Av[0] = (pdetrange == 4) ? 2 : 0;
17038 				Av[1] = (pdetrange == 4) ? 2 : 0;
17039 			}
17040 
17041 			bcm_adc_vmid[3] = Vmid[0];
17042 			bcm_adc_gain[3] = Av[0];
17043 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17044 						 0x08, 16, bcm_adc_vmid);
17045 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17046 						 0x0c, 16, bcm_adc_gain);
17047 
17048 			bcm_adc_vmid[3] = Vmid[1];
17049 			bcm_adc_gain[3] = Av[1];
17050 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17051 						 0x18, 16, bcm_adc_vmid);
17052 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17053 						 0x1c, 16, bcm_adc_gain);
17054 		}
17055 
17056 		write_radio_reg(pi,
17057 				(RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0),
17058 				0x0);
17059 		write_radio_reg(pi,
17060 				(RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1),
17061 				0x0);
17062 
17063 		write_radio_reg(pi,
17064 				(RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0),
17065 				0x6);
17066 		write_radio_reg(pi,
17067 				(RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1),
17068 				0x6);
17069 
17070 		write_radio_reg(pi,
17071 				(RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0),
17072 				0x7);
17073 		write_radio_reg(pi,
17074 				(RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1),
17075 				0x7);
17076 
17077 		write_radio_reg(pi,
17078 				(RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0),
17079 				0x88);
17080 		write_radio_reg(pi,
17081 				(RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1),
17082 				0x88);
17083 
17084 		write_radio_reg(pi,
17085 				(RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0),
17086 				0x0);
17087 		write_radio_reg(pi,
17088 				(RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1),
17089 				0x0);
17090 
17091 		write_radio_reg(pi,
17092 				(RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0),
17093 				0x0);
17094 		write_radio_reg(pi,
17095 				(RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1),
17096 				0x0);
17097 
17098 		triso =
17099 			(CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
17100 			triso : pi->srom_fem2g.triso;
17101 		if (triso == 7) {
17102 			wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
17103 			wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
17104 		}
17105 
17106 		wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
17107 
17108 		if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
17109 		     (CHSPEC_IS5G(pi->radio_chanspec))) ||
17110 		    (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
17111 		      (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
17112 		     (CHSPEC_IS2G(pi->radio_chanspec)))) {
17113 			nss1_data_weights = 0x00088888;
17114 			ht_data_weights = 0x00088888;
17115 			stbc_data_weights = 0x00088888;
17116 		} else {
17117 			nss1_data_weights = 0x88888888;
17118 			ht_data_weights = 0x88888888;
17119 			stbc_data_weights = 0x88888888;
17120 		}
17121 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17122 					 1, 1, 32, &nss1_data_weights);
17123 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17124 					 1, 2, 32, &ht_data_weights);
17125 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17126 					 1, 3, 32, &stbc_data_weights);
17127 
17128 		if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17129 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
17130 				write_radio_reg(pi,
17131 						RADIO_2056_TX_GMBB_IDAC |
17132 						RADIO_2056_TX0, 0x70);
17133 				write_radio_reg(pi,
17134 						RADIO_2056_TX_GMBB_IDAC |
17135 						RADIO_2056_TX1, 0x70);
17136 			}
17137 		}
17138 
17139 		if (!pi->edcrs_threshold_lock) {
17140 			write_phy_reg(pi, 0x224, 0x3eb);
17141 			write_phy_reg(pi, 0x225, 0x3eb);
17142 			write_phy_reg(pi, 0x226, 0x341);
17143 			write_phy_reg(pi, 0x227, 0x341);
17144 			write_phy_reg(pi, 0x228, 0x42b);
17145 			write_phy_reg(pi, 0x229, 0x42b);
17146 			write_phy_reg(pi, 0x22a, 0x381);
17147 			write_phy_reg(pi, 0x22b, 0x381);
17148 			write_phy_reg(pi, 0x22c, 0x42b);
17149 			write_phy_reg(pi, 0x22d, 0x42b);
17150 			write_phy_reg(pi, 0x22e, 0x381);
17151 			write_phy_reg(pi, 0x22f, 0x381);
17152 		}
17153 
17154 		if (NREV_GE(pi->pubpi.phy_rev, 6)) {
17155 
17156 			if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)
17157 				wlapi_bmac_mhf(pi->sh->physhim, MHF4,
17158 					      MHF4_BPHY_TXCORE0,
17159 					      MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);
17160 		}
17161 	} else {
17162 
17163 		if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
17164 		    (pi->sh->boardtype == 0x8b)) {
17165 			uint i;
17166 			u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
17167 			for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
17168 				rfseq_rx2tx_dlys[i] = war_dlys[i];
17169 		}
17170 
17171 		if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
17172 			and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
17173 			and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
17174 		} else {
17175 			or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
17176 			or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
17177 		}
17178 
17179 		regval = 0x000a;
17180 		wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
17181 		wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
17182 
17183 		if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17184 			regval = 0xcdaa;
17185 			wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
17186 			wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
17187 		}
17188 
17189 		if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17190 			regval = 0x0000;
17191 			wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
17192 			wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
17193 
17194 			regval = 0x7aab;
17195 			wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
17196 			wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
17197 
17198 			regval = 0x0800;
17199 			wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
17200 			wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
17201 		}
17202 
17203 		write_phy_reg(pi, 0xf8, 0x02d8);
17204 		write_phy_reg(pi, 0xf9, 0x0301);
17205 		write_phy_reg(pi, 0xfa, 0x02d8);
17206 		write_phy_reg(pi, 0xfb, 0x0301);
17207 
17208 		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
17209 				       rfseq_rx2tx_dlys,
17210 				       sizeof(rfseq_rx2tx_events) /
17211 				       sizeof(rfseq_rx2tx_events[0]));
17212 
17213 		wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
17214 				       rfseq_tx2rx_dlys,
17215 				       sizeof(rfseq_tx2rx_events) /
17216 				       sizeof(rfseq_tx2rx_events[0]));
17217 
17218 		wlc_phy_workarounds_nphy_gainctrl(pi);
17219 
17220 		if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17221 
17222 			if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
17223 				wlapi_bmac_mhf(pi->sh->physhim, MHF3,
17224 					       MHF3_NPHY_MLADV_WAR,
17225 					       MHF3_NPHY_MLADV_WAR,
17226 					       BRCM_BAND_ALL);
17227 
17228 		} else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
17229 			write_phy_reg(pi, 0x1e3, 0x0);
17230 			write_phy_reg(pi, 0x1e4, 0x0);
17231 		}
17232 
17233 		if (NREV_LT(pi->pubpi.phy_rev, 2))
17234 			mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
17235 
17236 		alpha0 = 293;
17237 		alpha1 = 435;
17238 		alpha2 = 261;
17239 		beta0 = 366;
17240 		beta1 = 205;
17241 		beta2 = 32;
17242 		write_phy_reg(pi, 0x145, alpha0);
17243 		write_phy_reg(pi, 0x146, alpha1);
17244 		write_phy_reg(pi, 0x147, alpha2);
17245 		write_phy_reg(pi, 0x148, beta0);
17246 		write_phy_reg(pi, 0x149, beta1);
17247 		write_phy_reg(pi, 0x14a, beta2);
17248 
17249 		if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17250 			mod_phy_reg(pi, 0x142, (0xf << 12), 0);
17251 
17252 			write_phy_reg(pi, 0x192, 0xb5);
17253 			write_phy_reg(pi, 0x193, 0xa4);
17254 			write_phy_reg(pi, 0x194, 0x0);
17255 		}
17256 
17257 		if (NREV_IS(pi->pubpi.phy_rev, 2))
17258 			mod_phy_reg(pi, 0x221,
17259 				    NPHY_FORCESIG_DECODEGATEDCLKS,
17260 				    NPHY_FORCESIG_DECODEGATEDCLKS);
17261 	}
17262 
17263 	if (pi->phyhang_avoid)
17264 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
17265 }
17266 
wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy * pi)17267 static void wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
17268 {
17269 	int j, type = 2;
17270 	u16 addr_offset = 0x2c5;
17271 
17272 	for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
17273 		write_phy_reg(pi, addr_offset + j,
17274 			      NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
17275 }
17276 
wlc_phy_clip_det_nphy(struct brcms_phy * pi,u8 write,u16 * vals)17277 static void wlc_phy_clip_det_nphy(struct brcms_phy *pi, u8 write, u16 *vals)
17278 {
17279 
17280 	if (write == 0) {
17281 		vals[0] = read_phy_reg(pi, 0x2c);
17282 		vals[1] = read_phy_reg(pi, 0x42);
17283 	} else {
17284 		write_phy_reg(pi, 0x2c, vals[0]);
17285 		write_phy_reg(pi, 0x42, vals[1]);
17286 	}
17287 }
17288 
wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy * pi)17289 static void wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy *pi)
17290 {
17291 	u8 core;
17292 
17293 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17294 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17295 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
17296 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17297 						 TX_SSI_MASTER, 0x5);
17298 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17299 						 TX_SSI_MUX, 0xe);
17300 
17301 				if (pi->pubpi.radiorev != 5)
17302 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17303 							 core, TSSIA, 0);
17304 
17305 				if (!NREV_IS(pi->pubpi.phy_rev, 7))
17306 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17307 							 core, TSSIG, 0x1);
17308 				else
17309 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17310 							 core, TSSIG, 0x31);
17311 			} else {
17312 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17313 						 TX_SSI_MASTER, 0x9);
17314 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17315 						 TX_SSI_MUX, 0xc);
17316 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17317 						 TSSIG, 0);
17318 
17319 				if (pi->pubpi.radiorev != 5) {
17320 					if (!NREV_IS(pi->pubpi.phy_rev, 7))
17321 						WRITE_RADIO_REG3(pi, RADIO_2057,
17322 								 TX, core,
17323 								 TSSIA, 0x1);
17324 					else
17325 						WRITE_RADIO_REG3(pi, RADIO_2057,
17326 								 TX, core,
17327 								 TSSIA, 0x31);
17328 				}
17329 			}
17330 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
17331 					 0);
17332 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
17333 					 0);
17334 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
17335 					 0x3);
17336 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
17337 					 0x0);
17338 		}
17339 	} else {
17340 		WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
17341 				(CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
17342 				0x80);
17343 		WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
17344 		WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
17345 
17346 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17347 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
17348 					 0x0);
17349 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
17350 					 0x0);
17351 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
17352 					 0x3);
17353 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
17354 					 0x0);
17355 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
17356 					 0x8);
17357 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
17358 					 0x0);
17359 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
17360 					 0x0);
17361 
17362 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
17363 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17364 						 TX_SSI_MASTER, 0x5);
17365 
17366 				if (pi->pubpi.radiorev != 5)
17367 					WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17368 							 core, TSSIA, 0x0);
17369 				if (NREV_GE(pi->pubpi.phy_rev, 5))
17370 					WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17371 							 core, TSSIG, 0x31);
17372 				else
17373 					WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17374 							 core, TSSIG, 0x11);
17375 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17376 						 TX_SSI_MUX, 0xe);
17377 			} else {
17378 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17379 						 TX_SSI_MASTER, 0x9);
17380 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17381 						 TSSIA, 0x31);
17382 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17383 						 TSSIG, 0x0);
17384 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17385 						 TX_SSI_MUX, 0xc);
17386 			}
17387 		}
17388 	}
17389 }
17390 
17391 static void
wlc_phy_rfctrl_override_nphy(struct brcms_phy * pi,u16 field,u16 value,u8 core_mask,u8 off)17392 wlc_phy_rfctrl_override_nphy(struct brcms_phy *pi, u16 field, u16 value,
17393 			     u8 core_mask, u8 off)
17394 {
17395 	u8 core_num;
17396 	u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
17397 		0, val_mask = 0;
17398 	u8 shift = 0, val_shift = 0;
17399 
17400 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
17401 
17402 		en_mask = field;
17403 		for (core_num = 0; core_num < 2; core_num++) {
17404 
17405 			switch (field) {
17406 			case (0x1 << 1):
17407 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17408 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17409 				val_mask = (0x1 << 0);
17410 				val_shift = 0;
17411 				break;
17412 			case (0x1 << 2):
17413 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17414 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17415 				val_mask = (0x1 << 1);
17416 				val_shift = 1;
17417 				break;
17418 			case (0x1 << 3):
17419 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17420 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17421 				val_mask = (0x1 << 2);
17422 				val_shift = 2;
17423 				break;
17424 			case (0x1 << 4):
17425 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17426 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17427 				val_mask = (0x1 << 4);
17428 				val_shift = 4;
17429 				break;
17430 			case (0x1 << 5):
17431 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17432 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17433 				val_mask = (0x1 << 5);
17434 				val_shift = 5;
17435 				break;
17436 			case (0x1 << 6):
17437 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17438 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17439 				val_mask = (0x1 << 6);
17440 				val_shift = 6;
17441 				break;
17442 			case (0x1 << 7):
17443 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17444 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17445 				val_mask = (0x1 << 7);
17446 				val_shift = 7;
17447 				break;
17448 			case (0x1 << 8):
17449 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17450 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17451 				val_mask = (0x7 << 8);
17452 				val_shift = 8;
17453 				break;
17454 			case (0x1 << 11):
17455 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17456 				val_addr = (core_num == 0) ? 0x7a : 0x7d;
17457 				val_mask = (0x7 << 13);
17458 				val_shift = 13;
17459 				break;
17460 
17461 			case (0x1 << 9):
17462 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17463 				val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17464 				val_mask = (0x7 << 0);
17465 				val_shift = 0;
17466 				break;
17467 
17468 			case (0x1 << 10):
17469 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17470 				val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17471 				val_mask = (0x7 << 4);
17472 				val_shift = 4;
17473 				break;
17474 
17475 			case (0x1 << 12):
17476 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17477 				val_addr = (core_num == 0) ? 0x7b : 0x7e;
17478 				val_mask = (0xffff << 0);
17479 				val_shift = 0;
17480 				break;
17481 			case (0x1 << 13):
17482 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17483 				val_addr = (core_num == 0) ? 0x7c : 0x7f;
17484 				val_mask = (0xffff << 0);
17485 				val_shift = 0;
17486 				break;
17487 			case (0x1 << 14):
17488 				en_addr = (core_num == 0) ? 0xe7 : 0xec;
17489 				val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17490 				val_mask = (0x3 << 6);
17491 				val_shift = 6;
17492 				break;
17493 			case (0x1 << 0):
17494 				en_addr = (core_num == 0) ? 0xe5 : 0xe6;
17495 				val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17496 				val_mask = (0x1 << 15);
17497 				val_shift = 15;
17498 				break;
17499 			default:
17500 				addr = 0xffff;
17501 				break;
17502 			}
17503 
17504 			if (off) {
17505 				and_phy_reg(pi, en_addr, ~en_mask);
17506 				and_phy_reg(pi, val_addr, ~val_mask);
17507 			} else {
17508 
17509 				if ((core_mask == 0)
17510 				    || (core_mask & (1 << core_num))) {
17511 					or_phy_reg(pi, en_addr, en_mask);
17512 
17513 					if (addr != 0xffff)
17514 						mod_phy_reg(pi, val_addr,
17515 							    val_mask,
17516 							    (value <<
17517 							     val_shift));
17518 				}
17519 			}
17520 		}
17521 	} else {
17522 
17523 		if (off) {
17524 			and_phy_reg(pi, 0xec, ~field);
17525 			value = 0x0;
17526 		} else {
17527 			or_phy_reg(pi, 0xec, field);
17528 		}
17529 
17530 		for (core_num = 0; core_num < 2; core_num++) {
17531 
17532 			switch (field) {
17533 			case (0x1 << 1):
17534 			case (0x1 << 9):
17535 			case (0x1 << 12):
17536 			case (0x1 << 13):
17537 			case (0x1 << 14):
17538 				addr = 0x78;
17539 
17540 				core_mask = 0x1;
17541 				break;
17542 			case (0x1 << 2):
17543 			case (0x1 << 3):
17544 			case (0x1 << 4):
17545 			case (0x1 << 5):
17546 			case (0x1 << 6):
17547 			case (0x1 << 7):
17548 			case (0x1 << 8):
17549 				addr = (core_num == 0) ? 0x7a : 0x7d;
17550 				break;
17551 			case (0x1 << 10):
17552 				addr = (core_num == 0) ? 0x7b : 0x7e;
17553 				break;
17554 			case (0x1 << 11):
17555 				addr = (core_num == 0) ? 0x7c : 0x7f;
17556 				break;
17557 			default:
17558 				addr = 0xffff;
17559 			}
17560 
17561 			switch (field) {
17562 			case (0x1 << 1):
17563 				mask = (0x7 << 3);
17564 				shift = 3;
17565 				break;
17566 			case (0x1 << 9):
17567 				mask = (0x1 << 2);
17568 				shift = 2;
17569 				break;
17570 			case (0x1 << 12):
17571 				mask = (0x1 << 8);
17572 				shift = 8;
17573 				break;
17574 			case (0x1 << 13):
17575 				mask = (0x1 << 9);
17576 				shift = 9;
17577 				break;
17578 			case (0x1 << 14):
17579 				mask = (0xf << 12);
17580 				shift = 12;
17581 				break;
17582 			case (0x1 << 2):
17583 				mask = (0x1 << 0);
17584 				shift = 0;
17585 				break;
17586 			case (0x1 << 3):
17587 				mask = (0x1 << 1);
17588 				shift = 1;
17589 				break;
17590 			case (0x1 << 4):
17591 				mask = (0x1 << 2);
17592 				shift = 2;
17593 				break;
17594 			case (0x1 << 5):
17595 				mask = (0x3 << 4);
17596 				shift = 4;
17597 				break;
17598 			case (0x1 << 6):
17599 				mask = (0x3 << 6);
17600 				shift = 6;
17601 				break;
17602 			case (0x1 << 7):
17603 				mask = (0x1 << 8);
17604 				shift = 8;
17605 				break;
17606 			case (0x1 << 8):
17607 				mask = (0x1 << 9);
17608 				shift = 9;
17609 				break;
17610 			case (0x1 << 10):
17611 				mask = 0x1fff;
17612 				shift = 0x0;
17613 				break;
17614 			case (0x1 << 11):
17615 				mask = 0x1fff;
17616 				shift = 0x0;
17617 				break;
17618 			default:
17619 				mask = 0x0;
17620 				shift = 0x0;
17621 				break;
17622 			}
17623 
17624 			if ((addr != 0xffff) && (core_mask & (1 << core_num)))
17625 				mod_phy_reg(pi, addr, mask, (value << shift));
17626 		}
17627 
17628 		or_phy_reg(pi, 0xec, (0x1 << 0));
17629 		or_phy_reg(pi, 0x78, (0x1 << 0));
17630 		udelay(1);
17631 		and_phy_reg(pi, 0xec, ~(0x1 << 0));
17632 	}
17633 }
17634 
wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy * pi)17635 static void wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy *pi)
17636 {
17637 	s32 rssi_buf[4];
17638 	s32 int_val;
17639 
17640 	if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
17641 
17642 		return;
17643 
17644 	if (PHY_IPA(pi))
17645 		wlc_phy_ipa_internal_tssi_setup_nphy(pi);
17646 
17647 	if (NREV_GE(pi->pubpi.phy_rev, 7))
17648 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17649 						  0, 0x3, 0,
17650 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
17651 	else if (NREV_GE(pi->pubpi.phy_rev, 3))
17652 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
17653 
17654 	wlc_phy_stopplayback_nphy(pi);
17655 
17656 	wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
17657 
17658 	udelay(20);
17659 	int_val =
17660 		wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
17661 				       1);
17662 	wlc_phy_stopplayback_nphy(pi);
17663 	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
17664 
17665 	if (NREV_GE(pi->pubpi.phy_rev, 7))
17666 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17667 						  0, 0x3, 1,
17668 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
17669 	else if (NREV_GE(pi->pubpi.phy_rev, 3))
17670 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
17671 
17672 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17673 
17674 		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17675 			(u8) ((int_val >> 24) & 0xff);
17676 		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17677 			(u8) ((int_val >> 24) & 0xff);
17678 
17679 		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17680 			(u8) ((int_val >> 8) & 0xff);
17681 		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17682 			(u8) ((int_val >> 8) & 0xff);
17683 	} else {
17684 		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17685 			(u8) ((int_val >> 24) & 0xff);
17686 
17687 		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17688 			(u8) ((int_val >> 8) & 0xff);
17689 
17690 		pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17691 			(u8) ((int_val >> 16) & 0xff);
17692 		pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17693 			(u8) ((int_val) & 0xff);
17694 	}
17695 
17696 }
17697 
wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy * pi)17698 static void wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy *pi)
17699 {
17700 	u8 idx, idx2, i, delta_ind;
17701 
17702 	for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++)
17703 		pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
17704 
17705 	for (i = 0; i < 4; i++) {
17706 		idx2 = 0;
17707 
17708 		delta_ind = 0;
17709 
17710 		switch (i) {
17711 		case 0:
17712 
17713 			if (CHSPEC_IS40(pi->radio_chanspec)
17714 			    && NPHY_IS_SROM_REINTERPRET) {
17715 				idx = TXP_FIRST_MCS_40_SISO;
17716 			} else {
17717 				idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17718 				      TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
17719 				delta_ind = 1;
17720 			}
17721 			break;
17722 
17723 		case 1:
17724 
17725 			idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17726 			      TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
17727 			break;
17728 
17729 		case 2:
17730 
17731 			idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17732 			      TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
17733 			break;
17734 
17735 		case 3:
17736 
17737 			idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17738 			      TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
17739 			break;
17740 		}
17741 
17742 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17743 			pi->tx_power_offset[idx];
17744 		idx = idx + delta_ind;
17745 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17746 			pi->tx_power_offset[idx];
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 
17752 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17753 			pi->tx_power_offset[idx++];
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 
17761 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17762 			pi->tx_power_offset[idx++];
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 
17770 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17771 			pi->tx_power_offset[idx];
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 		idx = idx + 1 - delta_ind;
17777 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17778 			pi->tx_power_offset[idx];
17779 
17780 		pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17781 			pi->tx_power_offset[idx];
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 	}
17789 }
17790 
wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy * pi)17791 static void wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy *pi)
17792 {
17793 	u32 idx;
17794 	s16 a1[2], b0[2], b1[2];
17795 	s8 target_pwr_qtrdbm[2];
17796 	s32 num, den, pwr_est;
17797 	u8 chan_freq_range;
17798 	u8 idle_tssi[2];
17799 	u32 tbl_id, tbl_len, tbl_offset;
17800 	u32 regval[64];
17801 	u8 core;
17802 
17803 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17804 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17805 		(void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17806 		udelay(1);
17807 	}
17808 
17809 	if (pi->phyhang_avoid)
17810 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
17811 
17812 	or_phy_reg(pi, 0x122, (0x1 << 0));
17813 
17814 	if (NREV_GE(pi->pubpi.phy_rev, 3))
17815 		and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
17816 	else
17817 		or_phy_reg(pi, 0x1e7, (0x1 << 15));
17818 
17819 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17820 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17821 
17822 	if (pi->sh->sromrev < 4) {
17823 		idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17824 		idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17825 		target_pwr_qtrdbm[0] = 13 * 4;
17826 		target_pwr_qtrdbm[1] = 13 * 4;
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 			target_pwr_qtrdbm[0] =
17841 				pi->nphy_pwrctrl_info[0].max_pwr_2g;
17842 			target_pwr_qtrdbm[1] =
17843 				pi->nphy_pwrctrl_info[1].max_pwr_2g;
17844 			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
17845 			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
17846 			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
17847 			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
17848 			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
17849 			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
17850 			break;
17851 		case WL_CHAN_FREQ_RANGE_5GL:
17852 			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17853 			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17854 			target_pwr_qtrdbm[0] =
17855 				pi->nphy_pwrctrl_info[0].max_pwr_5gl;
17856 			target_pwr_qtrdbm[1] =
17857 				pi->nphy_pwrctrl_info[1].max_pwr_5gl;
17858 			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
17859 			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
17860 			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
17861 			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
17862 			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
17863 			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
17864 			break;
17865 		case WL_CHAN_FREQ_RANGE_5GM:
17866 			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17867 			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17868 			target_pwr_qtrdbm[0] =
17869 				pi->nphy_pwrctrl_info[0].max_pwr_5gm;
17870 			target_pwr_qtrdbm[1] =
17871 				pi->nphy_pwrctrl_info[1].max_pwr_5gm;
17872 			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
17873 			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
17874 			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
17875 			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
17876 			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
17877 			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
17878 			break;
17879 		case WL_CHAN_FREQ_RANGE_5GH:
17880 			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17881 			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17882 			target_pwr_qtrdbm[0] =
17883 				pi->nphy_pwrctrl_info[0].max_pwr_5gh;
17884 			target_pwr_qtrdbm[1] =
17885 				pi->nphy_pwrctrl_info[1].max_pwr_5gh;
17886 			a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
17887 			a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
17888 			b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
17889 			b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
17890 			b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
17891 			b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
17892 			break;
17893 		default:
17894 			idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17895 			idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17896 			target_pwr_qtrdbm[0] = 13 * 4;
17897 			target_pwr_qtrdbm[1] = 13 * 4;
17898 			a1[0] = -424;
17899 			a1[1] = -424;
17900 			b0[0] = 5612;
17901 			b0[1] = 5612;
17902 			b1[1] = -1393;
17903 			b1[0] = -1393;
17904 			break;
17905 		}
17906 	}
17907 
17908 	target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
17909 	target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
17910 
17911 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17912 		if (pi->srom_fem2g.tssipos)
17913 			or_phy_reg(pi, 0x1e9, (0x1 << 14));
17914 
17915 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17916 			for (core = 0; core <= 1; core++) {
17917 				if (PHY_IPA(pi)) {
17918 					if (CHSPEC_IS2G(pi->radio_chanspec))
17919 						WRITE_RADIO_REG3(pi, RADIO_2057,
17920 								 TX, core,
17921 								 TX_SSI_MUX,
17922 								 0xe);
17923 					else
17924 						WRITE_RADIO_REG3(pi, RADIO_2057,
17925 								 TX, core,
17926 								 TX_SSI_MUX,
17927 								 0xc);
17928 				}
17929 			}
17930 		} else {
17931 			if (PHY_IPA(pi)) {
17932 
17933 				write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17934 						RADIO_2056_TX0,
17935 						(CHSPEC_IS5G
17936 						 (pi->radio_chanspec)) ?
17937 						 0xc : 0xe);
17938 				write_radio_reg(pi,
17939 						RADIO_2056_TX_TX_SSI_MUX |
17940 						RADIO_2056_TX1,
17941 						(CHSPEC_IS5G
17942 						 (pi->radio_chanspec)) ?
17943 						 0xc : 0xe);
17944 			} else {
17945 
17946 				write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17947 						RADIO_2056_TX0, 0x11);
17948 				write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17949 						RADIO_2056_TX1, 0x11);
17950 			}
17951 		}
17952 	}
17953 
17954 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17955 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17956 		(void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17957 		udelay(1);
17958 	}
17959 
17960 	if (NREV_GE(pi->pubpi.phy_rev, 7))
17961 		mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17962 			    (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17963 	else
17964 		mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17965 			    (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17966 
17967 	if (NREV_GE(pi->pubpi.phy_rev, 7))
17968 		mod_phy_reg(pi, 0x222, (0xff << 0),
17969 			    (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17970 	else if (NREV_GT(pi->pubpi.phy_rev, 1))
17971 		mod_phy_reg(pi, 0x222, (0xff << 0),
17972 			    (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17973 
17974 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17975 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17976 
17977 	write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
17978 
17979 	write_phy_reg(pi, 0x1e9,
17980 		      (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
17981 
17982 	write_phy_reg(pi, 0x1ea,
17983 		      (target_pwr_qtrdbm[0] << 0) |
17984 		      (target_pwr_qtrdbm[1] << 8));
17985 
17986 	tbl_len = 64;
17987 	tbl_offset = 0;
17988 	for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
17989 	     tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
17990 
17991 		for (idx = 0; idx < tbl_len; idx++) {
17992 			num = 8 *
17993 			      (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
17994 			den = 32768 + a1[tbl_id - 26] * idx;
17995 			pwr_est = max(((4 * num + den / 2) / den), -8);
17996 			if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17997 				if (idx <=
17998 				    (uint) (31 - idle_tssi[tbl_id - 26] + 1))
17999 					pwr_est =
18000 						max(pwr_est,
18001 						    target_pwr_qtrdbm
18002 						    [tbl_id - 26] + 1);
18003 			}
18004 			regval[idx] = (u32) pwr_est;
18005 		}
18006 		wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18007 					 regval);
18008 	}
18009 
18010 	wlc_phy_txpwr_limit_to_tbl_nphy(pi);
18011 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
18012 				 pi->adj_pwr_tbl_nphy);
18013 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
18014 				 pi->adj_pwr_tbl_nphy);
18015 
18016 	if (pi->phyhang_avoid)
18017 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
18018 }
18019 
wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy * pi)18020 static u32 *wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy *pi)
18021 {
18022 	u32 *tx_pwrctrl_tbl = NULL;
18023 
18024 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18025 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18026 			if ((pi->pubpi.radiorev == 4)
18027 			    || (pi->pubpi.radiorev == 6))
18028 				tx_pwrctrl_tbl =
18029 					nphy_tpc_txgain_ipa_2g_2057rev4n6;
18030 			else if (pi->pubpi.radiorev == 3)
18031 				tx_pwrctrl_tbl =
18032 					nphy_tpc_txgain_ipa_2g_2057rev3;
18033 			else if (pi->pubpi.radiorev == 5)
18034 				tx_pwrctrl_tbl =
18035 					nphy_tpc_txgain_ipa_2g_2057rev5;
18036 			else if ((pi->pubpi.radiorev == 7)
18037 				 || (pi->pubpi.radiorev == 8))
18038 				tx_pwrctrl_tbl =
18039 					nphy_tpc_txgain_ipa_2g_2057rev7;
18040 		} else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18041 			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
18042 		} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18043 			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
18044 		} else {
18045 			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
18046 		}
18047 	} else {
18048 
18049 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18050 			if ((pi->pubpi.radiorev == 3) ||
18051 			    (pi->pubpi.radiorev == 4) ||
18052 			    (pi->pubpi.radiorev == 6))
18053 				tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
18054 			else if ((pi->pubpi.radiorev == 7)
18055 				 || (pi->pubpi.radiorev == 8))
18056 				tx_pwrctrl_tbl =
18057 					nphy_tpc_txgain_ipa_5g_2057rev7;
18058 		} else {
18059 			tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
18060 		}
18061 	}
18062 
18063 	return tx_pwrctrl_tbl;
18064 }
18065 
wlc_phy_restore_rssical_nphy(struct brcms_phy * pi)18066 static void wlc_phy_restore_rssical_nphy(struct brcms_phy *pi)
18067 {
18068 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18069 		if (pi->nphy_rssical_chanspec_2G == 0)
18070 			return;
18071 
18072 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18073 			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
18074 				      RADIO_2057_VCM_MASK,
18075 				      pi->rssical_cache.
18076 				      rssical_radio_regs_2G[0]);
18077 			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
18078 				      RADIO_2057_VCM_MASK,
18079 				      pi->rssical_cache.
18080 				      rssical_radio_regs_2G[1]);
18081 		} else {
18082 			mod_radio_reg(pi,
18083 				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
18084 				      RADIO_2056_VCM_MASK,
18085 				      pi->rssical_cache.
18086 				      rssical_radio_regs_2G[0]);
18087 			mod_radio_reg(pi,
18088 				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
18089 				      RADIO_2056_VCM_MASK,
18090 				      pi->rssical_cache.
18091 				      rssical_radio_regs_2G[1]);
18092 		}
18093 
18094 		write_phy_reg(pi, 0x1a6,
18095 			      pi->rssical_cache.rssical_phyregs_2G[0]);
18096 		write_phy_reg(pi, 0x1ac,
18097 			      pi->rssical_cache.rssical_phyregs_2G[1]);
18098 		write_phy_reg(pi, 0x1b2,
18099 			      pi->rssical_cache.rssical_phyregs_2G[2]);
18100 		write_phy_reg(pi, 0x1b8,
18101 			      pi->rssical_cache.rssical_phyregs_2G[3]);
18102 		write_phy_reg(pi, 0x1a4,
18103 			      pi->rssical_cache.rssical_phyregs_2G[4]);
18104 		write_phy_reg(pi, 0x1aa,
18105 			      pi->rssical_cache.rssical_phyregs_2G[5]);
18106 		write_phy_reg(pi, 0x1b0,
18107 			      pi->rssical_cache.rssical_phyregs_2G[6]);
18108 		write_phy_reg(pi, 0x1b6,
18109 			      pi->rssical_cache.rssical_phyregs_2G[7]);
18110 		write_phy_reg(pi, 0x1a5,
18111 			      pi->rssical_cache.rssical_phyregs_2G[8]);
18112 		write_phy_reg(pi, 0x1ab,
18113 			      pi->rssical_cache.rssical_phyregs_2G[9]);
18114 		write_phy_reg(pi, 0x1b1,
18115 			      pi->rssical_cache.rssical_phyregs_2G[10]);
18116 		write_phy_reg(pi, 0x1b7,
18117 			      pi->rssical_cache.rssical_phyregs_2G[11]);
18118 
18119 	} else {
18120 		if (pi->nphy_rssical_chanspec_5G == 0)
18121 			return;
18122 
18123 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18124 			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
18125 				      RADIO_2057_VCM_MASK,
18126 				      pi->rssical_cache.
18127 				      rssical_radio_regs_5G[0]);
18128 			mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
18129 				      RADIO_2057_VCM_MASK,
18130 				      pi->rssical_cache.
18131 				      rssical_radio_regs_5G[1]);
18132 		} else {
18133 			mod_radio_reg(pi,
18134 				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
18135 				      RADIO_2056_VCM_MASK,
18136 				      pi->rssical_cache.
18137 				      rssical_radio_regs_5G[0]);
18138 			mod_radio_reg(pi,
18139 				      RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
18140 				      RADIO_2056_VCM_MASK,
18141 				      pi->rssical_cache.
18142 				      rssical_radio_regs_5G[1]);
18143 		}
18144 
18145 		write_phy_reg(pi, 0x1a6,
18146 			      pi->rssical_cache.rssical_phyregs_5G[0]);
18147 		write_phy_reg(pi, 0x1ac,
18148 			      pi->rssical_cache.rssical_phyregs_5G[1]);
18149 		write_phy_reg(pi, 0x1b2,
18150 			      pi->rssical_cache.rssical_phyregs_5G[2]);
18151 		write_phy_reg(pi, 0x1b8,
18152 			      pi->rssical_cache.rssical_phyregs_5G[3]);
18153 		write_phy_reg(pi, 0x1a4,
18154 			      pi->rssical_cache.rssical_phyregs_5G[4]);
18155 		write_phy_reg(pi, 0x1aa,
18156 			      pi->rssical_cache.rssical_phyregs_5G[5]);
18157 		write_phy_reg(pi, 0x1b0,
18158 			      pi->rssical_cache.rssical_phyregs_5G[6]);
18159 		write_phy_reg(pi, 0x1b6,
18160 			      pi->rssical_cache.rssical_phyregs_5G[7]);
18161 		write_phy_reg(pi, 0x1a5,
18162 			      pi->rssical_cache.rssical_phyregs_5G[8]);
18163 		write_phy_reg(pi, 0x1ab,
18164 			      pi->rssical_cache.rssical_phyregs_5G[9]);
18165 		write_phy_reg(pi, 0x1b1,
18166 			      pi->rssical_cache.rssical_phyregs_5G[10]);
18167 		write_phy_reg(pi, 0x1b7,
18168 			      pi->rssical_cache.rssical_phyregs_5G[11]);
18169 	}
18170 }
18171 
wlc_phy_internal_cal_txgain_nphy(struct brcms_phy * pi)18172 static void wlc_phy_internal_cal_txgain_nphy(struct brcms_phy *pi)
18173 {
18174 	u16 txcal_gain[2];
18175 
18176 	pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
18177 	pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
18178 	wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18179 	wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18180 
18181 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18182 				txcal_gain);
18183 
18184 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18185 		txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
18186 		txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
18187 	} else {
18188 		txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
18189 		txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
18190 	}
18191 
18192 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18193 				 txcal_gain);
18194 }
18195 
wlc_phy_precal_txgain_nphy(struct brcms_phy * pi)18196 static void wlc_phy_precal_txgain_nphy(struct brcms_phy *pi)
18197 {
18198 	bool save_bbmult = false;
18199 	u8 txcal_index_2057_rev5n7 = 0;
18200 	u8 txcal_index_2057_rev3n4n6 = 10;
18201 
18202 	if (pi->use_int_tx_iqlo_cal_nphy) {
18203 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18204 			if ((pi->pubpi.radiorev == 3) ||
18205 			    (pi->pubpi.radiorev == 4) ||
18206 			    (pi->pubpi.radiorev == 6)) {
18207 
18208 				pi->nphy_txcal_pwr_idx[0] =
18209 					txcal_index_2057_rev3n4n6;
18210 				pi->nphy_txcal_pwr_idx[1] =
18211 					txcal_index_2057_rev3n4n6;
18212 				wlc_phy_txpwr_index_nphy(
18213 					pi, 3,
18214 					txcal_index_2057_rev3n4n6,
18215 					false);
18216 			} else {
18217 
18218 				pi->nphy_txcal_pwr_idx[0] =
18219 					txcal_index_2057_rev5n7;
18220 				pi->nphy_txcal_pwr_idx[1] =
18221 					txcal_index_2057_rev5n7;
18222 				wlc_phy_txpwr_index_nphy(
18223 					pi, 3,
18224 					txcal_index_2057_rev5n7,
18225 					false);
18226 			}
18227 			save_bbmult = true;
18228 
18229 		} else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
18230 			wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
18231 			if (pi->sh->hw_phytxchain != 3) {
18232 				pi->nphy_txcal_pwr_idx[1] =
18233 					pi->nphy_txcal_pwr_idx[0];
18234 				wlc_phy_txpwr_index_nphy(pi, 3,
18235 							 pi->
18236 							 nphy_txcal_pwr_idx[0],
18237 							 true);
18238 				save_bbmult = true;
18239 			}
18240 
18241 		} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
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 					pi->nphy_txcal_pwr_idx[0] = 80;
18248 					pi->nphy_txcal_pwr_idx[1] = 80;
18249 					wlc_phy_txpwr_index_nphy(pi, 3, 80,
18250 								 false);
18251 					save_bbmult = true;
18252 				}
18253 			} else {
18254 				wlc_phy_internal_cal_txgain_nphy(pi);
18255 				save_bbmult = true;
18256 			}
18257 
18258 		} else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18259 			if (PHY_IPA(pi)) {
18260 				if (CHSPEC_IS2G(pi->radio_chanspec))
18261 					wlc_phy_cal_txgainctrl_nphy(pi, 12,
18262 								    false);
18263 				else
18264 					wlc_phy_cal_txgainctrl_nphy(pi, 14,
18265 								    false);
18266 			} else {
18267 				wlc_phy_internal_cal_txgain_nphy(pi);
18268 				save_bbmult = true;
18269 			}
18270 		}
18271 
18272 	} else {
18273 		wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
18274 	}
18275 
18276 	if (save_bbmult)
18277 		wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
18278 					&pi->nphy_txcal_bbmult);
18279 }
18280 
18281 static void
wlc_phy_rfctrlintc_override_nphy(struct brcms_phy * pi,u8 field,u16 value,u8 core_code)18282 wlc_phy_rfctrlintc_override_nphy(struct brcms_phy *pi, u8 field, u16 value,
18283 				 u8 core_code)
18284 {
18285 	u16 mask;
18286 	u16 val;
18287 	u8 core;
18288 
18289 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18290 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18291 			if (core_code == RADIO_MIMO_CORESEL_CORE1
18292 			    && core == PHY_CORE_1)
18293 				continue;
18294 			else if (core_code == RADIO_MIMO_CORESEL_CORE2
18295 				 && core == PHY_CORE_0)
18296 				continue;
18297 
18298 			if (NREV_LT(pi->pubpi.phy_rev, 7)) {
18299 
18300 				mask = (0x1 << 10);
18301 				val = 1 << 10;
18302 				mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18303 					    0x92, mask, val);
18304 			}
18305 
18306 			if (field == NPHY_RfctrlIntc_override_OFF) {
18307 
18308 				write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18309 					      0x92, 0);
18310 
18311 				wlc_phy_force_rfseq_nphy(pi,
18312 							 NPHY_RFSEQ_RESET2RX);
18313 			} else if (field == NPHY_RfctrlIntc_override_TRSW) {
18314 
18315 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18316 
18317 					mask = (0x1 << 6) | (0x1 << 7);
18318 
18319 					val = value << 6;
18320 					mod_phy_reg(pi,
18321 						    (core ==
18322 						     PHY_CORE_0) ? 0x91 : 0x92,
18323 						    mask, val);
18324 
18325 					or_phy_reg(pi,
18326 						   (core ==
18327 						    PHY_CORE_0) ? 0x91 : 0x92,
18328 						   (0x1 << 10));
18329 
18330 					and_phy_reg(pi, 0x2ff, (u16)
18331 						    ~(0x3 << 14));
18332 					or_phy_reg(pi, 0x2ff, (0x1 << 13));
18333 					or_phy_reg(pi, 0x2ff, (0x1 << 0));
18334 				} else {
18335 
18336 					mask = (0x1 << 6) |
18337 					       (0x1 << 7) |
18338 					       (0x1 << 8) | (0x1 << 9);
18339 					val = value << 6;
18340 					mod_phy_reg(pi,
18341 						    (core ==
18342 						     PHY_CORE_0) ? 0x91 : 0x92,
18343 						    mask, val);
18344 
18345 					mask = (0x1 << 0);
18346 					val = 1 << 0;
18347 					mod_phy_reg(pi,
18348 						    (core ==
18349 						     PHY_CORE_0) ? 0xe7 : 0xec,
18350 						    mask, val);
18351 
18352 					mask = (core == PHY_CORE_0) ?
18353 					       (0x1 << 0) : (0x1 << 1);
18354 					val = 1 << ((core == PHY_CORE_0) ?
18355 						    0 : 1);
18356 					mod_phy_reg(pi, 0x78, mask, val);
18357 
18358 					SPINWAIT(((read_phy_reg(pi, 0x78) & val)
18359 						  != 0), 10000);
18360 					if (WARN(read_phy_reg(pi, 0x78) & val,
18361 						 "HW error: override failed"))
18362 						return;
18363 
18364 					mask = (0x1 << 0);
18365 					val = 0 << 0;
18366 					mod_phy_reg(pi,
18367 						    (core ==
18368 						     PHY_CORE_0) ? 0xe7 : 0xec,
18369 						    mask, val);
18370 				}
18371 			} else if (field == NPHY_RfctrlIntc_override_PA) {
18372 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18373 
18374 					mask = (0x1 << 4) | (0x1 << 5);
18375 
18376 					if (CHSPEC_IS5G(pi->radio_chanspec))
18377 						val = value << 5;
18378 					else
18379 						val = value << 4;
18380 
18381 					mod_phy_reg(pi,
18382 						    (core ==
18383 						     PHY_CORE_0) ? 0x91 : 0x92,
18384 						    mask, val);
18385 
18386 					or_phy_reg(pi,
18387 						   (core ==
18388 						    PHY_CORE_0) ? 0x91 : 0x92,
18389 						   (0x1 << 12));
18390 				} else {
18391 
18392 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18393 						mask = (0x1 << 5);
18394 						val = value << 5;
18395 					} else {
18396 						mask = (0x1 << 4);
18397 						val = value << 4;
18398 					}
18399 					mod_phy_reg(pi,
18400 						    (core ==
18401 						     PHY_CORE_0) ? 0x91 : 0x92,
18402 						    mask, val);
18403 				}
18404 			} else if (field ==
18405 				   NPHY_RfctrlIntc_override_EXT_LNA_PU) {
18406 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18407 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18408 
18409 						mask = (0x1 << 0);
18410 						val = value << 0;
18411 						mod_phy_reg(pi,
18412 							    (core ==
18413 							     PHY_CORE_0) ? 0x91
18414 							    : 0x92, mask, val);
18415 
18416 						mask = (0x1 << 2);
18417 						mod_phy_reg(pi,
18418 							    (core ==
18419 							     PHY_CORE_0) ? 0x91
18420 							    : 0x92, mask, 0);
18421 					} else {
18422 
18423 						mask = (0x1 << 2);
18424 						val = value << 2;
18425 						mod_phy_reg(pi,
18426 							    (core ==
18427 							     PHY_CORE_0) ? 0x91
18428 							    : 0x92, mask, val);
18429 
18430 						mask = (0x1 << 0);
18431 						mod_phy_reg(pi,
18432 							    (core ==
18433 							     PHY_CORE_0) ? 0x91
18434 							    : 0x92, mask, 0);
18435 					}
18436 
18437 					mask = (0x1 << 11);
18438 					val = 1 << 11;
18439 					mod_phy_reg(pi,
18440 						    (core ==
18441 						     PHY_CORE_0) ? 0x91 : 0x92,
18442 						    mask, val);
18443 				} else {
18444 
18445 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18446 						mask = (0x1 << 0);
18447 						val = value << 0;
18448 					} else {
18449 						mask = (0x1 << 2);
18450 						val = value << 2;
18451 					}
18452 					mod_phy_reg(pi,
18453 						    (core ==
18454 						     PHY_CORE_0) ? 0x91 : 0x92,
18455 						    mask, val);
18456 				}
18457 			} else if (field ==
18458 				   NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
18459 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18460 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18461 
18462 						mask = (0x1 << 1);
18463 						val = value << 1;
18464 						mod_phy_reg(pi,
18465 							    (core ==
18466 							     PHY_CORE_0) ? 0x91
18467 							    : 0x92, mask, val);
18468 
18469 						mask = (0x1 << 3);
18470 						mod_phy_reg(pi,
18471 							    (core ==
18472 							     PHY_CORE_0) ? 0x91
18473 							    : 0x92, mask, 0);
18474 					} else {
18475 
18476 						mask = (0x1 << 3);
18477 						val = value << 3;
18478 						mod_phy_reg(pi,
18479 							    (core ==
18480 							     PHY_CORE_0) ? 0x91
18481 							    : 0x92, mask, val);
18482 
18483 						mask = (0x1 << 1);
18484 						mod_phy_reg(pi,
18485 							    (core ==
18486 							     PHY_CORE_0) ? 0x91
18487 							    : 0x92, mask, 0);
18488 					}
18489 
18490 					mask = (0x1 << 11);
18491 					val = 1 << 11;
18492 					mod_phy_reg(pi,
18493 						    (core ==
18494 						     PHY_CORE_0) ? 0x91 : 0x92,
18495 						    mask, val);
18496 				} else {
18497 
18498 					if (CHSPEC_IS5G(pi->radio_chanspec)) {
18499 						mask = (0x1 << 1);
18500 						val = value << 1;
18501 					} else {
18502 						mask = (0x1 << 3);
18503 						val = value << 3;
18504 					}
18505 					mod_phy_reg(pi,
18506 						    (core ==
18507 						     PHY_CORE_0) ? 0x91 : 0x92,
18508 						    mask, val);
18509 				}
18510 			}
18511 		}
18512 	}
18513 }
18514 
18515 void
wlc_phy_cal_txgainctrl_nphy(struct brcms_phy * pi,s32 dBm_targetpower,bool debug)18516 wlc_phy_cal_txgainctrl_nphy(struct brcms_phy *pi, s32 dBm_targetpower,
18517 			    bool debug)
18518 {
18519 	int gainctrl_loopidx;
18520 	uint core;
18521 	u16 m0m1, curr_m0m1;
18522 	s32 delta_power;
18523 	s32 txpwrindex;
18524 	s32 qdBm_power[2];
18525 	u16 orig_BBConfig;
18526 	u16 phy_saveregs[4];
18527 	u32 freq_test;
18528 	u16 ampl_test = 250;
18529 	uint stepsize;
18530 	bool phyhang_avoid_state = false;
18531 
18532 	if (NREV_GE(pi->pubpi.phy_rev, 7))
18533 		stepsize = 2;
18534 	else
18535 		stepsize = 1;
18536 
18537 	if (CHSPEC_IS40(pi->radio_chanspec))
18538 		freq_test = 5000;
18539 	else
18540 		freq_test = 2500;
18541 
18542 	wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18543 	wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18544 
18545 	if (pi->phyhang_avoid)
18546 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
18547 
18548 	phyhang_avoid_state = pi->phyhang_avoid;
18549 	pi->phyhang_avoid = false;
18550 
18551 	phy_saveregs[0] = read_phy_reg(pi, 0x91);
18552 	phy_saveregs[1] = read_phy_reg(pi, 0x92);
18553 	phy_saveregs[2] = read_phy_reg(pi, 0xe7);
18554 	phy_saveregs[3] = read_phy_reg(pi, 0xec);
18555 	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
18556 					 RADIO_MIMO_CORESEL_CORE1 |
18557 					 RADIO_MIMO_CORESEL_CORE2);
18558 
18559 	if (!debug) {
18560 		wlc_phy_rfctrlintc_override_nphy(pi,
18561 						 NPHY_RfctrlIntc_override_TRSW,
18562 						 0x2, RADIO_MIMO_CORESEL_CORE1);
18563 		wlc_phy_rfctrlintc_override_nphy(pi,
18564 						 NPHY_RfctrlIntc_override_TRSW,
18565 						 0x8, RADIO_MIMO_CORESEL_CORE2);
18566 	} else {
18567 		wlc_phy_rfctrlintc_override_nphy(pi,
18568 						 NPHY_RfctrlIntc_override_TRSW,
18569 						 0x1, RADIO_MIMO_CORESEL_CORE1);
18570 		wlc_phy_rfctrlintc_override_nphy(pi,
18571 						 NPHY_RfctrlIntc_override_TRSW,
18572 						 0x7, RADIO_MIMO_CORESEL_CORE2);
18573 	}
18574 
18575 	orig_BBConfig = read_phy_reg(pi, 0x01);
18576 	mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
18577 
18578 	wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
18579 
18580 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18581 		txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
18582 
18583 		for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
18584 		     gainctrl_loopidx++) {
18585 			wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18586 					     false);
18587 
18588 			if (core == PHY_CORE_0)
18589 				curr_m0m1 = m0m1 & 0xff00;
18590 			else
18591 				curr_m0m1 = m0m1 & 0x00ff;
18592 
18593 			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
18594 			wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
18595 
18596 			udelay(50);
18597 
18598 			wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18599 						 NPHY_CAL_TSSISAMPS);
18600 
18601 			pi->nphy_bb_mult_save = 0;
18602 			wlc_phy_stopplayback_nphy(pi);
18603 
18604 			delta_power = (dBm_targetpower * 4) - qdBm_power[core];
18605 
18606 			txpwrindex -= stepsize * delta_power;
18607 			if (txpwrindex < 0)
18608 				txpwrindex = 0;
18609 			else if (txpwrindex > 127)
18610 				txpwrindex = 127;
18611 
18612 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
18613 				if (NREV_IS(pi->pubpi.phy_rev, 4) &&
18614 				    (pi->srom_fem5g.extpagain == 3)) {
18615 					if (txpwrindex < 30)
18616 						txpwrindex = 30;
18617 				}
18618 			} else {
18619 				if (NREV_GE(pi->pubpi.phy_rev, 5) &&
18620 				    (pi->srom_fem2g.extpagain == 3)) {
18621 					if (txpwrindex < 50)
18622 						txpwrindex = 50;
18623 				}
18624 			}
18625 
18626 			wlc_phy_txpwr_index_nphy(pi, (1 << core),
18627 						 (u8) txpwrindex, true);
18628 		}
18629 
18630 		pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
18631 
18632 		if (debug) {
18633 			u16 radio_gain;
18634 			u16 dbg_m0m1;
18635 
18636 			wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18637 
18638 			wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18639 					     false);
18640 
18641 			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18642 			wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
18643 
18644 			udelay(100);
18645 
18646 			wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18647 						 NPHY_CAL_TSSISAMPS);
18648 
18649 			wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
18650 						&radio_gain);
18651 
18652 			mdelay(4000);
18653 			pi->nphy_bb_mult_save = 0;
18654 			wlc_phy_stopplayback_nphy(pi);
18655 		}
18656 	}
18657 
18658 	wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
18659 	wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
18660 
18661 	wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
18662 
18663 	write_phy_reg(pi, 0x01, orig_BBConfig);
18664 
18665 	write_phy_reg(pi, 0x91, phy_saveregs[0]);
18666 	write_phy_reg(pi, 0x92, phy_saveregs[1]);
18667 	write_phy_reg(pi, 0xe7, phy_saveregs[2]);
18668 	write_phy_reg(pi, 0xec, phy_saveregs[3]);
18669 
18670 	pi->phyhang_avoid = phyhang_avoid_state;
18671 
18672 	if (pi->phyhang_avoid)
18673 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
18674 }
18675 
wlc_phy_savecal_nphy(struct brcms_phy * pi)18676 static void wlc_phy_savecal_nphy(struct brcms_phy *pi)
18677 {
18678 	void *tbl_ptr;
18679 	int coreNum;
18680 	u16 *txcal_radio_regs = NULL;
18681 
18682 	if (pi->phyhang_avoid)
18683 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
18684 
18685 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18686 
18687 		wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18688 					  &pi->calibration_cache.
18689 					  rxcal_coeffs_2G);
18690 
18691 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18692 			txcal_radio_regs =
18693 				pi->calibration_cache.txcal_radio_regs_2G;
18694 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18695 
18696 			pi->calibration_cache.txcal_radio_regs_2G[0] =
18697 				read_radio_reg(pi,
18698 					       RADIO_2056_TX_LOFT_FINE_I |
18699 					       RADIO_2056_TX0);
18700 			pi->calibration_cache.txcal_radio_regs_2G[1] =
18701 				read_radio_reg(pi,
18702 					       RADIO_2056_TX_LOFT_FINE_Q |
18703 					       RADIO_2056_TX0);
18704 			pi->calibration_cache.txcal_radio_regs_2G[2] =
18705 				read_radio_reg(pi,
18706 					       RADIO_2056_TX_LOFT_FINE_I |
18707 					       RADIO_2056_TX1);
18708 			pi->calibration_cache.txcal_radio_regs_2G[3] =
18709 				read_radio_reg(pi,
18710 					       RADIO_2056_TX_LOFT_FINE_Q |
18711 					       RADIO_2056_TX1);
18712 
18713 			pi->calibration_cache.txcal_radio_regs_2G[4] =
18714 				read_radio_reg(pi,
18715 					       RADIO_2056_TX_LOFT_COARSE_I |
18716 					       RADIO_2056_TX0);
18717 			pi->calibration_cache.txcal_radio_regs_2G[5] =
18718 				read_radio_reg(pi,
18719 					       RADIO_2056_TX_LOFT_COARSE_Q |
18720 					       RADIO_2056_TX0);
18721 			pi->calibration_cache.txcal_radio_regs_2G[6] =
18722 				read_radio_reg(pi,
18723 					       RADIO_2056_TX_LOFT_COARSE_I |
18724 					       RADIO_2056_TX1);
18725 			pi->calibration_cache.txcal_radio_regs_2G[7] =
18726 				read_radio_reg(pi,
18727 					       RADIO_2056_TX_LOFT_COARSE_Q |
18728 					       RADIO_2056_TX1);
18729 		} else {
18730 			pi->calibration_cache.txcal_radio_regs_2G[0] =
18731 			       read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18732 			pi->calibration_cache.txcal_radio_regs_2G[1] =
18733 			       read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18734 			pi->calibration_cache.txcal_radio_regs_2G[2] =
18735 			       read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18736 			pi->calibration_cache.txcal_radio_regs_2G[3] =
18737 			       read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18738 		}
18739 
18740 		pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
18741 		tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18742 	} else {
18743 
18744 		wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18745 					  &pi->calibration_cache.
18746 					  rxcal_coeffs_5G);
18747 
18748 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18749 			txcal_radio_regs =
18750 				pi->calibration_cache.txcal_radio_regs_5G;
18751 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18752 
18753 			pi->calibration_cache.txcal_radio_regs_5G[0] =
18754 				read_radio_reg(pi,
18755 					       RADIO_2056_TX_LOFT_FINE_I |
18756 					       RADIO_2056_TX0);
18757 			pi->calibration_cache.txcal_radio_regs_5G[1] =
18758 				read_radio_reg(pi,
18759 					       RADIO_2056_TX_LOFT_FINE_Q |
18760 					       RADIO_2056_TX0);
18761 			pi->calibration_cache.txcal_radio_regs_5G[2] =
18762 				read_radio_reg(pi,
18763 					       RADIO_2056_TX_LOFT_FINE_I |
18764 					       RADIO_2056_TX1);
18765 			pi->calibration_cache.txcal_radio_regs_5G[3] =
18766 				read_radio_reg(pi,
18767 					       RADIO_2056_TX_LOFT_FINE_Q |
18768 					       RADIO_2056_TX1);
18769 
18770 			pi->calibration_cache.txcal_radio_regs_5G[4] =
18771 				read_radio_reg(pi,
18772 					       RADIO_2056_TX_LOFT_COARSE_I |
18773 					       RADIO_2056_TX0);
18774 			pi->calibration_cache.txcal_radio_regs_5G[5] =
18775 				read_radio_reg(pi,
18776 					       RADIO_2056_TX_LOFT_COARSE_Q |
18777 					       RADIO_2056_TX0);
18778 			pi->calibration_cache.txcal_radio_regs_5G[6] =
18779 				read_radio_reg(pi,
18780 					       RADIO_2056_TX_LOFT_COARSE_I |
18781 					       RADIO_2056_TX1);
18782 			pi->calibration_cache.txcal_radio_regs_5G[7] =
18783 				read_radio_reg(pi,
18784 					       RADIO_2056_TX_LOFT_COARSE_Q |
18785 					       RADIO_2056_TX1);
18786 		} else {
18787 			pi->calibration_cache.txcal_radio_regs_5G[0] =
18788 			       read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18789 			pi->calibration_cache.txcal_radio_regs_5G[1] =
18790 			       read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18791 			pi->calibration_cache.txcal_radio_regs_5G[2] =
18792 			       read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18793 			pi->calibration_cache.txcal_radio_regs_5G[3] =
18794 			       read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18795 		}
18796 
18797 		pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
18798 		tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18799 	}
18800 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18801 		for (coreNum = 0; coreNum <= 1; coreNum++) {
18802 
18803 			txcal_radio_regs[2 * coreNum] =
18804 				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18805 						LOFT_FINE_I);
18806 			txcal_radio_regs[2 * coreNum + 1] =
18807 				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18808 						LOFT_FINE_Q);
18809 
18810 			txcal_radio_regs[2 * coreNum + 4] =
18811 				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18812 						LOFT_COARSE_I);
18813 			txcal_radio_regs[2 * coreNum + 5] =
18814 				READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18815 						LOFT_COARSE_Q);
18816 		}
18817 	}
18818 
18819 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
18820 
18821 	if (pi->phyhang_avoid)
18822 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
18823 }
18824 
wlc_phy_tx_iq_war_nphy(struct brcms_phy * pi)18825 static void wlc_phy_tx_iq_war_nphy(struct brcms_phy *pi)
18826 {
18827 	struct nphy_iq_comp tx_comp;
18828 
18829 	wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, &tx_comp);
18830 
18831 	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
18832 	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
18833 	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
18834 	wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
18835 }
18836 
wlc_phy_restorecal_nphy(struct brcms_phy * pi)18837 static void wlc_phy_restorecal_nphy(struct brcms_phy *pi)
18838 {
18839 	u16 *loft_comp;
18840 	u16 txcal_coeffs_bphy[4];
18841 	u16 *tbl_ptr;
18842 	int coreNum;
18843 	u16 *txcal_radio_regs = NULL;
18844 
18845 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18846 		if (pi->nphy_iqcal_chanspec_2G == 0)
18847 			return;
18848 
18849 		tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18850 		loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
18851 	} else {
18852 		if (pi->nphy_iqcal_chanspec_5G == 0)
18853 			return;
18854 
18855 		tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18856 		loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
18857 	}
18858 
18859 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16, tbl_ptr);
18860 
18861 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18862 		txcal_coeffs_bphy[0] = tbl_ptr[0];
18863 		txcal_coeffs_bphy[1] = tbl_ptr[1];
18864 		txcal_coeffs_bphy[2] = tbl_ptr[2];
18865 		txcal_coeffs_bphy[3] = tbl_ptr[3];
18866 	} else {
18867 		txcal_coeffs_bphy[0] = 0;
18868 		txcal_coeffs_bphy[1] = 0;
18869 		txcal_coeffs_bphy[2] = 0;
18870 		txcal_coeffs_bphy[3] = 0;
18871 	}
18872 
18873 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
18874 				 txcal_coeffs_bphy);
18875 
18876 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
18877 
18878 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
18879 
18880 	if (NREV_LT(pi->pubpi.phy_rev, 2))
18881 		wlc_phy_tx_iq_war_nphy(pi);
18882 
18883 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
18884 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18885 			txcal_radio_regs =
18886 				pi->calibration_cache.txcal_radio_regs_2G;
18887 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18888 
18889 			write_radio_reg(pi,
18890 					RADIO_2056_TX_LOFT_FINE_I |
18891 					RADIO_2056_TX0,
18892 					pi->calibration_cache.
18893 					txcal_radio_regs_2G[0]);
18894 			write_radio_reg(pi,
18895 					RADIO_2056_TX_LOFT_FINE_Q |
18896 					RADIO_2056_TX0,
18897 					pi->calibration_cache.
18898 					txcal_radio_regs_2G[1]);
18899 			write_radio_reg(pi,
18900 					RADIO_2056_TX_LOFT_FINE_I |
18901 					RADIO_2056_TX1,
18902 					pi->calibration_cache.
18903 					txcal_radio_regs_2G[2]);
18904 			write_radio_reg(pi,
18905 					RADIO_2056_TX_LOFT_FINE_Q |
18906 					RADIO_2056_TX1,
18907 					pi->calibration_cache.
18908 					txcal_radio_regs_2G[3]);
18909 
18910 			write_radio_reg(pi,
18911 					RADIO_2056_TX_LOFT_COARSE_I |
18912 					RADIO_2056_TX0,
18913 					pi->calibration_cache.
18914 					txcal_radio_regs_2G[4]);
18915 			write_radio_reg(pi,
18916 					RADIO_2056_TX_LOFT_COARSE_Q |
18917 					RADIO_2056_TX0,
18918 					pi->calibration_cache.
18919 					txcal_radio_regs_2G[5]);
18920 			write_radio_reg(pi,
18921 					RADIO_2056_TX_LOFT_COARSE_I |
18922 					RADIO_2056_TX1,
18923 					pi->calibration_cache.
18924 					txcal_radio_regs_2G[6]);
18925 			write_radio_reg(pi,
18926 					RADIO_2056_TX_LOFT_COARSE_Q |
18927 					RADIO_2056_TX1,
18928 					pi->calibration_cache.
18929 					txcal_radio_regs_2G[7]);
18930 		} else {
18931 			write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18932 					pi->calibration_cache.
18933 					txcal_radio_regs_2G[0]);
18934 			write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18935 					pi->calibration_cache.
18936 					txcal_radio_regs_2G[1]);
18937 			write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18938 					pi->calibration_cache.
18939 					txcal_radio_regs_2G[2]);
18940 			write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18941 					pi->calibration_cache.
18942 					txcal_radio_regs_2G[3]);
18943 		}
18944 
18945 		wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18946 					  &pi->calibration_cache.
18947 					  rxcal_coeffs_2G);
18948 	} else {
18949 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18950 			txcal_radio_regs =
18951 				pi->calibration_cache.txcal_radio_regs_5G;
18952 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18953 
18954 			write_radio_reg(pi,
18955 					RADIO_2056_TX_LOFT_FINE_I |
18956 					RADIO_2056_TX0,
18957 					pi->calibration_cache.
18958 					txcal_radio_regs_5G[0]);
18959 			write_radio_reg(pi,
18960 					RADIO_2056_TX_LOFT_FINE_Q |
18961 					RADIO_2056_TX0,
18962 					pi->calibration_cache.
18963 					txcal_radio_regs_5G[1]);
18964 			write_radio_reg(pi,
18965 					RADIO_2056_TX_LOFT_FINE_I |
18966 					RADIO_2056_TX1,
18967 					pi->calibration_cache.
18968 					txcal_radio_regs_5G[2]);
18969 			write_radio_reg(pi,
18970 					RADIO_2056_TX_LOFT_FINE_Q |
18971 					RADIO_2056_TX1,
18972 					pi->calibration_cache.
18973 					txcal_radio_regs_5G[3]);
18974 
18975 			write_radio_reg(pi,
18976 					RADIO_2056_TX_LOFT_COARSE_I |
18977 					RADIO_2056_TX0,
18978 					pi->calibration_cache.
18979 					txcal_radio_regs_5G[4]);
18980 			write_radio_reg(pi,
18981 					RADIO_2056_TX_LOFT_COARSE_Q |
18982 					RADIO_2056_TX0,
18983 					pi->calibration_cache.
18984 					txcal_radio_regs_5G[5]);
18985 			write_radio_reg(pi,
18986 					RADIO_2056_TX_LOFT_COARSE_I |
18987 					RADIO_2056_TX1,
18988 					pi->calibration_cache.
18989 					txcal_radio_regs_5G[6]);
18990 			write_radio_reg(pi,
18991 					RADIO_2056_TX_LOFT_COARSE_Q |
18992 					RADIO_2056_TX1,
18993 					pi->calibration_cache.
18994 					txcal_radio_regs_5G[7]);
18995 		} else {
18996 			write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18997 					pi->calibration_cache.
18998 					txcal_radio_regs_5G[0]);
18999 			write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
19000 					pi->calibration_cache.
19001 					txcal_radio_regs_5G[1]);
19002 			write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
19003 					pi->calibration_cache.
19004 					txcal_radio_regs_5G[2]);
19005 			write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
19006 					pi->calibration_cache.
19007 					txcal_radio_regs_5G[3]);
19008 		}
19009 
19010 		wlc_phy_rx_iq_coeffs_nphy(pi, 1,
19011 					  &pi->calibration_cache.
19012 					  rxcal_coeffs_5G);
19013 	}
19014 
19015 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19016 		for (coreNum = 0; coreNum <= 1; coreNum++) {
19017 
19018 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19019 					 LOFT_FINE_I,
19020 					 txcal_radio_regs[2 * coreNum]);
19021 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19022 					 LOFT_FINE_Q,
19023 					 txcal_radio_regs[2 * coreNum + 1]);
19024 
19025 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19026 					 LOFT_COARSE_I,
19027 					 txcal_radio_regs[2 * coreNum + 4]);
19028 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19029 					 LOFT_COARSE_Q,
19030 					 txcal_radio_regs[2 * coreNum + 5]);
19031 		}
19032 	}
19033 }
19034 
wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy * pi)19035 static void wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy *pi)
19036 {
19037 	u32 idx;
19038 	u16 iqloCalbuf[7];
19039 	u32 iqcomp, locomp, curr_locomp;
19040 	s8 locomp_i, locomp_q;
19041 	s8 curr_locomp_i, curr_locomp_q;
19042 	u32 tbl_id, tbl_len, tbl_offset;
19043 	u32 regval[128];
19044 
19045 	if (pi->phyhang_avoid)
19046 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
19047 
19048 	wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
19049 
19050 	tbl_len = 128;
19051 	tbl_offset = 320;
19052 	for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
19053 	     tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
19054 		iqcomp =
19055 			(tbl_id ==
19056 			 26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
19057 			(iqloCalbuf[1] & 0x3ff)
19058 			: (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
19059 			(iqloCalbuf[3] & 0x3ff);
19060 
19061 		for (idx = 0; idx < tbl_len; idx++)
19062 			regval[idx] = iqcomp;
19063 		wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
19064 					 regval);
19065 	}
19066 
19067 	tbl_offset = 448;
19068 	for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
19069 	     tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
19070 
19071 		locomp =
19072 			(u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
19073 		locomp_i = (s8) ((locomp >> 8) & 0xff);
19074 		locomp_q = (s8) ((locomp) & 0xff);
19075 		for (idx = 0; idx < tbl_len; idx++) {
19076 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19077 				curr_locomp_i = locomp_i;
19078 				curr_locomp_q = locomp_q;
19079 			} else {
19080 				curr_locomp_i = (s8) ((locomp_i *
19081 						       nphy_tpc_loscale[idx] +
19082 						       128) >> 8);
19083 				curr_locomp_q =
19084 					(s8) ((locomp_q *
19085 					       nphy_tpc_loscale[idx] +
19086 					       128) >> 8);
19087 			}
19088 			curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
19089 			curr_locomp |= (u32) (curr_locomp_q & 0xff);
19090 			regval[idx] = curr_locomp;
19091 		}
19092 		wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
19093 					 regval);
19094 	}
19095 
19096 	if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19097 
19098 		wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
19099 		wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
19100 	}
19101 
19102 	if (pi->phyhang_avoid)
19103 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
19104 }
19105 
wlc_phy_txlpfbw_nphy(struct brcms_phy * pi)19106 static void wlc_phy_txlpfbw_nphy(struct brcms_phy *pi)
19107 {
19108 	u8 tx_lpf_bw = 0;
19109 
19110 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
19111 		if (CHSPEC_IS40(pi->radio_chanspec))
19112 			tx_lpf_bw = 3;
19113 		else
19114 			tx_lpf_bw = 1;
19115 
19116 		if (PHY_IPA(pi)) {
19117 			if (CHSPEC_IS40(pi->radio_chanspec))
19118 				tx_lpf_bw = 5;
19119 			else
19120 				tx_lpf_bw = 4;
19121 		}
19122 
19123 		write_phy_reg(pi, 0xe8,
19124 			      (tx_lpf_bw << 0) |
19125 			      (tx_lpf_bw << 3) |
19126 			      (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
19127 
19128 		if (PHY_IPA(pi)) {
19129 
19130 			if (CHSPEC_IS40(pi->radio_chanspec))
19131 				tx_lpf_bw = 4;
19132 			else
19133 				tx_lpf_bw = 1;
19134 
19135 			write_phy_reg(pi, 0xe9,
19136 				      (tx_lpf_bw << 0) |
19137 				      (tx_lpf_bw << 3) |
19138 				      (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
19139 		}
19140 	}
19141 }
19142 
19143 static void
wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy * pi,u16 reduction_factr)19144 wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy *pi, u16 reduction_factr)
19145 {
19146 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
19147 		if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19148 		    CHSPEC_IS40(pi->radio_chanspec)) {
19149 			if (!pi->nphy_anarxlpf_adjusted) {
19150 				write_radio_reg(pi,
19151 						(RADIO_2056_RX_RXLPF_RCCAL_LPC |
19152 						 RADIO_2056_RX0),
19153 						((pi->nphy_rccal_value +
19154 						  reduction_factr) | 0x80));
19155 
19156 				pi->nphy_anarxlpf_adjusted = true;
19157 			}
19158 		} else {
19159 			if (pi->nphy_anarxlpf_adjusted) {
19160 				write_radio_reg(pi,
19161 						(RADIO_2056_RX_RXLPF_RCCAL_LPC |
19162 						 RADIO_2056_RX0),
19163 						(pi->nphy_rccal_value | 0x80));
19164 
19165 				pi->nphy_anarxlpf_adjusted = false;
19166 			}
19167 		}
19168 	}
19169 }
19170 
19171 static void
wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy * pi,int ntones,int * tone_id_buf,u32 * noise_var_buf)19172 wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy *pi, int ntones,
19173 				 int *tone_id_buf, u32 *noise_var_buf)
19174 {
19175 	int i;
19176 	u32 offset;
19177 	int tone_id;
19178 	int tbllen =
19179 		CHSPEC_IS40(pi->radio_chanspec) ?
19180 		NPHY_NOISEVAR_TBLLEN40 : NPHY_NOISEVAR_TBLLEN20;
19181 
19182 	if (pi->nphy_noisevars_adjusted) {
19183 		for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
19184 			tone_id = pi->nphy_saved_noisevars.tone_id[i];
19185 			offset = (tone_id >= 0) ?
19186 				 ((tone_id *
19187 				   2) + 1) : (tbllen + (tone_id * 2) + 1);
19188 			wlc_phy_table_write_nphy(
19189 				pi, NPHY_TBL_ID_NOISEVAR, 1,
19190 				offset, 32,
19191 				&pi->nphy_saved_noisevars.min_noise_vars[i]);
19192 		}
19193 
19194 		pi->nphy_saved_noisevars.bufcount = 0;
19195 		pi->nphy_noisevars_adjusted = false;
19196 	}
19197 
19198 	if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
19199 		pi->nphy_saved_noisevars.bufcount = 0;
19200 
19201 		for (i = 0; i < ntones; i++) {
19202 			tone_id = tone_id_buf[i];
19203 			offset = (tone_id >= 0) ?
19204 				 ((tone_id * 2) + 1) :
19205 				 (tbllen + (tone_id * 2) + 1);
19206 			pi->nphy_saved_noisevars.tone_id[i] = tone_id;
19207 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19208 						offset, 32,
19209 						&pi->nphy_saved_noisevars.
19210 						min_noise_vars[i]);
19211 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19212 						 offset, 32, &noise_var_buf[i]);
19213 			pi->nphy_saved_noisevars.bufcount++;
19214 		}
19215 
19216 		pi->nphy_noisevars_adjusted = true;
19217 	}
19218 }
19219 
wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy * pi,u8 minpwr)19220 static void wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy *pi, u8 minpwr)
19221 {
19222 	u16 regval;
19223 
19224 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19225 		if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19226 		    CHSPEC_IS40(pi->radio_chanspec)) {
19227 			if (!pi->nphy_crsminpwr_adjusted) {
19228 				regval = read_phy_reg(pi, 0x27d);
19229 				pi->nphy_crsminpwr[0] = regval & 0xff;
19230 				regval &= 0xff00;
19231 				regval |= (u16) minpwr;
19232 				write_phy_reg(pi, 0x27d, regval);
19233 
19234 				regval = read_phy_reg(pi, 0x280);
19235 				pi->nphy_crsminpwr[1] = regval & 0xff;
19236 				regval &= 0xff00;
19237 				regval |= (u16) minpwr;
19238 				write_phy_reg(pi, 0x280, regval);
19239 
19240 				regval = read_phy_reg(pi, 0x283);
19241 				pi->nphy_crsminpwr[2] = regval & 0xff;
19242 				regval &= 0xff00;
19243 				regval |= (u16) minpwr;
19244 				write_phy_reg(pi, 0x283, regval);
19245 
19246 				pi->nphy_crsminpwr_adjusted = true;
19247 			}
19248 		} else {
19249 			if (pi->nphy_crsminpwr_adjusted) {
19250 				regval = read_phy_reg(pi, 0x27d);
19251 				regval &= 0xff00;
19252 				regval |= pi->nphy_crsminpwr[0];
19253 				write_phy_reg(pi, 0x27d, regval);
19254 
19255 				regval = read_phy_reg(pi, 0x280);
19256 				regval &= 0xff00;
19257 				regval |= pi->nphy_crsminpwr[1];
19258 				write_phy_reg(pi, 0x280, regval);
19259 
19260 				regval = read_phy_reg(pi, 0x283);
19261 				regval &= 0xff00;
19262 				regval |= pi->nphy_crsminpwr[2];
19263 				write_phy_reg(pi, 0x283, regval);
19264 
19265 				pi->nphy_crsminpwr_adjusted = false;
19266 			}
19267 		}
19268 	}
19269 }
19270 
wlc_phy_spurwar_nphy(struct brcms_phy * pi)19271 static void wlc_phy_spurwar_nphy(struct brcms_phy *pi)
19272 {
19273 	u16 cur_channel = 0;
19274 	int nphy_adj_tone_id_buf[] = { 57, 58 };
19275 	u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
19276 	bool isAdjustNoiseVar = false;
19277 	uint numTonesAdjust = 0;
19278 	u32 tempval = 0;
19279 
19280 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19281 		if (pi->phyhang_avoid)
19282 			wlc_phy_stay_in_carriersearch_nphy(pi, true);
19283 
19284 		cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19285 
19286 		if (pi->nphy_gband_spurwar_en) {
19287 
19288 			wlc_phy_adjust_rx_analpfbw_nphy(
19289 				pi,
19290 				NPHY_ANARXLPFBW_REDUCTIONFACT);
19291 
19292 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
19293 				if ((cur_channel == 11)
19294 				    && CHSPEC_IS40(pi->radio_chanspec))
19295 					wlc_phy_adjust_min_noisevar_nphy(
19296 						pi, 2,
19297 						nphy_adj_tone_id_buf,
19298 						nphy_adj_noise_var_buf);
19299 				else
19300 					wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19301 									 NULL,
19302 									 NULL);
19303 			}
19304 
19305 			wlc_phy_adjust_crsminpwr_nphy(pi,
19306 						     NPHY_ADJUSTED_MINCRSPOWER);
19307 		}
19308 
19309 		if ((pi->nphy_gband_spurwar2_en)
19310 		    && CHSPEC_IS2G(pi->radio_chanspec)) {
19311 
19312 			if (CHSPEC_IS40(pi->radio_chanspec)) {
19313 				switch (cur_channel) {
19314 				case 3:
19315 					nphy_adj_tone_id_buf[0] = 57;
19316 					nphy_adj_tone_id_buf[1] = 58;
19317 					nphy_adj_noise_var_buf[0] = 0x22f;
19318 					nphy_adj_noise_var_buf[1] = 0x25f;
19319 					isAdjustNoiseVar = true;
19320 					break;
19321 				case 4:
19322 					nphy_adj_tone_id_buf[0] = 41;
19323 					nphy_adj_tone_id_buf[1] = 42;
19324 					nphy_adj_noise_var_buf[0] = 0x22f;
19325 					nphy_adj_noise_var_buf[1] = 0x25f;
19326 					isAdjustNoiseVar = true;
19327 					break;
19328 				case 5:
19329 					nphy_adj_tone_id_buf[0] = 25;
19330 					nphy_adj_tone_id_buf[1] = 26;
19331 					nphy_adj_noise_var_buf[0] = 0x24f;
19332 					nphy_adj_noise_var_buf[1] = 0x25f;
19333 					isAdjustNoiseVar = true;
19334 					break;
19335 				case 6:
19336 					nphy_adj_tone_id_buf[0] = 9;
19337 					nphy_adj_tone_id_buf[1] = 10;
19338 					nphy_adj_noise_var_buf[0] = 0x22f;
19339 					nphy_adj_noise_var_buf[1] = 0x24f;
19340 					isAdjustNoiseVar = true;
19341 					break;
19342 				case 7:
19343 					nphy_adj_tone_id_buf[0] = 121;
19344 					nphy_adj_tone_id_buf[1] = 122;
19345 					nphy_adj_noise_var_buf[0] = 0x18f;
19346 					nphy_adj_noise_var_buf[1] = 0x24f;
19347 					isAdjustNoiseVar = true;
19348 					break;
19349 				case 8:
19350 					nphy_adj_tone_id_buf[0] = 105;
19351 					nphy_adj_tone_id_buf[1] = 106;
19352 					nphy_adj_noise_var_buf[0] = 0x22f;
19353 					nphy_adj_noise_var_buf[1] = 0x25f;
19354 					isAdjustNoiseVar = true;
19355 					break;
19356 				case 9:
19357 					nphy_adj_tone_id_buf[0] = 89;
19358 					nphy_adj_tone_id_buf[1] = 90;
19359 					nphy_adj_noise_var_buf[0] = 0x22f;
19360 					nphy_adj_noise_var_buf[1] = 0x24f;
19361 					isAdjustNoiseVar = true;
19362 					break;
19363 				case 10:
19364 					nphy_adj_tone_id_buf[0] = 73;
19365 					nphy_adj_tone_id_buf[1] = 74;
19366 					nphy_adj_noise_var_buf[0] = 0x22f;
19367 					nphy_adj_noise_var_buf[1] = 0x24f;
19368 					isAdjustNoiseVar = true;
19369 					break;
19370 				default:
19371 					isAdjustNoiseVar = false;
19372 					break;
19373 				}
19374 			}
19375 
19376 			if (isAdjustNoiseVar) {
19377 				numTonesAdjust = sizeof(nphy_adj_tone_id_buf) /
19378 						sizeof(nphy_adj_tone_id_buf[0]);
19379 
19380 				wlc_phy_adjust_min_noisevar_nphy(
19381 					pi,
19382 					numTonesAdjust,
19383 					nphy_adj_tone_id_buf,
19384 					nphy_adj_noise_var_buf);
19385 
19386 				tempval = 0;
19387 
19388 			} else {
19389 				wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19390 								 NULL);
19391 			}
19392 		}
19393 
19394 		if ((pi->nphy_aband_spurwar_en) &&
19395 		    (CHSPEC_IS5G(pi->radio_chanspec))) {
19396 			switch (cur_channel) {
19397 			case 54:
19398 				nphy_adj_tone_id_buf[0] = 32;
19399 				nphy_adj_noise_var_buf[0] = 0x25f;
19400 				break;
19401 			case 38:
19402 			case 102:
19403 			case 118:
19404 				nphy_adj_tone_id_buf[0] = 0;
19405 				nphy_adj_noise_var_buf[0] = 0x0;
19406 				break;
19407 			case 134:
19408 				nphy_adj_tone_id_buf[0] = 32;
19409 				nphy_adj_noise_var_buf[0] = 0x21f;
19410 				break;
19411 			case 151:
19412 				nphy_adj_tone_id_buf[0] = 16;
19413 				nphy_adj_noise_var_buf[0] = 0x23f;
19414 				break;
19415 			case 153:
19416 			case 161:
19417 				nphy_adj_tone_id_buf[0] = 48;
19418 				nphy_adj_noise_var_buf[0] = 0x23f;
19419 				break;
19420 			default:
19421 				nphy_adj_tone_id_buf[0] = 0;
19422 				nphy_adj_noise_var_buf[0] = 0x0;
19423 				break;
19424 			}
19425 
19426 			if (nphy_adj_tone_id_buf[0]
19427 			    && nphy_adj_noise_var_buf[0])
19428 				wlc_phy_adjust_min_noisevar_nphy(
19429 					pi, 1,
19430 					nphy_adj_tone_id_buf,
19431 					nphy_adj_noise_var_buf);
19432 			else
19433 				wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19434 								 NULL);
19435 		}
19436 
19437 		if (pi->phyhang_avoid)
19438 			wlc_phy_stay_in_carriersearch_nphy(pi, false);
19439 	}
19440 }
19441 
wlc_phy_init_nphy(struct brcms_phy * pi)19442 void wlc_phy_init_nphy(struct brcms_phy *pi)
19443 {
19444 	u16 val;
19445 	u16 clip1_ths[2];
19446 	struct nphy_txgains target_gain;
19447 	u8 tx_pwr_ctrl_state;
19448 	bool do_nphy_cal = false;
19449 	uint core;
19450 	u32 d11_clk_ctl_st;
19451 	bool do_rssi_cal = false;
19452 
19453 	core = 0;
19454 
19455 	if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19456 		pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19457 
19458 	if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
19459 	    ((pi->sh->chippkg == BCM4717_PKG_ID) ||
19460 	     (pi->sh->chippkg == BCM4718_PKG_ID))) {
19461 		if ((pi->sh->boardflags & BFL_EXTLNA) &&
19462 		    (CHSPEC_IS2G(pi->radio_chanspec)))
19463 			ai_cc_reg(pi->sh->sih,
19464 				  offsetof(struct chipcregs, chipcontrol),
19465 				  0x40, 0x40);
19466 	}
19467 
19468 	if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19469 	    CHSPEC_IS40(pi->radio_chanspec)) {
19470 
19471 		d11_clk_ctl_st = bcma_read32(pi->d11core,
19472 					     D11REGOFFS(clk_ctl_st));
19473 		bcma_mask32(pi->d11core, D11REGOFFS(clk_ctl_st),
19474 			    ~(CCS_FORCEHT | CCS_HTAREQ));
19475 
19476 		bcma_write32(pi->d11core, D11REGOFFS(clk_ctl_st),
19477 			     d11_clk_ctl_st);
19478 	}
19479 
19480 	pi->use_int_tx_iqlo_cal_nphy =
19481 		(PHY_IPA(pi) ||
19482 		 (NREV_GE(pi->pubpi.phy_rev, 7) ||
19483 		  (NREV_GE(pi->pubpi.phy_rev, 5)
19484 		   && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19485 
19486 	pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19487 
19488 	pi->nphy_deaf_count = 0;
19489 
19490 	wlc_phy_tbl_init_nphy(pi);
19491 
19492 	pi->nphy_crsminpwr_adjusted = false;
19493 	pi->nphy_noisevars_adjusted = false;
19494 
19495 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19496 		write_phy_reg(pi, 0xe7, 0);
19497 		write_phy_reg(pi, 0xec, 0);
19498 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19499 			write_phy_reg(pi, 0x342, 0);
19500 			write_phy_reg(pi, 0x343, 0);
19501 			write_phy_reg(pi, 0x346, 0);
19502 			write_phy_reg(pi, 0x347, 0);
19503 		}
19504 		write_phy_reg(pi, 0xe5, 0);
19505 		write_phy_reg(pi, 0xe6, 0);
19506 	} else {
19507 		write_phy_reg(pi, 0xec, 0);
19508 	}
19509 
19510 	write_phy_reg(pi, 0x91, 0);
19511 	write_phy_reg(pi, 0x92, 0);
19512 	if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19513 		write_phy_reg(pi, 0x93, 0);
19514 		write_phy_reg(pi, 0x94, 0);
19515 	}
19516 
19517 	and_phy_reg(pi, 0xa1, ~3);
19518 
19519 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19520 		write_phy_reg(pi, 0x8f, 0);
19521 		write_phy_reg(pi, 0xa5, 0);
19522 	} else {
19523 		write_phy_reg(pi, 0xa5, 0);
19524 	}
19525 
19526 	if (NREV_IS(pi->pubpi.phy_rev, 2))
19527 		mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19528 	else if (NREV_LT(pi->pubpi.phy_rev, 2))
19529 		mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19530 
19531 	write_phy_reg(pi, 0x203, 32);
19532 	write_phy_reg(pi, 0x201, 32);
19533 
19534 	if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19535 		write_phy_reg(pi, 0x20d, 160);
19536 	else
19537 		write_phy_reg(pi, 0x20d, 184);
19538 
19539 	write_phy_reg(pi, 0x13a, 200);
19540 
19541 	write_phy_reg(pi, 0x70, 80);
19542 
19543 	write_phy_reg(pi, 0x1ff, 48);
19544 
19545 	if (NREV_LT(pi->pubpi.phy_rev, 8))
19546 		wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19547 
19548 	wlc_phy_stf_chain_upd_nphy(pi);
19549 
19550 	if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19551 		write_phy_reg(pi, 0x180, 0xaa8);
19552 		write_phy_reg(pi, 0x181, 0x9a4);
19553 	}
19554 
19555 	if (PHY_IPA(pi)) {
19556 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19557 
19558 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19559 				    0x29b, (0x1 << 0), (1) << 0);
19560 
19561 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19562 				    0x29c, (0x1ff << 7),
19563 				    (pi->nphy_papd_epsilon_offset[core]) << 7);
19564 
19565 		}
19566 
19567 		wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19568 	} else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19569 		wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19570 	}
19571 
19572 	wlc_phy_workarounds_nphy(pi);
19573 
19574 	wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19575 
19576 	val = read_phy_reg(pi, 0x01);
19577 	write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19578 	write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19579 	wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19580 
19581 	wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19582 
19583 	wlc_phy_pa_override_nphy(pi, OFF);
19584 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19585 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19586 	wlc_phy_pa_override_nphy(pi, ON);
19587 
19588 	wlc_phy_classifier_nphy(pi, 0, 0);
19589 	wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19590 
19591 	if (CHSPEC_IS2G(pi->radio_chanspec))
19592 		wlc_phy_bphy_init_nphy(pi);
19593 
19594 	tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19595 	wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19596 
19597 	wlc_phy_txpwr_fixpower_nphy(pi);
19598 
19599 	wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19600 
19601 	wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19602 
19603 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19604 		u32 *tx_pwrctrl_tbl = NULL;
19605 		u16 idx;
19606 		s16 pga_gn = 0;
19607 		s16 pad_gn = 0;
19608 		s32 rfpwr_offset;
19609 
19610 		if (PHY_IPA(pi)) {
19611 			tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19612 		} else {
19613 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
19614 				if (NREV_IS(pi->pubpi.phy_rev, 3))
19615 					tx_pwrctrl_tbl =
19616 						nphy_tpc_5GHz_txgain_rev3;
19617 				else if (NREV_IS(pi->pubpi.phy_rev, 4))
19618 					tx_pwrctrl_tbl =
19619 						(pi->srom_fem5g.extpagain ==
19620 						 3) ?
19621 						nphy_tpc_5GHz_txgain_HiPwrEPA :
19622 						nphy_tpc_5GHz_txgain_rev4;
19623 				else
19624 					tx_pwrctrl_tbl =
19625 						nphy_tpc_5GHz_txgain_rev5;
19626 			} else {
19627 				if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19628 					if (pi->pubpi.radiorev == 5)
19629 						tx_pwrctrl_tbl =
19630 						   nphy_tpc_txgain_epa_2057rev5;
19631 					else if (pi->pubpi.radiorev == 3)
19632 						tx_pwrctrl_tbl =
19633 						   nphy_tpc_txgain_epa_2057rev3;
19634 				} else {
19635 					if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19636 					    (pi->srom_fem2g.extpagain == 3))
19637 						tx_pwrctrl_tbl =
19638 						       nphy_tpc_txgain_HiPwrEPA;
19639 					else
19640 						tx_pwrctrl_tbl =
19641 							nphy_tpc_txgain_rev3;
19642 				}
19643 			}
19644 		}
19645 
19646 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19647 					 192, 32, tx_pwrctrl_tbl);
19648 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19649 					 192, 32, tx_pwrctrl_tbl);
19650 
19651 		pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19652 
19653 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19654 
19655 			for (idx = 0; idx < 128; idx++) {
19656 				pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19657 				pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19658 				rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19659 								 pad_gn);
19660 				wlc_phy_table_write_nphy(
19661 					pi,
19662 					NPHY_TBL_ID_CORE1TXPWRCTL,
19663 					1, 576 + idx, 32,
19664 					&rfpwr_offset);
19665 				wlc_phy_table_write_nphy(
19666 					pi,
19667 					NPHY_TBL_ID_CORE2TXPWRCTL,
19668 					1, 576 + idx, 32,
19669 					&rfpwr_offset);
19670 			}
19671 		} else {
19672 
19673 			for (idx = 0; idx < 128; idx++) {
19674 				pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19675 				if (CHSPEC_IS2G(pi->radio_chanspec))
19676 					rfpwr_offset = (s16)
19677 						 nphy_papd_pga_gain_delta_ipa_2g
19678 								       [pga_gn];
19679 				else
19680 					rfpwr_offset = (s16)
19681 						 nphy_papd_pga_gain_delta_ipa_5g
19682 								       [pga_gn];
19683 
19684 				wlc_phy_table_write_nphy(
19685 					pi,
19686 					NPHY_TBL_ID_CORE1TXPWRCTL,
19687 					1, 576 + idx, 32,
19688 					&rfpwr_offset);
19689 				wlc_phy_table_write_nphy(
19690 					pi,
19691 					NPHY_TBL_ID_CORE2TXPWRCTL,
19692 					1, 576 + idx, 32,
19693 					&rfpwr_offset);
19694 			}
19695 
19696 		}
19697 	} else {
19698 
19699 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19700 					 192, 32, nphy_tpc_txgain);
19701 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19702 					 192, 32, nphy_tpc_txgain);
19703 	}
19704 
19705 	if (pi->sh->phyrxchain != 0x3)
19706 		wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19707 					     pi->sh->phyrxchain);
19708 
19709 	if (PHY_PERICAL_MPHASE_PENDING(pi))
19710 		wlc_phy_cal_perical_mphase_restart(pi);
19711 
19712 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19713 		do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19714 			      (pi->nphy_rssical_chanspec_2G == 0) :
19715 			      (pi->nphy_rssical_chanspec_5G == 0);
19716 
19717 		if (do_rssi_cal)
19718 			wlc_phy_rssi_cal_nphy(pi);
19719 		else
19720 			wlc_phy_restore_rssical_nphy(pi);
19721 	} else {
19722 		wlc_phy_rssi_cal_nphy(pi);
19723 	}
19724 
19725 	if (!SCAN_RM_IN_PROGRESS(pi))
19726 		do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19727 			      (pi->nphy_iqcal_chanspec_2G == 0) :
19728 			      (pi->nphy_iqcal_chanspec_5G == 0);
19729 
19730 	if (!pi->do_initcal)
19731 		do_nphy_cal = false;
19732 
19733 	if (do_nphy_cal) {
19734 
19735 		target_gain = wlc_phy_get_tx_gain_nphy(pi);
19736 
19737 		if (pi->antsel_type == ANTSEL_2x3)
19738 			wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19739 					    true);
19740 
19741 		if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19742 			wlc_phy_rssi_cal_nphy(pi);
19743 
19744 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19745 				pi->nphy_cal_orig_pwr_idx[0] =
19746 					pi->nphy_txpwrindex[PHY_CORE_0]
19747 					.
19748 					index_internal;
19749 				pi->nphy_cal_orig_pwr_idx[1] =
19750 					pi->nphy_txpwrindex[PHY_CORE_1]
19751 					.
19752 					index_internal;
19753 
19754 				wlc_phy_precal_txgain_nphy(pi);
19755 				target_gain =
19756 					wlc_phy_get_tx_gain_nphy(pi);
19757 			}
19758 
19759 			if (wlc_phy_cal_txiqlo_nphy
19760 				    (pi, target_gain, true,
19761 				    false) == 0) {
19762 				if (wlc_phy_cal_rxiq_nphy
19763 					    (pi, target_gain, 2,
19764 					    false) == 0)
19765 					wlc_phy_savecal_nphy(pi);
19766 
19767 			}
19768 		} else if (pi->mphase_cal_phase_id ==
19769 			   MPHASE_CAL_STATE_IDLE) {
19770 			wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19771 					    PHY_PERICAL_PHYINIT);
19772 		}
19773 	} else {
19774 		wlc_phy_restorecal_nphy(pi);
19775 	}
19776 
19777 	wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19778 
19779 	wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19780 
19781 	wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19782 
19783 	if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19784 
19785 		write_phy_reg(pi, 0x70, 50);
19786 
19787 	wlc_phy_txlpfbw_nphy(pi);
19788 
19789 	wlc_phy_spurwar_nphy(pi);
19790 
19791 }
19792 
wlc_phy_resetcca_nphy(struct brcms_phy * pi)19793 static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19794 {
19795 	u16 val;
19796 
19797 	wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19798 
19799 	val = read_phy_reg(pi, 0x01);
19800 	write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19801 	udelay(1);
19802 	write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19803 
19804 	wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19805 
19806 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19807 }
19808 
wlc_phy_pa_override_nphy(struct brcms_phy * pi,bool en)19809 void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19810 {
19811 	u16 rfctrlintc_override_val;
19812 
19813 	if (!en) {
19814 
19815 		pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19816 		pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19817 
19818 		if (NREV_GE(pi->pubpi.phy_rev, 7))
19819 			rfctrlintc_override_val = 0x1480;
19820 		else if (NREV_GE(pi->pubpi.phy_rev, 3))
19821 			rfctrlintc_override_val =
19822 				CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19823 		else
19824 			rfctrlintc_override_val =
19825 				CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19826 
19827 		write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19828 		write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19829 	} else {
19830 		write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19831 		write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19832 	}
19833 
19834 }
19835 
wlc_phy_stf_chain_upd_nphy(struct brcms_phy * pi)19836 void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19837 {
19838 
19839 	u16 txrx_chain =
19840 		(NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19841 	bool CoreActv_override = false;
19842 
19843 	if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19844 		txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19845 		CoreActv_override = true;
19846 
19847 		if (NREV_LE(pi->pubpi.phy_rev, 2))
19848 			and_phy_reg(pi, 0xa0, ~0x20);
19849 	} else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19850 		txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19851 		CoreActv_override = true;
19852 
19853 		if (NREV_LE(pi->pubpi.phy_rev, 2))
19854 			or_phy_reg(pi, 0xa0, 0x20);
19855 	}
19856 
19857 	mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19858 
19859 	if (CoreActv_override) {
19860 		pi->nphy_perical = PHY_PERICAL_DISABLE;
19861 		or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19862 	} else {
19863 		pi->nphy_perical = PHY_PERICAL_MPHASE;
19864 		and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19865 	}
19866 }
19867 
wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub * pih,u8 rxcore_bitmask)19868 void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19869 {
19870 	u16 regval;
19871 	u16 tbl_buf[16];
19872 	uint i;
19873 	struct brcms_phy *pi = (struct brcms_phy *) pih;
19874 	u16 tbl_opcode;
19875 	bool suspend;
19876 
19877 	pi->sh->phyrxchain = rxcore_bitmask;
19878 
19879 	if (!pi->sh->clk)
19880 		return;
19881 
19882 	suspend = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
19883 			 MCTL_EN_MAC));
19884 	if (!suspend)
19885 		wlapi_suspend_mac_and_wait(pi->sh->physhim);
19886 
19887 	if (pi->phyhang_avoid)
19888 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
19889 
19890 	regval = read_phy_reg(pi, 0xa2);
19891 	regval &= ~(0xf << 4);
19892 	regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19893 	write_phy_reg(pi, 0xa2, regval);
19894 
19895 	if ((rxcore_bitmask & 0x3) != 0x3) {
19896 
19897 		write_phy_reg(pi, 0x20e, 1);
19898 
19899 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19900 			if (pi->rx2tx_biasentry == -1) {
19901 				wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19902 							ARRAY_SIZE(tbl_buf), 80,
19903 							16, tbl_buf);
19904 
19905 				for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19906 					if (tbl_buf[i] ==
19907 					    NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19908 						pi->rx2tx_biasentry = (u8) i;
19909 						tbl_opcode =
19910 							NPHY_REV3_RFSEQ_CMD_NOP;
19911 						wlc_phy_table_write_nphy(
19912 							pi,
19913 							NPHY_TBL_ID_RFSEQ,
19914 							1, i,
19915 							16,
19916 							&tbl_opcode);
19917 						break;
19918 					} else if (tbl_buf[i] ==
19919 						   NPHY_REV3_RFSEQ_CMD_END)
19920 						break;
19921 				}
19922 			}
19923 		}
19924 	} else {
19925 
19926 		write_phy_reg(pi, 0x20e, 30);
19927 
19928 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19929 			if (pi->rx2tx_biasentry != -1) {
19930 				tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19931 				wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19932 							 1, pi->rx2tx_biasentry,
19933 							 16, &tbl_opcode);
19934 				pi->rx2tx_biasentry = -1;
19935 			}
19936 		}
19937 	}
19938 
19939 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19940 
19941 	if (pi->phyhang_avoid)
19942 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
19943 
19944 	if (!suspend)
19945 		wlapi_enable_mac(pi->sh->physhim);
19946 }
19947 
wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub * pih)19948 u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19949 {
19950 	u16 regval, rxen_bits;
19951 	struct brcms_phy *pi = (struct brcms_phy *) pih;
19952 
19953 	regval = read_phy_reg(pi, 0xa2);
19954 	rxen_bits = (regval >> 4) & 0xf;
19955 
19956 	return (u8) rxen_bits;
19957 }
19958 
wlc_phy_n_txpower_ipa_ison(struct brcms_phy * pi)19959 bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19960 {
19961 	return PHY_IPA(pi);
19962 }
19963 
wlc_phy_cal_init_nphy(struct brcms_phy * pi)19964 void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19965 {
19966 }
19967 
wlc_phy_radio_preinit_205x(struct brcms_phy * pi)19968 static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19969 {
19970 
19971 	and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
19972 	and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
19973 
19974 	or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
19975 	or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
19976 
19977 }
19978 
wlc_phy_radio_init_2057(struct brcms_phy * pi)19979 static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
19980 {
19981 	struct radio_20xx_regs *regs_2057_ptr = NULL;
19982 
19983 	if (NREV_IS(pi->pubpi.phy_rev, 7)) {
19984 		regs_2057_ptr = regs_2057_rev4;
19985 	} else if (NREV_IS(pi->pubpi.phy_rev, 8)
19986 		   || NREV_IS(pi->pubpi.phy_rev, 9)) {
19987 		switch (pi->pubpi.radiorev) {
19988 		case 5:
19989 
19990 			if (pi->pubpi.radiover == 0x0)
19991 				regs_2057_ptr = regs_2057_rev5;
19992 			else if (pi->pubpi.radiover == 0x1)
19993 				regs_2057_ptr = regs_2057_rev5v1;
19994 			else
19995 				break;
19996 
19997 		case 7:
19998 
19999 			regs_2057_ptr = regs_2057_rev7;
20000 			break;
20001 
20002 		case 8:
20003 
20004 			regs_2057_ptr = regs_2057_rev8;
20005 			break;
20006 
20007 		default:
20008 			break;
20009 		}
20010 	}
20011 
20012 	wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
20013 }
20014 
wlc_phy_radio205x_rcal(struct brcms_phy * pi)20015 static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
20016 {
20017 	u16 rcal_reg = 0;
20018 	int i;
20019 
20020 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20021 
20022 		if (pi->pubpi.radiorev == 5) {
20023 
20024 			and_phy_reg(pi, 0x342, ~(0x1 << 1));
20025 
20026 			udelay(10);
20027 
20028 			mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
20029 			mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
20030 				      0x1);
20031 		}
20032 		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
20033 
20034 		udelay(10);
20035 
20036 		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
20037 
20038 		for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20039 			rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
20040 			if (rcal_reg & 0x1)
20041 				break;
20042 
20043 			udelay(100);
20044 		}
20045 
20046 		if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
20047 			 "HW error: radio calib2"))
20048 			return 0;
20049 
20050 		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
20051 
20052 		rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
20053 
20054 		mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
20055 		if (pi->pubpi.radiorev == 5) {
20056 
20057 			mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
20058 			mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
20059 				      0x0);
20060 		}
20061 
20062 		if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
20063 
20064 			mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
20065 				      rcal_reg);
20066 			mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
20067 				      rcal_reg << 2);
20068 		}
20069 
20070 	} else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20071 		u16 savereg;
20072 
20073 		savereg =
20074 			read_radio_reg(
20075 				pi,
20076 				RADIO_2056_SYN_PLL_MAST2 |
20077 				RADIO_2056_SYN);
20078 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
20079 				savereg | 0x7);
20080 		udelay(10);
20081 
20082 		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20083 				0x1);
20084 		udelay(10);
20085 
20086 		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20087 				0x9);
20088 
20089 		for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20090 			rcal_reg = read_radio_reg(
20091 				pi,
20092 				RADIO_2056_SYN_RCAL_CODE_OUT |
20093 				RADIO_2056_SYN);
20094 			if (rcal_reg & 0x80)
20095 				break;
20096 
20097 			udelay(100);
20098 		}
20099 
20100 		if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
20101 			 "HW error: radio calib3"))
20102 			return 0;
20103 
20104 		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20105 				0x1);
20106 
20107 		rcal_reg =
20108 			read_radio_reg(pi,
20109 				       RADIO_2056_SYN_RCAL_CODE_OUT |
20110 				       RADIO_2056_SYN);
20111 
20112 		write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20113 				0x0);
20114 
20115 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
20116 				savereg);
20117 
20118 		return rcal_reg & 0x1f;
20119 	}
20120 	return rcal_reg & 0x3e;
20121 }
20122 
wlc_phy_radio2057_rccal(struct brcms_phy * pi)20123 static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
20124 {
20125 	u16 rccal_valid;
20126 	int i;
20127 	bool chip43226_6362A0;
20128 
20129 	chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
20130 			    || (pi->pubpi.radiorev == 4)
20131 			    || (pi->pubpi.radiorev == 6));
20132 
20133 	rccal_valid = 0;
20134 	if (chip43226_6362A0) {
20135 		write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
20136 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
20137 	} else {
20138 		write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
20139 
20140 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
20141 	}
20142 	write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20143 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20144 
20145 	for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20146 		rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20147 		if (rccal_valid & 0x2)
20148 			break;
20149 
20150 		udelay(500);
20151 	}
20152 
20153 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20154 
20155 	rccal_valid = 0;
20156 	if (chip43226_6362A0) {
20157 		write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
20158 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20159 	} else {
20160 		write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
20161 
20162 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
20163 	}
20164 	write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20165 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20166 
20167 	for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20168 		rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20169 		if (rccal_valid & 0x2)
20170 			break;
20171 
20172 		udelay(500);
20173 	}
20174 
20175 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20176 
20177 	rccal_valid = 0;
20178 	if (chip43226_6362A0) {
20179 		write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
20180 
20181 		write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
20182 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20183 	} else {
20184 		write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
20185 		write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20186 		write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
20187 	}
20188 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20189 
20190 	for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20191 		rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20192 		if (rccal_valid & 0x2)
20193 			break;
20194 
20195 		udelay(500);
20196 	}
20197 
20198 	if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
20199 		return 0;
20200 
20201 	write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20202 
20203 	return rccal_valid;
20204 }
20205 
wlc_phy_radio_postinit_2057(struct brcms_phy * pi)20206 static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
20207 {
20208 
20209 	mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
20210 
20211 	mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
20212 	mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
20213 	mdelay(2);
20214 	mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
20215 	mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
20216 
20217 	if (pi->phy_init_por) {
20218 		wlc_phy_radio205x_rcal(pi);
20219 		wlc_phy_radio2057_rccal(pi);
20220 	}
20221 
20222 	mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
20223 }
20224 
wlc_phy_radio_init_2056(struct brcms_phy * pi)20225 static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
20226 {
20227 	const struct radio_regs *regs_SYN_2056_ptr = NULL;
20228 	const struct radio_regs *regs_TX_2056_ptr = NULL;
20229 	const struct radio_regs *regs_RX_2056_ptr = NULL;
20230 
20231 	if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20232 		regs_SYN_2056_ptr = regs_SYN_2056;
20233 		regs_TX_2056_ptr = regs_TX_2056;
20234 		regs_RX_2056_ptr = regs_RX_2056;
20235 	} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20236 		regs_SYN_2056_ptr = regs_SYN_2056_A1;
20237 		regs_TX_2056_ptr = regs_TX_2056_A1;
20238 		regs_RX_2056_ptr = regs_RX_2056_A1;
20239 	} else {
20240 		switch (pi->pubpi.radiorev) {
20241 		case 5:
20242 			regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20243 			regs_TX_2056_ptr = regs_TX_2056_rev5;
20244 			regs_RX_2056_ptr = regs_RX_2056_rev5;
20245 			break;
20246 
20247 		case 6:
20248 			regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20249 			regs_TX_2056_ptr = regs_TX_2056_rev6;
20250 			regs_RX_2056_ptr = regs_RX_2056_rev6;
20251 			break;
20252 
20253 		case 7:
20254 		case 9:
20255 			regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20256 			regs_TX_2056_ptr = regs_TX_2056_rev7;
20257 			regs_RX_2056_ptr = regs_RX_2056_rev7;
20258 			break;
20259 
20260 		case 8:
20261 			regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20262 			regs_TX_2056_ptr = regs_TX_2056_rev8;
20263 			regs_RX_2056_ptr = regs_RX_2056_rev8;
20264 			break;
20265 
20266 		case 11:
20267 			regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20268 			regs_TX_2056_ptr = regs_TX_2056_rev11;
20269 			regs_RX_2056_ptr = regs_RX_2056_rev11;
20270 			break;
20271 
20272 		default:
20273 			break;
20274 		}
20275 	}
20276 
20277 	wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20278 
20279 	wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20280 
20281 	wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20282 
20283 	wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20284 
20285 	wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20286 }
20287 
wlc_phy_radio_postinit_2056(struct brcms_phy * pi)20288 static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20289 {
20290 	mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20291 
20292 	mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20293 	mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20294 	udelay(1000);
20295 	mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20296 
20297 	if ((pi->sh->boardflags2 & BFL2_LEGACY)
20298 	    || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20299 		mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20300 	else
20301 		mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20302 
20303 	mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20304 
20305 	if (pi->phy_init_por)
20306 		wlc_phy_radio205x_rcal(pi);
20307 }
20308 
wlc_phy_radio_preinit_2055(struct brcms_phy * pi)20309 static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20310 {
20311 
20312 	and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20313 	or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20314 
20315 	or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20316 }
20317 
wlc_phy_radio_init_2055(struct brcms_phy * pi)20318 static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20319 {
20320 	wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20321 }
20322 
wlc_phy_radio_postinit_2055(struct brcms_phy * pi)20323 static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20324 {
20325 
20326 	and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20327 		      ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20328 
20329 	if (((pi->sh->sromrev >= 4)
20330 	     && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20331 	    || ((pi->sh->sromrev < 4))) {
20332 		and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20333 		and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20334 	}
20335 
20336 	mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20337 	write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20338 
20339 	and_radio_reg(pi, RADIO_2055_CAL_MISC,
20340 		      ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20341 
20342 	or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20343 
20344 	or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20345 
20346 	udelay(1000);
20347 
20348 	or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20349 
20350 	SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20351 		   RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20352 
20353 	if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20354 		  RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20355 		 "HW error: radio calibration1\n"))
20356 		return;
20357 
20358 	and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20359 		      ~(RADIO_2055_CAL_LPO_ENABLE));
20360 
20361 	wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20362 
20363 	write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20364 	write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20365 
20366 	write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20367 	write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20368 
20369 	mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20370 		      RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20371 	mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20372 		      RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20373 	if (pi->nphy_gain_boost) {
20374 		and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20375 			      ~(RADIO_2055_GAINBST_DISABLE));
20376 		and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20377 			      ~(RADIO_2055_GAINBST_DISABLE));
20378 	} else {
20379 		or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20380 			     RADIO_2055_GAINBST_DISABLE);
20381 		or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20382 			     RADIO_2055_GAINBST_DISABLE);
20383 	}
20384 
20385 	udelay(2);
20386 }
20387 
wlc_phy_switch_radio_nphy(struct brcms_phy * pi,bool on)20388 void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20389 {
20390 	if (on) {
20391 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20392 			if (!pi->radio_is_on) {
20393 				wlc_phy_radio_preinit_205x(pi);
20394 				wlc_phy_radio_init_2057(pi);
20395 				wlc_phy_radio_postinit_2057(pi);
20396 			}
20397 
20398 			wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20399 					     pi->radio_chanspec);
20400 		} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20401 			wlc_phy_radio_preinit_205x(pi);
20402 			wlc_phy_radio_init_2056(pi);
20403 			wlc_phy_radio_postinit_2056(pi);
20404 
20405 			wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20406 					     pi->radio_chanspec);
20407 		} else {
20408 			wlc_phy_radio_preinit_2055(pi);
20409 			wlc_phy_radio_init_2055(pi);
20410 			wlc_phy_radio_postinit_2055(pi);
20411 		}
20412 
20413 		pi->radio_is_on = true;
20414 
20415 	} else {
20416 
20417 		if (NREV_GE(pi->pubpi.phy_rev, 3)
20418 		    && NREV_LT(pi->pubpi.phy_rev, 7)) {
20419 			and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20420 			mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20421 
20422 			write_radio_reg(pi,
20423 					RADIO_2056_TX_PADA_BOOST_TUNE |
20424 					RADIO_2056_TX0, 0);
20425 			write_radio_reg(pi,
20426 					RADIO_2056_TX_PADG_BOOST_TUNE |
20427 					RADIO_2056_TX0, 0);
20428 			write_radio_reg(pi,
20429 					RADIO_2056_TX_PGAA_BOOST_TUNE |
20430 					RADIO_2056_TX0, 0);
20431 			write_radio_reg(pi,
20432 					RADIO_2056_TX_PGAG_BOOST_TUNE |
20433 					RADIO_2056_TX0, 0);
20434 			mod_radio_reg(pi,
20435 				      RADIO_2056_TX_MIXA_BOOST_TUNE |
20436 				      RADIO_2056_TX0, 0xf0, 0);
20437 			write_radio_reg(pi,
20438 					RADIO_2056_TX_MIXG_BOOST_TUNE |
20439 					RADIO_2056_TX0, 0);
20440 
20441 			write_radio_reg(pi,
20442 					RADIO_2056_TX_PADA_BOOST_TUNE |
20443 					RADIO_2056_TX1, 0);
20444 			write_radio_reg(pi,
20445 					RADIO_2056_TX_PADG_BOOST_TUNE |
20446 					RADIO_2056_TX1, 0);
20447 			write_radio_reg(pi,
20448 					RADIO_2056_TX_PGAA_BOOST_TUNE |
20449 					RADIO_2056_TX1, 0);
20450 			write_radio_reg(pi,
20451 					RADIO_2056_TX_PGAG_BOOST_TUNE |
20452 					RADIO_2056_TX1, 0);
20453 			mod_radio_reg(pi,
20454 				      RADIO_2056_TX_MIXA_BOOST_TUNE |
20455 				      RADIO_2056_TX1, 0xf0, 0);
20456 			write_radio_reg(pi,
20457 					RADIO_2056_TX_MIXG_BOOST_TUNE |
20458 					RADIO_2056_TX1, 0);
20459 
20460 			pi->radio_is_on = false;
20461 		}
20462 
20463 		if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20464 			and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20465 			pi->radio_is_on = false;
20466 		}
20467 
20468 	}
20469 }
20470 
20471 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)20472 wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20473 		       const struct chan_info_nphy_radio2057 **t0,
20474 		       const struct chan_info_nphy_radio205x **t1,
20475 		       const struct chan_info_nphy_radio2057_rev5 **t2,
20476 		       const struct chan_info_nphy_2055 **t3)
20477 {
20478 	uint i;
20479 	const struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20480 	const struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20481 	const struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20482 	u32 tbl_len = 0;
20483 
20484 	int freq = 0;
20485 
20486 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20487 
20488 		if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20489 
20490 			chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20491 			tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20492 
20493 		} else if (NREV_IS(pi->pubpi.phy_rev, 8)
20494 			   || NREV_IS(pi->pubpi.phy_rev, 9)) {
20495 			switch (pi->pubpi.radiorev) {
20496 
20497 			case 5:
20498 
20499 				if (pi->pubpi.radiover == 0x0) {
20500 
20501 					chan_info_tbl_p_2 =
20502 						chan_info_nphyrev8_2057_rev5;
20503 					tbl_len = ARRAY_SIZE(
20504 						  chan_info_nphyrev8_2057_rev5);
20505 
20506 				} else if (pi->pubpi.radiover == 0x1) {
20507 
20508 					chan_info_tbl_p_2 =
20509 						chan_info_nphyrev9_2057_rev5v1;
20510 					tbl_len = ARRAY_SIZE(
20511 						chan_info_nphyrev9_2057_rev5v1);
20512 
20513 				}
20514 				break;
20515 
20516 			case 7:
20517 				chan_info_tbl_p_0 =
20518 					chan_info_nphyrev8_2057_rev7;
20519 				tbl_len = ARRAY_SIZE(
20520 						  chan_info_nphyrev8_2057_rev7);
20521 				break;
20522 
20523 			case 8:
20524 				chan_info_tbl_p_0 =
20525 					chan_info_nphyrev8_2057_rev8;
20526 				tbl_len = ARRAY_SIZE(
20527 						  chan_info_nphyrev8_2057_rev8);
20528 				break;
20529 
20530 			default:
20531 				break;
20532 			}
20533 		} else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20534 
20535 			chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20536 			tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20537 		} else {
20538 			goto fail;
20539 		}
20540 
20541 		for (i = 0; i < tbl_len; i++) {
20542 			if (pi->pubpi.radiorev == 5) {
20543 
20544 				if (chan_info_tbl_p_2[i].chan == channel)
20545 					break;
20546 			} else {
20547 
20548 				if (chan_info_tbl_p_0[i].chan == channel)
20549 					break;
20550 			}
20551 		}
20552 
20553 		if (i >= tbl_len)
20554 			goto fail;
20555 
20556 		if (pi->pubpi.radiorev == 5) {
20557 			*t2 = &chan_info_tbl_p_2[i];
20558 			freq = chan_info_tbl_p_2[i].freq;
20559 		} else {
20560 			*t0 = &chan_info_tbl_p_0[i];
20561 			freq = chan_info_tbl_p_0[i].freq;
20562 		}
20563 
20564 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20565 		if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20566 			chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20567 			tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20568 		} else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20569 			chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20570 			tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20571 		} else if (NREV_IS(pi->pubpi.phy_rev, 5)
20572 			   || NREV_IS(pi->pubpi.phy_rev, 6)) {
20573 			switch (pi->pubpi.radiorev) {
20574 			case 5:
20575 				chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20576 				tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20577 				break;
20578 			case 6:
20579 				chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20580 				tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20581 				break;
20582 			case 7:
20583 			case 9:
20584 				chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20585 				tbl_len =
20586 					ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20587 				break;
20588 			case 8:
20589 				chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20590 				tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20591 				break;
20592 			case 11:
20593 				chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20594 				tbl_len = ARRAY_SIZE(
20595 						    chan_info_nphyrev6_2056v11);
20596 				break;
20597 			default:
20598 				break;
20599 			}
20600 		}
20601 
20602 		for (i = 0; i < tbl_len; i++) {
20603 			if (chan_info_tbl_p_1[i].chan == channel)
20604 				break;
20605 		}
20606 
20607 		if (i >= tbl_len)
20608 			goto fail;
20609 
20610 		*t1 = &chan_info_tbl_p_1[i];
20611 		freq = chan_info_tbl_p_1[i].freq;
20612 
20613 	} else {
20614 		for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20615 			if (chan_info_nphy_2055[i].chan == channel)
20616 				break;
20617 
20618 		if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20619 			goto fail;
20620 
20621 		*t3 = &chan_info_nphy_2055[i];
20622 		freq = chan_info_nphy_2055[i].freq;
20623 	}
20624 
20625 	*f = freq;
20626 	return true;
20627 
20628 fail:
20629 	*f = WL_CHAN_FREQ_RANGE_2G;
20630 	return false;
20631 }
20632 
wlc_phy_get_chan_freq_range_nphy(struct brcms_phy * pi,uint channel)20633 u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20634 {
20635 	int freq;
20636 	const struct chan_info_nphy_radio2057 *t0 = NULL;
20637 	const struct chan_info_nphy_radio205x *t1 = NULL;
20638 	const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20639 	const struct chan_info_nphy_2055 *t3 = NULL;
20640 
20641 	if (channel == 0)
20642 		channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20643 
20644 	wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20645 
20646 	if (CHSPEC_IS2G(pi->radio_chanspec))
20647 		return WL_CHAN_FREQ_RANGE_2G;
20648 
20649 	if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20650 		return WL_CHAN_FREQ_RANGE_5GL;
20651 	else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20652 		return WL_CHAN_FREQ_RANGE_5GM;
20653 	else
20654 		return WL_CHAN_FREQ_RANGE_5GH;
20655 }
20656 
20657 static void
wlc_phy_chanspec_radio2055_setup(struct brcms_phy * pi,const struct chan_info_nphy_2055 * ci)20658 wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20659 				 const struct chan_info_nphy_2055 *ci)
20660 {
20661 
20662 	write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20663 	write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20664 	write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20665 	write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20666 
20667 	BRCMS_PHY_WAR_PR51571(pi);
20668 
20669 	write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20670 	write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20671 	write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20672 	write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20673 
20674 	BRCMS_PHY_WAR_PR51571(pi);
20675 
20676 	write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20677 	write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20678 	write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20679 	write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20680 
20681 	BRCMS_PHY_WAR_PR51571(pi);
20682 
20683 	write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20684 			ci->RF_core1_lgbuf_a_tune);
20685 	write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20686 			ci->RF_core1_lgbuf_g_tune);
20687 	write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20688 	write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20689 			ci->RF_core1_tx_pga_pad_tn);
20690 
20691 	BRCMS_PHY_WAR_PR51571(pi);
20692 
20693 	write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20694 			ci->RF_core1_tx_mx_bgtrim);
20695 	write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20696 			ci->RF_core2_lgbuf_a_tune);
20697 	write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20698 			ci->RF_core2_lgbuf_g_tune);
20699 	write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20700 
20701 	BRCMS_PHY_WAR_PR51571(pi);
20702 
20703 	write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20704 			ci->RF_core2_tx_pga_pad_tn);
20705 	write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20706 			ci->RF_core2_tx_mx_bgtrim);
20707 
20708 	udelay(50);
20709 
20710 	write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20711 	write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20712 
20713 	BRCMS_PHY_WAR_PR51571(pi);
20714 
20715 	write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20716 
20717 	udelay(300);
20718 }
20719 
20720 static void
wlc_phy_chanspec_radio2056_setup(struct brcms_phy * pi,const struct chan_info_nphy_radio205x * ci)20721 wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20722 				 const struct chan_info_nphy_radio205x *ci)
20723 {
20724 	const struct radio_regs *regs_SYN_2056_ptr = NULL;
20725 
20726 	write_radio_reg(pi,
20727 			RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20728 			ci->RF_SYN_pll_vcocal1);
20729 	write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20730 			ci->RF_SYN_pll_vcocal2);
20731 	write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20732 			ci->RF_SYN_pll_refdiv);
20733 	write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20734 			ci->RF_SYN_pll_mmd2);
20735 	write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20736 			ci->RF_SYN_pll_mmd1);
20737 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20738 			ci->RF_SYN_pll_loopfilter1);
20739 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20740 			ci->RF_SYN_pll_loopfilter2);
20741 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20742 			ci->RF_SYN_pll_loopfilter3);
20743 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20744 			ci->RF_SYN_pll_loopfilter4);
20745 	write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20746 			ci->RF_SYN_pll_loopfilter5);
20747 	write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20748 			ci->RF_SYN_reserved_addr27);
20749 	write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20750 			ci->RF_SYN_reserved_addr28);
20751 	write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20752 			ci->RF_SYN_reserved_addr29);
20753 	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20754 			ci->RF_SYN_logen_VCOBUF1);
20755 	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20756 			ci->RF_SYN_logen_MIXER2);
20757 	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20758 			ci->RF_SYN_logen_BUF3);
20759 	write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20760 			ci->RF_SYN_logen_BUF4);
20761 
20762 	write_radio_reg(pi,
20763 			RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20764 			ci->RF_RX0_lnaa_tune);
20765 	write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20766 			ci->RF_RX0_lnag_tune);
20767 	write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20768 			ci->RF_TX0_intpaa_boost_tune);
20769 	write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20770 			ci->RF_TX0_intpag_boost_tune);
20771 	write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20772 			ci->RF_TX0_pada_boost_tune);
20773 	write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20774 			ci->RF_TX0_padg_boost_tune);
20775 	write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20776 			ci->RF_TX0_pgaa_boost_tune);
20777 	write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20778 			ci->RF_TX0_pgag_boost_tune);
20779 	write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20780 			ci->RF_TX0_mixa_boost_tune);
20781 	write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20782 			ci->RF_TX0_mixg_boost_tune);
20783 
20784 	write_radio_reg(pi,
20785 			RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20786 			ci->RF_RX1_lnaa_tune);
20787 	write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20788 			ci->RF_RX1_lnag_tune);
20789 	write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20790 			ci->RF_TX1_intpaa_boost_tune);
20791 	write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20792 			ci->RF_TX1_intpag_boost_tune);
20793 	write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20794 			ci->RF_TX1_pada_boost_tune);
20795 	write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20796 			ci->RF_TX1_padg_boost_tune);
20797 	write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20798 			ci->RF_TX1_pgaa_boost_tune);
20799 	write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20800 			ci->RF_TX1_pgag_boost_tune);
20801 	write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20802 			ci->RF_TX1_mixa_boost_tune);
20803 	write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20804 			ci->RF_TX1_mixg_boost_tune);
20805 
20806 	if (NREV_IS(pi->pubpi.phy_rev, 3))
20807 		regs_SYN_2056_ptr = regs_SYN_2056;
20808 	else if (NREV_IS(pi->pubpi.phy_rev, 4))
20809 		regs_SYN_2056_ptr = regs_SYN_2056_A1;
20810 	else {
20811 		switch (pi->pubpi.radiorev) {
20812 		case 5:
20813 			regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20814 			break;
20815 		case 6:
20816 			regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20817 			break;
20818 		case 7:
20819 		case 9:
20820 			regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20821 			break;
20822 		case 8:
20823 			regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20824 			break;
20825 		case 11:
20826 			regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20827 			break;
20828 		}
20829 	}
20830 	if (CHSPEC_IS2G(pi->radio_chanspec))
20831 		write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20832 				RADIO_2056_SYN,
20833 				(u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20834 	else
20835 		write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20836 				RADIO_2056_SYN,
20837 				(u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20838 
20839 	if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20840 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
20841 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20842 					RADIO_2056_SYN, 0x1f);
20843 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20844 					RADIO_2056_SYN, 0x1f);
20845 
20846 			write_radio_reg(pi,
20847 					RADIO_2056_SYN_PLL_LOOPFILTER4 |
20848 					RADIO_2056_SYN, 0xb);
20849 			write_radio_reg(pi,
20850 					RADIO_2056_SYN_PLL_CP2 |
20851 					RADIO_2056_SYN, 0x14);
20852 		}
20853 	}
20854 
20855 	if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20856 	    (CHSPEC_IS2G(pi->radio_chanspec))) {
20857 		write_radio_reg(pi,
20858 				RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20859 				0x1f);
20860 		write_radio_reg(pi,
20861 				RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20862 				0x1f);
20863 		write_radio_reg(pi,
20864 				RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20865 				0xb);
20866 		write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20867 				0x20);
20868 	}
20869 
20870 	if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20871 		if (CHSPEC_IS5G(pi->radio_chanspec)) {
20872 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20873 					RADIO_2056_SYN, 0x1f);
20874 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20875 					RADIO_2056_SYN, 0x1f);
20876 			write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20877 					RADIO_2056_SYN, 0x5);
20878 			write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20879 					RADIO_2056_SYN, 0xc);
20880 		}
20881 	}
20882 
20883 	if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20884 		u16 pag_boost_tune;
20885 		u16 padg_boost_tune;
20886 		u16 pgag_boost_tune;
20887 		u16 mixg_boost_tune;
20888 		u16 bias, cascbias;
20889 		uint core;
20890 
20891 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20892 
20893 			if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20894 
20895 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20896 						 PADG_IDAC, 0xcc);
20897 
20898 				bias = 0x25;
20899 				cascbias = 0x20;
20900 
20901 				if ((pi->sh->chip ==
20902 				     BCM43224_CHIP_ID)
20903 				    || (pi->sh->chip ==
20904 					BCM43225_CHIP_ID)) {
20905 					if (pi->sh->chippkg ==
20906 					    BCM43224_FAB_SMIC) {
20907 						bias = 0x2a;
20908 						cascbias = 0x38;
20909 					}
20910 				}
20911 
20912 				pag_boost_tune = 0x4;
20913 				pgag_boost_tune = 0x03;
20914 				padg_boost_tune = 0x77;
20915 				mixg_boost_tune = 0x65;
20916 
20917 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20918 						 INTPAG_IMAIN_STAT, bias);
20919 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20920 						 INTPAG_IAUX_STAT, bias);
20921 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20922 						 INTPAG_CASCBIAS, cascbias);
20923 
20924 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20925 						 INTPAG_BOOST_TUNE,
20926 						 pag_boost_tune);
20927 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20928 						 PGAG_BOOST_TUNE,
20929 						 pgag_boost_tune);
20930 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20931 						 PADG_BOOST_TUNE,
20932 						 padg_boost_tune);
20933 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20934 						 MIXG_BOOST_TUNE,
20935 						 mixg_boost_tune);
20936 			} else {
20937 
20938 				bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20939 				       0x40 : 0x20;
20940 
20941 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20942 						 INTPAG_IMAIN_STAT, bias);
20943 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20944 						 INTPAG_IAUX_STAT, bias);
20945 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20946 						 INTPAG_CASCBIAS, 0x30);
20947 			}
20948 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20949 					 0xee);
20950 		}
20951 	}
20952 
20953 	if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20954 	    && CHSPEC_IS5G(pi->radio_chanspec)) {
20955 		u16 paa_boost_tune;
20956 		u16 pada_boost_tune;
20957 		u16 pgaa_boost_tune;
20958 		u16 mixa_boost_tune;
20959 		u16 freq, pabias, cascbias;
20960 		uint core;
20961 
20962 		freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20963 
20964 		if (freq < 5150) {
20965 
20966 			paa_boost_tune = 0xa;
20967 			pada_boost_tune = 0x77;
20968 			pgaa_boost_tune = 0xf;
20969 			mixa_boost_tune = 0xf;
20970 		} else if (freq < 5340) {
20971 
20972 			paa_boost_tune = 0x8;
20973 			pada_boost_tune = 0x77;
20974 			pgaa_boost_tune = 0xfb;
20975 			mixa_boost_tune = 0xf;
20976 		} else if (freq < 5650) {
20977 
20978 			paa_boost_tune = 0x0;
20979 			pada_boost_tune = 0x77;
20980 			pgaa_boost_tune = 0xb;
20981 			mixa_boost_tune = 0xf;
20982 		} else {
20983 
20984 			paa_boost_tune = 0x0;
20985 			pada_boost_tune = 0x77;
20986 			if (freq != 5825)
20987 				pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
20988 			else
20989 				pgaa_boost_tune = 6;
20990 
20991 			mixa_boost_tune = 0xf;
20992 		}
20993 
20994 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20995 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20996 					 INTPAA_BOOST_TUNE, paa_boost_tune);
20997 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20998 					 PADA_BOOST_TUNE, pada_boost_tune);
20999 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21000 					 PGAA_BOOST_TUNE, pgaa_boost_tune);
21001 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21002 					 MIXA_BOOST_TUNE, mixa_boost_tune);
21003 
21004 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21005 					 TXSPARE1, 0x30);
21006 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21007 					 PA_SPARE2, 0xee);
21008 
21009 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21010 					 PADA_CASCBIAS, 0x3);
21011 
21012 			cascbias = 0x30;
21013 
21014 			if ((pi->sh->chip == BCM43224_CHIP_ID) ||
21015 			    (pi->sh->chip == BCM43225_CHIP_ID)) {
21016 				if (pi->sh->chippkg == BCM43224_FAB_SMIC)
21017 					cascbias = 0x35;
21018 			}
21019 
21020 			pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
21021 
21022 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21023 					 INTPAA_IAUX_STAT, pabias);
21024 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21025 					 INTPAA_IMAIN_STAT, pabias);
21026 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21027 					 INTPAA_CASCBIAS, cascbias);
21028 		}
21029 	}
21030 
21031 	udelay(50);
21032 
21033 	wlc_phy_radio205x_vcocal_nphy(pi);
21034 }
21035 
wlc_phy_radio205x_vcocal_nphy(struct brcms_phy * pi)21036 void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
21037 {
21038 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21039 		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
21040 		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
21041 		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
21042 			      (1 << 2));
21043 		mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
21044 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21045 		write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
21046 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
21047 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
21048 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
21049 		write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
21050 	}
21051 
21052 	udelay(300);
21053 }
21054 
21055 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)21056 wlc_phy_chanspec_radio2057_setup(
21057 	struct brcms_phy *pi,
21058 	const struct chan_info_nphy_radio2057 *ci,
21059 	const struct chan_info_nphy_radio2057_rev5 *
21060 	ci2)
21061 {
21062 	int coreNum;
21063 	u16 txmix2g_tune_boost_pu = 0;
21064 	u16 pad2g_tune_pus = 0;
21065 
21066 	if (pi->pubpi.radiorev == 5) {
21067 
21068 		write_radio_reg(pi,
21069 				RADIO_2057_VCOCAL_COUNTVAL0,
21070 				ci2->RF_vcocal_countval0);
21071 		write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
21072 				ci2->RF_vcocal_countval1);
21073 		write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
21074 				ci2->RF_rfpll_refmaster_sparextalsize);
21075 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21076 				ci2->RF_rfpll_loopfilter_r1);
21077 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21078 				ci2->RF_rfpll_loopfilter_c2);
21079 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21080 				ci2->RF_rfpll_loopfilter_c1);
21081 		write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
21082 				ci2->RF_cp_kpd_idac);
21083 		write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
21084 		write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
21085 		write_radio_reg(pi,
21086 				RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
21087 		write_radio_reg(pi,
21088 				RADIO_2057_LOGEN_MX2G_TUNE,
21089 				ci2->RF_logen_mx2g_tune);
21090 		write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
21091 				ci2->RF_logen_indbuf2g_tune);
21092 
21093 		write_radio_reg(pi,
21094 				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
21095 				ci2->RF_txmix2g_tune_boost_pu_core0);
21096 		write_radio_reg(pi,
21097 				RADIO_2057_PAD2G_TUNE_PUS_CORE0,
21098 				ci2->RF_pad2g_tune_pus_core0);
21099 		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
21100 				ci2->RF_lna2g_tune_core0);
21101 
21102 		write_radio_reg(pi,
21103 				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
21104 				ci2->RF_txmix2g_tune_boost_pu_core1);
21105 		write_radio_reg(pi,
21106 				RADIO_2057_PAD2G_TUNE_PUS_CORE1,
21107 				ci2->RF_pad2g_tune_pus_core1);
21108 		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
21109 				ci2->RF_lna2g_tune_core1);
21110 
21111 	} else {
21112 
21113 		write_radio_reg(pi,
21114 				RADIO_2057_VCOCAL_COUNTVAL0,
21115 				ci->RF_vcocal_countval0);
21116 		write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
21117 				ci->RF_vcocal_countval1);
21118 		write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
21119 				ci->RF_rfpll_refmaster_sparextalsize);
21120 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21121 				ci->RF_rfpll_loopfilter_r1);
21122 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21123 				ci->RF_rfpll_loopfilter_c2);
21124 		write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21125 				ci->RF_rfpll_loopfilter_c1);
21126 		write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
21127 		write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
21128 		write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
21129 		write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
21130 		write_radio_reg(pi,
21131 				RADIO_2057_LOGEN_MX2G_TUNE,
21132 				ci->RF_logen_mx2g_tune);
21133 		write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
21134 				ci->RF_logen_mx5g_tune);
21135 		write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
21136 				ci->RF_logen_indbuf2g_tune);
21137 		write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
21138 				ci->RF_logen_indbuf5g_tune);
21139 
21140 		write_radio_reg(pi,
21141 				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
21142 				ci->RF_txmix2g_tune_boost_pu_core0);
21143 		write_radio_reg(pi,
21144 				RADIO_2057_PAD2G_TUNE_PUS_CORE0,
21145 				ci->RF_pad2g_tune_pus_core0);
21146 		write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
21147 				ci->RF_pga_boost_tune_core0);
21148 		write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
21149 				ci->RF_txmix5g_boost_tune_core0);
21150 		write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
21151 				ci->RF_pad5g_tune_misc_pus_core0);
21152 		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
21153 				ci->RF_lna2g_tune_core0);
21154 		write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
21155 				ci->RF_lna5g_tune_core0);
21156 
21157 		write_radio_reg(pi,
21158 				RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
21159 				ci->RF_txmix2g_tune_boost_pu_core1);
21160 		write_radio_reg(pi,
21161 				RADIO_2057_PAD2G_TUNE_PUS_CORE1,
21162 				ci->RF_pad2g_tune_pus_core1);
21163 		write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
21164 				ci->RF_pga_boost_tune_core1);
21165 		write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
21166 				ci->RF_txmix5g_boost_tune_core1);
21167 		write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
21168 				ci->RF_pad5g_tune_misc_pus_core1);
21169 		write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
21170 				ci->RF_lna2g_tune_core1);
21171 		write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
21172 				ci->RF_lna5g_tune_core1);
21173 	}
21174 
21175 	if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
21176 
21177 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
21178 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21179 					0x3f);
21180 			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21181 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21182 					0x8);
21183 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21184 					0x8);
21185 		} else {
21186 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21187 					0x1f);
21188 			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21189 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21190 					0x8);
21191 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21192 					0x8);
21193 		}
21194 	} else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
21195 		   (pi->pubpi.radiorev == 8)) {
21196 
21197 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
21198 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21199 					0x1b);
21200 			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
21201 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21202 					0xa);
21203 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21204 					0xa);
21205 		} else {
21206 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21207 					0x1f);
21208 			write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21209 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21210 					0x8);
21211 			write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21212 					0x8);
21213 		}
21214 
21215 	}
21216 
21217 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
21218 		if (PHY_IPA(pi)) {
21219 			if (pi->pubpi.radiorev == 3)
21220 				txmix2g_tune_boost_pu = 0x6b;
21221 
21222 			if (pi->pubpi.radiorev == 5)
21223 				pad2g_tune_pus = 0x73;
21224 
21225 		} else {
21226 			if (pi->pubpi.radiorev != 5) {
21227 				pad2g_tune_pus = 0x3;
21228 
21229 				txmix2g_tune_boost_pu = 0x61;
21230 			}
21231 		}
21232 
21233 		for (coreNum = 0; coreNum <= 1; coreNum++) {
21234 
21235 			if (txmix2g_tune_boost_pu != 0)
21236 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21237 						 TXMIX2G_TUNE_BOOST_PU,
21238 						 txmix2g_tune_boost_pu);
21239 
21240 			if (pad2g_tune_pus != 0)
21241 				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21242 						 PAD2G_TUNE_PUS,
21243 						 pad2g_tune_pus);
21244 		}
21245 	}
21246 
21247 	udelay(50);
21248 
21249 	wlc_phy_radio205x_vcocal_nphy(pi);
21250 }
21251 
21252 static void
wlc_phy_chanspec_nphy_setup(struct brcms_phy * pi,u16 chanspec,const struct nphy_sfo_cfg * ci)21253 wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21254 			    const struct nphy_sfo_cfg *ci)
21255 {
21256 	u16 val;
21257 
21258 	val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21259 	if (CHSPEC_IS5G(chanspec) && !val) {
21260 
21261 		val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21262 		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21263 		      (val | MAC_PHY_FORCE_CLK));
21264 
21265 		or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21266 			   (BBCFG_RESETCCA | BBCFG_RESETRX));
21267 
21268 		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21269 
21270 		or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21271 	} else if (!CHSPEC_IS5G(chanspec) && val) {
21272 
21273 		and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21274 
21275 		val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21276 		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21277 		      (val | MAC_PHY_FORCE_CLK));
21278 
21279 		and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21280 			    (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
21281 
21282 		bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21283 	}
21284 
21285 	write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21286 	write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21287 	write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21288 
21289 	write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21290 	write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21291 	write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21292 
21293 	if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21294 		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21295 
21296 		or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21297 	} else {
21298 		wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21299 					NPHY_ClassifierCtrl_ofdm_en);
21300 
21301 		if (CHSPEC_IS2G(chanspec))
21302 			and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21303 	}
21304 
21305 	if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21306 		wlc_phy_txpwr_fixpower_nphy(pi);
21307 
21308 	if (NREV_LT(pi->pubpi.phy_rev, 3))
21309 		wlc_phy_adjust_lnagaintbl_nphy(pi);
21310 
21311 	wlc_phy_txlpfbw_nphy(pi);
21312 
21313 	if (NREV_GE(pi->pubpi.phy_rev, 3)
21314 	    && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21315 		u8 spuravoid = 0;
21316 
21317 		val = CHSPEC_CHANNEL(chanspec);
21318 		if (!CHSPEC_IS40(pi->radio_chanspec)) {
21319 			if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21320 				if ((val == 13) || (val == 14) || (val == 153))
21321 					spuravoid = 1;
21322 			} else if (((val >= 5) && (val <= 8)) || (val == 13)
21323 				   || (val == 14)) {
21324 				spuravoid = 1;
21325 			}
21326 		} else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21327 			if (val == 54)
21328 				spuravoid = 1;
21329 		} else {
21330 			if (pi->nphy_aband_spurwar_en &&
21331 			    ((val == 38) || (val == 102)
21332 			     || (val == 118)))
21333 				spuravoid = 1;
21334 		}
21335 
21336 		if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21337 			spuravoid = 1;
21338 
21339 		wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
21340 		si_pmu_spuravoid_pllupdate(pi->sh->sih, spuravoid);
21341 		wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21342 
21343 		if ((pi->sh->chip == BCM43224_CHIP_ID) ||
21344 		    (pi->sh->chip == BCM43225_CHIP_ID)) {
21345 			if (spuravoid == 1) {
21346 				bcma_write16(pi->d11core,
21347 					     D11REGOFFS(tsf_clk_frac_l),
21348 					     0x5341);
21349 				bcma_write16(pi->d11core,
21350 					     D11REGOFFS(tsf_clk_frac_h), 0x8);
21351 			} else {
21352 				bcma_write16(pi->d11core,
21353 					     D11REGOFFS(tsf_clk_frac_l),
21354 					     0x8889);
21355 				bcma_write16(pi->d11core,
21356 					     D11REGOFFS(tsf_clk_frac_h), 0x8);
21357 			}
21358 		}
21359 
21360 		wlapi_bmac_core_phypll_reset(pi->sh->physhim);
21361 
21362 		mod_phy_reg(pi, 0x01, (0x1 << 15),
21363 			    ((spuravoid > 0) ? (0x1 << 15) : 0));
21364 
21365 		wlc_phy_resetcca_nphy(pi);
21366 
21367 		pi->phy_isspuravoid = (spuravoid > 0);
21368 	}
21369 
21370 	if (NREV_LT(pi->pubpi.phy_rev, 7))
21371 		write_phy_reg(pi, 0x17e, 0x3830);
21372 
21373 	wlc_phy_spurwar_nphy(pi);
21374 }
21375 
wlc_phy_chanspec_set_nphy(struct brcms_phy * pi,u16 chanspec)21376 void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21377 {
21378 	int freq;
21379 	const struct chan_info_nphy_radio2057 *t0 = NULL;
21380 	const struct chan_info_nphy_radio205x *t1 = NULL;
21381 	const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21382 	const struct chan_info_nphy_2055 *t3 = NULL;
21383 
21384 	if (!wlc_phy_chan2freq_nphy
21385 		    (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21386 		return;
21387 
21388 	wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21389 
21390 	if (CHSPEC_BW(chanspec) != pi->bw)
21391 		wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21392 
21393 	if (CHSPEC_IS40(chanspec)) {
21394 		if (CHSPEC_SB_UPPER(chanspec)) {
21395 			or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21396 			if (NREV_GE(pi->pubpi.phy_rev, 7))
21397 				or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21398 		} else {
21399 			and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21400 			if (NREV_GE(pi->pubpi.phy_rev, 7))
21401 				and_phy_reg(pi, 0x310,
21402 					    (~PRIM_SEL_UP20 & 0xffff));
21403 		}
21404 	}
21405 
21406 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21407 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21408 
21409 			if ((pi->pubpi.radiorev <= 4)
21410 			    || (pi->pubpi.radiorev == 6)) {
21411 				mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21412 					      0x2,
21413 					      (CHSPEC_IS5G(chanspec) ? (1 << 1)
21414 					       : 0));
21415 				mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21416 					      0x2,
21417 					      (CHSPEC_IS5G(chanspec) ? (1 << 1)
21418 					       : 0));
21419 			}
21420 
21421 			wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21422 			wlc_phy_chanspec_nphy_setup(pi, chanspec,
21423 				(pi->pubpi.radiorev == 5) ?
21424 				(const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21425 				(const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21426 
21427 		} else {
21428 
21429 			mod_radio_reg(pi,
21430 				      RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21431 				      0x4,
21432 				      (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21433 			wlc_phy_chanspec_radio2056_setup(pi, t1);
21434 
21435 			wlc_phy_chanspec_nphy_setup(pi, chanspec,
21436 				(const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21437 		}
21438 
21439 	} else {
21440 
21441 		mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21442 			      (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21443 			       : (0x05 << 4)));
21444 
21445 		wlc_phy_chanspec_radio2055_setup(pi, t3);
21446 		wlc_phy_chanspec_nphy_setup(pi, chanspec,
21447 					    (const struct nphy_sfo_cfg *)
21448 					     &(t3->PHY_BW1a));
21449 	}
21450 
21451 }
21452 
wlc_phy_antsel_init(struct brcms_phy_pub * ppi,bool lut_init)21453 void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21454 {
21455 	struct brcms_phy *pi = (struct brcms_phy *) ppi;
21456 	u16 mask = 0xfc00;
21457 	u32 mc = 0;
21458 
21459 	if (NREV_GE(pi->pubpi.phy_rev, 7))
21460 		return;
21461 
21462 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21463 		u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21464 
21465 		if (lut_init == false)
21466 			return;
21467 
21468 		if (pi->srom_fem2g.antswctrllut == 0) {
21469 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21470 						 1, 0x02, 16, &v0);
21471 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21472 						 1, 0x03, 16, &v1);
21473 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21474 						 1, 0x08, 16, &v2);
21475 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21476 						 1, 0x0C, 16, &v3);
21477 		}
21478 
21479 		if (pi->srom_fem5g.antswctrllut == 0) {
21480 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21481 						 1, 0x12, 16, &v0);
21482 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21483 						 1, 0x13, 16, &v1);
21484 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21485 						 1, 0x18, 16, &v2);
21486 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21487 						 1, 0x1C, 16, &v3);
21488 		}
21489 	} else {
21490 
21491 		write_phy_reg(pi, 0xc8, 0x0);
21492 		write_phy_reg(pi, 0xc9, 0x0);
21493 
21494 		ai_gpiocontrol(pi->sh->sih, mask, mask, GPIO_DRV_PRIORITY);
21495 
21496 		mc = bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
21497 		mc &= ~MCTL_GPOUT_SEL_MASK;
21498 		bcma_write32(pi->d11core, D11REGOFFS(maccontrol), mc);
21499 
21500 		bcma_set16(pi->d11core, D11REGOFFS(psm_gpio_oe), mask);
21501 
21502 		bcma_mask16(pi->d11core, D11REGOFFS(psm_gpio_out), ~mask);
21503 
21504 		if (lut_init) {
21505 			write_phy_reg(pi, 0xf8, 0x02d8);
21506 			write_phy_reg(pi, 0xf9, 0x0301);
21507 			write_phy_reg(pi, 0xfa, 0x02d8);
21508 			write_phy_reg(pi, 0xfb, 0x0301);
21509 		}
21510 	}
21511 }
21512 
wlc_phy_classifier_nphy(struct brcms_phy * pi,u16 mask,u16 val)21513 u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21514 {
21515 	u16 curr_ctl, new_ctl;
21516 	bool suspended = false;
21517 
21518 	if (D11REV_IS(pi->sh->corerev, 16)) {
21519 		suspended = (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
21520 			     MCTL_EN_MAC) ? false : true;
21521 		if (!suspended)
21522 			wlapi_suspend_mac_and_wait(pi->sh->physhim);
21523 	}
21524 
21525 	curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21526 
21527 	new_ctl = (curr_ctl & (~mask)) | (val & mask);
21528 
21529 	mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21530 
21531 	if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21532 		wlapi_enable_mac(pi->sh->physhim);
21533 
21534 	return new_ctl;
21535 }
21536 
wlc_phy_force_rfseq_nphy(struct brcms_phy * pi,u8 cmd)21537 void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21538 {
21539 	u16 trigger_mask, status_mask;
21540 	u16 orig_RfseqCoreActv;
21541 
21542 	switch (cmd) {
21543 	case NPHY_RFSEQ_RX2TX:
21544 		trigger_mask = NPHY_RfseqTrigger_rx2tx;
21545 		status_mask = NPHY_RfseqStatus_rx2tx;
21546 		break;
21547 	case NPHY_RFSEQ_TX2RX:
21548 		trigger_mask = NPHY_RfseqTrigger_tx2rx;
21549 		status_mask = NPHY_RfseqStatus_tx2rx;
21550 		break;
21551 	case NPHY_RFSEQ_RESET2RX:
21552 		trigger_mask = NPHY_RfseqTrigger_reset2rx;
21553 		status_mask = NPHY_RfseqStatus_reset2rx;
21554 		break;
21555 	case NPHY_RFSEQ_UPDATEGAINH:
21556 		trigger_mask = NPHY_RfseqTrigger_updategainh;
21557 		status_mask = NPHY_RfseqStatus_updategainh;
21558 		break;
21559 	case NPHY_RFSEQ_UPDATEGAINL:
21560 		trigger_mask = NPHY_RfseqTrigger_updategainl;
21561 		status_mask = NPHY_RfseqStatus_updategainl;
21562 		break;
21563 	case NPHY_RFSEQ_UPDATEGAINU:
21564 		trigger_mask = NPHY_RfseqTrigger_updategainu;
21565 		status_mask = NPHY_RfseqStatus_updategainu;
21566 		break;
21567 	default:
21568 		return;
21569 	}
21570 
21571 	orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21572 	or_phy_reg(pi, 0xa1,
21573 		   (NPHY_RfseqMode_CoreActv_override |
21574 		    NPHY_RfseqMode_Trigger_override));
21575 	or_phy_reg(pi, 0xa3, trigger_mask);
21576 	SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21577 	write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21578 	WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21579 }
21580 
21581 static void
wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy * pi,u16 cmd,u16 value,u8 core_mask,u8 off)21582 wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21583 				     u8 core_mask, u8 off)
21584 {
21585 	u16 rfmxgain = 0, lpfgain = 0;
21586 	u16 tgain = 0;
21587 
21588 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21589 
21590 		switch (cmd) {
21591 		case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21592 			wlc_phy_rfctrl_override_nphy_rev7(
21593 				pi, (0x1 << 5),
21594 				value, core_mask, off,
21595 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21596 			wlc_phy_rfctrl_override_nphy_rev7(
21597 				pi, (0x1 << 4), value,
21598 				core_mask, off,
21599 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21600 			wlc_phy_rfctrl_override_nphy_rev7(
21601 				pi, (0x1 << 3), value,
21602 				core_mask, off,
21603 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21604 			break;
21605 		case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21606 			wlc_phy_rfctrl_override_nphy_rev7(
21607 				pi, (0x1 << 2),
21608 				value, core_mask, off,
21609 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21610 			wlc_phy_rfctrl_override_nphy_rev7(
21611 				pi, (0x1 << 1), value,
21612 				core_mask, off,
21613 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21614 			wlc_phy_rfctrl_override_nphy_rev7(
21615 				pi, (0x1 << 0), value,
21616 				core_mask, off,
21617 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21618 			wlc_phy_rfctrl_override_nphy_rev7(
21619 				pi, (0x1 << 1), value,
21620 				core_mask, off,
21621 				NPHY_REV7_RFCTRLOVERRIDE_ID2);
21622 			wlc_phy_rfctrl_override_nphy_rev7(
21623 				pi, (0x1 << 11), 0,
21624 				core_mask, off,
21625 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21626 			break;
21627 		case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21628 			wlc_phy_rfctrl_override_nphy_rev7(
21629 				pi, (0x1 << 2),
21630 				value, core_mask, off,
21631 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21632 			wlc_phy_rfctrl_override_nphy_rev7(
21633 				pi, (0x1 << 1), value,
21634 				core_mask, off,
21635 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21636 			wlc_phy_rfctrl_override_nphy_rev7(
21637 				pi, (0x1 << 0), value,
21638 				core_mask, off,
21639 				NPHY_REV7_RFCTRLOVERRIDE_ID2);
21640 			wlc_phy_rfctrl_override_nphy_rev7(
21641 				pi, (0x1 << 2), value,
21642 				core_mask, off,
21643 				NPHY_REV7_RFCTRLOVERRIDE_ID2);
21644 			wlc_phy_rfctrl_override_nphy_rev7(
21645 				pi, (0x1 << 11), 1,
21646 				core_mask, off,
21647 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
21648 			break;
21649 		case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21650 			rfmxgain = value & 0x000ff;
21651 			lpfgain = value & 0x0ff00;
21652 			lpfgain = lpfgain >> 8;
21653 
21654 			wlc_phy_rfctrl_override_nphy_rev7(
21655 				pi, (0x1 << 11),
21656 				rfmxgain, core_mask,
21657 				off,
21658 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21659 			wlc_phy_rfctrl_override_nphy_rev7(
21660 				pi, (0x3 << 13),
21661 				lpfgain, core_mask,
21662 				off,
21663 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21664 			break;
21665 		case NPHY_REV7_RfctrlOverride_cmd_txgain:
21666 			tgain = value & 0x7fff;
21667 			lpfgain = value & 0x8000;
21668 			lpfgain = lpfgain >> 14;
21669 
21670 			wlc_phy_rfctrl_override_nphy_rev7(
21671 				pi, (0x1 << 12),
21672 				tgain, core_mask, off,
21673 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21674 			wlc_phy_rfctrl_override_nphy_rev7(
21675 				pi, (0x1 << 13),
21676 				lpfgain, core_mask,
21677 				off,
21678 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
21679 			break;
21680 		}
21681 	}
21682 }
21683 
21684 static void
wlc_phy_scale_offset_rssi_nphy(struct brcms_phy * pi,u16 scale,s8 offset,u8 coresel,u8 rail,u8 rssi_type)21685 wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21686 			       u8 coresel, u8 rail, u8 rssi_type)
21687 {
21688 	u16 valuetostuff;
21689 
21690 	offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21691 		 NPHY_RSSICAL_MAXREAD : offset;
21692 	offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21693 		 -NPHY_RSSICAL_MAXREAD - 1 : offset;
21694 
21695 	valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21696 
21697 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21698 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21699 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21700 		write_phy_reg(pi, 0x1a6, valuetostuff);
21701 
21702 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21703 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21704 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21705 		write_phy_reg(pi, 0x1ac, valuetostuff);
21706 
21707 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21708 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21709 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21710 		write_phy_reg(pi, 0x1b2, valuetostuff);
21711 
21712 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21713 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21714 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21715 		write_phy_reg(pi, 0x1b8, valuetostuff);
21716 
21717 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21718 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21719 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21720 		write_phy_reg(pi, 0x1a4, valuetostuff);
21721 
21722 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21723 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21724 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21725 		write_phy_reg(pi, 0x1aa, valuetostuff);
21726 
21727 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21728 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21729 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21730 		write_phy_reg(pi, 0x1b0, valuetostuff);
21731 
21732 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21733 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21734 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21735 		write_phy_reg(pi, 0x1b6, valuetostuff);
21736 
21737 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21738 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21739 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21740 		write_phy_reg(pi, 0x1a5, valuetostuff);
21741 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21742 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21743 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21744 		write_phy_reg(pi, 0x1ab, valuetostuff);
21745 
21746 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21747 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21748 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21749 		write_phy_reg(pi, 0x1b1, valuetostuff);
21750 
21751 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21752 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21753 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21754 		write_phy_reg(pi, 0x1b7, valuetostuff);
21755 
21756 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21757 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21758 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21759 		write_phy_reg(pi, 0x1a7, valuetostuff);
21760 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21761 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21762 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21763 		write_phy_reg(pi, 0x1ad, valuetostuff);
21764 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21765 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21766 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21767 		write_phy_reg(pi, 0x1b3, valuetostuff);
21768 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21769 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21770 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21771 		write_phy_reg(pi, 0x1b9, valuetostuff);
21772 
21773 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21774 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21775 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21776 		write_phy_reg(pi, 0x1a8, valuetostuff);
21777 
21778 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21779 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21780 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21781 		write_phy_reg(pi, 0x1ae, valuetostuff);
21782 
21783 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21784 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21785 	    (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21786 		write_phy_reg(pi, 0x1b4, valuetostuff);
21787 
21788 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21789 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21790 	    (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21791 		write_phy_reg(pi, 0x1ba, valuetostuff);
21792 
21793 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21794 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21795 	    (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21796 		write_phy_reg(pi, 0x1a9, valuetostuff);
21797 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21798 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21799 	    (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21800 		write_phy_reg(pi, 0x1b5, valuetostuff);
21801 
21802 	if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21803 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21804 	    (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21805 		write_phy_reg(pi, 0x1af, valuetostuff);
21806 
21807 	if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21808 	     (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21809 	    (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21810 		write_phy_reg(pi, 0x1bb, valuetostuff);
21811 }
21812 
brcms_phy_wr_tx_mux(struct brcms_phy * pi,u8 core)21813 static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21814 {
21815 	if (PHY_IPA(pi)) {
21816 		if (NREV_GE(pi->pubpi.phy_rev, 7))
21817 			write_radio_reg(pi,
21818 					((core == PHY_CORE_0) ?
21819 					 RADIO_2057_TX0_TX_SSI_MUX :
21820 					 RADIO_2057_TX1_TX_SSI_MUX),
21821 					(CHSPEC_IS5G(pi->radio_chanspec) ?
21822 					0xc : 0xe));
21823 		else
21824 			write_radio_reg(pi,
21825 					RADIO_2056_TX_TX_SSI_MUX |
21826 					((core == PHY_CORE_0) ?
21827 					 RADIO_2056_TX0 : RADIO_2056_TX1),
21828 					(CHSPEC_IS5G(pi->radio_chanspec) ?
21829 					0xc : 0xe));
21830 	} else {
21831 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21832 			write_radio_reg(pi,
21833 					((core == PHY_CORE_0) ?
21834 					 RADIO_2057_TX0_TX_SSI_MUX :
21835 					 RADIO_2057_TX1_TX_SSI_MUX),
21836 					0x11);
21837 
21838 			if (pi->pubpi.radioid == BCM2057_ID)
21839 				write_radio_reg(pi,
21840 						RADIO_2057_IQTEST_SEL_PU, 0x1);
21841 
21842 		} else {
21843 			write_radio_reg(pi,
21844 					RADIO_2056_TX_TX_SSI_MUX |
21845 					((core == PHY_CORE_0) ?
21846 					 RADIO_2056_TX0 : RADIO_2056_TX1),
21847 					0x11);
21848 		}
21849 	}
21850 }
21851 
wlc_phy_rssisel_nphy(struct brcms_phy * pi,u8 core_code,u8 rssi_type)21852 void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21853 {
21854 	u16 mask, val;
21855 	u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21856 	    startseq;
21857 	u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21858 	    rfctrlovr_trigger_val;
21859 	u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21860 	u16 rfctrlcmd_val, rfctrlovr_val;
21861 	u8 core;
21862 
21863 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21864 		if (core_code == RADIO_MIMO_CORESEL_OFF) {
21865 			mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21866 			mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21867 
21868 			mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21869 			mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21870 
21871 			mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21872 			mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21873 
21874 			mask = (0x1 << 2) |
21875 			       (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21876 			mod_phy_reg(pi, 0xf9, mask, 0);
21877 			mod_phy_reg(pi, 0xfb, mask, 0);
21878 
21879 		} else {
21880 			for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21881 				if (core_code == RADIO_MIMO_CORESEL_CORE1
21882 				    && core == PHY_CORE_1)
21883 					continue;
21884 				else if (core_code == RADIO_MIMO_CORESEL_CORE2
21885 					 && core == PHY_CORE_0)
21886 					continue;
21887 
21888 				mod_phy_reg(pi, (core == PHY_CORE_0) ?
21889 					    0x8f : 0xa5, (0x1 << 9), 1 << 9);
21890 
21891 				if (rssi_type == NPHY_RSSI_SEL_W1 ||
21892 				    rssi_type == NPHY_RSSI_SEL_W2 ||
21893 				    rssi_type == NPHY_RSSI_SEL_NB) {
21894 					mod_phy_reg(pi,
21895 						    (core ==
21896 						     PHY_CORE_0) ? 0xa6 : 0xa7,
21897 						    (0x3 << 8), 0);
21898 
21899 					mask = (0x1 << 2) |
21900 					       (0x1 << 3) |
21901 					       (0x1 << 4) | (0x1 << 5);
21902 					mod_phy_reg(pi,
21903 						    (core ==
21904 						     PHY_CORE_0) ? 0xf9 : 0xfb,
21905 						    mask, 0);
21906 
21907 					if (rssi_type == NPHY_RSSI_SEL_W1) {
21908 						if (CHSPEC_IS5G(
21909 							  pi->radio_chanspec)) {
21910 							mask = (0x1 << 2);
21911 							val = 1 << 2;
21912 						} else {
21913 							mask = (0x1 << 3);
21914 							val = 1 << 3;
21915 						}
21916 					} else if (rssi_type ==
21917 						   NPHY_RSSI_SEL_W2) {
21918 						mask = (0x1 << 4);
21919 						val = 1 << 4;
21920 					} else {
21921 						mask = (0x1 << 5);
21922 						val = 1 << 5;
21923 					}
21924 					mod_phy_reg(pi,
21925 						    (core ==
21926 						     PHY_CORE_0) ? 0xf9 : 0xfb,
21927 						    mask, val);
21928 
21929 					mask = (0x1 << 5);
21930 					val = 1 << 5;
21931 					mod_phy_reg(pi, (core == PHY_CORE_0) ?
21932 						    0xe5 : 0xe6, mask, val);
21933 				} else {
21934 					if (rssi_type == NPHY_RSSI_SEL_TBD) {
21935 						mask = (0x3 << 8);
21936 						val = 1 << 8;
21937 						mod_phy_reg(pi,
21938 							    (core ==
21939 							     PHY_CORE_0) ? 0xa6
21940 							    : 0xa7, mask, val);
21941 						mask = (0x3 << 10);
21942 						val = 1 << 10;
21943 						mod_phy_reg(pi,
21944 							    (core ==
21945 							     PHY_CORE_0) ? 0xa6
21946 							    : 0xa7, mask, val);
21947 					} else if (rssi_type ==
21948 						   NPHY_RSSI_SEL_IQ) {
21949 						mask = (0x3 << 8);
21950 						val = 2 << 8;
21951 						mod_phy_reg(pi,
21952 							    (core ==
21953 							     PHY_CORE_0) ? 0xa6
21954 							    : 0xa7, mask, val);
21955 						mask = (0x3 << 10);
21956 						val = 2 << 10;
21957 						mod_phy_reg(pi,
21958 							    (core ==
21959 							     PHY_CORE_0) ? 0xa6
21960 							    : 0xa7, mask, val);
21961 					} else {
21962 						mask = (0x3 << 8);
21963 						val = 3 << 8;
21964 						mod_phy_reg(pi,
21965 							    (core ==
21966 							     PHY_CORE_0) ? 0xa6
21967 							    : 0xa7, mask, val);
21968 						mask = (0x3 << 10);
21969 						val = 3 << 10;
21970 						mod_phy_reg(pi,
21971 							    (core ==
21972 							     PHY_CORE_0) ? 0xa6
21973 							    : 0xa7, mask, val);
21974 						brcms_phy_wr_tx_mux(pi, core);
21975 						afectrlovr_rssi_val = 1 << 9;
21976 						mod_phy_reg(pi,
21977 							   (core ==
21978 							    PHY_CORE_0) ? 0x8f
21979 							   : 0xa5, (0x1 << 9),
21980 							   afectrlovr_rssi_val);
21981 					}
21982 				}
21983 			}
21984 		}
21985 	} else {
21986 
21987 		if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21988 		    (rssi_type == NPHY_RSSI_SEL_W2) ||
21989 		    (rssi_type == NPHY_RSSI_SEL_NB))
21990 			val = 0x0;
21991 		else if (rssi_type == NPHY_RSSI_SEL_TBD)
21992 			val = 0x1;
21993 		else if (rssi_type == NPHY_RSSI_SEL_IQ)
21994 			val = 0x2;
21995 		else
21996 			val = 0x3;
21997 
21998 		mask = ((0x3 << 12) | (0x3 << 14));
21999 		val = (val << 12) | (val << 14);
22000 		mod_phy_reg(pi, 0xa6, mask, val);
22001 		mod_phy_reg(pi, 0xa7, mask, val);
22002 
22003 		if ((rssi_type == NPHY_RSSI_SEL_W1) ||
22004 		    (rssi_type == NPHY_RSSI_SEL_W2) ||
22005 		    (rssi_type == NPHY_RSSI_SEL_NB)) {
22006 			if (rssi_type == NPHY_RSSI_SEL_W1)
22007 				val = 0x1;
22008 			if (rssi_type == NPHY_RSSI_SEL_W2)
22009 				val = 0x2;
22010 			if (rssi_type == NPHY_RSSI_SEL_NB)
22011 				val = 0x3;
22012 
22013 			mask = (0x3 << 4);
22014 			val = (val << 4);
22015 			mod_phy_reg(pi, 0x7a, mask, val);
22016 			mod_phy_reg(pi, 0x7d, mask, val);
22017 		}
22018 
22019 		if (core_code == RADIO_MIMO_CORESEL_OFF) {
22020 			afectrlovr_rssi_val = 0;
22021 			rfctrlcmd_rxen_val = 0;
22022 			rfctrlcmd_coresel_val = 0;
22023 			rfctrlovr_rssi_val = 0;
22024 			rfctrlovr_rxen_val = 0;
22025 			rfctrlovr_coresel_val = 0;
22026 			rfctrlovr_trigger_val = 0;
22027 			startseq = 0;
22028 		} else {
22029 			afectrlovr_rssi_val = 1;
22030 			rfctrlcmd_rxen_val = 1;
22031 			rfctrlcmd_coresel_val = core_code;
22032 			rfctrlovr_rssi_val = 1;
22033 			rfctrlovr_rxen_val = 1;
22034 			rfctrlovr_coresel_val = 1;
22035 			rfctrlovr_trigger_val = 1;
22036 			startseq = 1;
22037 		}
22038 
22039 		afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
22040 		afectrlovr_rssi_val = (afectrlovr_rssi_val <<
22041 				       12) | (afectrlovr_rssi_val << 13);
22042 		mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
22043 			    afectrlovr_rssi_val);
22044 
22045 		if ((rssi_type == NPHY_RSSI_SEL_W1) ||
22046 		    (rssi_type == NPHY_RSSI_SEL_W2) ||
22047 		    (rssi_type == NPHY_RSSI_SEL_NB)) {
22048 			rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
22049 			rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
22050 					(rfctrlcmd_coresel_val << 3);
22051 
22052 			rfctrlovr_mask = ((0x1 << 5) |
22053 					  (0x1 << 12) |
22054 					  (0x1 << 1) | (0x1 << 0));
22055 			rfctrlovr_val = (rfctrlovr_rssi_val <<
22056 					 5) |
22057 					(rfctrlovr_rxen_val << 12) |
22058 					(rfctrlovr_coresel_val << 1) |
22059 					(rfctrlovr_trigger_val << 0);
22060 
22061 			mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
22062 			mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
22063 
22064 			mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
22065 			udelay(20);
22066 
22067 			mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22068 		}
22069 	}
22070 }
22071 
22072 int
wlc_phy_poll_rssi_nphy(struct brcms_phy * pi,u8 rssi_type,s32 * rssi_buf,u8 nsamps)22073 wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
22074 		       u8 nsamps)
22075 {
22076 	s16 rssi0, rssi1;
22077 	u16 afectrlCore1_save = 0;
22078 	u16 afectrlCore2_save = 0;
22079 	u16 afectrlOverride1_save = 0;
22080 	u16 afectrlOverride2_save = 0;
22081 	u16 rfctrlOverrideAux0_save = 0;
22082 	u16 rfctrlOverrideAux1_save = 0;
22083 	u16 rfctrlMiscReg1_save = 0;
22084 	u16 rfctrlMiscReg2_save = 0;
22085 	u16 rfctrlcmd_save = 0;
22086 	u16 rfctrloverride_save = 0;
22087 	u16 rfctrlrssiothers1_save = 0;
22088 	u16 rfctrlrssiothers2_save = 0;
22089 	s8 tmp_buf[4];
22090 	u8 ctr = 0, samp = 0;
22091 	s32 rssi_out_val;
22092 	u16 gpiosel_orig;
22093 
22094 	afectrlCore1_save = read_phy_reg(pi, 0xa6);
22095 	afectrlCore2_save = read_phy_reg(pi, 0xa7);
22096 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22097 		rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22098 		rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22099 		afectrlOverride1_save = read_phy_reg(pi, 0x8f);
22100 		afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22101 		rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22102 		rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22103 	} else {
22104 		afectrlOverride1_save = read_phy_reg(pi, 0xa5);
22105 		rfctrlcmd_save = read_phy_reg(pi, 0x78);
22106 		rfctrloverride_save = read_phy_reg(pi, 0xec);
22107 		rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
22108 		rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
22109 	}
22110 
22111 	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22112 
22113 	gpiosel_orig = read_phy_reg(pi, 0xca);
22114 	if (NREV_LT(pi->pubpi.phy_rev, 2))
22115 		write_phy_reg(pi, 0xca, 5);
22116 
22117 	for (ctr = 0; ctr < 4; ctr++)
22118 		rssi_buf[ctr] = 0;
22119 
22120 	for (samp = 0; samp < nsamps; samp++) {
22121 		if (NREV_LT(pi->pubpi.phy_rev, 2)) {
22122 			rssi0 = read_phy_reg(pi, 0x1c9);
22123 			rssi1 = read_phy_reg(pi, 0x1ca);
22124 		} else {
22125 			rssi0 = read_phy_reg(pi, 0x219);
22126 			rssi1 = read_phy_reg(pi, 0x21a);
22127 		}
22128 
22129 		ctr = 0;
22130 		tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
22131 		tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
22132 		tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
22133 		tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
22134 
22135 		for (ctr = 0; ctr < 4; ctr++)
22136 			rssi_buf[ctr] += tmp_buf[ctr];
22137 
22138 	}
22139 
22140 	rssi_out_val = rssi_buf[3] & 0xff;
22141 	rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
22142 	rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
22143 	rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
22144 
22145 	if (NREV_LT(pi->pubpi.phy_rev, 2))
22146 		write_phy_reg(pi, 0xca, gpiosel_orig);
22147 
22148 	write_phy_reg(pi, 0xa6, afectrlCore1_save);
22149 	write_phy_reg(pi, 0xa7, afectrlCore2_save);
22150 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22151 		write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
22152 		write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
22153 		write_phy_reg(pi, 0x8f, afectrlOverride1_save);
22154 		write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22155 		write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
22156 		write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
22157 	} else {
22158 		write_phy_reg(pi, 0xa5, afectrlOverride1_save);
22159 		write_phy_reg(pi, 0x78, rfctrlcmd_save);
22160 		write_phy_reg(pi, 0xec, rfctrloverride_save);
22161 		write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
22162 		write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
22163 	}
22164 
22165 	return rssi_out_val;
22166 }
22167 
wlc_phy_tempsense_nphy(struct brcms_phy * pi)22168 s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
22169 {
22170 	u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
22171 	u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
22172 	u16 pwrdet_rxtx_core1_save;
22173 	u16 pwrdet_rxtx_core2_save;
22174 	u16 afectrlCore1_save;
22175 	u16 afectrlCore2_save;
22176 	u16 afectrlOverride_save;
22177 	u16 afectrlOverride2_save;
22178 	u16 pd_pll_ts_save;
22179 	u16 gpioSel_save;
22180 	s32 radio_temp[4];
22181 	s32 radio_temp2[4];
22182 	u16 syn_tempprocsense_save;
22183 	s16 offset = 0;
22184 
22185 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22186 		u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
22187 		u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
22188 		u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
22189 		s32 auxADC_Vl;
22190 		u16 RfctrlOverride5_save, RfctrlOverride6_save;
22191 		u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
22192 		u16 RSSIMultCoef0QPowerDet_save;
22193 		u16 tempsense_Rcal;
22194 
22195 		syn_tempprocsense_save =
22196 			read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
22197 
22198 		afectrlCore1_save = read_phy_reg(pi, 0xa6);
22199 		afectrlCore2_save = read_phy_reg(pi, 0xa7);
22200 		afectrlOverride_save = read_phy_reg(pi, 0x8f);
22201 		afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22202 		RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
22203 		RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22204 		RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22205 		RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22206 		RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22207 
22208 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22209 					&auxADC_Vmid_save);
22210 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22211 					&auxADC_Av_save);
22212 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22213 					&auxADC_rssi_ctrlL_save);
22214 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22215 					&auxADC_rssi_ctrlH_save);
22216 
22217 		write_phy_reg(pi, 0x1ae, 0x0);
22218 
22219 		auxADC_rssi_ctrlL = 0x0;
22220 		auxADC_rssi_ctrlH = 0x20;
22221 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22222 					 &auxADC_rssi_ctrlL);
22223 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22224 					 &auxADC_rssi_ctrlH);
22225 
22226 		tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22227 
22228 		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22229 				tempsense_Rcal | 0x01);
22230 
22231 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22232 						  1, 0, 0,
22233 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
22234 		mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22235 		mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22236 		mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22237 		mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22238 
22239 		mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22240 		mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22241 		mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22242 		mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22243 		udelay(5);
22244 		mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22245 		mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22246 		mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22247 		mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22248 		mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22249 		mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22250 		mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22251 		mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22252 		mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22253 		mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22254 
22255 		auxADC_Vmid = 0xA3;
22256 		auxADC_Av = 0x0;
22257 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22258 					 &auxADC_Vmid);
22259 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22260 					 &auxADC_Av);
22261 
22262 		udelay(3);
22263 
22264 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22265 		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22266 				tempsense_Rcal | 0x03);
22267 
22268 		udelay(5);
22269 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22270 
22271 		auxADC_Av = 0x7;
22272 		if (radio_temp[1] + radio_temp2[1] < -30) {
22273 			auxADC_Vmid = 0x45;
22274 			auxADC_Vl = 263;
22275 		} else if (radio_temp[1] + radio_temp2[1] < -9) {
22276 			auxADC_Vmid = 0x200;
22277 			auxADC_Vl = 467;
22278 		} else if (radio_temp[1] + radio_temp2[1] < 11) {
22279 			auxADC_Vmid = 0x266;
22280 			auxADC_Vl = 634;
22281 		} else {
22282 			auxADC_Vmid = 0x2D5;
22283 			auxADC_Vl = 816;
22284 		}
22285 
22286 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22287 					 &auxADC_Vmid);
22288 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22289 					 &auxADC_Av);
22290 
22291 		udelay(3);
22292 
22293 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22294 		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22295 				tempsense_Rcal | 0x01);
22296 
22297 		udelay(5);
22298 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22299 
22300 		write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22301 				syn_tempprocsense_save);
22302 
22303 		write_phy_reg(pi, 0xa6, afectrlCore1_save);
22304 		write_phy_reg(pi, 0xa7, afectrlCore2_save);
22305 		write_phy_reg(pi, 0x8f, afectrlOverride_save);
22306 		write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22307 		write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22308 		write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22309 		write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22310 		write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22311 		write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22312 
22313 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22314 					 &auxADC_Vmid_save);
22315 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22316 					 &auxADC_Av_save);
22317 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22318 					 &auxADC_rssi_ctrlL_save);
22319 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22320 					 &auxADC_rssi_ctrlH_save);
22321 
22322 		radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22323 				 + 82 * (auxADC_Vl) - 28861 +
22324 				 128) / 256;
22325 
22326 		offset = (s16) pi->phy_tempsense_offset;
22327 
22328 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22329 		syn_tempprocsense_save =
22330 			read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22331 
22332 		afectrlCore1_save = read_phy_reg(pi, 0xa6);
22333 		afectrlCore2_save = read_phy_reg(pi, 0xa7);
22334 		afectrlOverride_save = read_phy_reg(pi, 0x8f);
22335 		afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22336 		gpioSel_save = read_phy_reg(pi, 0xca);
22337 
22338 		write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22339 
22340 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22341 		if (NREV_LT(pi->pubpi.phy_rev, 7))
22342 			write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22343 
22344 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22345 		if (NREV_GE(pi->pubpi.phy_rev, 7))
22346 			write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22347 		else
22348 			write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22349 
22350 		radio_temp[0] =
22351 			(126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22352 
22353 		write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22354 				syn_tempprocsense_save);
22355 
22356 		write_phy_reg(pi, 0xca, gpioSel_save);
22357 		write_phy_reg(pi, 0xa6, afectrlCore1_save);
22358 		write_phy_reg(pi, 0xa7, afectrlCore2_save);
22359 		write_phy_reg(pi, 0x8f, afectrlOverride_save);
22360 		write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22361 
22362 		offset = (s16) pi->phy_tempsense_offset;
22363 	} else {
22364 
22365 		pwrdet_rxtx_core1_save =
22366 			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22367 		pwrdet_rxtx_core2_save =
22368 			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22369 		core1_txrf_iqcal1_save =
22370 			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22371 		core1_txrf_iqcal2_save =
22372 			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22373 		core2_txrf_iqcal1_save =
22374 			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22375 		core2_txrf_iqcal2_save =
22376 			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22377 		pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22378 
22379 		afectrlCore1_save = read_phy_reg(pi, 0xa6);
22380 		afectrlCore2_save = read_phy_reg(pi, 0xa7);
22381 		afectrlOverride_save = read_phy_reg(pi, 0xa5);
22382 		gpioSel_save = read_phy_reg(pi, 0xca);
22383 
22384 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22385 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22386 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22387 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22388 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22389 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22390 		write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22391 
22392 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22393 		xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22394 
22395 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22396 		xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22397 
22398 		wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22399 		xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22400 
22401 		radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22402 		radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22403 		radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22404 		radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22405 
22406 		radio_temp[0] =
22407 			(radio_temp[0] + radio_temp[1] + radio_temp[2] +
22408 			 radio_temp[3]);
22409 
22410 		radio_temp[0] =
22411 			(radio_temp[0] +
22412 			 (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22413 
22414 		radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22415 
22416 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22417 				pwrdet_rxtx_core1_save);
22418 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22419 				pwrdet_rxtx_core2_save);
22420 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22421 				core1_txrf_iqcal1_save);
22422 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22423 				core2_txrf_iqcal1_save);
22424 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22425 				core1_txrf_iqcal2_save);
22426 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22427 				core2_txrf_iqcal2_save);
22428 		write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22429 
22430 		write_phy_reg(pi, 0xca, gpioSel_save);
22431 		write_phy_reg(pi, 0xa6, afectrlCore1_save);
22432 		write_phy_reg(pi, 0xa7, afectrlCore2_save);
22433 		write_phy_reg(pi, 0xa5, afectrlOverride_save);
22434 	}
22435 
22436 	return (s16) radio_temp[0] + offset;
22437 }
22438 
22439 static void
wlc_phy_set_rssi_2055_vcm(struct brcms_phy * pi,u8 rssi_type,u8 * vcm_buf)22440 wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22441 {
22442 	u8 core;
22443 
22444 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22445 		if (rssi_type == NPHY_RSSI_SEL_NB) {
22446 			if (core == PHY_CORE_0) {
22447 				mod_radio_reg(pi,
22448 					      RADIO_2055_CORE1_B0_NBRSSI_VCM,
22449 					      RADIO_2055_NBRSSI_VCM_I_MASK,
22450 					      vcm_buf[2 *
22451 						      core] <<
22452 					      RADIO_2055_NBRSSI_VCM_I_SHIFT);
22453 				mod_radio_reg(pi,
22454 					      RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22455 					      RADIO_2055_NBRSSI_VCM_Q_MASK,
22456 					      vcm_buf[2 * core +
22457 						      1] <<
22458 					      RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22459 			} else {
22460 				mod_radio_reg(pi,
22461 					      RADIO_2055_CORE2_B0_NBRSSI_VCM,
22462 					      RADIO_2055_NBRSSI_VCM_I_MASK,
22463 					      vcm_buf[2 *
22464 						      core] <<
22465 					      RADIO_2055_NBRSSI_VCM_I_SHIFT);
22466 				mod_radio_reg(pi,
22467 					      RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22468 					      RADIO_2055_NBRSSI_VCM_Q_MASK,
22469 					      vcm_buf[2 * core +
22470 						      1] <<
22471 					      RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22472 			}
22473 		} else {
22474 			if (core == PHY_CORE_0)
22475 				mod_radio_reg(pi,
22476 					      RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22477 					      RADIO_2055_WBRSSI_VCM_IQ_MASK,
22478 					      vcm_buf[2 *
22479 						      core] <<
22480 					      RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22481 			else
22482 				mod_radio_reg(pi,
22483 					      RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22484 					      RADIO_2055_WBRSSI_VCM_IQ_MASK,
22485 					      vcm_buf[2 *
22486 						      core] <<
22487 					      RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22488 		}
22489 	}
22490 }
22491 
wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy * pi)22492 static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22493 {
22494 	u16 classif_state;
22495 	u16 clip_state[2];
22496 	u16 clip_off[] = { 0xffff, 0xffff };
22497 	s32 target_code;
22498 	u8 vcm, min_vcm;
22499 	u8 vcm_final = 0;
22500 	u8 result_idx;
22501 	s32 poll_results[8][4] = {
22502 		{0, 0, 0, 0},
22503 		{0, 0, 0, 0},
22504 		{0, 0, 0, 0},
22505 		{0, 0, 0, 0},
22506 		{0, 0, 0, 0},
22507 		{0, 0, 0, 0},
22508 		{0, 0, 0, 0},
22509 		{0, 0, 0, 0}
22510 	};
22511 	s32 poll_result_core[4] = { 0, 0, 0, 0 };
22512 	s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22513 	s32 fine_digital_offset[4];
22514 	s32 poll_results_min[4] = { 0, 0, 0, 0 };
22515 	s32 min_poll;
22516 	u8 vcm_level_max;
22517 	u8 core;
22518 	u8 wb_cnt;
22519 	u8 rssi_type;
22520 	u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22521 	u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22522 	u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22523 	u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22524 	u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22525 	u16 NPHY_RfctrlCmd_save;
22526 	u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22527 	u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22528 	u8 rxcore_state;
22529 	u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22530 	u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22531 	u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22532 	u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22533 
22534 	NPHY_REV7_RfctrlOverride3_save =
22535 		NPHY_REV7_RfctrlOverride4_save =
22536 		NPHY_REV7_RfctrlOverride5_save =
22537 		NPHY_REV7_RfctrlOverride6_save =
22538 		NPHY_REV7_RfctrlMiscReg3_save =
22539 		NPHY_REV7_RfctrlMiscReg4_save =
22540 		NPHY_REV7_RfctrlMiscReg5_save =
22541 		NPHY_REV7_RfctrlMiscReg6_save = 0;
22542 
22543 	classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22544 	wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22545 	wlc_phy_clip_det_nphy(pi, 0, clip_state);
22546 	wlc_phy_clip_det_nphy(pi, 1, clip_off);
22547 
22548 	NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22549 	NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22550 	NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22551 	NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22552 	NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22553 	NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22554 	NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22555 	NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22556 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22557 		NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22558 		NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22559 		NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22560 		NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22561 	}
22562 	NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22563 	NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22564 	NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22565 	NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22566 	NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22567 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22568 		NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22569 		NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22570 		NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22571 		NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22572 	}
22573 	NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22574 	NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22575 
22576 	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22577 					 RADIO_MIMO_CORESEL_ALLRXTX);
22578 	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22579 					 RADIO_MIMO_CORESEL_ALLRXTX);
22580 
22581 	if (NREV_GE(pi->pubpi.phy_rev, 7))
22582 		wlc_phy_rfctrl_override_1tomany_nphy(
22583 			pi,
22584 			NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22585 			0, 0, 0);
22586 	else
22587 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22588 
22589 	if (NREV_GE(pi->pubpi.phy_rev, 7))
22590 		wlc_phy_rfctrl_override_1tomany_nphy(
22591 			pi,
22592 			NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22593 			1, 0, 0);
22594 	else
22595 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22596 
22597 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22598 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22599 						  1, 0, 0,
22600 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
22601 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22602 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
22603 	} else {
22604 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22605 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22606 	}
22607 
22608 	if (CHSPEC_IS5G(pi->radio_chanspec)) {
22609 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22610 			wlc_phy_rfctrl_override_nphy_rev7(
22611 				pi, (0x1 << 5),
22612 				0, 0, 0,
22613 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22614 			wlc_phy_rfctrl_override_nphy_rev7(
22615 				pi, (0x1 << 4), 1, 0,
22616 				0,
22617 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22618 		} else {
22619 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22620 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22621 		}
22622 
22623 	} else {
22624 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22625 			wlc_phy_rfctrl_override_nphy_rev7(
22626 				pi, (0x1 << 4),
22627 				0, 0, 0,
22628 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22629 			wlc_phy_rfctrl_override_nphy_rev7(
22630 				pi, (0x1 << 5), 1, 0,
22631 				0,
22632 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
22633 		} else {
22634 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22635 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22636 		}
22637 	}
22638 
22639 	rxcore_state = wlc_phy_rxcore_getstate_nphy(
22640 		(struct brcms_phy_pub *) pi);
22641 
22642 	vcm_level_max = 8;
22643 
22644 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22645 
22646 		if ((rxcore_state & (1 << core)) == 0)
22647 			continue;
22648 
22649 		wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22650 					       core ==
22651 					       PHY_CORE_0 ?
22652 					       RADIO_MIMO_CORESEL_CORE1 :
22653 					       RADIO_MIMO_CORESEL_CORE2,
22654 					       NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22655 		wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22656 					       core ==
22657 					       PHY_CORE_0 ?
22658 					       RADIO_MIMO_CORESEL_CORE1 :
22659 					       RADIO_MIMO_CORESEL_CORE2,
22660 					       NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22661 
22662 		for (vcm = 0; vcm < vcm_level_max; vcm++) {
22663 			if (NREV_GE(pi->pubpi.phy_rev, 7))
22664 				mod_radio_reg(pi, (core == PHY_CORE_0) ?
22665 					      RADIO_2057_NB_MASTER_CORE0 :
22666 					      RADIO_2057_NB_MASTER_CORE1,
22667 					      RADIO_2057_VCM_MASK, vcm);
22668 			else
22669 				mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22670 					      ((core ==
22671 						PHY_CORE_0) ? RADIO_2056_RX0 :
22672 					       RADIO_2056_RX1),
22673 					      RADIO_2056_VCM_MASK,
22674 					      vcm << RADIO_2056_RSSI_VCM_SHIFT);
22675 
22676 			wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22677 					       &poll_results[vcm][0],
22678 					       NPHY_RSSICAL_NPOLL);
22679 		}
22680 
22681 		for (result_idx = 0; result_idx < 4; result_idx++) {
22682 			if ((core == result_idx / 2) &&
22683 			    (result_idx % 2 == 0)) {
22684 
22685 				min_d = NPHY_RSSICAL_MAXD;
22686 				min_vcm = 0;
22687 				min_poll =
22688 					NPHY_RSSICAL_MAXREAD *
22689 					NPHY_RSSICAL_NPOLL + 1;
22690 				for (vcm = 0; vcm < vcm_level_max; vcm++) {
22691 					curr_d =
22692 						poll_results[vcm][result_idx] *
22693 						poll_results[vcm][result_idx] +
22694 						poll_results[vcm][result_idx +
22695 								  1] *
22696 						poll_results[vcm][result_idx +
22697 								  1];
22698 					if (curr_d < min_d) {
22699 						min_d = curr_d;
22700 						min_vcm = vcm;
22701 					}
22702 					if (poll_results[vcm][result_idx] <
22703 					    min_poll)
22704 						min_poll =
22705 							poll_results[vcm]
22706 							[result_idx];
22707 				}
22708 				vcm_final = min_vcm;
22709 				poll_results_min[result_idx] = min_poll;
22710 			}
22711 		}
22712 
22713 		if (NREV_GE(pi->pubpi.phy_rev, 7))
22714 			mod_radio_reg(pi, (core == PHY_CORE_0) ?
22715 				      RADIO_2057_NB_MASTER_CORE0 :
22716 				      RADIO_2057_NB_MASTER_CORE1,
22717 				      RADIO_2057_VCM_MASK, vcm_final);
22718 		else
22719 			mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22720 				      ((core ==
22721 					PHY_CORE_0) ? RADIO_2056_RX0 :
22722 				       RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22723 				      vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22724 
22725 		for (result_idx = 0; result_idx < 4; result_idx++) {
22726 			if (core == result_idx / 2) {
22727 				fine_digital_offset[result_idx] =
22728 					(NPHY_RSSICAL_NB_TARGET *
22729 					 NPHY_RSSICAL_NPOLL) -
22730 					poll_results[vcm_final][result_idx];
22731 				if (fine_digital_offset[result_idx] < 0) {
22732 					fine_digital_offset[result_idx] =
22733 						abs(fine_digital_offset
22734 						    [result_idx]);
22735 					fine_digital_offset[result_idx] +=
22736 						(NPHY_RSSICAL_NPOLL / 2);
22737 					fine_digital_offset[result_idx] /=
22738 						NPHY_RSSICAL_NPOLL;
22739 					fine_digital_offset[result_idx] =
22740 						-fine_digital_offset[
22741 								    result_idx];
22742 				} else {
22743 					fine_digital_offset[result_idx] +=
22744 						(NPHY_RSSICAL_NPOLL / 2);
22745 					fine_digital_offset[result_idx] /=
22746 						NPHY_RSSICAL_NPOLL;
22747 				}
22748 
22749 				if (poll_results_min[result_idx] ==
22750 				    NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22751 					fine_digital_offset[result_idx] =
22752 						(NPHY_RSSICAL_NB_TARGET -
22753 						 NPHY_RSSICAL_MAXREAD - 1);
22754 
22755 				wlc_phy_scale_offset_rssi_nphy(
22756 					pi, 0x0,
22757 					(s8)
22758 					fine_digital_offset
22759 					[result_idx],
22760 					(result_idx / 2 == 0) ?
22761 					RADIO_MIMO_CORESEL_CORE1 :
22762 					RADIO_MIMO_CORESEL_CORE2,
22763 					(result_idx % 2 == 0) ?
22764 					NPHY_RAIL_I : NPHY_RAIL_Q,
22765 					NPHY_RSSI_SEL_NB);
22766 			}
22767 		}
22768 
22769 	}
22770 
22771 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22772 
22773 		if ((rxcore_state & (1 << core)) == 0)
22774 			continue;
22775 
22776 		for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22777 			if (wb_cnt == 0) {
22778 				rssi_type = NPHY_RSSI_SEL_W1;
22779 				target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22780 			} else {
22781 				rssi_type = NPHY_RSSI_SEL_W2;
22782 				target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22783 			}
22784 
22785 			wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22786 						       core ==
22787 						       PHY_CORE_0 ?
22788 						       RADIO_MIMO_CORESEL_CORE1
22789 						       :
22790 						       RADIO_MIMO_CORESEL_CORE2,
22791 						       NPHY_RAIL_I, rssi_type);
22792 			wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22793 						       core ==
22794 						       PHY_CORE_0 ?
22795 						       RADIO_MIMO_CORESEL_CORE1
22796 						       :
22797 						       RADIO_MIMO_CORESEL_CORE2,
22798 						       NPHY_RAIL_Q, rssi_type);
22799 
22800 			wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22801 					       NPHY_RSSICAL_NPOLL);
22802 
22803 			for (result_idx = 0; result_idx < 4; result_idx++) {
22804 				if (core == result_idx / 2) {
22805 					fine_digital_offset[result_idx] =
22806 						(target_code *
22807 						 NPHY_RSSICAL_NPOLL) -
22808 						poll_result_core[result_idx];
22809 					if (fine_digital_offset[result_idx] <
22810 					    0) {
22811 						fine_digital_offset[result_idx]
22812 							= abs(
22813 							    fine_digital_offset
22814 							    [result_idx]);
22815 						fine_digital_offset[result_idx]
22816 							+= (NPHY_RSSICAL_NPOLL
22817 							    / 2);
22818 						fine_digital_offset[result_idx]
22819 							/= NPHY_RSSICAL_NPOLL;
22820 						fine_digital_offset[result_idx]
22821 							= -fine_digital_offset
22822 								[result_idx];
22823 					} else {
22824 						fine_digital_offset[result_idx]
22825 							+= (NPHY_RSSICAL_NPOLL
22826 							    / 2);
22827 						fine_digital_offset[result_idx]
22828 							/= NPHY_RSSICAL_NPOLL;
22829 					}
22830 
22831 					wlc_phy_scale_offset_rssi_nphy(
22832 						pi, 0x0,
22833 						(s8)
22834 						fine_digital_offset
22835 						[core *
22836 						 2],
22837 						(core == PHY_CORE_0) ?
22838 						RADIO_MIMO_CORESEL_CORE1 :
22839 						RADIO_MIMO_CORESEL_CORE2,
22840 						(result_idx % 2 == 0) ?
22841 						NPHY_RAIL_I :
22842 						NPHY_RAIL_Q,
22843 						rssi_type);
22844 				}
22845 			}
22846 
22847 		}
22848 	}
22849 
22850 	write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22851 	write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22852 
22853 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22854 
22855 	mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22856 	mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22857 	mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22858 
22859 	mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22860 	mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22861 	mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22862 
22863 	write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22864 	write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22865 	write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22866 	write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22867 	write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22868 	write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22869 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22870 		write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22871 		write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22872 		write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22873 		write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22874 	}
22875 	write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22876 	write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22877 	write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22878 	write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22879 	write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22880 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22881 		write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22882 		write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22883 		write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22884 		write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22885 	}
22886 	write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22887 	write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22888 
22889 	if (CHSPEC_IS2G(pi->radio_chanspec)) {
22890 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22891 			pi->rssical_cache.rssical_radio_regs_2G[0] =
22892 				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22893 			pi->rssical_cache.rssical_radio_regs_2G[1] =
22894 				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22895 		} else {
22896 			pi->rssical_cache.rssical_radio_regs_2G[0] =
22897 				read_radio_reg(pi,
22898 					       RADIO_2056_RX_RSSI_MISC |
22899 					       RADIO_2056_RX0);
22900 			pi->rssical_cache.rssical_radio_regs_2G[1] =
22901 				read_radio_reg(pi,
22902 					       RADIO_2056_RX_RSSI_MISC |
22903 					       RADIO_2056_RX1);
22904 		}
22905 
22906 		pi->rssical_cache.rssical_phyregs_2G[0] =
22907 			read_phy_reg(pi, 0x1a6);
22908 		pi->rssical_cache.rssical_phyregs_2G[1] =
22909 			read_phy_reg(pi, 0x1ac);
22910 		pi->rssical_cache.rssical_phyregs_2G[2] =
22911 			read_phy_reg(pi, 0x1b2);
22912 		pi->rssical_cache.rssical_phyregs_2G[3] =
22913 			read_phy_reg(pi, 0x1b8);
22914 		pi->rssical_cache.rssical_phyregs_2G[4] =
22915 			read_phy_reg(pi, 0x1a4);
22916 		pi->rssical_cache.rssical_phyregs_2G[5] =
22917 			read_phy_reg(pi, 0x1aa);
22918 		pi->rssical_cache.rssical_phyregs_2G[6] =
22919 			read_phy_reg(pi, 0x1b0);
22920 		pi->rssical_cache.rssical_phyregs_2G[7] =
22921 			read_phy_reg(pi, 0x1b6);
22922 		pi->rssical_cache.rssical_phyregs_2G[8] =
22923 			read_phy_reg(pi, 0x1a5);
22924 		pi->rssical_cache.rssical_phyregs_2G[9] =
22925 			read_phy_reg(pi, 0x1ab);
22926 		pi->rssical_cache.rssical_phyregs_2G[10] =
22927 			read_phy_reg(pi, 0x1b1);
22928 		pi->rssical_cache.rssical_phyregs_2G[11] =
22929 			read_phy_reg(pi, 0x1b7);
22930 
22931 		pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22932 	} else {
22933 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22934 			pi->rssical_cache.rssical_radio_regs_5G[0] =
22935 				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22936 			pi->rssical_cache.rssical_radio_regs_5G[1] =
22937 				read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22938 		} else {
22939 			pi->rssical_cache.rssical_radio_regs_5G[0] =
22940 				read_radio_reg(pi,
22941 					       RADIO_2056_RX_RSSI_MISC |
22942 					       RADIO_2056_RX0);
22943 			pi->rssical_cache.rssical_radio_regs_5G[1] =
22944 				read_radio_reg(pi,
22945 					       RADIO_2056_RX_RSSI_MISC |
22946 					       RADIO_2056_RX1);
22947 		}
22948 
22949 		pi->rssical_cache.rssical_phyregs_5G[0] =
22950 			read_phy_reg(pi, 0x1a6);
22951 		pi->rssical_cache.rssical_phyregs_5G[1] =
22952 			read_phy_reg(pi, 0x1ac);
22953 		pi->rssical_cache.rssical_phyregs_5G[2] =
22954 			read_phy_reg(pi, 0x1b2);
22955 		pi->rssical_cache.rssical_phyregs_5G[3] =
22956 			read_phy_reg(pi, 0x1b8);
22957 		pi->rssical_cache.rssical_phyregs_5G[4] =
22958 			read_phy_reg(pi, 0x1a4);
22959 		pi->rssical_cache.rssical_phyregs_5G[5] =
22960 			read_phy_reg(pi, 0x1aa);
22961 		pi->rssical_cache.rssical_phyregs_5G[6] =
22962 			read_phy_reg(pi, 0x1b0);
22963 		pi->rssical_cache.rssical_phyregs_5G[7] =
22964 			read_phy_reg(pi, 0x1b6);
22965 		pi->rssical_cache.rssical_phyregs_5G[8] =
22966 			read_phy_reg(pi, 0x1a5);
22967 		pi->rssical_cache.rssical_phyregs_5G[9] =
22968 			read_phy_reg(pi, 0x1ab);
22969 		pi->rssical_cache.rssical_phyregs_5G[10] =
22970 			read_phy_reg(pi, 0x1b1);
22971 		pi->rssical_cache.rssical_phyregs_5G[11] =
22972 			read_phy_reg(pi, 0x1b7);
22973 
22974 		pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22975 	}
22976 
22977 	wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22978 	wlc_phy_clip_det_nphy(pi, 1, clip_state);
22979 }
22980 
wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy * pi,u8 rssi_type)22981 static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
22982 {
22983 	s32 target_code;
22984 	u16 classif_state;
22985 	u16 clip_state[2];
22986 	u16 rssi_ctrl_state[2], pd_state[2];
22987 	u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
22988 	u16 rfctrlintc_override_val;
22989 	u16 clip_off[] = { 0xffff, 0xffff };
22990 	u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
22991 	u8 vcm, min_vcm, vcm_tmp[4];
22992 	u8 vcm_final[4] = { 0, 0, 0, 0 };
22993 	u8 result_idx, ctr;
22994 	s32 poll_results[4][4] = {
22995 		{0, 0, 0, 0},
22996 		{0, 0, 0, 0},
22997 		{0, 0, 0, 0},
22998 		{0, 0, 0, 0}
22999 	};
23000 	s32 poll_miniq[4][2] = {
23001 		{0, 0},
23002 		{0, 0},
23003 		{0, 0},
23004 		{0, 0}
23005 	};
23006 	s32 min_d, curr_d;
23007 	s32 fine_digital_offset[4];
23008 	s32 poll_results_min[4] = { 0, 0, 0, 0 };
23009 	s32 min_poll;
23010 
23011 	switch (rssi_type) {
23012 	case NPHY_RSSI_SEL_NB:
23013 		target_code = NPHY_RSSICAL_NB_TARGET;
23014 		break;
23015 	case NPHY_RSSI_SEL_W1:
23016 		target_code = NPHY_RSSICAL_W1_TARGET;
23017 		break;
23018 	case NPHY_RSSI_SEL_W2:
23019 		target_code = NPHY_RSSICAL_W2_TARGET;
23020 		break;
23021 	default:
23022 		return;
23023 		break;
23024 	}
23025 
23026 	classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
23027 	wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
23028 	wlc_phy_clip_det_nphy(pi, 0, clip_state);
23029 	wlc_phy_clip_det_nphy(pi, 1, clip_off);
23030 
23031 	rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
23032 	rfctrlintc_override_val =
23033 		CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
23034 
23035 	rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
23036 	rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
23037 	write_phy_reg(pi, 0x91, rfctrlintc_override_val);
23038 	write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
23039 
23040 	rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
23041 	rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
23042 	write_phy_reg(pi, 0x92, rfctrlintc_override_val);
23043 	write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
23044 
23045 	pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
23046 		  RADIO_2055_WBRSSI_G2_PD;
23047 	pd_state[0] =
23048 		read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
23049 	pd_state[1] =
23050 		read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
23051 	mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
23052 	mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
23053 	rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
23054 			 RADIO_2055_WBRSSI_G2_SEL;
23055 	rssi_ctrl_state[0] =
23056 		read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
23057 	rssi_ctrl_state[1] =
23058 		read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
23059 	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
23060 
23061 	wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
23062 				       NPHY_RAIL_I, rssi_type);
23063 	wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
23064 				       NPHY_RAIL_Q, rssi_type);
23065 
23066 	for (vcm = 0; vcm < 4; vcm++) {
23067 
23068 		vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
23069 		if (rssi_type != NPHY_RSSI_SEL_W2)
23070 			wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
23071 
23072 		wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
23073 				       NPHY_RSSICAL_NPOLL);
23074 
23075 		if ((rssi_type == NPHY_RSSI_SEL_W1)
23076 		    || (rssi_type == NPHY_RSSI_SEL_W2)) {
23077 			for (ctr = 0; ctr < 2; ctr++)
23078 				poll_miniq[vcm][ctr] =
23079 					min(poll_results[vcm][ctr * 2 + 0],
23080 					    poll_results[vcm][ctr * 2 + 1]);
23081 		}
23082 	}
23083 
23084 	for (result_idx = 0; result_idx < 4; result_idx++) {
23085 		min_d = NPHY_RSSICAL_MAXD;
23086 		min_vcm = 0;
23087 		min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
23088 		for (vcm = 0; vcm < 4; vcm++) {
23089 			curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
23090 				      poll_results[vcm][result_idx] :
23091 				      poll_miniq[vcm][result_idx / 2]) -
23092 				     (target_code * NPHY_RSSICAL_NPOLL));
23093 			if (curr_d < min_d) {
23094 				min_d = curr_d;
23095 				min_vcm = vcm;
23096 			}
23097 			if (poll_results[vcm][result_idx] < min_poll)
23098 				min_poll = poll_results[vcm][result_idx];
23099 		}
23100 		vcm_final[result_idx] = min_vcm;
23101 		poll_results_min[result_idx] = min_poll;
23102 	}
23103 
23104 	if (rssi_type != NPHY_RSSI_SEL_W2)
23105 		wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
23106 
23107 	for (result_idx = 0; result_idx < 4; result_idx++) {
23108 		fine_digital_offset[result_idx] =
23109 			(target_code * NPHY_RSSICAL_NPOLL) -
23110 			poll_results[vcm_final[result_idx]][result_idx];
23111 		if (fine_digital_offset[result_idx] < 0) {
23112 			fine_digital_offset[result_idx] =
23113 				abs(fine_digital_offset[result_idx]);
23114 			fine_digital_offset[result_idx] +=
23115 				(NPHY_RSSICAL_NPOLL / 2);
23116 			fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23117 			fine_digital_offset[result_idx] =
23118 				-fine_digital_offset[result_idx];
23119 		} else {
23120 			fine_digital_offset[result_idx] +=
23121 				(NPHY_RSSICAL_NPOLL / 2);
23122 			fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23123 		}
23124 
23125 		if (poll_results_min[result_idx] ==
23126 		    NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
23127 			fine_digital_offset[result_idx] =
23128 				(target_code - NPHY_RSSICAL_MAXREAD - 1);
23129 
23130 		wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
23131 					       (s8)
23132 					       fine_digital_offset[result_idx],
23133 					       (result_idx / 2 ==
23134 						0) ? RADIO_MIMO_CORESEL_CORE1 :
23135 					       RADIO_MIMO_CORESEL_CORE2,
23136 					       (result_idx % 2 ==
23137 						0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
23138 					       rssi_type);
23139 	}
23140 
23141 	mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
23142 	mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
23143 	if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
23144 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23145 				     NPHY_RSSI_SEL_NB);
23146 	else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
23147 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23148 				     NPHY_RSSI_SEL_W1);
23149 	else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G2_SEL)
23150 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23151 				     NPHY_RSSI_SEL_W2);
23152 	else
23153 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23154 				     NPHY_RSSI_SEL_W2);
23155 	if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
23156 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23157 				     NPHY_RSSI_SEL_NB);
23158 	else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
23159 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23160 				     NPHY_RSSI_SEL_W1);
23161 	else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G2_SEL)
23162 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23163 				     NPHY_RSSI_SEL_W2);
23164 	else
23165 		wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23166 				     NPHY_RSSI_SEL_W2);
23167 
23168 	wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
23169 
23170 	write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
23171 	write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
23172 	write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
23173 	write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
23174 
23175 	wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
23176 	wlc_phy_clip_det_nphy(pi, 1, clip_state);
23177 
23178 	wlc_phy_resetcca_nphy(pi);
23179 }
23180 
wlc_phy_rssi_cal_nphy(struct brcms_phy * pi)23181 void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
23182 {
23183 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23184 		wlc_phy_rssi_cal_nphy_rev3(pi);
23185 	} else {
23186 		wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
23187 		wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
23188 		wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
23189 	}
23190 }
23191 
23192 int
wlc_phy_rssi_compute_nphy(struct brcms_phy * pi,struct d11rxhdr * rxh)23193 wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
23194 {
23195 	s16 rxpwr, rxpwr0, rxpwr1;
23196 	s16 phyRx0_l, phyRx2_l;
23197 
23198 	rxpwr = 0;
23199 	rxpwr0 = rxh->PhyRxStatus_1 & PRXS1_nphy_PWR0_MASK;
23200 	rxpwr1 = (rxh->PhyRxStatus_1 & PRXS1_nphy_PWR1_MASK) >> 8;
23201 
23202 	if (rxpwr0 > 127)
23203 		rxpwr0 -= 256;
23204 	if (rxpwr1 > 127)
23205 		rxpwr1 -= 256;
23206 
23207 	phyRx0_l = rxh->PhyRxStatus_0 & 0x00ff;
23208 	phyRx2_l = rxh->PhyRxStatus_2 & 0x00ff;
23209 	if (phyRx2_l > 127)
23210 		phyRx2_l -= 256;
23211 
23212 	if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
23213 		rxpwr0 = rxpwr1;
23214 		rxpwr1 = phyRx2_l;
23215 	}
23216 
23217 	if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
23218 		rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23219 	else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23220 		rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23221 	else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23222 		rxpwr = (rxpwr0 + rxpwr1) >> 1;
23223 
23224 	return rxpwr;
23225 }
23226 
23227 static void
wlc_phy_loadsampletable_nphy(struct brcms_phy * pi,struct cordic_iq * tone_buf,u16 num_samps)23228 wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23229 			     u16 num_samps)
23230 {
23231 	u16 t;
23232 	u32 *data_buf = NULL;
23233 
23234 	data_buf = kmalloc(sizeof(u32) * num_samps, GFP_ATOMIC);
23235 	if (data_buf == NULL)
23236 		return;
23237 
23238 	if (pi->phyhang_avoid)
23239 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
23240 
23241 	for (t = 0; t < num_samps; t++)
23242 		data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23243 			      (((unsigned int)tone_buf[t].q) & 0x3ff);
23244 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23245 				 data_buf);
23246 
23247 	kfree(data_buf);
23248 
23249 	if (pi->phyhang_avoid)
23250 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
23251 }
23252 
23253 static u16
wlc_phy_gen_load_samples_nphy(struct brcms_phy * pi,u32 f_kHz,u16 max_val,u8 dac_test_mode)23254 wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23255 			      u8 dac_test_mode)
23256 {
23257 	u8 phy_bw, is_phybw40;
23258 	u16 num_samps, t, spur;
23259 	s32 theta = 0, rot = 0;
23260 	u32 tbl_len;
23261 	struct cordic_iq *tone_buf = NULL;
23262 
23263 	is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23264 	phy_bw = (is_phybw40 == 1) ? 40 : 20;
23265 	tbl_len = (phy_bw << 3);
23266 
23267 	if (dac_test_mode == 1) {
23268 		spur = read_phy_reg(pi, 0x01);
23269 		spur = (spur >> 15) & 1;
23270 		phy_bw = (spur == 1) ? 82 : 80;
23271 		phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23272 
23273 		tbl_len = (phy_bw << 1);
23274 	}
23275 
23276 	tone_buf = kmalloc(sizeof(struct cordic_iq) * tbl_len, GFP_ATOMIC);
23277 	if (tone_buf == NULL)
23278 		return 0;
23279 
23280 	num_samps = (u16) tbl_len;
23281 	rot = ((f_kHz * 36) / phy_bw) / 100;
23282 	theta = 0;
23283 
23284 	for (t = 0; t < num_samps; t++) {
23285 
23286 		tone_buf[t] = cordic_calc_iq(theta);
23287 
23288 		theta += rot;
23289 
23290 		tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
23291 		tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
23292 	}
23293 
23294 	wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23295 
23296 	kfree(tone_buf);
23297 
23298 	return num_samps;
23299 }
23300 
23301 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)23302 wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23303 			u16 wait, u8 iqmode, u8 dac_test_mode,
23304 			bool modify_bbmult)
23305 {
23306 	u16 bb_mult;
23307 	u8 phy_bw, sample_cmd;
23308 	u16 orig_RfseqCoreActv;
23309 	u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
23310 	    lpf_bw_ctl_miscreg4;
23311 
23312 	if (pi->phyhang_avoid)
23313 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
23314 
23315 	phy_bw = 20;
23316 	if (CHSPEC_IS40(pi->radio_chanspec))
23317 		phy_bw = 40;
23318 
23319 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23320 
23321 		lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23322 		lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23323 		if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
23324 			lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23325 					      (0x7 << 8);
23326 			lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23327 					      (0x7 << 8);
23328 		} else {
23329 			wlc_phy_rfctrl_override_nphy_rev7(
23330 				pi,
23331 				(0x1 << 7),
23332 				wlc_phy_read_lpf_bw_ctl_nphy
23333 					(pi,
23334 					0), 0, 0,
23335 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
23336 
23337 			pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23338 
23339 			lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23340 					      (0x7 << 8);
23341 			lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23342 					      (0x7 << 8);
23343 		}
23344 	}
23345 
23346 	if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23347 
23348 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23349 					&bb_mult);
23350 		pi->nphy_bb_mult_save =
23351 			BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23352 	}
23353 
23354 	if (modify_bbmult) {
23355 		bb_mult = (phy_bw == 20) ? 100 : 71;
23356 		bb_mult = (bb_mult << 8) + bb_mult;
23357 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23358 					 &bb_mult);
23359 	}
23360 
23361 	if (pi->phyhang_avoid)
23362 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
23363 
23364 	write_phy_reg(pi, 0xc6, num_samps - 1);
23365 
23366 	if (loops != 0xffff)
23367 		write_phy_reg(pi, 0xc4, loops - 1);
23368 	else
23369 		write_phy_reg(pi, 0xc4, loops);
23370 
23371 	write_phy_reg(pi, 0xc5, wait);
23372 
23373 	orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23374 	or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23375 	if (iqmode) {
23376 
23377 		and_phy_reg(pi, 0xc2, 0x7FFF);
23378 
23379 		or_phy_reg(pi, 0xc2, 0x8000);
23380 	} else {
23381 
23382 		sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23383 		write_phy_reg(pi, 0xc3, sample_cmd);
23384 	}
23385 
23386 	SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23387 
23388 	write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23389 }
23390 
23391 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)23392 wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23393 		     u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23394 {
23395 	u16 num_samps;
23396 	u16 loops = 0xffff;
23397 	u16 wait = 0;
23398 
23399 	num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23400 						  dac_test_mode);
23401 	if (num_samps == 0)
23402 		return -EBADE;
23403 
23404 	wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23405 				dac_test_mode, modify_bbmult);
23406 
23407 	return 0;
23408 }
23409 
wlc_phy_stopplayback_nphy(struct brcms_phy * pi)23410 void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23411 {
23412 	u16 playback_status;
23413 	u16 bb_mult;
23414 
23415 	if (pi->phyhang_avoid)
23416 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
23417 
23418 	playback_status = read_phy_reg(pi, 0xc7);
23419 	if (playback_status & 0x1)
23420 		or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23421 	else if (playback_status & 0x2)
23422 		and_phy_reg(pi, 0xc2,
23423 			    (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23424 
23425 	and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23426 
23427 	if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23428 
23429 		bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23430 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23431 					 &bb_mult);
23432 
23433 		pi->nphy_bb_mult_save = 0;
23434 	}
23435 
23436 	if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23437 		if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23438 			wlc_phy_rfctrl_override_nphy_rev7(
23439 				pi,
23440 				(0x1 << 7),
23441 				0, 0, 1,
23442 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
23443 			pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23444 		}
23445 	}
23446 
23447 	if (pi->phyhang_avoid)
23448 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
23449 }
23450 
brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy * pi)23451 static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23452 {
23453 	u32 *tx_pwrctrl_tbl = NULL;
23454 	uint phyrev = pi->pubpi.phy_rev;
23455 
23456 	if (PHY_IPA(pi)) {
23457 		tx_pwrctrl_tbl =
23458 			wlc_phy_get_ipa_gaintbl_nphy(pi);
23459 	} else {
23460 		if (CHSPEC_IS5G(pi->radio_chanspec)) {
23461 			if (NREV_IS(phyrev, 3))
23462 				tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23463 			else if (NREV_IS(phyrev, 4))
23464 				tx_pwrctrl_tbl =
23465 					(pi->srom_fem5g.extpagain == 3) ?
23466 					nphy_tpc_5GHz_txgain_HiPwrEPA :
23467 					nphy_tpc_5GHz_txgain_rev4;
23468 			else
23469 				tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23470 		} else {
23471 			if (NREV_GE(phyrev, 7)) {
23472 				if (pi->pubpi.radiorev == 3)
23473 					tx_pwrctrl_tbl =
23474 						nphy_tpc_txgain_epa_2057rev3;
23475 				else if (pi->pubpi.radiorev == 5)
23476 					tx_pwrctrl_tbl =
23477 						nphy_tpc_txgain_epa_2057rev5;
23478 			} else {
23479 				if (NREV_GE(phyrev, 5) &&
23480 				   (pi->srom_fem2g.extpagain ==	3))
23481 					tx_pwrctrl_tbl =
23482 						nphy_tpc_txgain_HiPwrEPA;
23483 				else
23484 					tx_pwrctrl_tbl =
23485 						nphy_tpc_txgain_rev3;
23486 			}
23487 		}
23488 	}
23489 	return tx_pwrctrl_tbl;
23490 }
23491 
wlc_phy_get_tx_gain_nphy(struct brcms_phy * pi)23492 struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23493 {
23494 	u16 base_idx[2], curr_gain[2];
23495 	u8 core_no;
23496 	struct nphy_txgains target_gain;
23497 	u32 *tx_pwrctrl_tbl = NULL;
23498 
23499 	if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23500 		if (pi->phyhang_avoid)
23501 			wlc_phy_stay_in_carriersearch_nphy(pi, true);
23502 
23503 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23504 					curr_gain);
23505 
23506 		if (pi->phyhang_avoid)
23507 			wlc_phy_stay_in_carriersearch_nphy(pi, false);
23508 
23509 		for (core_no = 0; core_no < 2; core_no++) {
23510 			if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23511 				target_gain.ipa[core_no] =
23512 					curr_gain[core_no] & 0x0007;
23513 				target_gain.pad[core_no] =
23514 					((curr_gain[core_no] & 0x00F8) >> 3);
23515 				target_gain.pga[core_no] =
23516 					((curr_gain[core_no] & 0x0F00) >> 8);
23517 				target_gain.txgm[core_no] =
23518 					((curr_gain[core_no] & 0x7000) >> 12);
23519 				target_gain.txlpf[core_no] =
23520 					((curr_gain[core_no] & 0x8000) >> 15);
23521 			} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23522 				target_gain.ipa[core_no] =
23523 					curr_gain[core_no] & 0x000F;
23524 				target_gain.pad[core_no] =
23525 					((curr_gain[core_no] & 0x00F0) >> 4);
23526 				target_gain.pga[core_no] =
23527 					((curr_gain[core_no] & 0x0F00) >> 8);
23528 				target_gain.txgm[core_no] =
23529 					((curr_gain[core_no] & 0x7000) >> 12);
23530 			} else {
23531 				target_gain.ipa[core_no] =
23532 					curr_gain[core_no] & 0x0003;
23533 				target_gain.pad[core_no] =
23534 					((curr_gain[core_no] & 0x000C) >> 2);
23535 				target_gain.pga[core_no] =
23536 					((curr_gain[core_no] & 0x0070) >> 4);
23537 				target_gain.txgm[core_no] =
23538 					((curr_gain[core_no] & 0x0380) >> 7);
23539 			}
23540 		}
23541 	} else {
23542 		uint phyrev = pi->pubpi.phy_rev;
23543 
23544 		base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23545 		base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23546 		for (core_no = 0; core_no < 2; core_no++) {
23547 			if (NREV_GE(phyrev, 3)) {
23548 				tx_pwrctrl_tbl =
23549 					brcms_phy_get_tx_pwrctrl_tbl(pi);
23550 				if (NREV_GE(phyrev, 7)) {
23551 					target_gain.ipa[core_no] =
23552 						(tx_pwrctrl_tbl
23553 						 [base_idx[core_no]]
23554 						 >> 16) & 0x7;
23555 					target_gain.pad[core_no] =
23556 						(tx_pwrctrl_tbl
23557 						 [base_idx[core_no]]
23558 						 >> 19) & 0x1f;
23559 					target_gain.pga[core_no] =
23560 						(tx_pwrctrl_tbl
23561 						 [base_idx[core_no]]
23562 						 >> 24) & 0xf;
23563 					target_gain.txgm[core_no] =
23564 						(tx_pwrctrl_tbl
23565 						 [base_idx[core_no]]
23566 						 >> 28) & 0x7;
23567 					target_gain.txlpf[core_no] =
23568 						(tx_pwrctrl_tbl
23569 						 [base_idx[core_no]]
23570 						 >> 31) & 0x1;
23571 				} else {
23572 					target_gain.ipa[core_no] =
23573 						(tx_pwrctrl_tbl
23574 						 [base_idx[core_no]]
23575 						 >> 16) & 0xf;
23576 					target_gain.pad[core_no] =
23577 						(tx_pwrctrl_tbl
23578 						 [base_idx[core_no]]
23579 						 >> 20) & 0xf;
23580 					target_gain.pga[core_no] =
23581 						(tx_pwrctrl_tbl
23582 						 [base_idx[core_no]]
23583 						 >> 24) & 0xf;
23584 					target_gain.txgm[core_no] =
23585 						(tx_pwrctrl_tbl
23586 						[base_idx[core_no]]
23587 						 >> 28) & 0x7;
23588 				}
23589 			} else {
23590 				target_gain.ipa[core_no] =
23591 					(nphy_tpc_txgain[base_idx[core_no]] >>
23592 					 16) & 0x3;
23593 				target_gain.pad[core_no] =
23594 					(nphy_tpc_txgain[base_idx[core_no]] >>
23595 					 18) & 0x3;
23596 				target_gain.pga[core_no] =
23597 					(nphy_tpc_txgain[base_idx[core_no]] >>
23598 					 20) & 0x7;
23599 				target_gain.txgm[core_no] =
23600 					(nphy_tpc_txgain[base_idx[core_no]] >>
23601 					 23) & 0x7;
23602 			}
23603 		}
23604 	}
23605 
23606 	return target_gain;
23607 }
23608 
23609 static void
wlc_phy_iqcal_gainparams_nphy(struct brcms_phy * pi,u16 core_no,struct nphy_txgains target_gain,struct nphy_iqcal_params * params)23610 wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23611 			      struct nphy_txgains target_gain,
23612 			      struct nphy_iqcal_params *params)
23613 {
23614 	u8 k;
23615 	int idx;
23616 	u16 gain_index;
23617 	u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23618 
23619 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23620 		if (NREV_GE(pi->pubpi.phy_rev, 7))
23621 			params->txlpf = target_gain.txlpf[core_no];
23622 
23623 		params->txgm = target_gain.txgm[core_no];
23624 		params->pga = target_gain.pga[core_no];
23625 		params->pad = target_gain.pad[core_no];
23626 		params->ipa = target_gain.ipa[core_no];
23627 		if (NREV_GE(pi->pubpi.phy_rev, 7))
23628 			params->cal_gain =
23629 				((params->txlpf << 15) | (params->txgm << 12) |
23630 				 (params->pga << 8) |
23631 				 (params->pad << 3) | (params->ipa));
23632 		else
23633 			params->cal_gain =
23634 				((params->txgm << 12) | (params->pga << 8) |
23635 				 (params->pad << 4) | (params->ipa));
23636 
23637 		params->ncorr[0] = 0x79;
23638 		params->ncorr[1] = 0x79;
23639 		params->ncorr[2] = 0x79;
23640 		params->ncorr[3] = 0x79;
23641 		params->ncorr[4] = 0x79;
23642 	} else {
23643 
23644 		gain_index = ((target_gain.pad[core_no] << 0) |
23645 			      (target_gain.pga[core_no] << 4) |
23646 			      (target_gain.txgm[core_no] << 8));
23647 
23648 		idx = -1;
23649 		for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23650 			if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23651 			    gain_index) {
23652 				idx = k;
23653 				break;
23654 			}
23655 		}
23656 
23657 		params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23658 		params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23659 		params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23660 		params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23661 				    (params->pad << 2));
23662 		params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23663 		params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23664 		params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23665 		params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23666 	}
23667 }
23668 
wlc_phy_txcal_radio_setup_nphy(struct brcms_phy * pi)23669 static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23670 {
23671 	u16 jtag_core, core;
23672 
23673 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23674 
23675 		for (core = 0; core <= 1; core++) {
23676 
23677 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23678 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23679 						TX_SSI_MASTER);
23680 
23681 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23682 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23683 						IQCAL_VCM_HG);
23684 
23685 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23686 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23687 						IQCAL_IDAC);
23688 
23689 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23690 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23691 						TSSI_VCM);
23692 
23693 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23694 
23695 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23696 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23697 						TX_SSI_MUX);
23698 
23699 			if (pi->pubpi.radiorev != 5)
23700 				pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23701 					READ_RADIO_REG3(pi, RADIO_2057, TX,
23702 							core,
23703 							TSSIA);
23704 
23705 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23706 			       READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23707 
23708 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23709 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23710 						TSSI_MISC1);
23711 
23712 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
23713 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23714 						 TX_SSI_MASTER, 0x0a);
23715 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23716 						 IQCAL_VCM_HG, 0x43);
23717 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23718 						 IQCAL_IDAC, 0x55);
23719 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23720 						 TSSI_VCM, 0x00);
23721 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23722 						 TSSIG, 0x00);
23723 				if (pi->use_int_tx_iqlo_cal_nphy) {
23724 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23725 							 core, TX_SSI_MUX, 0x4);
23726 					if (!(pi->
23727 					internal_tx_iqlo_cal_tapoff_intpa_nphy))
23728 						WRITE_RADIO_REG3(pi, RADIO_2057,
23729 								 TX, core,
23730 								 TSSIA, 0x31);
23731 					else
23732 						WRITE_RADIO_REG3(pi, RADIO_2057,
23733 								 TX, core,
23734 								 TSSIA, 0x21);
23735 				}
23736 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23737 						 TSSI_MISC1, 0x00);
23738 			} else {
23739 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23740 						 TX_SSI_MASTER, 0x06);
23741 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23742 						 IQCAL_VCM_HG, 0x43);
23743 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23744 						 IQCAL_IDAC, 0x55);
23745 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23746 						 TSSI_VCM, 0x00);
23747 
23748 				if (pi->pubpi.radiorev != 5)
23749 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23750 							 core, TSSIA, 0x00);
23751 				if (pi->use_int_tx_iqlo_cal_nphy) {
23752 					WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23753 							 core, TX_SSI_MUX,
23754 							 0x06);
23755 					if (!(pi->
23756 					internal_tx_iqlo_cal_tapoff_intpa_nphy))
23757 						WRITE_RADIO_REG3(pi, RADIO_2057,
23758 								 TX, core,
23759 								 TSSIG, 0x31);
23760 					else
23761 						WRITE_RADIO_REG3(pi, RADIO_2057,
23762 								 TX, core,
23763 								 TSSIG, 0x21);
23764 				}
23765 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23766 						 TSSI_MISC1, 0x00);
23767 			}
23768 		}
23769 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23770 
23771 		for (core = 0; core <= 1; core++) {
23772 			jtag_core =
23773 				(core ==
23774 				 PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23775 
23776 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23777 				read_radio_reg(pi,
23778 					       RADIO_2056_TX_TX_SSI_MASTER |
23779 					       jtag_core);
23780 
23781 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23782 				read_radio_reg(pi,
23783 					       RADIO_2056_TX_IQCAL_VCM_HG |
23784 					       jtag_core);
23785 
23786 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23787 				read_radio_reg(pi,
23788 					       RADIO_2056_TX_IQCAL_IDAC |
23789 					       jtag_core);
23790 
23791 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23792 				read_radio_reg(
23793 					pi,
23794 					RADIO_2056_TX_TSSI_VCM |
23795 					jtag_core);
23796 
23797 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23798 				read_radio_reg(pi,
23799 					       RADIO_2056_TX_TX_AMP_DET |
23800 					       jtag_core);
23801 
23802 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23803 				read_radio_reg(pi,
23804 					       RADIO_2056_TX_TX_SSI_MUX |
23805 					       jtag_core);
23806 
23807 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23808 				read_radio_reg(pi,
23809 					       RADIO_2056_TX_TSSIA | jtag_core);
23810 
23811 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23812 				read_radio_reg(pi,
23813 					       RADIO_2056_TX_TSSIG | jtag_core);
23814 
23815 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23816 				read_radio_reg(pi,
23817 					       RADIO_2056_TX_TSSI_MISC1 |
23818 					       jtag_core);
23819 
23820 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23821 				read_radio_reg(pi,
23822 					       RADIO_2056_TX_TSSI_MISC2 |
23823 					       jtag_core);
23824 
23825 			pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23826 				read_radio_reg(pi,
23827 					       RADIO_2056_TX_TSSI_MISC3 |
23828 					       jtag_core);
23829 
23830 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
23831 				write_radio_reg(pi,
23832 						RADIO_2056_TX_TX_SSI_MASTER |
23833 						jtag_core, 0x0a);
23834 				write_radio_reg(pi,
23835 						RADIO_2056_TX_IQCAL_VCM_HG |
23836 						jtag_core, 0x40);
23837 				write_radio_reg(pi,
23838 						RADIO_2056_TX_IQCAL_IDAC |
23839 						jtag_core, 0x55);
23840 				write_radio_reg(pi,
23841 						RADIO_2056_TX_TSSI_VCM |
23842 						jtag_core, 0x00);
23843 				write_radio_reg(pi,
23844 						RADIO_2056_TX_TX_AMP_DET |
23845 						jtag_core, 0x00);
23846 
23847 				if (PHY_IPA(pi)) {
23848 					write_radio_reg(
23849 						pi,
23850 						RADIO_2056_TX_TX_SSI_MUX
23851 						| jtag_core, 0x4);
23852 					write_radio_reg(pi,
23853 							RADIO_2056_TX_TSSIA |
23854 							jtag_core, 0x1);
23855 				} else {
23856 					write_radio_reg(
23857 						pi,
23858 						RADIO_2056_TX_TX_SSI_MUX
23859 						| jtag_core, 0x00);
23860 					write_radio_reg(pi,
23861 							RADIO_2056_TX_TSSIA |
23862 							jtag_core, 0x2f);
23863 				}
23864 				write_radio_reg(pi,
23865 						RADIO_2056_TX_TSSIG | jtag_core,
23866 						0x00);
23867 				write_radio_reg(pi,
23868 						RADIO_2056_TX_TSSI_MISC1 |
23869 						jtag_core, 0x00);
23870 
23871 				write_radio_reg(pi,
23872 						RADIO_2056_TX_TSSI_MISC2 |
23873 						jtag_core, 0x00);
23874 				write_radio_reg(pi,
23875 						RADIO_2056_TX_TSSI_MISC3 |
23876 						jtag_core, 0x00);
23877 			} else {
23878 				write_radio_reg(pi,
23879 						RADIO_2056_TX_TX_SSI_MASTER |
23880 						jtag_core, 0x06);
23881 				write_radio_reg(pi,
23882 						RADIO_2056_TX_IQCAL_VCM_HG |
23883 						jtag_core, 0x40);
23884 				write_radio_reg(pi,
23885 						RADIO_2056_TX_IQCAL_IDAC |
23886 						jtag_core, 0x55);
23887 				write_radio_reg(pi,
23888 						RADIO_2056_TX_TSSI_VCM |
23889 						jtag_core, 0x00);
23890 				write_radio_reg(pi,
23891 						RADIO_2056_TX_TX_AMP_DET |
23892 						jtag_core, 0x00);
23893 				write_radio_reg(pi,
23894 						RADIO_2056_TX_TSSIA | jtag_core,
23895 						0x00);
23896 
23897 				if (PHY_IPA(pi)) {
23898 
23899 					write_radio_reg(
23900 						pi,
23901 						RADIO_2056_TX_TX_SSI_MUX
23902 						| jtag_core, 0x06);
23903 					if (NREV_LT(pi->pubpi.phy_rev, 5))
23904 						write_radio_reg(
23905 							pi,
23906 							RADIO_2056_TX_TSSIG
23907 							| jtag_core,
23908 							0x11);
23909 					else
23910 						write_radio_reg(
23911 							pi,
23912 							RADIO_2056_TX_TSSIG
23913 							| jtag_core,
23914 							0x1);
23915 				} else {
23916 					write_radio_reg(
23917 						pi,
23918 						RADIO_2056_TX_TX_SSI_MUX
23919 						| jtag_core, 0x00);
23920 					write_radio_reg(pi,
23921 							RADIO_2056_TX_TSSIG |
23922 							jtag_core, 0x20);
23923 				}
23924 
23925 				write_radio_reg(pi,
23926 						RADIO_2056_TX_TSSI_MISC1 |
23927 						jtag_core, 0x00);
23928 				write_radio_reg(pi,
23929 						RADIO_2056_TX_TSSI_MISC2 |
23930 						jtag_core, 0x00);
23931 				write_radio_reg(pi,
23932 						RADIO_2056_TX_TSSI_MISC3 |
23933 						jtag_core, 0x00);
23934 			}
23935 		}
23936 	} else {
23937 
23938 		pi->tx_rx_cal_radio_saveregs[0] =
23939 			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23940 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23941 		pi->tx_rx_cal_radio_saveregs[1] =
23942 			read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23943 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23944 
23945 		pi->tx_rx_cal_radio_saveregs[2] =
23946 			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23947 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23948 		pi->tx_rx_cal_radio_saveregs[3] =
23949 			read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23950 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23951 
23952 		pi->tx_rx_cal_radio_saveregs[4] =
23953 			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23954 		pi->tx_rx_cal_radio_saveregs[5] =
23955 			read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23956 
23957 		if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23958 		    0) {
23959 
23960 			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23961 			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23962 		} else {
23963 
23964 			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23965 			write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23966 		}
23967 
23968 		if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23969 
23970 			or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23971 			or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23972 		} else {
23973 
23974 			and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23975 			and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23976 		}
23977 	}
23978 }
23979 
wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy * pi)23980 static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
23981 {
23982 	u16 jtag_core, core;
23983 
23984 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23985 		for (core = 0; core <= 1; core++) {
23986 
23987 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23988 					 TX_SSI_MASTER,
23989 					 pi->
23990 					 tx_rx_cal_radio_saveregs[(core * 11) +
23991 								  0]);
23992 
23993 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23994 					 pi->
23995 					 tx_rx_cal_radio_saveregs[(core * 11) +
23996 								  1]);
23997 
23998 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23999 					 pi->
24000 					 tx_rx_cal_radio_saveregs[(core * 11) +
24001 								  2]);
24002 
24003 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
24004 					 pi->
24005 					 tx_rx_cal_radio_saveregs[(core * 11) +
24006 								  3]);
24007 
24008 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
24009 					 pi->
24010 					 tx_rx_cal_radio_saveregs[(core * 11) +
24011 								  5]);
24012 
24013 			if (pi->pubpi.radiorev != 5)
24014 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24015 						 TSSIA,
24016 						 pi->tx_rx_cal_radio_saveregs
24017 							     [(core * 11) + 6]);
24018 
24019 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
24020 					 pi->
24021 					 tx_rx_cal_radio_saveregs[(core * 11) +
24022 								  7]);
24023 
24024 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
24025 					 pi->
24026 					 tx_rx_cal_radio_saveregs[(core * 11) +
24027 								  8]);
24028 		}
24029 	} else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24030 		for (core = 0; core <= 1; core++) {
24031 			jtag_core = (core == PHY_CORE_0) ?
24032 				     RADIO_2056_TX0 : RADIO_2056_TX1;
24033 
24034 			write_radio_reg(pi,
24035 					RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
24036 					pi->
24037 					tx_rx_cal_radio_saveregs[(core * 11) +
24038 								 0]);
24039 
24040 			write_radio_reg(pi,
24041 					RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
24042 					pi->
24043 					tx_rx_cal_radio_saveregs[(core * 11) +
24044 								 1]);
24045 
24046 			write_radio_reg(pi,
24047 					RADIO_2056_TX_IQCAL_IDAC | jtag_core,
24048 					pi->
24049 					tx_rx_cal_radio_saveregs[(core * 11) +
24050 								 2]);
24051 
24052 			write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
24053 					pi->
24054 					tx_rx_cal_radio_saveregs[(core * 11) +
24055 								 3]);
24056 
24057 			write_radio_reg(pi,
24058 					RADIO_2056_TX_TX_AMP_DET | jtag_core,
24059 					pi->
24060 					tx_rx_cal_radio_saveregs[(core * 11) +
24061 								 4]);
24062 
24063 			write_radio_reg(pi,
24064 					RADIO_2056_TX_TX_SSI_MUX | jtag_core,
24065 					pi->
24066 					tx_rx_cal_radio_saveregs[(core * 11) +
24067 								 5]);
24068 
24069 			write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
24070 					pi->
24071 					tx_rx_cal_radio_saveregs[(core * 11) +
24072 								 6]);
24073 
24074 			write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
24075 					pi->
24076 					tx_rx_cal_radio_saveregs[(core * 11) +
24077 								 7]);
24078 
24079 			write_radio_reg(pi,
24080 					RADIO_2056_TX_TSSI_MISC1 | jtag_core,
24081 					pi->
24082 					tx_rx_cal_radio_saveregs[(core * 11) +
24083 								 8]);
24084 
24085 			write_radio_reg(pi,
24086 					RADIO_2056_TX_TSSI_MISC2 | jtag_core,
24087 					pi->
24088 					tx_rx_cal_radio_saveregs[(core * 11) +
24089 								 9]);
24090 
24091 			write_radio_reg(pi,
24092 					RADIO_2056_TX_TSSI_MISC3 | jtag_core,
24093 					pi->
24094 					tx_rx_cal_radio_saveregs[(core * 11) +
24095 								 10]);
24096 		}
24097 	} else {
24098 
24099 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
24100 				pi->tx_rx_cal_radio_saveregs[0]);
24101 		write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
24102 				pi->tx_rx_cal_radio_saveregs[1]);
24103 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
24104 				pi->tx_rx_cal_radio_saveregs[2]);
24105 		write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
24106 				pi->tx_rx_cal_radio_saveregs[3]);
24107 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
24108 				pi->tx_rx_cal_radio_saveregs[4]);
24109 		write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
24110 				pi->tx_rx_cal_radio_saveregs[5]);
24111 	}
24112 }
24113 
wlc_phy_txcal_physetup_nphy(struct brcms_phy * pi)24114 static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
24115 {
24116 	u16 val, mask;
24117 
24118 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24119 		pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24120 		pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24121 
24122 		mask = ((0x3 << 8) | (0x3 << 10));
24123 		val = (0x2 << 8);
24124 		val |= (0x2 << 10);
24125 		mod_phy_reg(pi, 0xa6, mask, val);
24126 		mod_phy_reg(pi, 0xa7, mask, val);
24127 
24128 		val = read_phy_reg(pi, 0x8f);
24129 		pi->tx_rx_cal_phy_saveregs[2] = val;
24130 		val |= ((0x1 << 9) | (0x1 << 10));
24131 		write_phy_reg(pi, 0x8f, val);
24132 
24133 		val = read_phy_reg(pi, 0xa5);
24134 		pi->tx_rx_cal_phy_saveregs[3] = val;
24135 		val |= ((0x1 << 9) | (0x1 << 10));
24136 		write_phy_reg(pi, 0xa5, val);
24137 
24138 		pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
24139 		mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
24140 
24141 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24142 					&val);
24143 		pi->tx_rx_cal_phy_saveregs[5] = val;
24144 		val = 0;
24145 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24146 					 &val);
24147 
24148 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24149 					&val);
24150 		pi->tx_rx_cal_phy_saveregs[6] = val;
24151 		val = 0;
24152 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24153 					 &val);
24154 
24155 		pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
24156 		pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
24157 
24158 		if (!(pi->use_int_tx_iqlo_cal_nphy))
24159 			wlc_phy_rfctrlintc_override_nphy(
24160 				pi,
24161 				NPHY_RfctrlIntc_override_PA,
24162 				1,
24163 				RADIO_MIMO_CORESEL_CORE1
24164 				|
24165 				RADIO_MIMO_CORESEL_CORE2);
24166 		else
24167 			wlc_phy_rfctrlintc_override_nphy(
24168 				pi,
24169 				NPHY_RfctrlIntc_override_PA,
24170 				0,
24171 				RADIO_MIMO_CORESEL_CORE1
24172 				|
24173 				RADIO_MIMO_CORESEL_CORE2);
24174 
24175 		wlc_phy_rfctrlintc_override_nphy(pi,
24176 						 NPHY_RfctrlIntc_override_TRSW,
24177 						 0x2, RADIO_MIMO_CORESEL_CORE1);
24178 		wlc_phy_rfctrlintc_override_nphy(pi,
24179 						 NPHY_RfctrlIntc_override_TRSW,
24180 						 0x8, RADIO_MIMO_CORESEL_CORE2);
24181 
24182 		pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
24183 		pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
24184 		mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
24185 			    0x29b, (0x1 << 0), (0) << 0);
24186 
24187 		mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
24188 			    0x29b, (0x1 << 0), (0) << 0);
24189 
24190 		if (NREV_IS(pi->pubpi.phy_rev, 7)
24191 		    || NREV_GE(pi->pubpi.phy_rev, 8))
24192 			wlc_phy_rfctrl_override_nphy_rev7(
24193 				pi, (0x1 << 7),
24194 				wlc_phy_read_lpf_bw_ctl_nphy
24195 					(pi,
24196 					0), 0, 0,
24197 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
24198 
24199 		if (pi->use_int_tx_iqlo_cal_nphy
24200 		    && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24201 
24202 			if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24203 
24204 				mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24205 					      1 << 4);
24206 
24207 				if (CHSPEC_IS2G(pi->radio_chanspec)) {
24208 					mod_radio_reg(
24209 						pi,
24210 						RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24211 						1, 0);
24212 					mod_radio_reg(
24213 						pi,
24214 						RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24215 						1, 0);
24216 				} else {
24217 					mod_radio_reg(
24218 					     pi,
24219 					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24220 					     1, 0);
24221 					mod_radio_reg(
24222 					     pi,
24223 					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24224 					     1, 0);
24225 				}
24226 			} else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24227 				wlc_phy_rfctrl_override_nphy_rev7(
24228 					pi,
24229 					(0x1 << 3), 0,
24230 					0x3, 0,
24231 					NPHY_REV7_RFCTRLOVERRIDE_ID0);
24232 			}
24233 		}
24234 	} else {
24235 		pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24236 		pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24237 
24238 		mask = ((0x3 << 12) | (0x3 << 14));
24239 		val = (0x2 << 12);
24240 		val |= (0x2 << 14);
24241 		mod_phy_reg(pi, 0xa6, mask, val);
24242 		mod_phy_reg(pi, 0xa7, mask, val);
24243 
24244 		val = read_phy_reg(pi, 0xa5);
24245 		pi->tx_rx_cal_phy_saveregs[2] = val;
24246 		val |= ((0x1 << 12) | (0x1 << 13));
24247 		write_phy_reg(pi, 0xa5, val);
24248 
24249 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24250 					&val);
24251 		pi->tx_rx_cal_phy_saveregs[3] = val;
24252 		val |= 0x2000;
24253 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24254 					 &val);
24255 
24256 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24257 					&val);
24258 		pi->tx_rx_cal_phy_saveregs[4] = val;
24259 		val |= 0x2000;
24260 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24261 					 &val);
24262 
24263 		pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24264 		pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24265 		val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24266 		write_phy_reg(pi, 0x91, val);
24267 		write_phy_reg(pi, 0x92, val);
24268 	}
24269 }
24270 
wlc_phy_txcal_phycleanup_nphy(struct brcms_phy * pi)24271 static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24272 {
24273 	u16 mask;
24274 
24275 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24276 		write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24277 		write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24278 		write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24279 		write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24280 		write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24281 
24282 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24283 					 &pi->tx_rx_cal_phy_saveregs[5]);
24284 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24285 					 &pi->tx_rx_cal_phy_saveregs[6]);
24286 
24287 		write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24288 		write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24289 
24290 		write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24291 		write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24292 
24293 		if (NREV_IS(pi->pubpi.phy_rev, 7)
24294 		    || NREV_GE(pi->pubpi.phy_rev, 8))
24295 			wlc_phy_rfctrl_override_nphy_rev7(
24296 				pi, (0x1 << 7), 0, 0,
24297 				1,
24298 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
24299 
24300 		wlc_phy_resetcca_nphy(pi);
24301 
24302 		if (pi->use_int_tx_iqlo_cal_nphy
24303 		    && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24304 
24305 			if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24306 				if (CHSPEC_IS2G(pi->radio_chanspec)) {
24307 					mod_radio_reg(
24308 						pi,
24309 						RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24310 						1, 1);
24311 					mod_radio_reg(
24312 						pi,
24313 						RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24314 						1, 1);
24315 				} else {
24316 					mod_radio_reg(
24317 					     pi,
24318 					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24319 					     1, 1);
24320 					mod_radio_reg(
24321 					     pi,
24322 					     RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24323 					     1, 1);
24324 				}
24325 
24326 				mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24327 					      0);
24328 			} else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24329 				wlc_phy_rfctrl_override_nphy_rev7(
24330 					pi,
24331 					(0x1 << 3), 0,
24332 					0x3, 1,
24333 					NPHY_REV7_RFCTRLOVERRIDE_ID0);
24334 			}
24335 		}
24336 	} else {
24337 		mask = ((0x3 << 12) | (0x3 << 14));
24338 		mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24339 		mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24340 		write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24341 
24342 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24343 					 &pi->tx_rx_cal_phy_saveregs[3]);
24344 
24345 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24346 					 &pi->tx_rx_cal_phy_saveregs[4]);
24347 
24348 		write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24349 		write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24350 	}
24351 }
24352 
24353 void
wlc_phy_est_tonepwr_nphy(struct brcms_phy * pi,s32 * qdBm_pwrbuf,u8 num_samps)24354 wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24355 {
24356 	u16 tssi_reg;
24357 	s32 temp, pwrindex[2];
24358 	s32 idle_tssi[2];
24359 	s32 rssi_buf[4];
24360 	s32 tssival[2];
24361 	u8 tssi_type;
24362 
24363 	tssi_reg = read_phy_reg(pi, 0x1e9);
24364 
24365 	temp = (s32) (tssi_reg & 0x3f);
24366 	idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24367 
24368 	temp = (s32) ((tssi_reg >> 8) & 0x3f);
24369 	idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24370 
24371 	tssi_type =
24372 		CHSPEC_IS5G(pi->radio_chanspec) ?
24373 		(u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24374 
24375 	wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24376 
24377 	tssival[0] = rssi_buf[0] / ((s32) num_samps);
24378 	tssival[1] = rssi_buf[2] / ((s32) num_samps);
24379 
24380 	pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24381 	pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24382 
24383 	if (pwrindex[0] < 0)
24384 		pwrindex[0] = 0;
24385 	else if (pwrindex[0] > 63)
24386 		pwrindex[0] = 63;
24387 
24388 	if (pwrindex[1] < 0)
24389 		pwrindex[1] = 0;
24390 	else if (pwrindex[1] > 63)
24391 		pwrindex[1] = 63;
24392 
24393 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24394 				(u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24395 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24396 				(u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24397 }
24398 
wlc_phy_update_txcal_ladder_nphy(struct brcms_phy * pi,u16 core)24399 static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24400 {
24401 	int index;
24402 	u32 bbmult_scale;
24403 	u16 bbmult;
24404 	u16 tblentry;
24405 
24406 	struct nphy_txiqcal_ladder ladder_lo[] = {
24407 		{3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24408 		{25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24409 		{25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24410 	};
24411 
24412 	struct nphy_txiqcal_ladder ladder_iq[] = {
24413 		{3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24414 		{25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24415 		{100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24416 	};
24417 
24418 	bbmult = (core == PHY_CORE_0) ?
24419 		 ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24420 		 (pi->nphy_txcal_bbmult & 0xff);
24421 
24422 	for (index = 0; index < 18; index++) {
24423 		bbmult_scale = ladder_lo[index].percent * bbmult;
24424 		bbmult_scale /= 100;
24425 
24426 		tblentry =
24427 			((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24428 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24429 					 &tblentry);
24430 
24431 		bbmult_scale = ladder_iq[index].percent * bbmult;
24432 		bbmult_scale /= 100;
24433 
24434 		tblentry =
24435 			((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24436 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24437 					 16, &tblentry);
24438 	}
24439 }
24440 
wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy * pi,u8 core)24441 static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24442 {
24443 	u16 tmp;
24444 	tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24445 
24446 	tmp = (tmp & (0x7f << 8)) >> 8;
24447 	return (u8) tmp;
24448 }
24449 
24450 static void
wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy * pi,u8 idx0,u8 idx1)24451 wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24452 {
24453 	mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24454 
24455 	if (NREV_GT(pi->pubpi.phy_rev, 1))
24456 		mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24457 }
24458 
wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy * pi)24459 static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24460 {
24461 	u16 m0m1;
24462 
24463 	wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24464 
24465 	return m0m1;
24466 }
24467 
wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy * pi,u8 m0,u8 m1)24468 static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24469 {
24470 	u16 m0m1 = (u16) ((m0 << 8) | m1);
24471 
24472 	wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24473 	wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24474 }
24475 
24476 static void
wlc_phy_papd_cal_setup_nphy(struct brcms_phy * pi,struct nphy_papd_restore_state * state,u8 core)24477 wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24478 			    struct nphy_papd_restore_state *state, u8 core)
24479 {
24480 	s32 tone_freq;
24481 	u8 off_core;
24482 	u16 mixgain = 0;
24483 
24484 	off_core = core ^ 0x1;
24485 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24486 
24487 		if (NREV_IS(pi->pubpi.phy_rev, 7)
24488 		    || NREV_GE(pi->pubpi.phy_rev, 8))
24489 			wlc_phy_rfctrl_override_nphy_rev7(
24490 				pi, (0x1 << 7),
24491 				wlc_phy_read_lpf_bw_ctl_nphy
24492 					(pi,
24493 					0), 0, 0,
24494 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
24495 
24496 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24497 			if (pi->pubpi.radiorev == 5)
24498 				mixgain = (core == 0) ? 0x20 : 0x00;
24499 			else if ((pi->pubpi.radiorev == 7)
24500 				 || (pi->pubpi.radiorev == 8))
24501 				mixgain = 0x00;
24502 			else if ((pi->pubpi.radiorev <= 4)
24503 				 || (pi->pubpi.radiorev == 6))
24504 				mixgain = 0x00;
24505 		} else {
24506 			if ((pi->pubpi.radiorev == 4) ||
24507 			    (pi->pubpi.radiorev == 6))
24508 				mixgain = 0x50;
24509 			else if ((pi->pubpi.radiorev == 3)
24510 				 || (pi->pubpi.radiorev == 7)
24511 				 || (pi->pubpi.radiorev == 8))
24512 				mixgain = 0x0;
24513 		}
24514 
24515 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24516 						  mixgain, (1 << core), 0,
24517 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24518 
24519 		wlc_phy_rfctrl_override_1tomany_nphy(
24520 			pi,
24521 			NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24522 			1, (1 << core), 0);
24523 		wlc_phy_rfctrl_override_1tomany_nphy(
24524 			pi,
24525 			NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24526 			0, (1 << off_core), 0);
24527 
24528 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24529 						  0, 0x3, 0,
24530 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24531 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24532 						  (1 << core), 0,
24533 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24534 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24535 						  (1 << core), 0,
24536 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24537 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24538 						  (1 << core), 0,
24539 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24540 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24541 						  (1 << core), 0,
24542 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24543 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24544 						  (1 << core), 0,
24545 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24546 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24547 						  (1 << core), 0,
24548 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24549 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24550 						  (1 << core), 0,
24551 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24552 
24553 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24554 						  0, (1 << core), 0,
24555 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24556 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24557 						  (1 << core), 0,
24558 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24559 
24560 		state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24561 						    0xa6 : 0xa7);
24562 		state->afeoverride[core] =
24563 			read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24564 		state->afectrl[off_core] =
24565 			read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24566 		state->afeoverride[off_core] =
24567 			read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24568 
24569 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24570 			    (0x1 << 2), 0);
24571 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24572 				 0xa5), (0x1 << 2), (0x1 << 2));
24573 
24574 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24575 			    (0x1 << 2), (0x1 << 2));
24576 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24577 				 0x8f), (0x1 << 2), (0x1 << 2));
24578 
24579 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24580 			state->pwrup[core] =
24581 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24582 						TXRXCOUPLE_2G_PWRUP);
24583 			state->atten[core] =
24584 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24585 						TXRXCOUPLE_2G_ATTEN);
24586 			state->pwrup[off_core] =
24587 				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24588 						TXRXCOUPLE_2G_PWRUP);
24589 			state->atten[off_core] =
24590 				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24591 						TXRXCOUPLE_2G_ATTEN);
24592 
24593 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24594 					 TXRXCOUPLE_2G_PWRUP, 0xc);
24595 
24596 			if ((pi->pubpi.radiorev == 3) ||
24597 			    (pi->pubpi.radiorev == 4) ||
24598 			    (pi->pubpi.radiorev == 6))
24599 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24600 						 TXRXCOUPLE_2G_ATTEN, 0xf0);
24601 			else if (pi->pubpi.radiorev == 5)
24602 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24603 						 TXRXCOUPLE_2G_ATTEN,
24604 						 (core == 0) ? 0xf7 : 0xf2);
24605 			else if ((pi->pubpi.radiorev == 7)
24606 				 || (pi->pubpi.radiorev == 8))
24607 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24608 						 TXRXCOUPLE_2G_ATTEN, 0xf0);
24609 
24610 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24611 					 TXRXCOUPLE_2G_PWRUP, 0x0);
24612 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24613 					 TXRXCOUPLE_2G_ATTEN, 0xff);
24614 		} else {
24615 			state->pwrup[core] =
24616 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24617 						TXRXCOUPLE_5G_PWRUP);
24618 			state->atten[core] =
24619 				READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24620 						TXRXCOUPLE_5G_ATTEN);
24621 			state->pwrup[off_core] =
24622 				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24623 						TXRXCOUPLE_5G_PWRUP);
24624 			state->atten[off_core] =
24625 				READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24626 						TXRXCOUPLE_5G_ATTEN);
24627 
24628 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24629 					 TXRXCOUPLE_5G_PWRUP, 0xc);
24630 
24631 			if ((pi->pubpi.radiorev == 7)
24632 			    || (pi->pubpi.radiorev == 8))
24633 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24634 						 TXRXCOUPLE_5G_ATTEN, 0xf4);
24635 
24636 			else
24637 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24638 						 TXRXCOUPLE_5G_ATTEN, 0xf0);
24639 
24640 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24641 					 TXRXCOUPLE_5G_PWRUP, 0x0);
24642 			WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24643 					 TXRXCOUPLE_5G_ATTEN, 0xff);
24644 		}
24645 
24646 		tone_freq = 4000;
24647 
24648 		wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24649 
24650 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24651 			    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24652 
24653 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24654 			    0x2a4, (0x1 << 13), (1) << 13);
24655 
24656 		mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24657 			    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24658 
24659 		mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24660 			    0x2a4, (0x1 << 13), (0) << 13);
24661 
24662 	} else {
24663 
24664 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24665 
24666 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24667 
24668 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24669 
24670 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24671 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24672 
24673 		state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24674 						    0xa6 : 0xa7);
24675 		state->afeoverride[core] =
24676 			read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24677 
24678 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24679 			    (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24680 		mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24681 				 0xa5),
24682 			    (0x1 << 0) |
24683 			    (0x1 << 1) |
24684 			    (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24685 
24686 		state->vga_master[core] =
24687 			READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24688 		WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24689 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24690 			state->fbmix[core] =
24691 				READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24692 						TXFBMIX_G);
24693 			state->intpa_master[core] =
24694 				READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24695 						INTPAG_MASTER);
24696 
24697 			WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24698 					 0x03);
24699 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24700 					 INTPAG_MASTER, 0x04);
24701 		} else {
24702 			state->fbmix[core] =
24703 				READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24704 						TXFBMIX_A);
24705 			state->intpa_master[core] =
24706 				READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24707 						INTPAA_MASTER);
24708 
24709 			WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24710 					 0x03);
24711 			WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24712 					 INTPAA_MASTER, 0x04);
24713 
24714 		}
24715 
24716 		tone_freq = 4000;
24717 
24718 		wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24719 
24720 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24721 			    0x29b, (0x1 << 0), (1) << 0);
24722 
24723 		mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24724 			    0x29b, (0x1 << 0), (0) << 0);
24725 
24726 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24727 	}
24728 }
24729 
24730 static void
wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy * pi,struct nphy_papd_restore_state * state)24731 wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24732 			      struct nphy_papd_restore_state *state)
24733 {
24734 	u8 core;
24735 
24736 	wlc_phy_stopplayback_nphy(pi);
24737 
24738 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24739 
24740 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24741 
24742 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
24743 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24744 						 TXRXCOUPLE_2G_PWRUP, 0);
24745 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24746 						 TXRXCOUPLE_2G_ATTEN,
24747 						 state->atten[core]);
24748 			} else {
24749 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24750 						 TXRXCOUPLE_5G_PWRUP, 0);
24751 				WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24752 						 TXRXCOUPLE_5G_ATTEN,
24753 						 state->atten[core]);
24754 			}
24755 		}
24756 
24757 		if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24758 			wlc_phy_rfctrl_override_nphy_rev7(
24759 				pi, (0x1 << 2),
24760 				1, 0x3, 0,
24761 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
24762 		else
24763 			wlc_phy_rfctrl_override_nphy_rev7(
24764 				pi, (0x1 << 2),
24765 				0, 0x3, 1,
24766 				NPHY_REV7_RFCTRLOVERRIDE_ID0);
24767 
24768 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24769 						  0, 0x3, 1,
24770 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24771 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24772 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24773 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24774 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24775 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24776 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24777 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24778 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24779 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24780 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24781 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24782 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
24783 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24784 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24785 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24786 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24787 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24788 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
24789 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24790 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24791 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24792 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24793 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24794 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24795 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24796 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24797 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24798 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24799 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24800 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
24801 
24802 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24803 
24804 			write_phy_reg(pi, (core == PHY_CORE_0) ?
24805 				      0xa6 : 0xa7, state->afectrl[core]);
24806 			write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24807 				      0xa5, state->afeoverride[core]);
24808 		}
24809 
24810 		wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24811 					    (state->mm & 0xff));
24812 
24813 		if (NREV_IS(pi->pubpi.phy_rev, 7)
24814 		    || NREV_GE(pi->pubpi.phy_rev, 8))
24815 			wlc_phy_rfctrl_override_nphy_rev7(
24816 				pi, (0x1 << 7), 0, 0,
24817 				1,
24818 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
24819 	} else {
24820 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24821 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24822 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24823 
24824 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24825 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24826 
24827 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24828 
24829 			WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24830 					 state->vga_master[core]);
24831 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
24832 				WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24833 						 TXFBMIX_G, state->fbmix[core]);
24834 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24835 						 INTPAG_MASTER,
24836 						 state->intpa_master[core]);
24837 			} else {
24838 				WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24839 						 TXFBMIX_A, state->fbmix[core]);
24840 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24841 						 INTPAA_MASTER,
24842 						 state->intpa_master[core]);
24843 			}
24844 
24845 			write_phy_reg(pi, (core == PHY_CORE_0) ?
24846 				      0xa6 : 0xa7, state->afectrl[core]);
24847 			write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24848 				      0xa5, state->afeoverride[core]);
24849 		}
24850 
24851 		wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24852 					    (state->mm & 0xff));
24853 
24854 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24855 	}
24856 }
24857 
24858 static void
wlc_phy_a1_nphy(struct brcms_phy * pi,u8 core,u32 winsz,u32 start,u32 end)24859 wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24860 		u32 end)
24861 {
24862 	u32 *buf, *src, *dst, sz;
24863 
24864 	sz = end - start + 1;
24865 
24866 	buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24867 	if (NULL == buf)
24868 		return;
24869 
24870 	src = buf;
24871 	dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24872 
24873 	wlc_phy_table_read_nphy(pi,
24874 				(core ==
24875 				 PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24876 				 NPHY_TBL_ID_EPSILONTBL1),
24877 				NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24878 
24879 	do {
24880 		u32 phy_a1, phy_a2;
24881 		s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24882 
24883 		phy_a1 = end - min(end, (winsz >> 1));
24884 		phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24885 			       end + (winsz >> 1));
24886 		phy_a3 = phy_a2 - phy_a1 + 1;
24887 		phy_a6 = 0;
24888 		phy_a7 = 0;
24889 
24890 		do {
24891 			wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24892 						    &phy_a5);
24893 			phy_a6 += phy_a4;
24894 			phy_a7 += phy_a5;
24895 		} while (phy_a2-- != phy_a1);
24896 
24897 		phy_a6 /= phy_a3;
24898 		phy_a7 /= phy_a3;
24899 		dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24900 	} while (end-- != start);
24901 
24902 	wlc_phy_table_write_nphy(pi,
24903 				 (core ==
24904 				  PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24905 				 NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24906 
24907 	kfree(buf);
24908 }
24909 
24910 static void
wlc_phy_a2_nphy(struct brcms_phy * pi,struct nphy_ipa_txcalgains * txgains,enum phy_cal_mode cal_mode,u8 core)24911 wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24912 		enum phy_cal_mode cal_mode, u8 core)
24913 {
24914 	u16 phy_a1, phy_a2, phy_a3;
24915 	u16 phy_a4, phy_a5;
24916 	bool phy_a6;
24917 	u8 phy_a7, m[2];
24918 	u32 phy_a8 = 0;
24919 	struct nphy_txgains phy_a9;
24920 
24921 	if (NREV_LT(pi->pubpi.phy_rev, 3))
24922 		return;
24923 
24924 	phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24925 
24926 	phy_a6 = ((cal_mode == CAL_GCTRL)
24927 		  || (cal_mode == CAL_SOFT)) ? true : false;
24928 
24929 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24930 
24931 		phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24932 
24933 		if (CHSPEC_IS2G(pi->radio_chanspec))
24934 			phy_a5 = ((phy_a9.txlpf[core] << 15) |
24935 				  (phy_a9.txgm[core] << 12) |
24936 				  (phy_a9.pga[core] << 8) |
24937 				  (txgains->gains.pad[core] << 3) |
24938 				  (phy_a9.ipa[core]));
24939 		else
24940 			phy_a5 = ((phy_a9.txlpf[core] << 15) |
24941 				  (phy_a9.txgm[core] << 12) |
24942 				  (txgains->gains.pga[core] << 8) |
24943 				  (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24944 
24945 		wlc_phy_rfctrl_override_1tomany_nphy(
24946 			pi,
24947 			NPHY_REV7_RfctrlOverride_cmd_txgain,
24948 			phy_a5, (1 << core), 0);
24949 
24950 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24951 			if ((pi->pubpi.radiorev <= 4)
24952 			    || (pi->pubpi.radiorev == 6))
24953 				m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24954 					  60 : 79;
24955 			else
24956 				m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24957 					  45 : 64;
24958 		} else {
24959 			m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24960 		}
24961 
24962 		m[phy_a7] = 0;
24963 		wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24964 
24965 		phy_a2 = 63;
24966 
24967 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
24968 			if ((pi->pubpi.radiorev == 4)
24969 			    || (pi->pubpi.radiorev == 6)) {
24970 				phy_a1 = 30;
24971 				phy_a3 = 30;
24972 			} else {
24973 				phy_a1 = 25;
24974 				phy_a3 = 25;
24975 			}
24976 		} else {
24977 			if ((pi->pubpi.radiorev == 5)
24978 			    || (pi->pubpi.radiorev == 7)
24979 			    || (pi->pubpi.radiorev == 8)) {
24980 				phy_a1 = 25;
24981 				phy_a3 = 25;
24982 			} else {
24983 				phy_a1 = 35;
24984 				phy_a3 = 35;
24985 			}
24986 		}
24987 
24988 		if (cal_mode == CAL_GCTRL) {
24989 			if ((pi->pubpi.radiorev == 5)
24990 			    && (CHSPEC_IS2G(pi->radio_chanspec)))
24991 				phy_a1 = 55;
24992 			else if (((pi->pubpi.radiorev == 7) &&
24993 				  (CHSPEC_IS2G(pi->radio_chanspec))) ||
24994 				 ((pi->pubpi.radiorev == 8) &&
24995 				  (CHSPEC_IS2G(pi->radio_chanspec))))
24996 				phy_a1 = 60;
24997 			else
24998 				phy_a1 = 63;
24999 
25000 		} else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
25001 
25002 			phy_a1 = 35;
25003 			phy_a3 = 35;
25004 		}
25005 
25006 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
25007 			    0x29b, (0x1 << 0), (1) << 0);
25008 
25009 		mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
25010 			    0x29b, (0x1 << 0), (0) << 0);
25011 
25012 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25013 			    0x2a4, (0x1 << 13), (1) << 13);
25014 
25015 		mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25016 			    0x2a4, (0x1 << 13), (0) << 13);
25017 
25018 		write_phy_reg(pi, 0x2a1, 0x80);
25019 		write_phy_reg(pi, 0x2a2, 0x100);
25020 
25021 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25022 			    0x2a4, (0x7 << 4), (11) << 4);
25023 
25024 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25025 			    0x2a4, (0x7 << 8), (11) << 8);
25026 
25027 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25028 			    0x2a4, (0x7 << 0), (0x3) << 0);
25029 
25030 		write_phy_reg(pi, 0x2e5, 0x20);
25031 
25032 		mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
25033 
25034 		mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
25035 
25036 		mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
25037 
25038 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25039 						  1, ((core == 0) ? 1 : 2), 0,
25040 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
25041 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25042 						  0, ((core == 0) ? 2 : 1), 0,
25043 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
25044 
25045 		write_phy_reg(pi, 0x2be, 1);
25046 		SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
25047 
25048 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25049 						  0, 0x3, 0,
25050 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
25051 
25052 		wlc_phy_table_write_nphy(pi,
25053 					 (core ==
25054 					  PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
25055 					 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
25056 					 32, &phy_a8);
25057 
25058 		if (cal_mode != CAL_GCTRL) {
25059 			if (CHSPEC_IS5G(pi->radio_chanspec))
25060 				wlc_phy_a1_nphy(pi, core, 5, 0, 35);
25061 		}
25062 
25063 		wlc_phy_rfctrl_override_1tomany_nphy(
25064 			pi,
25065 			NPHY_REV7_RfctrlOverride_cmd_txgain,
25066 			phy_a5, (1 << core), 1);
25067 
25068 	} else {
25069 
25070 		if (txgains) {
25071 			if (txgains->useindex) {
25072 				phy_a4 = 15 - ((txgains->index) >> 3);
25073 				if (CHSPEC_IS2G(pi->radio_chanspec)) {
25074 					if (NREV_GE(pi->pubpi.phy_rev, 6))
25075 						phy_a5 = 0x00f7 | (phy_a4 << 8);
25076 
25077 					else
25078 					if (NREV_IS(pi->pubpi.phy_rev, 5))
25079 						phy_a5 = 0x10f7 | (phy_a4 << 8);
25080 					else
25081 						phy_a5 = 0x50f7 | (phy_a4 << 8);
25082 				} else {
25083 					phy_a5 = 0x70f7 | (phy_a4 << 8);
25084 				}
25085 				wlc_phy_rfctrl_override_nphy(pi,
25086 							     (0x1 << 13),
25087 							     phy_a5,
25088 							     (1 << core), 0);
25089 			} else {
25090 				wlc_phy_rfctrl_override_nphy(pi,
25091 							     (0x1 << 13),
25092 							     0x5bf7,
25093 							     (1 << core), 0);
25094 			}
25095 		}
25096 
25097 		if (CHSPEC_IS2G(pi->radio_chanspec))
25098 			m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
25099 		else
25100 			m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
25101 
25102 		m[phy_a7] = 0;
25103 		wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
25104 
25105 		phy_a2 = 63;
25106 
25107 		if (cal_mode == CAL_FULL) {
25108 			phy_a1 = 25;
25109 			phy_a3 = 25;
25110 		} else if (cal_mode == CAL_SOFT) {
25111 			phy_a1 = 25;
25112 			phy_a3 = 25;
25113 		} else if (cal_mode == CAL_GCTRL) {
25114 			phy_a1 = 63;
25115 			phy_a3 = 25;
25116 		} else {
25117 
25118 			phy_a1 = 25;
25119 			phy_a3 = 25;
25120 		}
25121 
25122 		mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
25123 			    0x29b, (0x1 << 0), (1) << 0);
25124 
25125 		mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
25126 			    0x29b, (0x1 << 0), (0) << 0);
25127 
25128 		if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25129 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25130 				    0x2a4, (0x1 << 13), (1) << 13);
25131 
25132 			mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25133 				    0x2a4, (0x1 << 13), (0) << 13);
25134 
25135 			write_phy_reg(pi, 0x2a1, 0x20);
25136 			write_phy_reg(pi, 0x2a2, 0x60);
25137 
25138 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25139 				    0x2a4, (0xf << 4), (9) << 4);
25140 
25141 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25142 				    0x2a4, (0xf << 8), (9) << 8);
25143 
25144 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25145 				    0x2a4, (0xf << 0), (0x2) << 0);
25146 
25147 			write_phy_reg(pi, 0x2e5, 0x20);
25148 		} else {
25149 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25150 				    0x2a4, (0x1 << 11), (1) << 11);
25151 
25152 			mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25153 				    0x2a4, (0x1 << 11), (0) << 11);
25154 
25155 			write_phy_reg(pi, 0x2a1, 0x80);
25156 			write_phy_reg(pi, 0x2a2, 0x600);
25157 
25158 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25159 				    0x2a4, (0x7 << 4), (0) << 4);
25160 
25161 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25162 				    0x2a4, (0x7 << 8), (0) << 8);
25163 
25164 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25165 				    0x2a4, (0x7 << 0), (0x3) << 0);
25166 
25167 			mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
25168 
25169 		}
25170 
25171 		mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
25172 
25173 		mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
25174 
25175 		mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
25176 
25177 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
25178 
25179 		write_phy_reg(pi, 0x2be, 1);
25180 		SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
25181 
25182 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
25183 
25184 		wlc_phy_table_write_nphy(pi,
25185 					 (core ==
25186 					  PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
25187 					 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
25188 					 32, &phy_a8);
25189 
25190 		if (cal_mode != CAL_GCTRL)
25191 			wlc_phy_a1_nphy(pi, core, 5, 0, 40);
25192 	}
25193 }
25194 
wlc_phy_a3_nphy(struct brcms_phy * pi,u8 start_gain,u8 core)25195 static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
25196 {
25197 	int phy_a1;
25198 	int phy_a2;
25199 	bool phy_a3;
25200 	struct nphy_ipa_txcalgains phy_a4;
25201 	bool phy_a5 = false;
25202 	bool phy_a6 = true;
25203 	s32 phy_a7, phy_a8;
25204 	u32 phy_a9;
25205 	int phy_a10;
25206 	bool phy_a11 = false;
25207 	int phy_a12;
25208 	u8 phy_a13 = 0;
25209 	u8 phy_a14;
25210 	u8 *phy_a15 = NULL;
25211 
25212 	phy_a4.useindex = true;
25213 	phy_a12 = start_gain;
25214 
25215 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25216 
25217 		phy_a2 = 20;
25218 		phy_a1 = 1;
25219 
25220 		if (CHSPEC_IS2G(pi->radio_chanspec)) {
25221 			if (pi->pubpi.radiorev == 5) {
25222 
25223 				phy_a15 = pad_gain_codes_used_2057rev5;
25224 				phy_a13 =
25225 					sizeof(pad_gain_codes_used_2057rev5) /
25226 					sizeof(pad_gain_codes_used_2057rev5
25227 						[0]) - 1;
25228 
25229 			} else if ((pi->pubpi.radiorev == 7)
25230 				   || (pi->pubpi.radiorev == 8)) {
25231 
25232 				phy_a15 = pad_gain_codes_used_2057rev7;
25233 				phy_a13 =
25234 					sizeof(pad_gain_codes_used_2057rev7) /
25235 					sizeof(pad_gain_codes_used_2057rev7
25236 						[0]) - 1;
25237 
25238 			} else {
25239 
25240 				phy_a15 = pad_all_gain_codes_2057;
25241 				phy_a13 = sizeof(pad_all_gain_codes_2057) /
25242 					  sizeof(pad_all_gain_codes_2057[0]) -
25243 					  1;
25244 			}
25245 
25246 		} else {
25247 
25248 			phy_a15 = pga_all_gain_codes_2057;
25249 			phy_a13 = sizeof(pga_all_gain_codes_2057) /
25250 				  sizeof(pga_all_gain_codes_2057[0]) - 1;
25251 		}
25252 
25253 		phy_a14 = 0;
25254 
25255 		for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25256 			if (CHSPEC_IS2G(pi->radio_chanspec))
25257 				phy_a4.gains.pad[core] =
25258 					(u16) phy_a15[phy_a12];
25259 			else
25260 				phy_a4.gains.pga[core] =
25261 					(u16) phy_a15[phy_a12];
25262 
25263 			wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25264 
25265 			wlc_phy_table_read_nphy(pi,
25266 						(core ==
25267 						 PHY_CORE_0 ?
25268 						 NPHY_TBL_ID_EPSILONTBL0 :
25269 						 NPHY_TBL_ID_EPSILONTBL1), 1,
25270 						63, 32, &phy_a9);
25271 
25272 			wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25273 
25274 			phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25275 				  (phy_a8 == 4095) || (phy_a8 == -4096));
25276 
25277 			if (!phy_a6 && (phy_a3 != phy_a5)) {
25278 				if (!phy_a3)
25279 					phy_a12 -= (u8) phy_a1;
25280 
25281 				phy_a11 = true;
25282 				break;
25283 			}
25284 
25285 			if (phy_a3)
25286 				phy_a12 += (u8) phy_a1;
25287 			else
25288 				phy_a12 -= (u8) phy_a1;
25289 
25290 			if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25291 				if (phy_a12 < phy_a14)
25292 					phy_a12 = phy_a14;
25293 				else
25294 					phy_a12 = phy_a13;
25295 
25296 				phy_a11 = true;
25297 				break;
25298 			}
25299 
25300 			phy_a6 = false;
25301 			phy_a5 = phy_a3;
25302 		}
25303 
25304 	} else {
25305 		phy_a2 = 10;
25306 		phy_a1 = 8;
25307 		for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25308 			phy_a4.index = (u8) phy_a12;
25309 			wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25310 
25311 			wlc_phy_table_read_nphy(pi,
25312 						(core ==
25313 						 PHY_CORE_0 ?
25314 						 NPHY_TBL_ID_EPSILONTBL0 :
25315 						 NPHY_TBL_ID_EPSILONTBL1), 1,
25316 						63, 32, &phy_a9);
25317 
25318 			wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25319 
25320 			phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25321 				  (phy_a8 == 4095) || (phy_a8 == -4096));
25322 
25323 			if (!phy_a6 && (phy_a3 != phy_a5)) {
25324 				if (!phy_a3)
25325 					phy_a12 -= (u8) phy_a1;
25326 
25327 				phy_a11 = true;
25328 				break;
25329 			}
25330 
25331 			if (phy_a3)
25332 				phy_a12 += (u8) phy_a1;
25333 			else
25334 				phy_a12 -= (u8) phy_a1;
25335 
25336 			if ((phy_a12 < 0) || (phy_a12 > 127)) {
25337 				if (phy_a12 < 0)
25338 					phy_a12 = 0;
25339 				else
25340 					phy_a12 = 127;
25341 
25342 				phy_a11 = true;
25343 				break;
25344 			}
25345 
25346 			phy_a6 = false;
25347 			phy_a5 = phy_a3;
25348 		}
25349 
25350 	}
25351 
25352 	if (NREV_GE(pi->pubpi.phy_rev, 7))
25353 		return (u8) phy_a15[phy_a12];
25354 	else
25355 		return (u8) phy_a12;
25356 
25357 }
25358 
wlc_phy_a4(struct brcms_phy * pi,bool full_cal)25359 static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25360 {
25361 	struct nphy_ipa_txcalgains phy_b1[2];
25362 	struct nphy_papd_restore_state phy_b2;
25363 	bool phy_b3;
25364 	u8 phy_b4;
25365 	u8 phy_b5;
25366 	s16 phy_b6, phy_b7, phy_b8;
25367 	u16 phy_b9;
25368 	s16 phy_b10, phy_b11, phy_b12;
25369 
25370 	phy_b11 = 0;
25371 	phy_b12 = 0;
25372 	phy_b7 = 0;
25373 	phy_b8 = 0;
25374 	phy_b6 = 0;
25375 
25376 	if (pi->nphy_papd_skip == 1)
25377 		return;
25378 
25379 	phy_b3 = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
25380 			MCTL_EN_MAC));
25381 	if (!phy_b3)
25382 		wlapi_suspend_mac_and_wait(pi->sh->physhim);
25383 
25384 	wlc_phy_stay_in_carriersearch_nphy(pi, true);
25385 
25386 	pi->nphy_force_papd_cal = false;
25387 
25388 	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25389 		pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25390 			wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25391 
25392 	pi->nphy_papd_last_cal = pi->sh->now;
25393 	pi->nphy_papd_recal_counter++;
25394 
25395 	phy_b4 = pi->nphy_txpwrctrl;
25396 	wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25397 
25398 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25399 				 nphy_papd_scaltbl);
25400 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25401 				 nphy_papd_scaltbl);
25402 
25403 	phy_b9 = read_phy_reg(pi, 0x01);
25404 	mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25405 
25406 	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25407 		s32 i, val = 0;
25408 		for (i = 0; i < 64; i++)
25409 			wlc_phy_table_write_nphy(pi,
25410 						 ((phy_b5 ==
25411 						   PHY_CORE_0) ?
25412 						  NPHY_TBL_ID_EPSILONTBL0 :
25413 						  NPHY_TBL_ID_EPSILONTBL1), 1,
25414 						 i, 32, &val);
25415 	}
25416 
25417 	wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25418 
25419 	phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25420 	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25421 		wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25422 
25423 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25424 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25425 				if ((pi->pubpi.radiorev == 3)
25426 				    || (pi->pubpi.radiorev == 4)
25427 				    || (pi->pubpi.radiorev == 6)) {
25428 					pi->nphy_papd_cal_gain_index[phy_b5] =
25429 						23;
25430 				} else if (pi->pubpi.radiorev == 5) {
25431 					pi->nphy_papd_cal_gain_index[phy_b5] =
25432 						0;
25433 					pi->nphy_papd_cal_gain_index[phy_b5] =
25434 						wlc_phy_a3_nphy(
25435 							pi,
25436 							pi->
25437 							nphy_papd_cal_gain_index
25438 							[phy_b5],
25439 							phy_b5);
25440 
25441 				} else if ((pi->pubpi.radiorev == 7)
25442 					   || (pi->pubpi.radiorev == 8)) {
25443 
25444 					pi->nphy_papd_cal_gain_index[phy_b5] =
25445 						0;
25446 					pi->nphy_papd_cal_gain_index[phy_b5] =
25447 						wlc_phy_a3_nphy(
25448 							pi,
25449 							pi->
25450 							nphy_papd_cal_gain_index
25451 							[phy_b5],
25452 							phy_b5);
25453 
25454 				}
25455 
25456 				phy_b1[phy_b5].gains.pad[phy_b5] =
25457 					pi->nphy_papd_cal_gain_index[phy_b5];
25458 
25459 			} else {
25460 				pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25461 				pi->nphy_papd_cal_gain_index[phy_b5] =
25462 					wlc_phy_a3_nphy(
25463 						pi,
25464 						pi->
25465 						nphy_papd_cal_gain_index
25466 						[phy_b5], phy_b5);
25467 				phy_b1[phy_b5].gains.pga[phy_b5] =
25468 					pi->nphy_papd_cal_gain_index[phy_b5];
25469 			}
25470 		} else {
25471 			phy_b1[phy_b5].useindex = true;
25472 			phy_b1[phy_b5].index = 16;
25473 			phy_b1[phy_b5].index =
25474 				wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25475 						phy_b5);
25476 
25477 			pi->nphy_papd_cal_gain_index[phy_b5] =
25478 				15 - ((phy_b1[phy_b5].index) >> 3);
25479 		}
25480 
25481 		switch (pi->nphy_papd_cal_type) {
25482 		case 0:
25483 			wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25484 			break;
25485 		case 1:
25486 			wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25487 			break;
25488 		}
25489 
25490 		if (NREV_GE(pi->pubpi.phy_rev, 7))
25491 			wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25492 	}
25493 
25494 	if (NREV_LT(pi->pubpi.phy_rev, 7))
25495 		wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25496 
25497 	for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25498 		int eps_offset = 0;
25499 
25500 		if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25501 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25502 				if (pi->pubpi.radiorev == 3)
25503 					eps_offset = -2;
25504 				else if (pi->pubpi.radiorev == 5)
25505 					eps_offset = 3;
25506 				else
25507 					eps_offset = -1;
25508 			} else {
25509 				eps_offset = 2;
25510 			}
25511 
25512 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25513 				phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25514 				phy_b10 = 0;
25515 				if ((pi->pubpi.radiorev == 3) ||
25516 				    (pi->pubpi.radiorev == 4) ||
25517 				    (pi->pubpi.radiorev == 6)) {
25518 					phy_b12 = -(
25519 					    nphy_papd_padgain_dlt_2g_2057rev3n4
25520 							     [phy_b8] + 1) / 2;
25521 					phy_b10 = -1;
25522 				} else if (pi->pubpi.radiorev == 5) {
25523 					phy_b12 = -(
25524 					    nphy_papd_padgain_dlt_2g_2057rev5
25525 							     [phy_b8] + 1) / 2;
25526 				} else if ((pi->pubpi.radiorev == 7) ||
25527 					   (pi->pubpi.radiorev == 8)) {
25528 					phy_b12 = -(
25529 					    nphy_papd_padgain_dlt_2g_2057rev7
25530 							     [phy_b8] + 1) / 2;
25531 				}
25532 			} else {
25533 				phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25534 				if ((pi->pubpi.radiorev == 3) ||
25535 				    (pi->pubpi.radiorev == 4) ||
25536 				    (pi->pubpi.radiorev == 6))
25537 					phy_b11 =
25538 						-(nphy_papd_pgagain_dlt_5g_2057
25539 						  [phy_b7]
25540 						  + 1) / 2;
25541 				else if ((pi->pubpi.radiorev == 7)
25542 					 || (pi->pubpi.radiorev == 8))
25543 					phy_b11 = -(
25544 					      nphy_papd_pgagain_dlt_5g_2057rev7
25545 							     [phy_b7] + 1) / 2;
25546 
25547 				phy_b10 = -9;
25548 			}
25549 
25550 			if (CHSPEC_IS2G(pi->radio_chanspec))
25551 				phy_b6 =
25552 					-60 + 27 + eps_offset + phy_b12 +
25553 					phy_b10;
25554 			else
25555 				phy_b6 =
25556 					-60 + 27 + eps_offset + phy_b11 +
25557 					phy_b10;
25558 
25559 			mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25560 				    0x29c, (0x1ff << 7), (phy_b6) << 7);
25561 
25562 			pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25563 		} else {
25564 			if (NREV_LT(pi->pubpi.phy_rev, 5))
25565 				eps_offset = 4;
25566 			else
25567 				eps_offset = 2;
25568 
25569 			phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25570 
25571 			if (CHSPEC_IS2G(pi->radio_chanspec)) {
25572 				phy_b11 =
25573 					-(nphy_papd_pga_gain_delta_ipa_2g[
25574 						  phy_b7] +
25575 					  1) / 2;
25576 				phy_b10 = 0;
25577 			} else {
25578 				phy_b11 =
25579 					-(nphy_papd_pga_gain_delta_ipa_5g[
25580 						  phy_b7] +
25581 					  1) / 2;
25582 				phy_b10 = -9;
25583 			}
25584 
25585 			phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25586 
25587 			mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25588 				    0x29c, (0x1ff << 7), (phy_b6) << 7);
25589 
25590 			pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25591 		}
25592 	}
25593 
25594 	mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25595 		    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25596 
25597 	mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25598 		    0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25599 
25600 	if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25601 		mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25602 			    0x2a4, (0x1 << 13), (0) << 13);
25603 
25604 		mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25605 			    0x2a4, (0x1 << 13), (0) << 13);
25606 
25607 	} else {
25608 		mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25609 			    0x2a4, (0x1 << 11), (0) << 11);
25610 
25611 		mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25612 			    0x2a4, (0x1 << 11), (0) << 11);
25613 
25614 	}
25615 	pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25616 
25617 	write_phy_reg(pi, 0x01, phy_b9);
25618 
25619 	wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25620 
25621 	wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25622 	if (phy_b4 == PHY_TPC_HW_OFF) {
25623 		wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25624 					 (s8) (pi->nphy_txpwrindex[0].
25625 					       index_internal), false);
25626 		wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25627 					 (s8) (pi->nphy_txpwrindex[1].
25628 					       index_internal), false);
25629 	}
25630 
25631 	wlc_phy_stay_in_carriersearch_nphy(pi, false);
25632 
25633 	if (!phy_b3)
25634 		wlapi_enable_mac(pi->sh->physhim);
25635 }
25636 
wlc_phy_cal_perical_nphy_run(struct brcms_phy * pi,u8 caltype)25637 void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25638 {
25639 	struct nphy_txgains target_gain;
25640 	u8 tx_pwr_ctrl_state;
25641 	bool fullcal = true;
25642 	bool restore_tx_gain = false;
25643 	bool mphase;
25644 
25645 	if (PHY_MUTED(pi))
25646 		return;
25647 
25648 	if (caltype == PHY_PERICAL_AUTO)
25649 		fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25650 	else if (caltype == PHY_PERICAL_PARTIAL)
25651 		fullcal = false;
25652 
25653 	if (pi->cal_type_override != PHY_PERICAL_AUTO)
25654 		fullcal =
25655 			(pi->cal_type_override ==
25656 			 PHY_PERICAL_FULL) ? true : false;
25657 
25658 	if ((pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT)) {
25659 		if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25660 			wlc_phy_cal_perical_mphase_restart(pi);
25661 	}
25662 
25663 	if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL))
25664 		wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25665 
25666 	wlapi_suspend_mac_and_wait(pi->sh->physhim);
25667 
25668 	wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25669 
25670 	if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25671 	    (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25672 		pi->nphy_cal_orig_pwr_idx[0] =
25673 			(u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25674 		pi->nphy_cal_orig_pwr_idx[1] =
25675 			(u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25676 
25677 		if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25678 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25679 						0x110, 16,
25680 						pi->nphy_cal_orig_tx_gain);
25681 		} else {
25682 			pi->nphy_cal_orig_tx_gain[0] = 0;
25683 			pi->nphy_cal_orig_tx_gain[1] = 0;
25684 		}
25685 	}
25686 	target_gain = wlc_phy_get_tx_gain_nphy(pi);
25687 	tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25688 	wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25689 
25690 	if (pi->antsel_type == ANTSEL_2x3)
25691 		wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25692 
25693 	mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25694 	if (!mphase) {
25695 
25696 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25697 			wlc_phy_precal_txgain_nphy(pi);
25698 			pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25699 			restore_tx_gain = true;
25700 
25701 			target_gain = pi->nphy_cal_target_gain;
25702 		}
25703 		if (0 ==
25704 		    wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25705 					    mphase)) {
25706 			if (PHY_IPA(pi))
25707 				wlc_phy_a4(pi, true);
25708 
25709 			wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25710 			wlapi_enable_mac(pi->sh->physhim);
25711 			wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25712 					     10000);
25713 			wlapi_suspend_mac_and_wait(pi->sh->physhim);
25714 			wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25715 
25716 			if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25717 					(pi->first_cal_after_assoc ||
25718 					(pi->cal_type_override ==
25719 					 PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25720 				wlc_phy_savecal_nphy(pi);
25721 
25722 				wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25723 
25724 				pi->nphy_perical_last = pi->sh->now;
25725 			}
25726 		}
25727 		if (caltype != PHY_PERICAL_AUTO)
25728 			wlc_phy_rssi_cal_nphy(pi);
25729 
25730 		if (pi->first_cal_after_assoc
25731 		    || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25732 			pi->first_cal_after_assoc = false;
25733 			wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25734 			wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25735 		}
25736 
25737 		if (NREV_GE(pi->pubpi.phy_rev, 3))
25738 			wlc_phy_radio205x_vcocal_nphy(pi);
25739 	} else {
25740 		switch (pi->mphase_cal_phase_id) {
25741 		case MPHASE_CAL_STATE_INIT:
25742 			pi->nphy_perical_last = pi->sh->now;
25743 			pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25744 
25745 			if (NREV_GE(pi->pubpi.phy_rev, 3))
25746 				wlc_phy_precal_txgain_nphy(pi);
25747 
25748 			pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25749 			pi->mphase_cal_phase_id++;
25750 			break;
25751 
25752 		case MPHASE_CAL_STATE_TXPHASE0:
25753 		case MPHASE_CAL_STATE_TXPHASE1:
25754 		case MPHASE_CAL_STATE_TXPHASE2:
25755 		case MPHASE_CAL_STATE_TXPHASE3:
25756 		case MPHASE_CAL_STATE_TXPHASE4:
25757 		case MPHASE_CAL_STATE_TXPHASE5:
25758 			if ((pi->radar_percal_mask & 0x10) != 0)
25759 				pi->nphy_rxcal_active = true;
25760 
25761 			if (wlc_phy_cal_txiqlo_nphy
25762 				    (pi, pi->nphy_cal_target_gain, fullcal,
25763 				    true) != 0) {
25764 
25765 				wlc_phy_cal_perical_mphase_reset(pi);
25766 				break;
25767 			}
25768 
25769 			if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25770 			    (pi->mphase_cal_phase_id ==
25771 			     MPHASE_CAL_STATE_TXPHASE4))
25772 				pi->mphase_cal_phase_id += 2;
25773 			else
25774 				pi->mphase_cal_phase_id++;
25775 			break;
25776 
25777 		case MPHASE_CAL_STATE_PAPDCAL:
25778 			if ((pi->radar_percal_mask & 0x2) != 0)
25779 				pi->nphy_rxcal_active = true;
25780 
25781 			if (PHY_IPA(pi))
25782 				wlc_phy_a4(pi, true);
25783 
25784 			pi->mphase_cal_phase_id++;
25785 			break;
25786 
25787 		case MPHASE_CAL_STATE_RXCAL:
25788 			if ((pi->radar_percal_mask & 0x1) != 0)
25789 				pi->nphy_rxcal_active = true;
25790 			if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25791 						  (pi->first_cal_after_assoc ||
25792 						   (pi->cal_type_override ==
25793 						    PHY_PERICAL_FULL)) ? 2 : 0,
25794 						  false) == 0)
25795 				wlc_phy_savecal_nphy(pi);
25796 
25797 			pi->mphase_cal_phase_id++;
25798 			break;
25799 
25800 		case MPHASE_CAL_STATE_RSSICAL:
25801 			if ((pi->radar_percal_mask & 0x4) != 0)
25802 				pi->nphy_rxcal_active = true;
25803 			wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25804 			wlc_phy_rssi_cal_nphy(pi);
25805 
25806 			if (NREV_GE(pi->pubpi.phy_rev, 3))
25807 				wlc_phy_radio205x_vcocal_nphy(pi);
25808 
25809 			restore_tx_gain = true;
25810 
25811 			if (pi->first_cal_after_assoc)
25812 				pi->mphase_cal_phase_id++;
25813 			else
25814 				wlc_phy_cal_perical_mphase_reset(pi);
25815 
25816 			break;
25817 
25818 		case MPHASE_CAL_STATE_IDLETSSI:
25819 			if ((pi->radar_percal_mask & 0x8) != 0)
25820 				pi->nphy_rxcal_active = true;
25821 
25822 			if (pi->first_cal_after_assoc) {
25823 				pi->first_cal_after_assoc = false;
25824 				wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25825 				wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25826 			}
25827 
25828 			wlc_phy_cal_perical_mphase_reset(pi);
25829 			break;
25830 
25831 		default:
25832 			wlc_phy_cal_perical_mphase_reset(pi);
25833 			break;
25834 		}
25835 	}
25836 
25837 	if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25838 		if (restore_tx_gain) {
25839 			if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25840 
25841 				wlc_phy_txpwr_index_nphy(pi, 1,
25842 							 pi->
25843 							 nphy_cal_orig_pwr_idx
25844 							 [0], false);
25845 				wlc_phy_txpwr_index_nphy(pi, 2,
25846 							 pi->
25847 							 nphy_cal_orig_pwr_idx
25848 							 [1], false);
25849 
25850 				pi->nphy_txpwrindex[0].index = -1;
25851 				pi->nphy_txpwrindex[1].index = -1;
25852 			} else {
25853 				wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25854 							 (s8) (pi->
25855 							       nphy_txpwrindex
25856 							       [0].
25857 							       index_internal),
25858 							 false);
25859 				wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25860 							 (s8) (pi->
25861 							       nphy_txpwrindex
25862 							       [1].
25863 							       index_internal),
25864 							 false);
25865 			}
25866 		}
25867 	}
25868 
25869 	wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25870 	wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25871 	wlapi_enable_mac(pi->sh->physhim);
25872 }
25873 
25874 int
wlc_phy_cal_txiqlo_nphy(struct brcms_phy * pi,struct nphy_txgains target_gain,bool fullcal,bool mphase)25875 wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25876 			bool fullcal, bool mphase)
25877 {
25878 	u16 val;
25879 	u16 tbl_buf[11];
25880 	u8 cal_cnt;
25881 	u16 cal_cmd;
25882 	u8 num_cals, max_cal_cmds;
25883 	u16 core_no, cal_type;
25884 	u16 diq_start = 0;
25885 	u8 phy_bw;
25886 	u16 max_val;
25887 	u16 tone_freq;
25888 	u16 gain_save[2];
25889 	u16 cal_gain[2];
25890 	struct nphy_iqcal_params cal_params[2];
25891 	u32 tbl_len;
25892 	void *tbl_ptr;
25893 	bool ladder_updated[2];
25894 	u8 mphase_cal_lastphase = 0;
25895 	int bcmerror = 0;
25896 	bool phyhang_avoid_state = false;
25897 
25898 	u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
25899 		0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25900 		0x1902,
25901 		0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25902 		0x6407
25903 	};
25904 
25905 	u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
25906 		0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25907 		0x3200,
25908 		0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25909 		0x6407
25910 	};
25911 
25912 	u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
25913 		0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25914 		0x1202,
25915 		0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25916 		0x4707
25917 	};
25918 
25919 	u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
25920 		0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25921 		0x2300,
25922 		0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25923 		0x4707
25924 	};
25925 
25926 	u16 tbl_tx_iqlo_cal_startcoefs[] = {
25927 		0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25928 		0x0000
25929 	};
25930 
25931 	u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
25932 		0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25933 		0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25934 	};
25935 
25936 	u16 tbl_tx_iqlo_cal_cmds_recal[] = {
25937 		0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25938 		0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25939 	};
25940 
25941 	u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
25942 		0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25943 		0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25944 		0x0000
25945 	};
25946 
25947 	u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
25948 		0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25949 		0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25950 	};
25951 
25952 	u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
25953 		0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25954 		0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25955 	};
25956 
25957 	wlc_phy_stay_in_carriersearch_nphy(pi, true);
25958 
25959 	if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25960 		phyhang_avoid_state = pi->phyhang_avoid;
25961 		pi->phyhang_avoid = false;
25962 	}
25963 
25964 	if (CHSPEC_IS40(pi->radio_chanspec))
25965 		phy_bw = 40;
25966 	else
25967 		phy_bw = 20;
25968 
25969 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25970 
25971 	for (core_no = 0; core_no <= 1; core_no++) {
25972 		wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25973 					      &cal_params[core_no]);
25974 		cal_gain[core_no] = cal_params[core_no].cal_gain;
25975 	}
25976 
25977 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25978 
25979 	wlc_phy_txcal_radio_setup_nphy(pi);
25980 
25981 	wlc_phy_txcal_physetup_nphy(pi);
25982 
25983 	ladder_updated[0] = ladder_updated[1] = false;
25984 	if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
25985 	      (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
25986 	       && (CHSPEC_IS2G(pi->radio_chanspec))))) {
25987 
25988 		if (phy_bw == 40) {
25989 			tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
25990 			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
25991 		} else {
25992 			tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
25993 			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
25994 		}
25995 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
25996 					 16, tbl_ptr);
25997 
25998 		if (phy_bw == 40) {
25999 			tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
26000 			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
26001 		} else {
26002 			tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
26003 			tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
26004 		}
26005 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
26006 					 16, tbl_ptr);
26007 	}
26008 
26009 	if (NREV_GE(pi->pubpi.phy_rev, 7))
26010 		write_phy_reg(pi, 0xc2, 0x8ad9);
26011 	else
26012 		write_phy_reg(pi, 0xc2, 0x8aa9);
26013 
26014 	max_val = 250;
26015 	tone_freq = (phy_bw == 20) ? 2500 : 5000;
26016 
26017 	if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
26018 		wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
26019 		bcmerror = 0;
26020 	} else {
26021 		bcmerror =
26022 			wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
26023 					     false);
26024 	}
26025 
26026 	if (bcmerror == 0) {
26027 
26028 		if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
26029 			tbl_ptr = pi->mphase_txcal_bestcoeffs;
26030 			tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
26031 			if (NREV_LT(pi->pubpi.phy_rev, 3))
26032 				tbl_len -= 2;
26033 		} else {
26034 			if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
26035 
26036 				tbl_ptr = pi->nphy_txiqlocal_bestc;
26037 				tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
26038 				if (NREV_LT(pi->pubpi.phy_rev, 3))
26039 					tbl_len -= 2;
26040 			} else {
26041 
26042 				fullcal = true;
26043 
26044 				if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26045 					tbl_ptr =
26046 					    tbl_tx_iqlo_cal_startcoefs_nphyrev3;
26047 					tbl_len = ARRAY_SIZE(
26048 					   tbl_tx_iqlo_cal_startcoefs_nphyrev3);
26049 				} else {
26050 					tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
26051 					tbl_len = ARRAY_SIZE(
26052 						    tbl_tx_iqlo_cal_startcoefs);
26053 				}
26054 			}
26055 		}
26056 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
26057 					 16, tbl_ptr);
26058 
26059 		if (fullcal) {
26060 			max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26061 				       ARRAY_SIZE(
26062 				tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
26063 				       ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
26064 		} else {
26065 			max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26066 				       ARRAY_SIZE(
26067 				tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
26068 				       ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
26069 		}
26070 
26071 		if (mphase) {
26072 			cal_cnt = pi->mphase_txcal_cmdidx;
26073 			if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
26074 				num_cals = cal_cnt + pi->mphase_txcal_numcmds;
26075 			else
26076 				num_cals = max_cal_cmds;
26077 		} else {
26078 			cal_cnt = 0;
26079 			num_cals = max_cal_cmds;
26080 		}
26081 
26082 		for (; cal_cnt < num_cals; cal_cnt++) {
26083 
26084 			if (fullcal) {
26085 				cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26086 					  tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
26087 					  [cal_cnt] :
26088 					  tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
26089 			} else {
26090 				cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26091 					  tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
26092 					cal_cnt]
26093 					  : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
26094 			}
26095 
26096 			core_no = ((cal_cmd & 0x3000) >> 12);
26097 			cal_type = ((cal_cmd & 0x0F00) >> 8);
26098 
26099 			if (NREV_GE(pi->pubpi.phy_rev, 6) ||
26100 			    (NREV_IS(pi->pubpi.phy_rev, 5) &&
26101 			     PHY_IPA(pi)
26102 			     && (CHSPEC_IS2G(pi->radio_chanspec)))) {
26103 				if (!ladder_updated[core_no]) {
26104 					wlc_phy_update_txcal_ladder_nphy(
26105 						pi,
26106 						core_no);
26107 					ladder_updated[core_no] = true;
26108 				}
26109 			}
26110 
26111 			val =
26112 				(cal_params[core_no].
26113 				 ncorr[cal_type] << 8) | NPHY_N_GCTL;
26114 			write_phy_reg(pi, 0xc1, val);
26115 
26116 			if ((cal_type == 1) || (cal_type == 3)
26117 			    || (cal_type == 4)) {
26118 
26119 				wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26120 							1, 69 + core_no, 16,
26121 							tbl_buf);
26122 
26123 				diq_start = tbl_buf[0];
26124 
26125 				tbl_buf[0] = 0;
26126 				wlc_phy_table_write_nphy(pi,
26127 							 NPHY_TBL_ID_IQLOCAL, 1,
26128 							 69 + core_no, 16,
26129 							 tbl_buf);
26130 			}
26131 
26132 			write_phy_reg(pi, 0xc0, cal_cmd);
26133 
26134 			SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
26135 				 20000);
26136 			if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
26137 				 "HW error: txiq calib"))
26138 				return -EIO;
26139 
26140 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26141 						tbl_len, 96, 16, tbl_buf);
26142 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26143 						 tbl_len, 64, 16, tbl_buf);
26144 
26145 			if ((cal_type == 1) || (cal_type == 3)
26146 			    || (cal_type == 4)) {
26147 
26148 				tbl_buf[0] = diq_start;
26149 
26150 			}
26151 
26152 		}
26153 
26154 		if (mphase) {
26155 			pi->mphase_txcal_cmdidx = num_cals;
26156 			if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
26157 				pi->mphase_txcal_cmdidx = 0;
26158 		}
26159 
26160 		mphase_cal_lastphase =
26161 			(NREV_LE(pi->pubpi.phy_rev, 2)) ?
26162 			MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
26163 
26164 		if (!mphase
26165 		    || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
26166 
26167 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
26168 						16, tbl_buf);
26169 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26170 						 16, tbl_buf);
26171 
26172 			if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26173 
26174 				tbl_buf[0] = 0;
26175 				tbl_buf[1] = 0;
26176 				tbl_buf[2] = 0;
26177 				tbl_buf[3] = 0;
26178 
26179 			}
26180 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26181 						 16, tbl_buf);
26182 
26183 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
26184 						16, tbl_buf);
26185 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26186 						 16, tbl_buf);
26187 
26188 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26189 						 16, tbl_buf);
26190 
26191 			tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
26192 			if (NREV_LT(pi->pubpi.phy_rev, 3))
26193 				tbl_len -= 2;
26194 
26195 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26196 						tbl_len, 96, 16,
26197 						pi->nphy_txiqlocal_bestc);
26198 
26199 			pi->nphy_txiqlocal_coeffsvalid = true;
26200 			pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
26201 		} else {
26202 			tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
26203 			if (NREV_LT(pi->pubpi.phy_rev, 3))
26204 				tbl_len -= 2;
26205 
26206 			wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26207 						tbl_len, 96, 16,
26208 						pi->mphase_txcal_bestcoeffs);
26209 		}
26210 
26211 		wlc_phy_stopplayback_nphy(pi);
26212 
26213 		write_phy_reg(pi, 0xc2, 0x0000);
26214 
26215 	}
26216 
26217 	wlc_phy_txcal_phycleanup_nphy(pi);
26218 
26219 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26220 				 gain_save);
26221 
26222 	wlc_phy_txcal_radio_cleanup_nphy(pi);
26223 
26224 	if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26225 		if (!mphase
26226 		    || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
26227 			wlc_phy_tx_iq_war_nphy(pi);
26228 	}
26229 
26230 	if (NREV_GE(pi->pubpi.phy_rev, 4))
26231 		pi->phyhang_avoid = phyhang_avoid_state;
26232 
26233 	wlc_phy_stay_in_carriersearch_nphy(pi, false);
26234 
26235 	return bcmerror;
26236 }
26237 
wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy * pi)26238 static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
26239 {
26240 	u16 tbl_buf[7];
26241 
26242 	if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
26243 	    (pi->nphy_txiqlocal_coeffsvalid)) {
26244 		wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26245 					ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
26246 
26247 		if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26248 		    (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26249 		    (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26250 		    (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26251 
26252 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26253 						 16, pi->nphy_txiqlocal_bestc);
26254 
26255 			tbl_buf[0] = 0;
26256 			tbl_buf[1] = 0;
26257 			tbl_buf[2] = 0;
26258 			tbl_buf[3] = 0;
26259 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26260 						 16, tbl_buf);
26261 
26262 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26263 						 16,
26264 						 &pi->nphy_txiqlocal_bestc[5]);
26265 
26266 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26267 						 16,
26268 						 &pi->nphy_txiqlocal_bestc[5]);
26269 		}
26270 	}
26271 }
26272 
26273 void
wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy * pi,u8 write,struct nphy_iq_comp * pcomp)26274 wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26275 			  struct nphy_iq_comp *pcomp)
26276 {
26277 	if (write) {
26278 		write_phy_reg(pi, 0x9a, pcomp->a0);
26279 		write_phy_reg(pi, 0x9b, pcomp->b0);
26280 		write_phy_reg(pi, 0x9c, pcomp->a1);
26281 		write_phy_reg(pi, 0x9d, pcomp->b1);
26282 	} else {
26283 		pcomp->a0 = read_phy_reg(pi, 0x9a);
26284 		pcomp->b0 = read_phy_reg(pi, 0x9b);
26285 		pcomp->a1 = read_phy_reg(pi, 0x9c);
26286 		pcomp->b1 = read_phy_reg(pi, 0x9d);
26287 	}
26288 }
26289 
26290 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)26291 wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26292 		       u16 num_samps, u8 wait_time, u8 wait_for_crs)
26293 {
26294 	u8 core;
26295 
26296 	write_phy_reg(pi, 0x12b, num_samps);
26297 	mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26298 	mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26299 		    (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26300 
26301 	mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26302 
26303 	SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26304 		 10000);
26305 	if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26306 		 "HW error: rxiq est"))
26307 		return;
26308 
26309 	if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26310 		for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26311 			est[core].i_pwr =
26312 				(read_phy_reg(pi,
26313 					      NPHY_IqestipwrAccHi(core)) << 16)
26314 				| read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26315 			est[core].q_pwr =
26316 				(read_phy_reg(pi,
26317 					      NPHY_IqestqpwrAccHi(core)) << 16)
26318 				| read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26319 			est[core].iq_prod =
26320 				(read_phy_reg(pi,
26321 					      NPHY_IqestIqAccHi(core)) << 16) |
26322 				read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26323 		}
26324 	}
26325 }
26326 
26327 #define CAL_RETRY_CNT 2
wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy * pi,u8 core_mask)26328 static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26329 {
26330 	u8 curr_core;
26331 	struct phy_iq_est est[PHY_CORE_MAX];
26332 	struct nphy_iq_comp old_comp, new_comp;
26333 	s32 iq = 0;
26334 	u32 ii = 0, qq = 0;
26335 	s16 iq_nbits, qq_nbits, brsh, arsh;
26336 	s32 a, b, temp;
26337 	int bcmerror = 0;
26338 	uint cal_retry = 0;
26339 
26340 	if (core_mask == 0x0)
26341 		return;
26342 
26343 	wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26344 	new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26345 	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26346 
26347 cal_try:
26348 	wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26349 
26350 	new_comp = old_comp;
26351 
26352 	for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26353 
26354 		if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26355 			iq = est[curr_core].iq_prod;
26356 			ii = est[curr_core].i_pwr;
26357 			qq = est[curr_core].q_pwr;
26358 		} else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26359 			iq = est[curr_core].iq_prod;
26360 			ii = est[curr_core].i_pwr;
26361 			qq = est[curr_core].q_pwr;
26362 		} else {
26363 			continue;
26364 		}
26365 
26366 		if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26367 			bcmerror = -EBADE;
26368 			break;
26369 		}
26370 
26371 		iq_nbits = wlc_phy_nbits(iq);
26372 		qq_nbits = wlc_phy_nbits(qq);
26373 
26374 		arsh = 10 - (30 - iq_nbits);
26375 		if (arsh >= 0) {
26376 			a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26377 			temp = (s32) (ii >> arsh);
26378 			if (temp == 0) {
26379 				bcmerror = -EBADE;
26380 				break;
26381 			}
26382 		} else {
26383 			a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26384 			temp = (s32) (ii << -arsh);
26385 			if (temp == 0) {
26386 				bcmerror = -EBADE;
26387 				break;
26388 			}
26389 		}
26390 
26391 		a /= temp;
26392 
26393 		brsh = qq_nbits - 31 + 20;
26394 		if (brsh >= 0) {
26395 			b = (qq << (31 - qq_nbits));
26396 			temp = (s32) (ii >> brsh);
26397 			if (temp == 0) {
26398 				bcmerror = -EBADE;
26399 				break;
26400 			}
26401 		} else {
26402 			b = (qq << (31 - qq_nbits));
26403 			temp = (s32) (ii << -brsh);
26404 			if (temp == 0) {
26405 				bcmerror = -EBADE;
26406 				break;
26407 			}
26408 		}
26409 		b /= temp;
26410 		b -= a * a;
26411 		b = (s32) int_sqrt((unsigned long) b);
26412 		b -= (1 << 10);
26413 
26414 		if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26415 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26416 				new_comp.a0 = (s16) a & 0x3ff;
26417 				new_comp.b0 = (s16) b & 0x3ff;
26418 			} else {
26419 
26420 				new_comp.a0 = (s16) b & 0x3ff;
26421 				new_comp.b0 = (s16) a & 0x3ff;
26422 			}
26423 		}
26424 		if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26425 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26426 				new_comp.a1 = (s16) a & 0x3ff;
26427 				new_comp.b1 = (s16) b & 0x3ff;
26428 			} else {
26429 
26430 				new_comp.a1 = (s16) b & 0x3ff;
26431 				new_comp.b1 = (s16) a & 0x3ff;
26432 			}
26433 		}
26434 	}
26435 
26436 	if (bcmerror != 0) {
26437 		printk(KERN_DEBUG "%s: Failed, cnt = %d\n", __func__,
26438 		       cal_retry);
26439 
26440 		if (cal_retry < CAL_RETRY_CNT) {
26441 			cal_retry++;
26442 			goto cal_try;
26443 		}
26444 
26445 		new_comp = old_comp;
26446 	}
26447 
26448 	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26449 }
26450 
wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy * pi,u8 rx_core)26451 static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26452 {
26453 	u16 offtune_val;
26454 	u16 bias_g = 0;
26455 	u16 bias_a = 0;
26456 
26457 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26458 		if (rx_core == PHY_CORE_0) {
26459 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26460 				pi->tx_rx_cal_radio_saveregs[0] =
26461 					read_radio_reg(pi,
26462 					    RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26463 				pi->tx_rx_cal_radio_saveregs[1] =
26464 					read_radio_reg(pi,
26465 					    RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26466 
26467 				write_radio_reg(pi,
26468 					RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26469 					0x3);
26470 				write_radio_reg(pi,
26471 					RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26472 					0xaf);
26473 
26474 			} else {
26475 				pi->tx_rx_cal_radio_saveregs[0] =
26476 					read_radio_reg(pi,
26477 					    RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26478 				pi->tx_rx_cal_radio_saveregs[1] =
26479 					read_radio_reg(pi,
26480 					    RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26481 
26482 				write_radio_reg(
26483 					pi,
26484 					RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26485 					0x3);
26486 				write_radio_reg(
26487 					pi,
26488 					RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26489 					0x7f);
26490 			}
26491 
26492 		} else {
26493 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26494 				pi->tx_rx_cal_radio_saveregs[0] =
26495 					read_radio_reg(pi,
26496 					    RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26497 				pi->tx_rx_cal_radio_saveregs[1] =
26498 					read_radio_reg(pi,
26499 					    RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26500 
26501 				write_radio_reg(
26502 					pi,
26503 					RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26504 					0x3);
26505 				write_radio_reg(
26506 					pi,
26507 					RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26508 					0xaf);
26509 
26510 			} else {
26511 				pi->tx_rx_cal_radio_saveregs[0] =
26512 					read_radio_reg(pi,
26513 					    RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26514 				pi->tx_rx_cal_radio_saveregs[1] =
26515 					read_radio_reg(pi,
26516 					    RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26517 
26518 				write_radio_reg(pi,
26519 					RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26520 					0x3);
26521 				write_radio_reg(pi,
26522 					RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26523 					0x7f);
26524 			}
26525 		}
26526 
26527 	} else {
26528 		if (rx_core == PHY_CORE_0) {
26529 			pi->tx_rx_cal_radio_saveregs[0] =
26530 				read_radio_reg(pi,
26531 					       RADIO_2056_TX_RXIQCAL_TXMUX |
26532 					       RADIO_2056_TX1);
26533 			pi->tx_rx_cal_radio_saveregs[1] =
26534 				read_radio_reg(pi,
26535 					       RADIO_2056_RX_RXIQCAL_RXMUX |
26536 					       RADIO_2056_RX0);
26537 
26538 			if (pi->pubpi.radiorev >= 5) {
26539 				pi->tx_rx_cal_radio_saveregs[2] =
26540 					read_radio_reg(pi,
26541 						       RADIO_2056_RX_RXSPARE2 |
26542 						       RADIO_2056_RX0);
26543 				pi->tx_rx_cal_radio_saveregs[3] =
26544 					read_radio_reg(pi,
26545 						       RADIO_2056_TX_TXSPARE2 |
26546 						       RADIO_2056_TX1);
26547 			}
26548 
26549 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26550 
26551 				if (pi->pubpi.radiorev >= 5) {
26552 					pi->tx_rx_cal_radio_saveregs[4] =
26553 						read_radio_reg(pi,
26554 						      RADIO_2056_RX_LNAA_MASTER
26555 						      | RADIO_2056_RX0);
26556 
26557 					write_radio_reg(
26558 						pi,
26559 						RADIO_2056_RX_LNAA_MASTER
26560 						| RADIO_2056_RX0, 0x40);
26561 
26562 					write_radio_reg(pi,
26563 						RADIO_2056_TX_TXSPARE2 |
26564 						RADIO_2056_TX1, bias_a);
26565 
26566 					write_radio_reg(pi,
26567 						RADIO_2056_RX_RXSPARE2 |
26568 						RADIO_2056_RX0, bias_a);
26569 				} else {
26570 					pi->tx_rx_cal_radio_saveregs[4] =
26571 						read_radio_reg(pi,
26572 							RADIO_2056_RX_LNAA_TUNE
26573 							| RADIO_2056_RX0);
26574 
26575 					offtune_val =
26576 						(pi->tx_rx_cal_radio_saveregs
26577 						 [2] & 0xF0) >> 8;
26578 					offtune_val =
26579 						(offtune_val <= 0x7) ? 0xF : 0;
26580 
26581 					mod_radio_reg(pi,
26582 						      RADIO_2056_RX_LNAA_TUNE |
26583 						      RADIO_2056_RX0, 0xF0,
26584 						      (offtune_val << 8));
26585 				}
26586 
26587 				write_radio_reg(pi,
26588 						RADIO_2056_TX_RXIQCAL_TXMUX |
26589 						RADIO_2056_TX1, 0x9);
26590 				write_radio_reg(pi,
26591 						RADIO_2056_RX_RXIQCAL_RXMUX |
26592 						RADIO_2056_RX0, 0x9);
26593 			} else {
26594 				if (pi->pubpi.radiorev >= 5) {
26595 					pi->tx_rx_cal_radio_saveregs[4] =
26596 						read_radio_reg(
26597 						      pi,
26598 						      RADIO_2056_RX_LNAG_MASTER
26599 						    | RADIO_2056_RX0);
26600 
26601 					write_radio_reg(
26602 						pi,
26603 						RADIO_2056_RX_LNAG_MASTER
26604 						| RADIO_2056_RX0, 0x40);
26605 
26606 					write_radio_reg(
26607 						pi,
26608 						RADIO_2056_TX_TXSPARE2
26609 						|
26610 						RADIO_2056_TX1, bias_g);
26611 
26612 					write_radio_reg(
26613 						pi,
26614 						RADIO_2056_RX_RXSPARE2
26615 						|
26616 						RADIO_2056_RX0, bias_g);
26617 
26618 				} else {
26619 					pi->tx_rx_cal_radio_saveregs[4] =
26620 						read_radio_reg(
26621 							pi,
26622 							RADIO_2056_RX_LNAG_TUNE
26623 							| RADIO_2056_RX0);
26624 
26625 					offtune_val =
26626 						(pi->
26627 						 tx_rx_cal_radio_saveregs[2] &
26628 						 0xF0) >> 8;
26629 					offtune_val =
26630 						(offtune_val <= 0x7) ? 0xF : 0;
26631 
26632 					mod_radio_reg(pi,
26633 						      RADIO_2056_RX_LNAG_TUNE |
26634 						      RADIO_2056_RX0, 0xF0,
26635 						      (offtune_val << 8));
26636 				}
26637 
26638 				write_radio_reg(pi,
26639 						RADIO_2056_TX_RXIQCAL_TXMUX |
26640 						RADIO_2056_TX1, 0x6);
26641 				write_radio_reg(pi,
26642 						RADIO_2056_RX_RXIQCAL_RXMUX |
26643 						RADIO_2056_RX0, 0x6);
26644 			}
26645 
26646 		} else {
26647 			pi->tx_rx_cal_radio_saveregs[0] =
26648 				read_radio_reg(pi,
26649 					       RADIO_2056_TX_RXIQCAL_TXMUX |
26650 					       RADIO_2056_TX0);
26651 			pi->tx_rx_cal_radio_saveregs[1] =
26652 				read_radio_reg(pi,
26653 					       RADIO_2056_RX_RXIQCAL_RXMUX |
26654 					       RADIO_2056_RX1);
26655 
26656 			if (pi->pubpi.radiorev >= 5) {
26657 				pi->tx_rx_cal_radio_saveregs[2] =
26658 					read_radio_reg(pi,
26659 						       RADIO_2056_RX_RXSPARE2 |
26660 						       RADIO_2056_RX1);
26661 				pi->tx_rx_cal_radio_saveregs[3] =
26662 					read_radio_reg(pi,
26663 						       RADIO_2056_TX_TXSPARE2 |
26664 						       RADIO_2056_TX0);
26665 			}
26666 
26667 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26668 
26669 				if (pi->pubpi.radiorev >= 5) {
26670 					pi->tx_rx_cal_radio_saveregs[4] =
26671 						read_radio_reg(
26672 						       pi,
26673 						       RADIO_2056_RX_LNAA_MASTER
26674 						       | RADIO_2056_RX1);
26675 
26676 					write_radio_reg(
26677 						pi,
26678 						RADIO_2056_RX_LNAA_MASTER |
26679 						RADIO_2056_RX1, 0x40);
26680 
26681 					write_radio_reg(
26682 						pi,
26683 						RADIO_2056_TX_TXSPARE2
26684 						|
26685 						RADIO_2056_TX0, bias_a);
26686 
26687 					write_radio_reg(
26688 						pi,
26689 						RADIO_2056_RX_RXSPARE2
26690 						|
26691 						RADIO_2056_RX1, bias_a);
26692 				} else {
26693 					pi->tx_rx_cal_radio_saveregs[4] =
26694 						read_radio_reg(
26695 							pi,
26696 							RADIO_2056_RX_LNAA_TUNE
26697 							| RADIO_2056_RX1);
26698 
26699 					offtune_val =
26700 						(pi->
26701 						 tx_rx_cal_radio_saveregs[2] &
26702 						 0xF0) >> 8;
26703 					offtune_val =
26704 						(offtune_val <= 0x7) ? 0xF : 0;
26705 
26706 					mod_radio_reg(pi,
26707 						      RADIO_2056_RX_LNAA_TUNE |
26708 						      RADIO_2056_RX1, 0xF0,
26709 						      (offtune_val << 8));
26710 				}
26711 
26712 				write_radio_reg(pi,
26713 						RADIO_2056_TX_RXIQCAL_TXMUX |
26714 						RADIO_2056_TX0, 0x9);
26715 				write_radio_reg(pi,
26716 						RADIO_2056_RX_RXIQCAL_RXMUX |
26717 						RADIO_2056_RX1, 0x9);
26718 			} else {
26719 				if (pi->pubpi.radiorev >= 5) {
26720 					pi->tx_rx_cal_radio_saveregs[4] =
26721 						read_radio_reg(
26722 						      pi,
26723 						      RADIO_2056_RX_LNAG_MASTER
26724 						    | RADIO_2056_RX1);
26725 
26726 					write_radio_reg(
26727 						pi,
26728 						RADIO_2056_RX_LNAG_MASTER
26729 						| RADIO_2056_RX1, 0x40);
26730 
26731 					write_radio_reg(
26732 						pi,
26733 						RADIO_2056_TX_TXSPARE2
26734 						|
26735 						RADIO_2056_TX0, bias_g);
26736 
26737 					write_radio_reg(
26738 						pi,
26739 						RADIO_2056_RX_RXSPARE2
26740 						|
26741 						RADIO_2056_RX1, bias_g);
26742 				} else {
26743 					pi->tx_rx_cal_radio_saveregs[4] =
26744 						read_radio_reg(
26745 							pi,
26746 							RADIO_2056_RX_LNAG_TUNE
26747 							| RADIO_2056_RX1);
26748 
26749 					offtune_val =
26750 						(pi->
26751 						 tx_rx_cal_radio_saveregs[2] &
26752 						 0xF0) >> 8;
26753 					offtune_val =
26754 						(offtune_val <= 0x7) ? 0xF : 0;
26755 
26756 					mod_radio_reg(pi,
26757 						      RADIO_2056_RX_LNAG_TUNE |
26758 						      RADIO_2056_RX1, 0xF0,
26759 						      (offtune_val << 8));
26760 				}
26761 
26762 				write_radio_reg(pi,
26763 						RADIO_2056_TX_RXIQCAL_TXMUX |
26764 						RADIO_2056_TX0, 0x6);
26765 				write_radio_reg(pi,
26766 						RADIO_2056_RX_RXIQCAL_RXMUX |
26767 						RADIO_2056_RX1, 0x6);
26768 			}
26769 		}
26770 	}
26771 }
26772 
wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy * pi,u8 rx_core)26773 static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26774 {
26775 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26776 		if (rx_core == PHY_CORE_0) {
26777 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26778 				write_radio_reg(
26779 					pi,
26780 					RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26781 					pi->
26782 					tx_rx_cal_radio_saveregs[0]);
26783 				write_radio_reg(
26784 					pi,
26785 					RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26786 					pi->
26787 					tx_rx_cal_radio_saveregs[1]);
26788 
26789 			} else {
26790 				write_radio_reg(
26791 					pi,
26792 					RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26793 					pi->
26794 					tx_rx_cal_radio_saveregs[0]);
26795 				write_radio_reg(
26796 					pi,
26797 					RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26798 					pi->
26799 					tx_rx_cal_radio_saveregs[1]);
26800 			}
26801 
26802 		} else {
26803 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26804 				write_radio_reg(
26805 					pi,
26806 					RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26807 					pi->
26808 					tx_rx_cal_radio_saveregs[0]);
26809 				write_radio_reg(
26810 					pi,
26811 					RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26812 					pi->
26813 					tx_rx_cal_radio_saveregs[1]);
26814 
26815 			} else {
26816 				write_radio_reg(
26817 					pi,
26818 					RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26819 					pi->
26820 					tx_rx_cal_radio_saveregs[0]);
26821 				write_radio_reg(
26822 					pi,
26823 					RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26824 					pi->
26825 					tx_rx_cal_radio_saveregs[1]);
26826 			}
26827 		}
26828 
26829 	} else {
26830 		if (rx_core == PHY_CORE_0) {
26831 			write_radio_reg(pi,
26832 					RADIO_2056_TX_RXIQCAL_TXMUX |
26833 					RADIO_2056_TX1,
26834 					pi->tx_rx_cal_radio_saveregs[0]);
26835 
26836 			write_radio_reg(pi,
26837 					RADIO_2056_RX_RXIQCAL_RXMUX |
26838 					RADIO_2056_RX0,
26839 					pi->tx_rx_cal_radio_saveregs[1]);
26840 
26841 			if (pi->pubpi.radiorev >= 5) {
26842 				write_radio_reg(pi,
26843 						RADIO_2056_RX_RXSPARE2 |
26844 						RADIO_2056_RX0,
26845 						pi->
26846 						tx_rx_cal_radio_saveregs[2]);
26847 
26848 				write_radio_reg(pi,
26849 						RADIO_2056_TX_TXSPARE2 |
26850 						RADIO_2056_TX1,
26851 						pi->
26852 						tx_rx_cal_radio_saveregs[3]);
26853 			}
26854 
26855 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26856 				if (pi->pubpi.radiorev >= 5)
26857 					write_radio_reg(
26858 						pi,
26859 						RADIO_2056_RX_LNAA_MASTER
26860 						| RADIO_2056_RX0,
26861 						pi->
26862 						tx_rx_cal_radio_saveregs
26863 						[4]);
26864 				else
26865 					write_radio_reg(
26866 						pi,
26867 						RADIO_2056_RX_LNAA_TUNE
26868 						| RADIO_2056_RX0,
26869 						pi->
26870 						tx_rx_cal_radio_saveregs
26871 						[4]);
26872 			} else {
26873 				if (pi->pubpi.radiorev >= 5)
26874 					write_radio_reg(
26875 						pi,
26876 						RADIO_2056_RX_LNAG_MASTER
26877 						| RADIO_2056_RX0,
26878 						pi->
26879 						tx_rx_cal_radio_saveregs
26880 						[4]);
26881 				else
26882 					write_radio_reg(
26883 						pi,
26884 						RADIO_2056_RX_LNAG_TUNE
26885 						| RADIO_2056_RX0,
26886 						pi->
26887 						tx_rx_cal_radio_saveregs
26888 						[4]);
26889 			}
26890 
26891 		} else {
26892 			write_radio_reg(pi,
26893 					RADIO_2056_TX_RXIQCAL_TXMUX |
26894 					RADIO_2056_TX0,
26895 					pi->tx_rx_cal_radio_saveregs[0]);
26896 
26897 			write_radio_reg(pi,
26898 					RADIO_2056_RX_RXIQCAL_RXMUX |
26899 					RADIO_2056_RX1,
26900 					pi->tx_rx_cal_radio_saveregs[1]);
26901 
26902 			if (pi->pubpi.radiorev >= 5) {
26903 				write_radio_reg(pi,
26904 						RADIO_2056_RX_RXSPARE2 |
26905 						RADIO_2056_RX1,
26906 						pi->
26907 						tx_rx_cal_radio_saveregs[2]);
26908 
26909 				write_radio_reg(pi,
26910 						RADIO_2056_TX_TXSPARE2 |
26911 						RADIO_2056_TX0,
26912 						pi->
26913 						tx_rx_cal_radio_saveregs[3]);
26914 			}
26915 
26916 			if (CHSPEC_IS5G(pi->radio_chanspec)) {
26917 				if (pi->pubpi.radiorev >= 5)
26918 					write_radio_reg(
26919 						pi,
26920 						RADIO_2056_RX_LNAA_MASTER
26921 						| RADIO_2056_RX1,
26922 						pi->
26923 						tx_rx_cal_radio_saveregs
26924 						[4]);
26925 				else
26926 					write_radio_reg(
26927 						pi,
26928 						RADIO_2056_RX_LNAA_TUNE
26929 						| RADIO_2056_RX1,
26930 						pi->
26931 						tx_rx_cal_radio_saveregs
26932 						[4]);
26933 			} else {
26934 				if (pi->pubpi.radiorev >= 5)
26935 					write_radio_reg(
26936 						pi,
26937 						RADIO_2056_RX_LNAG_MASTER
26938 						| RADIO_2056_RX1,
26939 						pi->
26940 						tx_rx_cal_radio_saveregs
26941 						[4]);
26942 				else
26943 					write_radio_reg(
26944 						pi,
26945 						RADIO_2056_RX_LNAG_TUNE
26946 						| RADIO_2056_RX1,
26947 						pi->
26948 						tx_rx_cal_radio_saveregs
26949 						[4]);
26950 			}
26951 		}
26952 	}
26953 }
26954 
wlc_phy_rxcal_physetup_nphy(struct brcms_phy * pi,u8 rx_core)26955 static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26956 {
26957 	u8 tx_core;
26958 	u16 rx_antval, tx_antval;
26959 
26960 	if (NREV_GE(pi->pubpi.phy_rev, 7))
26961 		tx_core = rx_core;
26962 	else
26963 		tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26964 
26965 	pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26966 	pi->tx_rx_cal_phy_saveregs[1] =
26967 		read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26968 	pi->tx_rx_cal_phy_saveregs[2] =
26969 		read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
26970 	pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
26971 	pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
26972 	pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
26973 	pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
26974 	pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
26975 	pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
26976 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26977 		pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
26978 		pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
26979 		pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
26980 		pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
26981 	}
26982 
26983 	pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
26984 	pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
26985 	mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
26986 		    0x29b, (0x1 << 0), (0) << 0);
26987 
26988 	mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
26989 		    0x29b, (0x1 << 0), (0) << 0);
26990 
26991 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26992 
26993 		mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26994 
26995 		mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
26996 
26997 	} else {
26998 
26999 		mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27000 		mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27001 		mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
27002 		mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
27003 	}
27004 
27005 	mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
27006 	mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
27007 		    (0x1 << 2), (0x1 << 2));
27008 	if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27009 		mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27010 			    (0x1 << 0) | (0x1 << 1), 0);
27011 		mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27012 			    0x8f : 0xa5,
27013 			    (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
27014 	}
27015 
27016 	wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
27017 					 RADIO_MIMO_CORESEL_CORE1 |
27018 					 RADIO_MIMO_CORESEL_CORE2);
27019 
27020 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27021 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
27022 						  0, 0, 0,
27023 						  NPHY_REV7_RFCTRLOVERRIDE_ID0);
27024 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
27025 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
27026 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
27027 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
27028 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
27029 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
27030 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
27031 						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
27032 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
27033 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
27034 		if (CHSPEC_IS40(pi->radio_chanspec))
27035 			wlc_phy_rfctrl_override_nphy_rev7(
27036 				pi,
27037 				(0x1 << 7),
27038 				2, 0, 0,
27039 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
27040 		else
27041 			wlc_phy_rfctrl_override_nphy_rev7(
27042 				pi,
27043 				(0x1 << 7),
27044 				0, 0, 0,
27045 				NPHY_REV7_RFCTRLOVERRIDE_ID1);
27046 
27047 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
27048 						  0, 0, 0,
27049 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
27050 		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
27051 						  NPHY_REV7_RFCTRLOVERRIDE_ID1);
27052 	} else {
27053 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
27054 	}
27055 
27056 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
27057 
27058 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27059 
27060 		wlc_phy_rfctrlintc_override_nphy(pi,
27061 						 NPHY_RfctrlIntc_override_TRSW,
27062 						 0x1, rx_core + 1);
27063 	} else {
27064 
27065 		if (rx_core == PHY_CORE_0) {
27066 			rx_antval = 0x1;
27067 			tx_antval = 0x8;
27068 		} else {
27069 			rx_antval = 0x4;
27070 			tx_antval = 0x2;
27071 		}
27072 
27073 		wlc_phy_rfctrlintc_override_nphy(pi,
27074 						 NPHY_RfctrlIntc_override_TRSW,
27075 						 rx_antval, rx_core + 1);
27076 		wlc_phy_rfctrlintc_override_nphy(pi,
27077 						 NPHY_RfctrlIntc_override_TRSW,
27078 						 tx_antval, tx_core + 1);
27079 	}
27080 }
27081 
wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy * pi,u8 rx_core)27082 static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
27083 {
27084 
27085 	write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
27086 	write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
27087 		      pi->tx_rx_cal_phy_saveregs[1]);
27088 	write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
27089 		      pi->tx_rx_cal_phy_saveregs[2]);
27090 	write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
27091 	write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
27092 
27093 	write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
27094 	write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
27095 	write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
27096 	write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
27097 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27098 		write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
27099 		write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
27100 		write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
27101 		write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
27102 	}
27103 
27104 	write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
27105 	write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
27106 }
27107 
27108 static void
wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy * pi,u8 rx_core,u16 * rxgain,u8 cal_type)27109 wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
27110 				 u16 *rxgain, u8 cal_type)
27111 {
27112 
27113 	u16 num_samps;
27114 	struct phy_iq_est est[PHY_CORE_MAX];
27115 	u8 tx_core;
27116 	struct nphy_iq_comp save_comp, zero_comp;
27117 	u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
27118 	    thresh_pwr = 10000;
27119 	s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
27120 	bool gainctrl_done = false;
27121 	u8 mix_tia_gain = 3;
27122 	s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
27123 	s8 curr_gaintbl_index = 3;
27124 	u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
27125 	const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
27126 	u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
27127 	int fine_gain_idx;
27128 	s8 txpwrindex;
27129 	u16 nphy_rxcal_txgain[2];
27130 
27131 	if (NREV_GE(pi->pubpi.phy_rev, 7))
27132 		tx_core = rx_core;
27133 	else
27134 		tx_core = 1 - rx_core;
27135 
27136 	num_samps = 1024;
27137 	desired_log2_pwr = (cal_type == 0) ? 13 : 13;
27138 
27139 	wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
27140 	zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
27141 	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
27142 
27143 	if (CHSPEC_IS5G(pi->radio_chanspec)) {
27144 		if (NREV_GE(pi->pubpi.phy_rev, 7))
27145 			mix_tia_gain = 3;
27146 		else if (NREV_GE(pi->pubpi.phy_rev, 4))
27147 			mix_tia_gain = 4;
27148 		else
27149 			mix_tia_gain = 6;
27150 		if (NREV_GE(pi->pubpi.phy_rev, 7))
27151 			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
27152 		else
27153 			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
27154 	} else {
27155 		if (NREV_GE(pi->pubpi.phy_rev, 7))
27156 			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
27157 		else
27158 			nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
27159 	}
27160 
27161 	do {
27162 
27163 		hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
27164 			0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
27165 		lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
27166 		lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
27167 		lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
27168 		lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
27169 		txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
27170 
27171 		if (NREV_GE(pi->pubpi.phy_rev, 7))
27172 			wlc_phy_rfctrl_override_1tomany_nphy(
27173 				pi,
27174 				NPHY_REV7_RfctrlOverride_cmd_rxgain,
27175 				((lpf_biq1 << 12) |
27176 				 (lpf_biq0 << 8) |
27177 				 (mix_tia_gain << 4) | (lna2 << 2)
27178 				 | lna1), 0x3, 0);
27179 		else
27180 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27181 						     ((hpvga << 12) |
27182 						      (lpf_biq1 << 10) |
27183 						      (lpf_biq0 << 8) |
27184 						      (mix_tia_gain << 4) |
27185 						      (lna2 << 2) | lna1), 0x3,
27186 						     0);
27187 
27188 		pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
27189 
27190 		if (txpwrindex == -1) {
27191 			nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
27192 			nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
27193 			wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
27194 						 2, 0x110, 16,
27195 						 nphy_rxcal_txgain);
27196 		} else {
27197 			wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
27198 						 false);
27199 		}
27200 
27201 		wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
27202 				     NPHY_RXCAL_TONEFREQ_40MHz :
27203 				     NPHY_RXCAL_TONEFREQ_20MHz,
27204 				     NPHY_RXCAL_TONEAMP, 0, cal_type, false);
27205 
27206 		wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27207 		i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
27208 		q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
27209 		curr_pwr = i_pwr + q_pwr;
27210 
27211 		switch (gainctrl_dirn) {
27212 		case NPHY_RXCAL_GAIN_INIT:
27213 			if (curr_pwr > thresh_pwr) {
27214 				gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
27215 				prev_gaintbl_index = curr_gaintbl_index;
27216 				curr_gaintbl_index--;
27217 			} else {
27218 				gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
27219 				prev_gaintbl_index = curr_gaintbl_index;
27220 				curr_gaintbl_index++;
27221 			}
27222 			break;
27223 
27224 		case NPHY_RXCAL_GAIN_UP:
27225 			if (curr_pwr > thresh_pwr) {
27226 				gainctrl_done = true;
27227 				optim_pwr = prev_pwr;
27228 				optim_gaintbl_index = prev_gaintbl_index;
27229 			} else {
27230 				prev_gaintbl_index = curr_gaintbl_index;
27231 				curr_gaintbl_index++;
27232 			}
27233 			break;
27234 
27235 		case NPHY_RXCAL_GAIN_DOWN:
27236 			if (curr_pwr > thresh_pwr) {
27237 				prev_gaintbl_index = curr_gaintbl_index;
27238 				curr_gaintbl_index--;
27239 			} else {
27240 				gainctrl_done = true;
27241 				optim_pwr = curr_pwr;
27242 				optim_gaintbl_index = curr_gaintbl_index;
27243 			}
27244 			break;
27245 
27246 		default:
27247 			break;
27248 		}
27249 
27250 		if ((curr_gaintbl_index < 0) ||
27251 		    (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27252 			gainctrl_done = true;
27253 			optim_pwr = curr_pwr;
27254 			optim_gaintbl_index = prev_gaintbl_index;
27255 		} else {
27256 			prev_pwr = curr_pwr;
27257 		}
27258 
27259 		wlc_phy_stopplayback_nphy(pi);
27260 	} while (!gainctrl_done);
27261 
27262 	hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27263 	lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27264 	lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27265 	lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27266 	lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27267 	txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27268 
27269 	actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27270 	delta_pwr = desired_log2_pwr - actual_log2_pwr;
27271 
27272 	if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27273 		fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27274 
27275 		if (fine_gain_idx + (int)lpf_biq0 > 10)
27276 			lpf_biq1 = 10 - lpf_biq0;
27277 		else
27278 			lpf_biq1 = (u16) max(fine_gain_idx, 0);
27279 
27280 		wlc_phy_rfctrl_override_1tomany_nphy(
27281 			pi,
27282 			NPHY_REV7_RfctrlOverride_cmd_rxgain,
27283 			((lpf_biq1 << 12) |
27284 			 (lpf_biq0 << 8) |
27285 			 (mix_tia_gain << 4) |
27286 			 (lna2 << 2) | lna1), 0x3,
27287 			0);
27288 	} else {
27289 		hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27290 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27291 					     ((hpvga << 12) |
27292 					      (lpf_biq1 << 10) |
27293 					      (lpf_biq0 << 8) |
27294 					      (mix_tia_gain << 4) |
27295 					      (lna2 << 2) |
27296 					      lna1), 0x3, 0);
27297 	}
27298 
27299 	if (rxgain != NULL) {
27300 		*rxgain++ = lna1;
27301 		*rxgain++ = lna2;
27302 		*rxgain++ = mix_tia_gain;
27303 		*rxgain++ = lpf_biq0;
27304 		*rxgain++ = lpf_biq1;
27305 		*rxgain = hpvga;
27306 	}
27307 
27308 	wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27309 }
27310 
27311 static void
wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy * pi,u8 rx_core,u16 * rxgain,u8 cal_type)27312 wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27313 			    u8 cal_type)
27314 {
27315 	wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27316 }
27317 
27318 static u8
wlc_phy_rc_sweep_nphy(struct brcms_phy * pi,u8 core_idx,u8 loopback_type)27319 wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27320 {
27321 	u32 target_bws[2] = { 9500, 21000 };
27322 	u32 ref_tones[2] = { 3000, 6000 };
27323 	u32 target_bw, ref_tone;
27324 
27325 	u32 target_pwr_ratios[2] = { 28606, 18468 };
27326 	u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27327 
27328 	u16 start_rccal_ovr_val = 128;
27329 	u16 txlpf_rccal_lpc_ovr_val = 128;
27330 	u16 rxlpf_rccal_hpc_ovr_val = 159;
27331 
27332 	u16 orig_txlpf_rccal_lpc_ovr_val;
27333 	u16 orig_rxlpf_rccal_hpc_ovr_val;
27334 	u16 radio_addr_offset_rx;
27335 	u16 radio_addr_offset_tx;
27336 	u16 orig_dcBypass;
27337 	u16 orig_RxStrnFilt40Num[6];
27338 	u16 orig_RxStrnFilt40Den[4];
27339 	u16 orig_rfctrloverride[2];
27340 	u16 orig_rfctrlauxreg[2];
27341 	u16 orig_rfctrlrssiothers;
27342 	u16 tx_lpf_bw = 4;
27343 
27344 	u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27345 	u16 lpf_hpc = 7, hpvga_hpc = 7;
27346 
27347 	s8 rccal_stepsize;
27348 	u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27349 	u32 ref_iq_vals = 0, target_iq_vals = 0;
27350 	u16 num_samps, log_num_samps = 10;
27351 	struct phy_iq_est est[PHY_CORE_MAX];
27352 
27353 	if (NREV_GE(pi->pubpi.phy_rev, 7))
27354 		return 0;
27355 
27356 	num_samps = (1 << log_num_samps);
27357 
27358 	if (CHSPEC_IS40(pi->radio_chanspec)) {
27359 		target_bw = target_bws[1];
27360 		target_pwr_ratio = target_pwr_ratios[1];
27361 		ref_tone = ref_tones[1];
27362 		rx_lpf_bw = rx_lpf_bws[1];
27363 	} else {
27364 		target_bw = target_bws[0];
27365 		target_pwr_ratio = target_pwr_ratios[0];
27366 		ref_tone = ref_tones[0];
27367 		rx_lpf_bw = rx_lpf_bws[0];
27368 	}
27369 
27370 	if (core_idx == 0) {
27371 		radio_addr_offset_rx = RADIO_2056_RX0;
27372 		radio_addr_offset_tx =
27373 			(loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27374 	} else {
27375 		radio_addr_offset_rx = RADIO_2056_RX1;
27376 		radio_addr_offset_tx =
27377 			(loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27378 	}
27379 
27380 	orig_txlpf_rccal_lpc_ovr_val =
27381 		read_radio_reg(pi,
27382 			       (RADIO_2056_TX_TXLPF_RCCAL |
27383 				radio_addr_offset_tx));
27384 	orig_rxlpf_rccal_hpc_ovr_val =
27385 		read_radio_reg(pi,
27386 			       (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27387 				radio_addr_offset_rx));
27388 
27389 	orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27390 
27391 	orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27392 	orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27393 	orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27394 	orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27395 	orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27396 	orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27397 	orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27398 	orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27399 	orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27400 	orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27401 
27402 	orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27403 	orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27404 	orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27405 	orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27406 	orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27407 
27408 	write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27409 			txlpf_rccal_lpc_ovr_val);
27410 
27411 	write_radio_reg(pi,
27412 			(RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27413 			rxlpf_rccal_hpc_ovr_val);
27414 
27415 	mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27416 
27417 	write_phy_reg(pi, 0x267, 0x02d4);
27418 	write_phy_reg(pi, 0x268, 0x0000);
27419 	write_phy_reg(pi, 0x269, 0x0000);
27420 	write_phy_reg(pi, 0x26a, 0x0000);
27421 	write_phy_reg(pi, 0x26b, 0x0000);
27422 	write_phy_reg(pi, 0x26c, 0x02d4);
27423 	write_phy_reg(pi, 0x26d, 0x0000);
27424 	write_phy_reg(pi, 0x26e, 0x0000);
27425 	write_phy_reg(pi, 0x26f, 0x0000);
27426 	write_phy_reg(pi, 0x270, 0x0000);
27427 
27428 	or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27429 	or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27430 	or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27431 	or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27432 
27433 	mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27434 		    (0x7 << 10), (tx_lpf_bw << 10));
27435 	mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27436 		    (0x7 << 0), (hpvga_hpc << 0));
27437 	mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27438 		    (0x7 << 4), (lpf_hpc << 4));
27439 	mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27440 		    (0x7 << 8), (rx_lpf_bw << 8));
27441 
27442 	rccal_stepsize = 16;
27443 	rccal_val = start_rccal_ovr_val + rccal_stepsize;
27444 
27445 	while (rccal_stepsize >= 0) {
27446 		write_radio_reg(pi,
27447 				(RADIO_2056_RX_RXLPF_RCCAL_LPC |
27448 				 radio_addr_offset_rx), rccal_val);
27449 
27450 		if (rccal_stepsize == 16) {
27451 
27452 			wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27453 					     0, 1, false);
27454 			udelay(2);
27455 
27456 			wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27457 
27458 			if (core_idx == 0)
27459 				ref_iq_vals =
27460 					max_t(u32, (est[0].i_pwr +
27461 						    est[0].q_pwr) >>
27462 					      (log_num_samps + 1),
27463 					      1);
27464 			else
27465 				ref_iq_vals =
27466 					max_t(u32, (est[1].i_pwr +
27467 						    est[1].q_pwr) >>
27468 					      (log_num_samps + 1),
27469 					      1);
27470 
27471 			wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27472 					     0, 1, false);
27473 			udelay(2);
27474 		}
27475 
27476 		wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27477 
27478 		if (core_idx == 0)
27479 			target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27480 					 (log_num_samps + 1);
27481 		else
27482 			target_iq_vals =
27483 				(est[1].i_pwr +
27484 				 est[1].q_pwr) >> (log_num_samps + 1);
27485 
27486 		pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27487 
27488 		if (rccal_stepsize == 0)
27489 			rccal_stepsize--;
27490 		else if (rccal_stepsize == 1) {
27491 			last_rccal_val = rccal_val;
27492 			rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27493 			last_pwr_ratio = pwr_ratio;
27494 			rccal_stepsize--;
27495 		} else {
27496 			rccal_stepsize = (rccal_stepsize >> 1);
27497 			rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27498 				      rccal_stepsize : (-rccal_stepsize));
27499 		}
27500 
27501 		if (rccal_stepsize == -1) {
27502 			best_rccal_val =
27503 				(abs((int)last_pwr_ratio -
27504 				     (int)target_pwr_ratio) <
27505 				 abs((int)pwr_ratio -
27506 				     (int)target_pwr_ratio)) ? last_rccal_val :
27507 				rccal_val;
27508 
27509 			if (CHSPEC_IS40(pi->radio_chanspec)) {
27510 				if ((best_rccal_val > 140)
27511 				    || (best_rccal_val < 135))
27512 					best_rccal_val = 138;
27513 			} else {
27514 				if ((best_rccal_val > 142)
27515 				    || (best_rccal_val < 137))
27516 					best_rccal_val = 140;
27517 			}
27518 
27519 			write_radio_reg(pi,
27520 					(RADIO_2056_RX_RXLPF_RCCAL_LPC |
27521 					 radio_addr_offset_rx), best_rccal_val);
27522 		}
27523 	}
27524 
27525 	wlc_phy_stopplayback_nphy(pi);
27526 
27527 	write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27528 			orig_txlpf_rccal_lpc_ovr_val);
27529 	write_radio_reg(pi,
27530 			(RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27531 			orig_rxlpf_rccal_hpc_ovr_val);
27532 
27533 	mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27534 
27535 	write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27536 	write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27537 	write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27538 	write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27539 	write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27540 	write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27541 	write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27542 	write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27543 	write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27544 	write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27545 
27546 	write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27547 	write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27548 	write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27549 	write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27550 	write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27551 
27552 	pi->nphy_anarxlpf_adjusted = false;
27553 
27554 	return best_rccal_val - 0x80;
27555 }
27556 
27557 #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)27558 static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27559 				      struct nphy_txgains target_gain,
27560 				      u8 cal_type, bool debug)
27561 {
27562 	u16 orig_BBConfig;
27563 	u8 core_no, rx_core;
27564 	u8 best_rccal[2];
27565 	u16 gain_save[2];
27566 	u16 cal_gain[2];
27567 	struct nphy_iqcal_params cal_params[2];
27568 	u8 rxcore_state;
27569 	s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27570 	s8 txlpf_idac;
27571 	bool phyhang_avoid_state = false;
27572 	bool skip_rxiqcal = false;
27573 
27574 	orig_BBConfig = read_phy_reg(pi, 0x01);
27575 	mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27576 
27577 	wlc_phy_stay_in_carriersearch_nphy(pi, true);
27578 
27579 	if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27580 		phyhang_avoid_state = pi->phyhang_avoid;
27581 		pi->phyhang_avoid = false;
27582 	}
27583 
27584 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27585 
27586 	for (core_no = 0; core_no <= 1; core_no++) {
27587 		wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27588 					      &cal_params[core_no]);
27589 		cal_gain[core_no] = cal_params[core_no].cal_gain;
27590 	}
27591 
27592 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27593 
27594 	rxcore_state = wlc_phy_rxcore_getstate_nphy(
27595 		(struct brcms_phy_pub *) pi);
27596 
27597 	for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27598 
27599 		skip_rxiqcal =
27600 			((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27601 
27602 		wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27603 
27604 		wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27605 
27606 		if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27607 
27608 			wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27609 
27610 			wlc_phy_tx_tone_nphy(pi,
27611 					     (CHSPEC_IS40(
27612 						      pi->radio_chanspec)) ?
27613 					     NPHY_RXCAL_TONEFREQ_40MHz :
27614 					     NPHY_RXCAL_TONEFREQ_20MHz,
27615 					     NPHY_RXCAL_TONEAMP, 0, cal_type,
27616 					     false);
27617 
27618 			if (debug)
27619 				mdelay(WAIT_FOR_SCOPE);
27620 
27621 			wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27622 			wlc_phy_stopplayback_nphy(pi);
27623 		}
27624 
27625 		if (((cal_type == 1) || (cal_type == 2))
27626 		    && NREV_LT(pi->pubpi.phy_rev, 7)) {
27627 
27628 			if (rx_core == PHY_CORE_1) {
27629 
27630 				if (rxcore_state == 1)
27631 					wlc_phy_rxcore_setstate_nphy(
27632 						(struct brcms_phy_pub *) pi, 3);
27633 
27634 				wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27635 							    1);
27636 
27637 				best_rccal[rx_core] =
27638 					wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27639 				pi->nphy_rccal_value = best_rccal[rx_core];
27640 
27641 				if (rxcore_state == 1)
27642 					wlc_phy_rxcore_setstate_nphy(
27643 						(struct brcms_phy_pub *) pi,
27644 						rxcore_state);
27645 			}
27646 		}
27647 
27648 		wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27649 
27650 		wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27651 		wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27652 	}
27653 
27654 	if ((cal_type == 1) || (cal_type == 2)) {
27655 
27656 		best_rccal[0] = best_rccal[1];
27657 		write_radio_reg(pi,
27658 				(RADIO_2056_RX_RXLPF_RCCAL_LPC |
27659 				 RADIO_2056_RX0), (best_rccal[0] | 0x80));
27660 
27661 		for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27662 			rxlpf_rccal_hpc =
27663 				(((int)best_rccal[rx_core] - 12) >> 1) + 10;
27664 			txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27665 
27666 			if (PHY_IPA(pi)) {
27667 				txlpf_rccal_lpc +=
27668 					(pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27669 				txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27670 					     0x0e : 0x13;
27671 				WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27672 						 TXLPF_IDAC_4, txlpf_idac);
27673 			}
27674 
27675 			rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27676 					      0);
27677 			txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27678 					      0);
27679 
27680 			write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27681 					     ((rx_core ==
27682 					       PHY_CORE_0) ? RADIO_2056_RX0 :
27683 					      RADIO_2056_RX1)),
27684 					(rxlpf_rccal_hpc | 0x80));
27685 
27686 			write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27687 					     ((rx_core ==
27688 					       PHY_CORE_0) ? RADIO_2056_TX0 :
27689 					      RADIO_2056_TX1)),
27690 					(txlpf_rccal_lpc | 0x80));
27691 		}
27692 	}
27693 
27694 	write_phy_reg(pi, 0x01, orig_BBConfig);
27695 
27696 	wlc_phy_resetcca_nphy(pi);
27697 
27698 	if (NREV_GE(pi->pubpi.phy_rev, 7))
27699 		wlc_phy_rfctrl_override_1tomany_nphy(
27700 			pi,
27701 			NPHY_REV7_RfctrlOverride_cmd_rxgain,
27702 			0, 0x3, 1);
27703 	else
27704 		wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27705 
27706 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27707 
27708 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27709 				 gain_save);
27710 
27711 	if (NREV_GE(pi->pubpi.phy_rev, 4))
27712 		pi->phyhang_avoid = phyhang_avoid_state;
27713 
27714 	wlc_phy_stay_in_carriersearch_nphy(pi, false);
27715 
27716 	return 0;
27717 }
27718 
27719 static int
wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy * pi,struct nphy_txgains target_gain,bool debug)27720 wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27721 			   struct nphy_txgains target_gain, bool debug)
27722 {
27723 	struct phy_iq_est est[PHY_CORE_MAX];
27724 	u8 core_num, rx_core, tx_core;
27725 	u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27726 	u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27727 	u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27728 	s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27729 	s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27730 	u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27731 	u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27732 	u16 num_samps;
27733 	u32 i_pwr, q_pwr, tot_pwr[3];
27734 	u8 gain_pass, use_hpf_num;
27735 	u16 mask, val1, val2;
27736 	u16 core_no;
27737 	u16 gain_save[2];
27738 	u16 cal_gain[2];
27739 	struct nphy_iqcal_params cal_params[2];
27740 	u8 phy_bw;
27741 	int bcmerror = 0;
27742 	bool first_playtone = true;
27743 
27744 	wlc_phy_stay_in_carriersearch_nphy(pi, true);
27745 
27746 	if (NREV_LT(pi->pubpi.phy_rev, 2))
27747 		wlc_phy_reapply_txcal_coeffs_nphy(pi);
27748 
27749 	wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27750 
27751 	for (core_no = 0; core_no <= 1; core_no++) {
27752 		wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27753 					      &cal_params[core_no]);
27754 		cal_gain[core_no] = cal_params[core_no].cal_gain;
27755 	}
27756 
27757 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27758 
27759 	num_samps = 1024;
27760 	desired_log2_pwr = 13;
27761 
27762 	for (core_num = 0; core_num < 2; core_num++) {
27763 
27764 		rx_core = core_num;
27765 		tx_core = 1 - core_num;
27766 
27767 		orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27768 		orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27769 						0xa6 : 0xa7);
27770 		orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27771 		orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27772 						 0x91 : 0x92);
27773 		orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27774 						 0x91 : 0x92);
27775 
27776 		mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27777 		mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27778 
27779 		or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27780 			   ((0x1 << 1) | (0x1 << 2)));
27781 		or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27782 
27783 		if (((pi->nphy_rxcalparams) & 0xff000000))
27784 			write_phy_reg(pi,
27785 				      (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27786 				      (CHSPEC_IS5G(pi->radio_chanspec) ?
27787 					0x140 : 0x110));
27788 		else
27789 			write_phy_reg(pi,
27790 				      (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27791 				      (CHSPEC_IS5G(pi->radio_chanspec) ?
27792 				       0x180 : 0x120));
27793 
27794 		write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27795 			      (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27796 			       0x114));
27797 
27798 		mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27799 		if (rx_core == PHY_CORE_0) {
27800 			val1 = RADIO_2055_COUPLE_RX_MASK;
27801 			val2 = RADIO_2055_COUPLE_TX_MASK;
27802 		} else {
27803 			val1 = RADIO_2055_COUPLE_TX_MASK;
27804 			val2 = RADIO_2055_COUPLE_RX_MASK;
27805 		}
27806 
27807 		if ((pi->nphy_rxcalparams & 0x10000)) {
27808 			mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27809 				      val1);
27810 			mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27811 				      val2);
27812 		}
27813 
27814 		for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27815 
27816 			if (debug)
27817 				mdelay(WAIT_FOR_SCOPE);
27818 
27819 			if (gain_pass < 3) {
27820 				curr_lna = lna_vals[gain_pass];
27821 				curr_hpf1 = hpf1_vals[gain_pass];
27822 				curr_hpf2 = hpf2_vals[gain_pass];
27823 			} else {
27824 
27825 				if (tot_pwr[1] > 10000) {
27826 					curr_lna = lna_vals[2];
27827 					curr_hpf1 = hpf1_vals[2];
27828 					curr_hpf2 = hpf2_vals[2];
27829 					use_hpf_num = 1;
27830 					curr_hpf = curr_hpf1;
27831 					actual_log2_pwr =
27832 						wlc_phy_nbits(tot_pwr[2]);
27833 				} else {
27834 					if (tot_pwr[0] > 10000) {
27835 						curr_lna = lna_vals[1];
27836 						curr_hpf1 = hpf1_vals[1];
27837 						curr_hpf2 = hpf2_vals[1];
27838 						use_hpf_num = 1;
27839 						curr_hpf = curr_hpf1;
27840 						actual_log2_pwr =
27841 							wlc_phy_nbits(
27842 								tot_pwr[1]);
27843 					} else {
27844 						curr_lna = lna_vals[0];
27845 						curr_hpf1 = hpf1_vals[0];
27846 						curr_hpf2 = hpf2_vals[0];
27847 						use_hpf_num = 2;
27848 						curr_hpf = curr_hpf2;
27849 						actual_log2_pwr =
27850 							wlc_phy_nbits(
27851 								tot_pwr[0]);
27852 					}
27853 				}
27854 
27855 				hpf_change = desired_log2_pwr - actual_log2_pwr;
27856 				curr_hpf += hpf_change;
27857 				curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27858 				if (use_hpf_num == 1)
27859 					curr_hpf1 = curr_hpf;
27860 				else
27861 					curr_hpf2 = curr_hpf;
27862 			}
27863 
27864 			wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27865 						     ((curr_hpf2 << 8) |
27866 						      (curr_hpf1 << 4) |
27867 						      (curr_lna << 2)), 0x3, 0);
27868 			wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27869 
27870 			wlc_phy_stopplayback_nphy(pi);
27871 
27872 			if (first_playtone) {
27873 				bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27874 						(u16) (pi->nphy_rxcalparams &
27875 						       0xffff), 0, 0, true);
27876 				first_playtone = false;
27877 			} else {
27878 				phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27879 					  40 : 20;
27880 				wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27881 							0, 0, 0, true);
27882 			}
27883 
27884 			if (bcmerror == 0) {
27885 				if (gain_pass < 3) {
27886 
27887 					wlc_phy_rx_iq_est_nphy(pi, est,
27888 							       num_samps, 32,
27889 							       0);
27890 					i_pwr =	(est[rx_core].i_pwr +
27891 						 num_samps / 2) / num_samps;
27892 					q_pwr =	(est[rx_core].q_pwr +
27893 						 num_samps / 2) / num_samps;
27894 					tot_pwr[gain_pass] = i_pwr + q_pwr;
27895 				} else {
27896 
27897 					wlc_phy_calc_rx_iq_comp_nphy(pi,
27898 								     (1 <<
27899 								      rx_core));
27900 				}
27901 
27902 				wlc_phy_stopplayback_nphy(pi);
27903 			}
27904 
27905 			if (bcmerror != 0)
27906 				break;
27907 		}
27908 
27909 		and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27910 		and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27911 
27912 		write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27913 			      0x92, orig_RfctrlIntcTx);
27914 		write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27915 			      0x92, orig_RfctrlIntcRx);
27916 		write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27917 		write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27918 			      0xa7, orig_AfectrlCore);
27919 		write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27920 
27921 		if (bcmerror != 0)
27922 			break;
27923 	}
27924 
27925 	wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27926 	wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27927 
27928 	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27929 				 gain_save);
27930 
27931 	wlc_phy_stay_in_carriersearch_nphy(pi, false);
27932 
27933 	return bcmerror;
27934 }
27935 
27936 int
wlc_phy_cal_rxiq_nphy(struct brcms_phy * pi,struct nphy_txgains target_gain,u8 cal_type,bool debug)27937 wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27938 		      u8 cal_type, bool debug)
27939 {
27940 	if (NREV_GE(pi->pubpi.phy_rev, 7))
27941 		cal_type = 0;
27942 
27943 	if (NREV_GE(pi->pubpi.phy_rev, 3))
27944 		return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27945 						  debug);
27946 	else
27947 		return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27948 }
27949 
wlc_phy_txpwr_fixpower_nphy(struct brcms_phy * pi)27950 void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27951 {
27952 	uint core;
27953 	u32 txgain;
27954 	u16 rad_gain, dac_gain, bbmult, m1m2;
27955 	u8 txpi[2], chan_freq_range;
27956 	s32 rfpwr_offset;
27957 
27958 	if (pi->phyhang_avoid)
27959 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
27960 
27961 	if (pi->sh->sromrev < 4) {
27962 		txpi[0] = txpi[1] = 72;
27963 	} else {
27964 
27965 		chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27966 		switch (chan_freq_range) {
27967 		case WL_CHAN_FREQ_RANGE_2G:
27968 		case WL_CHAN_FREQ_RANGE_5GL:
27969 		case WL_CHAN_FREQ_RANGE_5GM:
27970 		case WL_CHAN_FREQ_RANGE_5GH:
27971 			txpi[0] = 0;
27972 			txpi[1] = 0;
27973 			break;
27974 		default:
27975 			txpi[0] = txpi[1] = 91;
27976 			break;
27977 		}
27978 	}
27979 
27980 	if (NREV_GE(pi->pubpi.phy_rev, 7))
27981 		txpi[0] = txpi[1] = 30;
27982 	else if (NREV_GE(pi->pubpi.phy_rev, 3))
27983 		txpi[0] = txpi[1] = 40;
27984 
27985 	if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27986 
27987 		if ((txpi[0] < 40) || (txpi[0] > 100) ||
27988 		    (txpi[1] < 40) || (txpi[1] > 100))
27989 			txpi[0] = txpi[1] = 91;
27990 	}
27991 
27992 	pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27993 	pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27994 	pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27995 	pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27996 
27997 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27998 		uint phyrev = pi->pubpi.phy_rev;
27999 
28000 		if (NREV_GE(phyrev, 3)) {
28001 			if (PHY_IPA(pi)) {
28002 				u32 *tx_gaintbl =
28003 					wlc_phy_get_ipa_gaintbl_nphy(pi);
28004 				txgain = tx_gaintbl[txpi[core]];
28005 			} else {
28006 				if (CHSPEC_IS5G(pi->radio_chanspec)) {
28007 					if (NREV_IS(phyrev, 3)) {
28008 						txgain =
28009 						      nphy_tpc_5GHz_txgain_rev3
28010 								   [txpi[core]];
28011 					} else if (NREV_IS(phyrev, 4)) {
28012 						txgain = (
28013 						  pi->srom_fem5g.extpagain ==
28014 						  3) ?
28015 						  nphy_tpc_5GHz_txgain_HiPwrEPA
28016 						 [txpi[core]] :
28017 						 nphy_tpc_5GHz_txgain_rev4
28018 						 [txpi[core]];
28019 					} else {
28020 						txgain =
28021 						      nphy_tpc_5GHz_txgain_rev5
28022 								   [txpi[core]];
28023 					}
28024 				} else {
28025 					if (NREV_GE(phyrev, 5) &&
28026 					    (pi->srom_fem2g.extpagain == 3)) {
28027 						txgain =
28028 							nphy_tpc_txgain_HiPwrEPA
28029 							[txpi[core]];
28030 					} else {
28031 						txgain = nphy_tpc_txgain_rev3
28032 							 [txpi[core]];
28033 					}
28034 				}
28035 			}
28036 		} else {
28037 			txgain = nphy_tpc_txgain[txpi[core]];
28038 		}
28039 
28040 		if (NREV_GE(phyrev, 3))
28041 			rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
28042 		else
28043 			rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
28044 
28045 		if (NREV_GE(phyrev, 7))
28046 			dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
28047 		else
28048 			dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28049 
28050 		bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28051 
28052 		if (NREV_GE(phyrev, 3))
28053 			mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28054 					 0xa5), (0x1 << 8), (0x1 << 8));
28055 		else
28056 			mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28057 
28058 		write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
28059 
28060 		wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28061 					 &rad_gain);
28062 
28063 		wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28064 		m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28065 		m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
28066 		wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28067 
28068 		if (PHY_IPA(pi)) {
28069 			wlc_phy_table_read_nphy(pi,
28070 						(core ==
28071 						 PHY_CORE_0 ?
28072 						 NPHY_TBL_ID_CORE1TXPWRCTL :
28073 						 NPHY_TBL_ID_CORE2TXPWRCTL), 1,
28074 						576 + txpi[core], 32,
28075 						&rfpwr_offset);
28076 
28077 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28078 				    0x29b, (0x1ff << 4),
28079 				    ((s16) rfpwr_offset) << 4);
28080 
28081 			mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28082 				    0x29b, (0x1 << 2), (1) << 2);
28083 
28084 		}
28085 	}
28086 
28087 	and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
28088 
28089 	if (pi->phyhang_avoid)
28090 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
28091 }
28092 
28093 static void
wlc_phy_txpwr_nphy_srom_convert(u8 * srom_max,u16 * pwr_offset,u8 tmp_max_pwr,u8 rate_start,u8 rate_end)28094 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
28095 				u8 tmp_max_pwr, u8 rate_start,
28096 				u8 rate_end)
28097 {
28098 	u8 rate;
28099 	u8 word_num, nibble_num;
28100 	u8 tmp_nibble;
28101 
28102 	for (rate = rate_start; rate <= rate_end; rate++) {
28103 		word_num = (rate - rate_start) >> 2;
28104 		nibble_num = (rate - rate_start) & 0x3;
28105 		tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
28106 
28107 		srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
28108 	}
28109 }
28110 
28111 static void
wlc_phy_txpwr_nphy_po_apply(u8 * srom_max,u8 pwr_offset,u8 rate_start,u8 rate_end)28112 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
28113 			    u8 rate_start, u8 rate_end)
28114 {
28115 	u8 rate;
28116 
28117 	for (rate = rate_start; rate <= rate_end; rate++)
28118 		srom_max[rate] -= 2 * pwr_offset;
28119 }
28120 
28121 void
wlc_phy_ofdm_to_mcs_powers_nphy(u8 * power,u8 rate_mcs_start,u8 rate_mcs_end,u8 rate_ofdm_start)28122 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
28123 				u8 rate_mcs_end, u8 rate_ofdm_start)
28124 {
28125 	u8 rate1, rate2;
28126 
28127 	rate2 = rate_ofdm_start;
28128 	for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
28129 		power[rate1] = power[rate2];
28130 		rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
28131 	}
28132 	power[rate_mcs_end] = power[rate_mcs_end - 1];
28133 }
28134 
28135 void
wlc_phy_mcs_to_ofdm_powers_nphy(u8 * power,u8 rate_ofdm_start,u8 rate_ofdm_end,u8 rate_mcs_start)28136 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
28137 				u8 rate_ofdm_end, u8 rate_mcs_start)
28138 {
28139 	u8 rate1, rate2;
28140 
28141 	for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
28142 	     rate1 <= rate_ofdm_end; rate1++, rate2++) {
28143 		power[rate1] = power[rate2];
28144 		if (rate1 == rate_ofdm_start)
28145 			power[++rate1] = power[rate2];
28146 	}
28147 }
28148 
wlc_phy_txpwr_apply_nphy(struct brcms_phy * pi)28149 void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
28150 {
28151 	uint rate1, rate2, band_num;
28152 	u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
28153 	u8 tmp_max_pwr = 0;
28154 	u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
28155 	u8 *tx_srom_max_rate = NULL;
28156 
28157 	for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
28158 	     band_num++) {
28159 		switch (band_num) {
28160 		case 0:
28161 
28162 			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
28163 					  pi->nphy_pwrctrl_info[1].max_pwr_2g);
28164 
28165 			pwr_offsets1[0] = pi->cck2gpo;
28166 			wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
28167 							pwr_offsets1,
28168 							tmp_max_pwr,
28169 							TXP_FIRST_CCK,
28170 							TXP_LAST_CCK);
28171 
28172 			pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
28173 			pwr_offsets1[1] =
28174 				(u16) (pi->ofdm2gpo >> 16) & 0xffff;
28175 
28176 			pwr_offsets2 = pi->mcs2gpo;
28177 
28178 			tmp_cddpo = pi->cdd2gpo;
28179 			tmp_stbcpo = pi->stbc2gpo;
28180 			tmp_bw40po = pi->bw402gpo;
28181 
28182 			tx_srom_max_rate = pi->tx_srom_max_rate_2g;
28183 			break;
28184 		case 1:
28185 
28186 			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
28187 					  pi->nphy_pwrctrl_info[1].max_pwr_5gm);
28188 
28189 			pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
28190 			pwr_offsets1[1] =
28191 				(u16) (pi->ofdm5gpo >> 16) & 0xffff;
28192 
28193 			pwr_offsets2 = pi->mcs5gpo;
28194 
28195 			tmp_cddpo = pi->cdd5gpo;
28196 			tmp_stbcpo = pi->stbc5gpo;
28197 			tmp_bw40po = pi->bw405gpo;
28198 
28199 			tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
28200 			break;
28201 		case 2:
28202 
28203 			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
28204 					  pi->nphy_pwrctrl_info[1].max_pwr_5gl);
28205 
28206 			pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
28207 			pwr_offsets1[1] =
28208 				(u16) (pi->ofdm5glpo >> 16) & 0xffff;
28209 
28210 			pwr_offsets2 = pi->mcs5glpo;
28211 
28212 			tmp_cddpo = pi->cdd5glpo;
28213 			tmp_stbcpo = pi->stbc5glpo;
28214 			tmp_bw40po = pi->bw405glpo;
28215 
28216 			tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
28217 			break;
28218 		case 3:
28219 
28220 			tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
28221 					  pi->nphy_pwrctrl_info[1].max_pwr_5gh);
28222 
28223 			pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
28224 			pwr_offsets1[1] =
28225 				(u16) (pi->ofdm5ghpo >> 16) & 0xffff;
28226 
28227 			pwr_offsets2 = pi->mcs5ghpo;
28228 
28229 			tmp_cddpo = pi->cdd5ghpo;
28230 			tmp_stbcpo = pi->stbc5ghpo;
28231 			tmp_bw40po = pi->bw405ghpo;
28232 
28233 			tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
28234 			break;
28235 		}
28236 
28237 		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
28238 						tmp_max_pwr, TXP_FIRST_OFDM,
28239 						TXP_LAST_OFDM);
28240 
28241 		wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
28242 						TXP_FIRST_MCS_20_SISO,
28243 						TXP_LAST_MCS_20_SISO,
28244 						TXP_FIRST_OFDM);
28245 
28246 		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28247 						tmp_max_pwr,
28248 						TXP_FIRST_MCS_20_CDD,
28249 						TXP_LAST_MCS_20_CDD);
28250 
28251 		if (NREV_GE(pi->pubpi.phy_rev, 3))
28252 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28253 						    TXP_FIRST_MCS_20_CDD,
28254 						    TXP_LAST_MCS_20_CDD);
28255 
28256 		wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28257 						TXP_FIRST_OFDM_20_CDD,
28258 						TXP_LAST_OFDM_20_CDD,
28259 						TXP_FIRST_MCS_20_CDD);
28260 
28261 		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28262 						tmp_max_pwr,
28263 						TXP_FIRST_MCS_20_STBC,
28264 						TXP_LAST_MCS_20_STBC);
28265 
28266 		if (NREV_GE(pi->pubpi.phy_rev, 3))
28267 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28268 						    tmp_stbcpo,
28269 						    TXP_FIRST_MCS_20_STBC,
28270 						    TXP_LAST_MCS_20_STBC);
28271 
28272 		wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28273 						&pwr_offsets2[2], tmp_max_pwr,
28274 						TXP_FIRST_MCS_20_SDM,
28275 						TXP_LAST_MCS_20_SDM);
28276 
28277 		if (NPHY_IS_SROM_REINTERPRET) {
28278 
28279 			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28280 							&pwr_offsets2[4],
28281 							tmp_max_pwr,
28282 							TXP_FIRST_MCS_40_SISO,
28283 							TXP_LAST_MCS_40_SISO);
28284 
28285 			wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28286 							TXP_FIRST_OFDM_40_SISO,
28287 							TXP_LAST_OFDM_40_SISO,
28288 							TXP_FIRST_MCS_40_SISO);
28289 
28290 			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28291 							&pwr_offsets2[4],
28292 							tmp_max_pwr,
28293 							TXP_FIRST_MCS_40_CDD,
28294 							TXP_LAST_MCS_40_CDD);
28295 
28296 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28297 						    TXP_FIRST_MCS_40_CDD,
28298 						    TXP_LAST_MCS_40_CDD);
28299 
28300 			wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28301 							TXP_FIRST_OFDM_40_CDD,
28302 							TXP_LAST_OFDM_40_CDD,
28303 							TXP_FIRST_MCS_40_CDD);
28304 
28305 			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28306 							&pwr_offsets2[4],
28307 							tmp_max_pwr,
28308 							TXP_FIRST_MCS_40_STBC,
28309 							TXP_LAST_MCS_40_STBC);
28310 
28311 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28312 						    tmp_stbcpo,
28313 						    TXP_FIRST_MCS_40_STBC,
28314 						    TXP_LAST_MCS_40_STBC);
28315 
28316 			wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28317 							&pwr_offsets2[6],
28318 							tmp_max_pwr,
28319 							TXP_FIRST_MCS_40_SDM,
28320 							TXP_LAST_MCS_40_SDM);
28321 		} else {
28322 
28323 			for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28324 				     TXP_FIRST_OFDM;
28325 			     rate1 <= TXP_LAST_MCS_40_SDM;
28326 			     rate1++, rate2++)
28327 				tx_srom_max_rate[rate1] =
28328 					tx_srom_max_rate[rate2];
28329 		}
28330 
28331 		if (NREV_GE(pi->pubpi.phy_rev, 3))
28332 			wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28333 						    tmp_bw40po,
28334 						    TXP_FIRST_OFDM_40_SISO,
28335 						    TXP_LAST_MCS_40_SDM);
28336 
28337 		tx_srom_max_rate[TXP_MCS_32] =
28338 			tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28339 	}
28340 
28341 	return;
28342 }
28343 
wlc_phy_txpower_recalc_target_nphy(struct brcms_phy * pi)28344 void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28345 {
28346 	u8 tx_pwr_ctrl_state;
28347 	wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28348 	wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28349 
28350 	tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28351 
28352 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28353 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28354 		(void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
28355 		udelay(1);
28356 	}
28357 
28358 	wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28359 
28360 	if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28361 		wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28362 }
28363 
wlc_phy_txpwr_ison_nphy(struct brcms_phy * pi)28364 static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28365 {
28366 	return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28367 					    (0x1 << 14) | (0x1 << 13));
28368 }
28369 
wlc_phy_txpwr_idx_get_nphy(struct brcms_phy * pi)28370 u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28371 {
28372 	u16 tmp;
28373 	u16 pwr_idx[2];
28374 
28375 	if (wlc_phy_txpwr_ison_nphy(pi)) {
28376 		pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28377 		pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28378 
28379 		tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28380 	} else {
28381 		tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28382 			<< 8) |
28383 			(pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28384 	}
28385 
28386 	return tmp;
28387 }
28388 
wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy * pi)28389 void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28390 {
28391 	if (PHY_IPA(pi)
28392 	    && (pi->nphy_force_papd_cal
28393 		|| (wlc_phy_txpwr_ison_nphy(pi)
28394 		    &&
28395 		    (((u32)
28396 		      abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28397 			  pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28398 		     || ((u32)
28399 			 abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28400 			     pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28401 		wlc_phy_a4(pi, true);
28402 }
28403 
wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy * pi,u8 ctrl_type)28404 void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28405 {
28406 	u16 mask = 0, val = 0, ishw = 0;
28407 	u8 ctr;
28408 	uint core;
28409 	u32 tbl_offset;
28410 	u32 tbl_len;
28411 	u16 regval[84];
28412 
28413 	if (pi->phyhang_avoid)
28414 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
28415 
28416 	switch (ctrl_type) {
28417 	case PHY_TPC_HW_OFF:
28418 	case PHY_TPC_HW_ON:
28419 		pi->nphy_txpwrctrl = ctrl_type;
28420 		break;
28421 	default:
28422 		break;
28423 	}
28424 
28425 	if (ctrl_type == PHY_TPC_HW_OFF) {
28426 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28427 
28428 			if (wlc_phy_txpwr_ison_nphy(pi)) {
28429 				for (core = 0; core < pi->pubpi.phy_corenum;
28430 				     core++)
28431 					pi->nphy_txpwr_idx[core] =
28432 						wlc_phy_txpwr_idx_cur_get_nphy(
28433 							pi,
28434 							(u8) core);
28435 			}
28436 
28437 		}
28438 
28439 		tbl_len = 84;
28440 		tbl_offset = 64;
28441 		for (ctr = 0; ctr < tbl_len; ctr++)
28442 			regval[ctr] = 0;
28443 		wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28444 					 regval);
28445 		wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28446 					 regval);
28447 
28448 		if (NREV_GE(pi->pubpi.phy_rev, 3))
28449 			and_phy_reg(pi, 0x1e7,
28450 				    (u16) (~((0x1 << 15) |
28451 					     (0x1 << 14) | (0x1 << 13))));
28452 		else
28453 			and_phy_reg(pi, 0x1e7,
28454 				    (u16) (~((0x1 << 14) | (0x1 << 13))));
28455 
28456 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28457 			or_phy_reg(pi, 0x8f, (0x1 << 8));
28458 			or_phy_reg(pi, 0xa5, (0x1 << 8));
28459 		} else {
28460 			or_phy_reg(pi, 0xa5, (0x1 << 14));
28461 		}
28462 
28463 		if (NREV_IS(pi->pubpi.phy_rev, 2))
28464 			mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28465 		else if (NREV_LT(pi->pubpi.phy_rev, 2))
28466 			mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28467 
28468 		if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28469 		    pi->bw == WL_CHANSPEC_BW_40)
28470 			wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28471 				       MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28472 
28473 	} else {
28474 
28475 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28476 					 8, pi->adj_pwr_tbl_nphy);
28477 		wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28478 					 8, pi->adj_pwr_tbl_nphy);
28479 
28480 		ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28481 		mask = (0x1 << 14) | (0x1 << 13);
28482 		val = (ishw << 14) | (ishw << 13);
28483 
28484 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28485 			mask |= (0x1 << 15);
28486 			val |= (ishw << 15);
28487 		}
28488 
28489 		mod_phy_reg(pi, 0x1e7, mask, val);
28490 
28491 		if (CHSPEC_IS5G(pi->radio_chanspec)) {
28492 			if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28493 				mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28494 				mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28495 			} else {
28496 				mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28497 				if (NREV_GT(pi->pubpi.phy_rev, 1))
28498 					mod_phy_reg(pi, 0x222,
28499 						    (0xff << 0), 0x64);
28500 			}
28501 		}
28502 
28503 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28504 			if ((pi->nphy_txpwr_idx[0] != 128)
28505 			    && (pi->nphy_txpwr_idx[1] != 128))
28506 				wlc_phy_txpwr_idx_cur_set_nphy(pi,
28507 							       pi->
28508 							       nphy_txpwr_idx
28509 							       [0],
28510 							       pi->
28511 							       nphy_txpwr_idx
28512 							       [1]);
28513 		}
28514 
28515 		if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28516 			and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28517 			and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28518 		} else {
28519 			and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28520 		}
28521 
28522 		if (NREV_IS(pi->pubpi.phy_rev, 2))
28523 			mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28524 		else if (NREV_LT(pi->pubpi.phy_rev, 2))
28525 			mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28526 
28527 		if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28528 		    pi->bw == WL_CHANSPEC_BW_40)
28529 			wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28530 				       0x0, BRCM_BAND_ALL);
28531 
28532 		if (PHY_IPA(pi)) {
28533 			mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28534 				    0x29b, (0x1 << 2), (0) << 2);
28535 
28536 			mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28537 				    0x29b, (0x1 << 2), (0) << 2);
28538 
28539 		}
28540 
28541 	}
28542 
28543 	if (pi->phyhang_avoid)
28544 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
28545 }
28546 
28547 void
wlc_phy_txpwr_index_nphy(struct brcms_phy * pi,u8 core_mask,s8 txpwrindex,bool restore_cals)28548 wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28549 			 bool restore_cals)
28550 {
28551 	u8 core, txpwrctl_tbl;
28552 	u16 tx_ind0, iq_ind0, lo_ind0;
28553 	u16 m1m2;
28554 	u32 txgain;
28555 	u16 rad_gain, dac_gain;
28556 	u8 bbmult;
28557 	u32 iqcomp;
28558 	u16 iqcomp_a, iqcomp_b;
28559 	u32 locomp;
28560 	u16 tmpval;
28561 	u8 tx_pwr_ctrl_state;
28562 	s32 rfpwr_offset;
28563 	u16 regval[2];
28564 
28565 	if (pi->phyhang_avoid)
28566 		wlc_phy_stay_in_carriersearch_nphy(pi, true);
28567 
28568 	tx_ind0 = 192;
28569 	iq_ind0 = 320;
28570 	lo_ind0 = 448;
28571 
28572 	for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28573 
28574 		if ((core_mask & (1 << core)) == 0)
28575 			continue;
28576 
28577 		txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28578 
28579 		if (txpwrindex < 0) {
28580 			if (pi->nphy_txpwrindex[core].index < 0)
28581 				continue;
28582 
28583 			if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28584 				mod_phy_reg(pi, 0x8f,
28585 					    (0x1 << 8),
28586 					    pi->nphy_txpwrindex[core].
28587 					    AfectrlOverride);
28588 				mod_phy_reg(pi, 0xa5, (0x1 << 8),
28589 					    pi->nphy_txpwrindex[core].
28590 					    AfectrlOverride);
28591 			} else {
28592 				mod_phy_reg(pi, 0xa5,
28593 					    (0x1 << 14),
28594 					    pi->nphy_txpwrindex[core].
28595 					    AfectrlOverride);
28596 			}
28597 
28598 			write_phy_reg(pi, (core == PHY_CORE_0) ?
28599 				      0xaa : 0xab,
28600 				      pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28601 
28602 			wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28603 						 &pi->nphy_txpwrindex[core].
28604 						 rad_gain);
28605 
28606 			wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28607 			m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28608 			m1m2 |= ((core == PHY_CORE_0) ?
28609 				 (pi->nphy_txpwrindex[core].bbmult << 8) :
28610 				 (pi->nphy_txpwrindex[core].bbmult << 0));
28611 			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28612 
28613 			if (restore_cals) {
28614 				wlc_phy_table_write_nphy(
28615 					pi, 15, 2, (80 + 2 * core), 16,
28616 					&pi->nphy_txpwrindex[core].iqcomp_a);
28617 				wlc_phy_table_write_nphy(
28618 					pi, 15, 1, (85 + core), 16,
28619 					&pi->nphy_txpwrindex[core].locomp);
28620 				wlc_phy_table_write_nphy(
28621 					pi, 15, 1, (93 + core), 16,
28622 					&pi->nphy_txpwrindex[core].locomp);
28623 			}
28624 
28625 			wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28626 
28627 			pi->nphy_txpwrindex[core].index_internal =
28628 				pi->nphy_txpwrindex[core].index_internal_save;
28629 		} else {
28630 
28631 			if (pi->nphy_txpwrindex[core].index < 0) {
28632 
28633 				if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28634 					mod_phy_reg(pi, 0x8f,
28635 						    (0x1 << 8),
28636 						    pi->nphy_txpwrindex[core].
28637 						    AfectrlOverride);
28638 					mod_phy_reg(pi, 0xa5, (0x1 << 8),
28639 						    pi->nphy_txpwrindex[core].
28640 						    AfectrlOverride);
28641 				} else {
28642 					pi->nphy_txpwrindex[core].
28643 					AfectrlOverride =
28644 						read_phy_reg(pi, 0xa5);
28645 				}
28646 
28647 				pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28648 					read_phy_reg(pi, (core == PHY_CORE_0) ?
28649 							 0xaa : 0xab);
28650 
28651 				wlc_phy_table_read_nphy(pi, 7, 1,
28652 							(0x110 + core), 16,
28653 							&pi->
28654 							nphy_txpwrindex[core].
28655 							rad_gain);
28656 
28657 				wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28658 							&tmpval);
28659 				tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28660 				tmpval &= 0xff;
28661 				pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28662 
28663 				wlc_phy_table_read_nphy(pi, 15, 2,
28664 							(80 + 2 * core), 16,
28665 							&pi->
28666 							nphy_txpwrindex[core].
28667 							iqcomp_a);
28668 
28669 				wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28670 							16,
28671 							&pi->
28672 							nphy_txpwrindex[core].
28673 							locomp);
28674 
28675 				pi->nphy_txpwrindex[core].index_internal_save =
28676 					pi->nphy_txpwrindex[core].
28677 					index_internal;
28678 			}
28679 
28680 			tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28681 			wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28682 
28683 			if (NREV_IS(pi->pubpi.phy_rev, 1))
28684 				wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28685 
28686 			wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28687 						(tx_ind0 + txpwrindex), 32,
28688 						&txgain);
28689 
28690 			if (NREV_GE(pi->pubpi.phy_rev, 3))
28691 				rad_gain = (txgain >> 16) &
28692 					   ((1 << (32 - 16 + 1)) - 1);
28693 			else
28694 				rad_gain = (txgain >> 16) &
28695 					   ((1 << (28 - 16 + 1)) - 1);
28696 
28697 			dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28698 			bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28699 
28700 			if (NREV_GE(pi->pubpi.phy_rev, 3))
28701 				mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28702 						 0xa5), (0x1 << 8), (0x1 << 8));
28703 			else
28704 				mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28705 
28706 			write_phy_reg(pi, (core == PHY_CORE_0) ?
28707 				      0xaa : 0xab, dac_gain);
28708 
28709 			wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28710 						 &rad_gain);
28711 
28712 			wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28713 			m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28714 			m1m2 |= ((core == PHY_CORE_0) ?
28715 				(bbmult << 8) : (bbmult << 0));
28716 
28717 			wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28718 
28719 			wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28720 						(iq_ind0 + txpwrindex), 32,
28721 						&iqcomp);
28722 			iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28723 			iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28724 
28725 			if (restore_cals) {
28726 				regval[0] = (u16) iqcomp_a;
28727 				regval[1] = (u16) iqcomp_b;
28728 				wlc_phy_table_write_nphy(pi, 15, 2,
28729 							 (80 + 2 * core), 16,
28730 							 regval);
28731 			}
28732 
28733 			wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28734 						(lo_ind0 + txpwrindex), 32,
28735 						&locomp);
28736 			if (restore_cals)
28737 				wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28738 							 16, &locomp);
28739 
28740 			if (NREV_IS(pi->pubpi.phy_rev, 1))
28741 				wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28742 
28743 			if (PHY_IPA(pi)) {
28744 				wlc_phy_table_read_nphy(pi,
28745 						(core == PHY_CORE_0 ?
28746 						 NPHY_TBL_ID_CORE1TXPWRCTL :
28747 						 NPHY_TBL_ID_CORE2TXPWRCTL),
28748 						1, 576 + txpwrindex, 32,
28749 						&rfpwr_offset);
28750 
28751 				mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28752 					    0x29b, (0x1ff << 4),
28753 					    ((s16) rfpwr_offset) << 4);
28754 
28755 				mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28756 					    0x29b, (0x1 << 2), (1) << 2);
28757 
28758 			}
28759 
28760 			wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28761 		}
28762 
28763 		pi->nphy_txpwrindex[core].index = txpwrindex;
28764 	}
28765 
28766 	if (pi->phyhang_avoid)
28767 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
28768 }
28769 
28770 void
wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy * pi,uint chan,u8 * max_pwr,u8 txp_rate_idx)28771 wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28772 				   u8 txp_rate_idx)
28773 {
28774 	u8 chan_freq_range;
28775 
28776 	chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28777 	switch (chan_freq_range) {
28778 	case WL_CHAN_FREQ_RANGE_2G:
28779 		*max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28780 		break;
28781 	case WL_CHAN_FREQ_RANGE_5GM:
28782 		*max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28783 		break;
28784 	case WL_CHAN_FREQ_RANGE_5GL:
28785 		*max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28786 		break;
28787 	case WL_CHAN_FREQ_RANGE_5GH:
28788 		*max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28789 		break;
28790 	default:
28791 		*max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28792 		break;
28793 	}
28794 
28795 	return;
28796 }
28797 
wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy * pi,bool enable)28798 void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28799 {
28800 	u16 clip_off[] = { 0xffff, 0xffff };
28801 
28802 	if (enable) {
28803 		if (pi->nphy_deaf_count == 0) {
28804 			pi->classifier_state =
28805 				wlc_phy_classifier_nphy(pi, 0, 0);
28806 			wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28807 			wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28808 			wlc_phy_clip_det_nphy(pi, 1, clip_off);
28809 		}
28810 
28811 		pi->nphy_deaf_count++;
28812 
28813 		wlc_phy_resetcca_nphy(pi);
28814 
28815 	} else {
28816 		pi->nphy_deaf_count--;
28817 
28818 		if (pi->nphy_deaf_count == 0) {
28819 			wlc_phy_classifier_nphy(pi, (0x7 << 0),
28820 						pi->classifier_state);
28821 			wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28822 		}
28823 	}
28824 }
28825 
wlc_nphy_deaf_mode(struct brcms_phy * pi,bool mode)28826 void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28827 {
28828 	wlapi_suspend_mac_and_wait(pi->sh->physhim);
28829 
28830 	if (mode) {
28831 		if (pi->nphy_deaf_count == 0)
28832 			wlc_phy_stay_in_carriersearch_nphy(pi, true);
28833 	} else if (pi->nphy_deaf_count > 0) {
28834 		wlc_phy_stay_in_carriersearch_nphy(pi, false);
28835 	}
28836 
28837 	wlapi_enable_mac(pi->sh->physhim);
28838 }
28839